BBR/Vegas/CUBIC拥塞控制算法对比

文章目录

    • 环境
    • 结果统计
    • 结果分析
    • 总结
    • 发生丢包时的反应

环境

基于本地通信,通过tcconfig设置丢包率,rtt和带宽上限。
测试程序阻塞发包。

结果统计

Vegas BBR CUBIC
不做任何限制 6500 不稳定,上限不到3000 7000有时甚至上万
带宽突然降低为2Mbps需要稳定的时间 13.2 8 27
又改成不做限制,恢复到最大带宽的时间 0.2 0.2 0.2
rtt增大400ms,需要稳定的时间 25 20 8
恢复到原来的rtt,需要稳定的时间 0.2 0.2 0.2
丢包率突然增加到15%,需要稳定的时间 无法稳定 无法稳定,但比Vegas流畅 无法稳定,甚至卡死
丢包率恢复到0%,需要稳定的时间 0.2 0.2 0.2

结果分析

1.对于网络情况变好,任何一个算法都可以迅速适应,并探测到上限
2.带宽利用率,CUBIC最高,BBR最差,受限于BBR计算得到的inflight
3.Vegas算法,比较适中,不够突出
4.BBR算法在带宽受限时,非常稳定,在丢包时,最强悍
5.网络情况时的最佳算法,即使有震荡,仍然可以占用很高的带宽

总结

综合实际网络情况的话,BBR算法对于网络变化有更强的适应能力,主要是丢包,传统算法会因为丢包率居高不下导致什么数据都发不出去。

发生丢包时的反应

  1. Vegas,rtt增大,降窗,但是不确定哪个包会被丢弃,所以不够稳定,但是以较低的窗口仍然可以发包
  2. BBR,rtt增大,bw降低,计算得到的inflight不一定增大或者减小,但是发包速率一定在降低,也可以认为带宽的降低
  3. CUBIC,先进入快速恢复,网络上回来一个包就发出一个包,但前面链路是大量包的情况下,比如10000个包在链路上,15%的丢包率,有1500个包丢失,可能很难退出快速恢复模式,如果直接进入慢启动流程更利于恢复

-------------
探花原创

你可能感兴趣的:(TCP)