TCP 慢启动突发丢包

TCP 慢启动会导致持续突发丢包。

慢启动以 y = 2 x y=2^x y=2x 增加窗口,在 BDP 已经填满时,后续的慢启动过程如下:
在这里插入图片描述
​每一个 ACK 触发 2 个 报文,最终至少丢掉 1 个 BDP 的数据后 sender 才能检测到丢包而退出慢启动并进行重传。

这是尾丢的结果,现实中很少部署尾丢,因此很难实际观测到该结果,但这是慢启动的理论伤。

HyStart 可以解决该问题,可以参考 Linux CUBIC 代码的实现,还有一个 HyStart++ 算法:HyStart++: Modified Slow Start for TCP

但这些都很难奏效,和 BBR 很难达到预期的原因一样,这些依托的都是理想模型,而现实并不是。连 RTT 测量都不能算数,需要一个移指平均也不能太算数,何况 HyStart 的测量。

现实的做法是 “不要总以 2 倍为增量”。一开始以 2 倍为增加,后续逐渐递减,比如以 1.5 倍为增量时,即收到 2 个 ACK 后增加 3 个 cwnd,以此类推:
在这里插入图片描述
绿色曲线在后期比红色曲线平缓很多,丢包就减少很多,缓慢的增速虽然更慢探测到最大带宽,但也不算太慢,相反,优点有两个,首先减缓的慢启动过程增加的延迟大概率小于大量丢包重传增加的延迟,其次,减少了丢包重传在全局上提高了带宽利用效能。

浙江温州皮鞋湿,下雨进水不会胖。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值