既然 BBR 在实际网络中失效,那么 AIMD,CUBIC \text{AIMD},\text{CUBIC} AIMD,CUBIC 在实际网络中表现如何,答案是它非常有效,本文说的就是这,大多数情况下, AIMD \text{AIMD} AIMD 往 BBR \text{BBR} BBR 反方向走,就知道了原因。
与 BBR \text{BBR} BBR 的纯模型驱动不同, CUBIC,RENO \text{CUBIC},\text{RENO} CUBIC,RENO 等 AIMD \text{AIMD} AIMD 算法在数学上天然契合自相似流量的统计特性,其有效性并非源于对网络状态的精确预测,而是用指数分布削掉了帕累托的重尾。
实际流量服从帕累托分布 P [ X > x ] ∝ x − α P[X\gt x]\propto x^{−\alpha} P[X>x]∝x−α, α < 2 \alpha\lt 2 α<2 时方差无穷大, BBR \text{BBR} BBR 的估计带宽依赖样本均值的收敛,而 AIMD \text{AIMD} AIMD 不依赖任何统计矩估计。
AIMD \text{AIMD} AIMD 机制构成了一个自调节马尔可夫链,其稳态分布不依赖于输入流量的矩结构,无论背景流量是理想指数分布还是重尾, AIMD \text{AIMD} AIMD 稳态窗口期望值满足:
E [ W ] ∝ 1 p E[W]\propto \sqrt{\dfrac{1}{p}} E[W]∝p1
这一结果仅依赖于丢包率 p p p ,完全不依赖于流量分布方差,因此,帕累托重尾导致的无穷方差问题对 AIMD \text{AIMD} AIMD 的稳态行为没影响。
BBR \text{BBR} BBR 需要估计 B max B_{\max} Bmax 和 R T T min RTT_{\min} RTTmin,其估计误差方差在自相似流量下以 T 2 H − 1 T^{2H−1} T2H−1 发散, AIMD \text{AIMD} AIMD 则规避了这问题。
AIMD \text{AIMD} AIMD 带宽利用率由稳态吞吐量决定:
λ = E [ W ] R T T \lambda=\dfrac{\text{E}[W]}{RTT} λ=RTTE[W]
由于 E [ W ] \text{E}[W] E[W] 仅由丢包率决定, AIMD \text{AIMD} AIMD 的吞吐估计不存在方差发散问题。
在数学上,$\text{AIMD} 窗口序列 W n {W_n} Wn 是一个马尔可夫链,当这个马尔可夫链满足一定的遍历性条件时,它存在一个唯一的平稳分布,记为 π \pi π。
AIMD \text{AIMD} AIMD 显然满足,因为它会在一个有限的状态空间内不可约地转移。一旦系统达到稳态,任意时刻 n n n 的窗口 W n W_n Wn 都服从这个相同的分布 π \pi π。 根据方差的定义:
Var ( W n ) = E [ W n 2 ] − ( E [ W n ] ) 2 \text{Var}(W_n)=\text{E}[W_n^2]−(\text{E}[W_n])^2 Var(Wn)=E[Wn2]−(E[Wn])2
因为 W n W_n Wn 的分布 π \pi π 不随时间 n n n 改变,所以它的一阶矩都是固定常数,由于 E [ W ] \text{E}[W] E[W] 是常数 ∼ 1 p \sim\sqrt{\dfrac{1}{p}} ∼p1,因此, Var ( ⋅ ) \text{Var}(\cdot) Var(⋅) 是常数。
这一方差与 H H H 无关,高 Hurst \text{Hurst} Hurst 参数仅使 AIMD \text{AIMD} AIMD 窗口波动在时间上更持久,但不改变其波动幅度,因此, AIMD \text{AIMD} AIMD 不会因长程依赖而产生系统性的过冲或欠冲。
再看多流竞争下的公平性。
在 N N N 个 AIMD \text{AIMD} AIMD 流共享瓶颈的场景中,每个流的窗口更新为:
W i ( t + 1 ) = β W i ( t ) 当 ∑ j = 1 N W j ( t ) > C ⋅ R T T W_i(t+1)=\beta W_i(t)\quad 当 \sum_{j=1}^N W_j(t)\gt C\cdot RTT Wi(t+1)=βWi(t)当∑j=1NWj(t)>C⋅RTT
丢包事件为所有流提供了等价信号,在 AQM \text{AQM} AQM 和链路容量共同约束下,所有流等价 MD \text{MD} MD,这机制数学上保证了:
lim t → ∞ W i ( t ) W j ( t ) = 1 \lim_{t\to\infty}\dfrac{W_i(t)}{W_j(t)}=1 limt→∞Wj(t)Wi(t)=1
这一收敛性不依赖于流量的自相似性,即使背景流量具有 H = 0.95 H=0.95 H=0.95 的极端 $\text{LRD},丢包事件仍然提供了确定性的负反馈,使系统始终被拉回公平点。
$\text{BBR} 试图显式测量 R T T min RTT_{\min} RTTmin 来避免 bufferbloat \text{bufferbloat} bufferbloat,但在自相似流量下这一测量失效, AIMD \text{AIMD} AIMD 则通过丢包作为缓冲区溢出的终极信号来隐式控制队列,当 buf_size ≫ BDP \text{buf\_size}\gg \text{BDP} buf_size≫BDP 时, AIMD \text{AIMD} AIMD 的稳态队列长度为:
E [ Q ] ≈ E [ W ] 2 ∝ 1 p \text{E}[Q]\approx\dfrac{\text{E}[W]}{2}\propto\sqrt{\dfrac{1}{p}} E[Q]≈2E[W]∝p1
这一队列长度与缓冲区大小无关,只要缓冲区足够容纳 E [ W ] \text{E}[W] E[W] 个数据包, AIMD \text{AIMD} AIMD 就会通过丢包将队列稳定在 O ( p − 1 ) O(\sqrt{p^{-1}}) O(p−1) 量级。
相比之下, BBR \text{BBR} BBR 迷信测试而缺乏负反馈,在大缓冲区下会持续填充至 2 × BDP 2\times\text{BDP} 2×BDP 甚至更多。
最重要的是 AIMD \text{AIMD} AIMD 的数学上的有界性。
AIMD \text{AIMD} AIMD 窗口过程的稳态分布具有指数尾部,而非帕累托重尾:
P [ W > x ] ∼ e − c x P[W\gt x]\sim e^{−cx} P[W>x]∼e−cx
这意味着即使输入流量具有无穷方差的帕累托特性, AIMD \text{AIMD} AIMD 窗口分布仍然轻尾,所有矩都存在,这是 AIMD \text{AIMD} AIMD 在重尾环境中保持稳定的根本数学保证。
以下简单推导这事。
考察窗口在极大值 x x x 附近的稳态概率 P ( x ) P(x) P(x),在 AIMD \text{AIMD} AIMD 中,要到达一个极大的窗口状态 x x x ,只有唯一的路径:
- 系统必须在前一个 R T T RTT RTT 处于状态 x − α x−\alpha x−α,假设 α = 1 \alpha=1 α=1,即 x − 1 x−1 x−1;
- 在下一个 R T T RTT RTT 没有发生丢包,其概率为 1 − p 1−p 1−p;
如果前一个状态是 x x x 且发生了丢包,它会跳到 β x \beta x βx,远小于 x x x,如果前一个状态是 x + 1 x+1 x+1 且没丢包,它会变成 x + 2 x+2 x+2,因此,没有任何其他状态能直接转移到 x x x 。
根据稳态下的概率守恒,到达 x x x 的概率流等于从 x x x 离开的概率流:
P ( x ) = P ( x − 1 ) × ( 1 − p ) P(x)=P(x−1)\times(1−p) P(x)=P(x−1)×(1−p)
这是一个极其简单的等比数列递推:
P ( x ) = ( 1 − p ) P ( x − 1 ) P(x)=(1−p)P(x−1) P(x)=(1−p)P(x−1)
P ( x ) = ( 1 − p ) 2 P ( x − 2 ) P(x)=(1−p)^2P(x−2) P(x)=(1−p)2P(x−2)
…
P ( x ) = ( 1 − p ) x P ( 0 ) P(x)=(1−p)^xP(0) P(x)=(1−p)xP(0)
利用自然对数底数 e e e 进行换底:
( 1 − p ) x = e x ln ( 1 − p ) = e − [ − ln ( 1 − p ) ] x (1−p)^x=e^{x\ln(1−p)}=e^{−[−\ln(1−p)]x} (1−p)x=exln(1−p)=e−[−ln(1−p)]x
令衰减常数 λ = − ln ( 1 − p ) > 0 \lambda=−\ln(1−p)\gt 0 λ=−ln(1−p)>0,我们得到:
P ( x ) = P ( 0 ) e − λ x P(x)=P(0)e^{−\lambda x} P(x)=P(0)e−λx
这意味着,稳态概率密度函数 P ( x ) P(x) P(x) 随窗口大小 x x x 呈指数衰减,这就干掉了重尾。
来看 λ = − ln ( 1 − p ) > 0 \lambda=−\ln(1−p)\gt 0 λ=−ln(1−p)>0 的物理意义, p p p 越大, λ \lambda λ 越大,意味着指数衰减得越快,越陡峭。这很容易理解,如果丢包率 p p p 很高,说明网络拥堵,这时稍微把窗口 x x x 调大一点,触发丢包的概率就极高,因此,系统根本不敢把窗口维持在很高的状态,大窗口出现的概率会断崖式下降。
正确的事总有同归的殊途,下面看基于连续流体近似(Fluid Model)模型下如何描述这事。
我的目标是求稳态下窗口处于极大值 w w w 的概率密度 f ( w ) f(w) f(w)。在稳态下,对于任意一个极高的窗口值 w w w ,流入 w w w 的概率流必须等于流出 w w w 的概率流。
流入 w w w 的唯一的方式是从 w − d w w−\text{d}w w−dw 线性增长过来,所以单位时间内流入 w w w 的概率流为 Inflow = α f ( w ) \text{Inflow}=\alpha f(w) Inflow=αf(w) 而流出 w w w 的唯一的方式是触发丢包,单位时间内从 w w w 离开的概率流为 Outflow = p f ( w ) \text{Outflow}=pf(w) Outflow=pf(w)。
考虑窗口 W W W 超过极高阈值 w w w 的概率 $\overline{F}(w) 的衰减,看累积概率 F ‾ ( w ) = P r ( W > w ) \overline{F}(w)=P_r(W\gt w) F(w)=Pr(W>w) 的变化。
在流体模型(非严格和精确意义,我只是为了推导出指数衰减,而不是要算具体衰减率)中,稳态下大于 w w w 的概率 F ‾ ( w ) \overline{F}(w) F(w) 满足以下经典的 AIMD \text{AIMD} AIMD 流体方程:
α d F ‾ ( w ) d w = − p F ‾ ( w ) \alpha\dfrac{\text{d}\overline{F}(w)}{\text{d}w}=-p\overline{F}(w) αdwdF(w)=−pF(w)
解它:
F ‾ ( w ) = C ⋅ e − p α w \overline{F}(w)=C\cdot e^{−\frac{p}{\alpha}w} F(w)=C⋅e−αpw
由于 f ( w ) = − d F ‾ ( w ) d w f(w)=−\dfrac{\text{d}\overline{F}(w)}{\text{d}w} f(w)=−dwdF(w),所以:
f ( w ) ∝ e − p α w f(w)\propto e^{−\frac{p}{\alpha}w} f(w)∝e−αpw
意思是, AIMD \text{AIMD} AIMD 窗口的稳态分布呈严格的指数衰减,衰减率 λ = p α \lambda=\dfrac{p}{\alpha} λ=αp,如果考虑更精确的积分流体模型,衰减率会修正为 λ = − ln ( 1 − p ) α \lambda=\dfrac{−\ln(1−p)}{\alpha} λ=α−ln(1−p),即与上述殊途同归。 这是另一种削掉重尾的解释。
裤衩子锁着边儿,而且绣着花儿。
综上:
- t e x t A I M D text{AIMD} textAIMD 稳态窗口仅依赖丢包率;
- MD \text{MD} MD 提供分布式共识,公平手链;
- 隐式丢包负反馈控制队列有界;
- 窗口稳态分布为指数尾,削掉重尾;
AIMD \text{AIMD} AIMD 的有效性在于它的反馈控制结构天然免疫于自相似流量的病理,帕累托重尾,高 Hurst \text{Hurst} Hurst,长程依赖这些使 BBR \text{BBR} BBR 的开环估计崩溃的因素,对 AIMD \text{AIMD} AIMD 的闭环反馈机制几乎没有影响 AIMD \text{AIMD} AIMD 用丢包这一个标量信号,替代了 BBR \text{BBR} BBR 需要精确估计的整个网络状态空间,这种信息压缩正是其在实际网络中保持稳定有界的数学本质。
必须要说的是,我平时说的 BBR,CUBIC,AIMD \text{BBR},\text{CUBIC},\text{AIMD} BBR,CUBIC,AIMD 并非 TCP \text{TCP} TCP 的特定概念,它们属于一个更大的范畴,比如主流 RDMA ( RoCEv2 ) \text{RDMA}(\text{RoCEv2}) RDMA(RoCEv2) 标准拥塞控制 DCQCN \text{DCQCN} DCQCN 核心就是 AIMD \text{AIMD} AIMD,而部分 RDMA \text{RDMA} RDMA 算法则不使用 AIMD \text{AIMD} AIMD。
浙江温州皮鞋湿,下雨进水不会胖。
1万+

被折叠的 条评论
为什么被折叠?



