TCP CUBIC 与 AIMD Reno 的对比
由 CUBIC 公式开始:
W ( t ) = C ⋅ ( t − K ) 3 + W m a x W(t)=C\cdot(t-K)^3+W_{max} W(t)=C⋅(t−K)3+Wmax
求导可得增窗率:
d W 增 d t = 3 ⋅ C ⋅ ( W − W m a x C ) 2 3 = k ⋅ W 2 3 \dfrac{\text{d}W_{增}}{\text{d}t}=3\cdot C\cdot(\dfrac{W-W_{max}}{C})^{\frac{2} {3}}=k\cdot W^{\frac{2}{3}} dtdW增=3⋅C⋅(CW−Wmax)32=k⋅W32
其中 k 为无关趋势的计算量(包含高阶量)。
由于 丢包速率 = 吞吐 ⋅ p = W R ⋅ p 丢包速率=吞吐\cdot p=\dfrac{W}{R}\cdot p 丢包速率=吞吐⋅p=RW⋅p,因此:
d W 降 d t = β ⋅ W ⋅ W R ⋅ p = β ⋅ p ⋅ W 2 R \dfrac{\text{d}W_{降}}{\text{d}t}=\beta\cdot W\cdot \dfrac{W}{R}\cdot p=\beta\cdot p\cdot\dfrac{W^2}{R} dtdW降=β⋅W⋅RW⋅p=β⋅p⋅RW2
t 趋向无穷大,稳态下 d W 增 d t = d W 降 d t \dfrac{\text{d}W_{增}}{\text{d}t}=\dfrac{\text{d}W_{降}}{\text{d}t} dtdW增=dtdW降,根据流体模型,得:
k ⋅ W 2 3 = β ⋅ p ⋅ W 2 R k\cdot W^{\frac{2}{3}}=\beta\cdot p\cdot\dfrac{W^2}{R} k⋅W32=β⋅p⋅RW2
整理得:
W ∝ R ⋅ p − 3 4 W\propto R\cdot p^{-\frac{3}{4}} W∝R⋅p−43
吞吐率对比:
- AIMD: T ∝ 1 R ⋅ p − 1 2 T\propto \dfrac{1}{R}\cdot p^{-\frac{1}{2}} T∝R1⋅p−21,与 RTT 负相关;
- CUBIC: T ∝ p − 3 4 T\propto p^{-\frac{3}{4}} T∝p−43,与 RTT 无关;
直接看图像:
直观意义上,丢包率下降时,CUBIC 吞吐量涨得比 AIMD 快得多。
再看收敛速度:
- AIMD: d W 增 d t = α = 1 \dfrac{\text{d}W_{增}}{\text{d}t}=\alpha=1 dtdW增=α=1;
- CUBIC: d W 增 d t = k ⋅ W 2 3 \dfrac{\text{d}W_{增}}{\text{d}t}=k\cdot W^{\frac{2}{3}} dtdW增=k⋅W32;

非常清晰,短 RTT 流,AIMD 更快,长肥管道大 BDP,CUBIC 收敛远快于 AIMD。
再看震荡性,仍使用流体模型,不做 RTT 归一:
- AIMD: d W d t = 1 R − p 2 R ⋅ W 2 \dfrac{\text{d}W}{\text{d}t}=\dfrac{1}{R}-\dfrac{p}{2R}\cdot W^2 dtdW=R1−2Rp⋅W2
- CUBIC: d W d t = k ⋅ W 2 3 − β ⋅ p R ⋅ W 2 \dfrac{\text{d}W}{\text{d}t}=k\cdot W^{\frac{2}{3}}-\dfrac{\beta\cdot p}{R}\cdot W^2 dtdW=k⋅W32−Rβ⋅p⋅W2

很明显,CUBIC 增窗比例更大,且缓和了锯齿跳变,其本质在于 CUBIC 存在平衡阻尼,相当于刹车逼近机制。
最关键的最后说,CUBIC 解决了 RTT 不公平问题:
- AIMD: d W 增 d t = 1 R \dfrac{\text{d}W_{增}}{\text{d}t}=\dfrac{1}{R} dtdW增=R1,与 RTT 成反比;
- CUBIC: d W 增 d t = k ⋅ W 2 3 \dfrac{\text{d}W_{增}}{\text{d}t}=k\cdot W^{\frac{2}{3}} dtdW增=k⋅W32,与 RTT 无关;
浙江温州皮鞋湿,下雨进水不会胖。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐
所有评论(0)