基于丢包的TCP拥塞控制:从 Reno 到 Bic 与 Cubic

Reno

传统的TCP Reno算法有慢启动,拥塞避免,快速重传快速恢复阶段。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PUagoUlH-1641558581588)(https://secure2.wostatic.cn/static/egnj2bR2xvUueNtLaYL7KU/image.png)]

Reno算法存在的问题主要有:

  • 受链路Buffer(缓冲区)影响很大。Buffer小于BDP会很容易丢包,速度一直上不去;Buffer太大会延迟严重,易发生超时重传。
  • 对高带宽网络利用率低。CA阶段,每经过一个RTT拥塞窗口大小加1,收敛速度太慢。
  • 对共享链路其他RTT较大的连接不友好。RTT小的连接会抢占带宽,不公平。

之后又对Reno算法一些细节进行改进诞生了New Reno算法、SASK算法。

后来又诞生了BIC算法。

Bic算法

BIC和CUBIC的慢启动、快速重传恢复阶段与Reno相同。

发生丢包时定义最大拥塞窗口为Wmax,采用乘性减减小拥塞窗口至WminWmax = β * Wmin,β为小于1的系数。此时实际最佳窗口值应该在WmaxWmin之间,此时BIC算法在这个区域采用二分搜索,每经过一个RTT,便将窗口设置到WmaxWmin的中点,如果没有丢包,则更新Wmin为当前cwnd值,一直持续到接近Wmax,直到二者之差小于Smin。

但是在一个RTT里面增长过多会造成传输上的抖动,因而BIC-TCP选取了另外取了两个参考值,称为Smax和Smin,如果中点和当前cwnd值的差大于Smax的话,那么cwnd就只增长Smax。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B7rk6Yby-1641558581589)(https://secure2.wostatic.cn/static/4bjZQEvyjdebEK2fvNV84H/image.png)]

没有丢包情况下达到Wmax,说明链路发生变化,可用带宽更大,就需要快速抢占带宽测试新的天花板Wmax,进入最大窗探测过程(Max Probing)阶段,首先把Wmax设置为一个非常大的值,然后BIC采取了一个类似慢启动策略,每个RTT后窗口值变为cwnd+1,cwnd+2,…,cwnd+Smax,直到增长为Smax的时候再次进入二分阶段。

BIC在离Wmax较远时,窗口增速很快,如果将BIC广泛应用到RTT较小,丢包较高的网络中去,BIC的增窗策略太激进了,大量的抢占了资源,公平性难以保证。其次,BIC的的窗口控制阶段较多,还有Smax和Smin的区分,增加了算法实现复杂度。

Cubic算法

CUBIC是对BIC的改进。

CUBIC用一个三次多项式代替了BIC增长曲线,对窗口增长机制进行了简化,保证了快速探测合适的拥塞窗口。并且不再以RTT为单位,窗口增长函数仅仅取决于连续的两次拥塞事件的时间差,保证了公平性。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9DJYDXyo-1641558581589)(https://secure2.wostatic.cn/static/nfwRpLsJ3PpBCBNxUd5F2r/image.png)]

c w n d = C ( t − K ) 3 + W m a x cwnd = C(t-K)^3+W_{max} cwnd=C(tK)3+Wmax

K = β W m a x / C 3 K = \sqrt[3] {\beta W_{max}/C} K=3βWmax/C

其中:

t t t为当前时间和上次窗口降低之间的时间差。

C C C为系数,较大时曲线更陡。

K K K在上次丢包时更新,计算多长时间达到Wmax

β β β为小于1的系数,Wmax = β * Wmin

t t t K K K越远,曲线增加越快,接近 K K K时曲线近乎水平。

当窗口太小使得CUBIC不能获得比传统TCP更好的性能时,例如在一次丢包事件后,经过t时间,如果CUBIC的增窗速度小于标准TCP,则采用标准TCP增加的窗口大小。

Cubic优点有:

  • 与RTT无关,更公平。
  • 更适合BDP大的网络。

Cubic存在的问题有:

  • 当带宽变化时,cwnd跟随比较慢。因为三次曲线中间部分几乎是水平的。
  • 更容易导致BufferBloat,即在Buffer较大时,容易导致Buffer难以清空,延迟会很高。
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值