简单论证一下带宽,时延,抖动的不可能三角,这是一个非常浅显的道理,啰嗦了无数次,也不在乎再多一次。
之前说过 TCP/IP\text{TCP/IP}TCP/IP 网络所有理论都基于泊松到达指数分布的排队论,而这个前提模型是错误的,因为数据流是幂分布的,但不影响用 M/M/1\text{M/M/1}M/M/1 来论述这个不可能三角。
链路服务率 μ\muμ,到达率 λ\lambdaλ,利用率 ρ=λμ,(0≤ρ<1)\rho=\dfrac{\lambda}{\mu},\quad(0\le\rho\lt 1)ρ=μλ,(0≤ρ<1),
M/M/1\text{M/M/1}M/M/1 中,系统总时间 TTT 包括排队等待和服务时间,服从参数为 μ⋅(1−ρ)\mu\cdot(1-\rho)μ⋅(1−ρ) 的指数分布,平均时延:
ET=1μ(1−ρ)\mathbb{E}T = \dfrac{1}{\mu(1-\rho)}ET=μ(1−ρ)1
链路固有的抖动:
σT=VarT=1μ(1−ρ)\sigma_T = \sqrt{\mathrm{Var}T} = \dfrac{1}{\mu(1-\rho)}σT=VarT =μ(1−ρ)1
所以:
σT=ET=1μ(1−ρ)\sigma_T = \mathbb{E}T = \frac{1}{\mu(1-\rho)}σT=ET=μ(1−ρ)1
平均时延和抖动在 M/M/1\text{M/M/1}M/M/1 里同量级,为了适应所有分布的流,我将抖动从模型中拆开,靠接收缓存 BBB 耦合。
接收端部署深度为 BBB 的 buffer\text{buffer}buffer,把到达时间的波动锁住,方可均匀输出。
buffer\text{buffer}buffer 吸收的波动上限为 BBB,剩余的波动即输出抖动 JJJ:
J=max(0,;σT−B)J = \max\left(0,; \sigma_T - B\right)J=max(0,;σT−B)
如此拆开后,端到端总时延就包括排队时延和 buffer\text{buffer}buffer 时延,写作:
D=ET+B=1μ(1−ρ)+BD = \mathbb{E}T + B = \dfrac{1}{\mu(1-\rho)} + BD=ET+B=μ(1−ρ)1+B
把 BBB 从抖动约束里解出来:
B≥1μ(1−ρ)−JB \geq \dfrac{1}{\mu(1-\rho)}-JB≥μ(1−ρ)1−J
代入 DDD:
D=1μ(1−ρ)+max(0,;1μ(1−ρ)−J)D = \dfrac{1}{\mu(1-\rho)} + \max\left(0,; \dfrac{1}{\mu(1-\rho)} - J\right)D=μ(1−ρ)1+max(0,;μ(1−ρ)1−J)
当负载较高时,1μ(1−ρ)>J\dfrac{1}{\mu (1-\rho)}\gt Jμ(1−ρ)1>J,buffer\text{buffer}buffer 工作,上式化简为:
D=2μ(1−ρ)−J⋯(∗)D=\dfrac{2}{\mu(1-\rho) - J} \quad \cdots(*)D=μ(1−ρ)−J2⋯(∗)
这就是不可能三角,DDD,JJJ,ρ\rhoρ 因此耦合。
高带宽等价于高利用率,先看高利用率和低抖动的情况。
这种情况下,ρ→1\rho\to 1ρ→1,带宽满载,将 JJJ 固定趋于 000,代入式 (∗)(*)(∗):
D=2μ(1−ρ)−J→ρ→1,;J→0+∞D=\dfrac{2}{\mu(1-\rho)} - J \xrightarrow{\rho \to 1,; J \to 0} +\inftyD=μ(1−ρ)2−Jρ→1,;J→0 +∞
此时 1−ρ→01−\rho\to 01−ρ→0,DDD 发散,意思是带宽越高,抖动约束在足够小,buffer\text{buffer}buffer 必深,时延越大。
再看高利用率和低时延的情况。
这种情况下,ρ→1\rho\to 1ρ→1,固定 D≤DmaxD\le D_{\max}D≤Dmax,约束时延,从式 (∗)(*)(∗) 解 JJJ:
J=2μ(1−ρ)−DJ=\dfrac{2}{\mu(1-\rho)}-DJ=μ(1−ρ)2−D
令 ρ→1\rho\to 1ρ→1:
J=2μ(1−ρ)⏟→+∞−Dmax→ρ→1+∞J = \underbrace{\dfrac{2}{\mu(1-\rho)}}{\to +\infty} - D{\max} \xrightarrow{\rho \to 1} +\inftyJ=→+∞ μ(1−ρ)2−Dmaxρ→1 +∞
DDD 是常数,11−ρ\dfrac{1}{1−\rho}1−ρ1 为发散项,时延低,buffer\text{buffer}buffer 浅,高负载下的排队波动透传到抖动。
最后看低时延和低抖动的情况。
固定 D≤DmaxD\le D_{\max}D≤Dmax,固定 J≤JmaxJ\le J_{\max}J≤Jmax,代入式 (∗)(*)(∗):
2μ(1−ρ)−J≤Dmax\dfrac{2}{\mu(1-\rho)} - J \leq D_{\max}μ(1−ρ)2−J≤Dmax
2μ(1−ρ)≤Dmax+J≤Dmax+Jmax\dfrac{2}{\mu(1-\rho)} \leq D_{\max} + J \leq D_{\max} + J_{\max}μ(1−ρ)2≤Dmax+J≤Dmax+Jmax
1−ρ≥2μ,(Dmax+Jmax)1 - \rho \geq \dfrac{2}{\mu,(D_{\max} + J_{\max})}1−ρ≥μ,(Dmax+Jmax)2
ρ≤1−2μ,(Dmax+Jmax)\rho \leq 1 - \dfrac{2}{\mu,(D_{\max} + J_{\max})}ρ≤1−μ,(Dmax+Jmax)2
DmaxD_{\max}Dmax 和 JmaxJ_{\max}Jmax 越小,右边越逼近 000,要同时降低时延和抖动,需要将 ρ\rhoρ 压低,利用率就低。
裤衩子锁着边儿,而且绣着花儿。
式 (∗)(*)(∗) 的三个变量 DDD,JJJ,ρ\rhoρ 中任意两个取约束,第三个的可行域就被推到边界外,任何技术进步调优只能改变这个三角的形状,但永远也改不了三个角的耦合本身。
所以呢。找到一个平衡就意味着牺牲一些看得见的收益,而经理往往不会放弃可以到手的东西,这就是跟经理的矛盾点。
浙江温州皮鞋湿,下雨进水不会胖。