拥塞控制与QUIC

2022-10-01  本文已影响0人  谭英智

拥塞控制

概念:

什么是冗余ACK:当某一个包丢包或者暂时迷失在网路中,后续的包先到达目的端,每到达一个seq更大的包,就会返回一次冗余ACK。

拥塞控制算法

Tahoe

拥塞事件:超时,3个冗余ACK

慢启动阶段:

拥塞避免阶段:

network-tahoe

存在的问题:每次发生网络抖动,例如收到冗余ACK或者超时,则非常悲观的把发送窗口设置为1,导致发送的网络包像脉冲一样,网路有时高负荷,有时利用率低

Reno

慢启动阶段:

拥塞避免状态:

快速恢复状态:

存在的问题:

进入快速恢复阶段,收到冗余ACK,只会重传一个包,如果这个包后续的包也发生了丢包,源端又不进行重传,会导致超时,进入慢启动状态

new reno

针对reno存在的问题,New Reno在快速恢复阶段进行了优化

快速恢复阶段:

存在的问题:

在一定程度上缓解了reno的问题,但是new reno在一个RTT只能恢复一个段的丢失,在网络上丢多个分段的时候,显得利用率不高

SACK

增加SACK包,在快速恢复阶段,在包中带多个分段的信息,

这样源端就可以高吞吐的重传多个分段丢失的包

CUBIC

思想是,考虑到在慢启动阶段通过2倍的速度来逼近阈值,和在拥塞避免阶段通过加1来慢速逼近阈值,CUBIC通过用立方函数,来快速逼近阈值

的出来的流量曲线如下

network-cubic

ECN

Reno系列的算法,都是依赖端对端的反馈,这样显得反馈太慢

通过修改TCP和IP协议,在网路的路由器发生拥塞时,及时反馈源端,显得更有效

缺点:需要修改路由设备

Vegas

基于Reno的算法,是基于超时、冗余ACk,但是网路此时已经出现严重的拥塞,拥塞的控制应该更加敏感

Vegas通过感知延迟的变化,在更早的时刻感知拥塞,更加温和的调节速度,让网路整体上,处于高利用率的状态

慢启动状态:

拥塞避免状态:

网络流量的情况如下:

network-vegas

存在的问题:

对RTT的变化过于敏感,在跟其他算法在竞争网络时,显得过于温和,导致抢不到网络资源

BBR

基于评估网路的流量,来动态调整发送的速率

评估端对端重负载时的最大带宽BtlBW

评估端对端在不拥塞时的最佳延迟:RTprop

BDP = BtlBw * RTprop

源端在注入等待被确认的inflight数据不超过BDP

慢启动阶段:

Drain:

ProbeBW:

ProbeRTprop:

QUIC

HTTP2存在的问题

HTTP3的思路

QUIC架构

network-quic
上一篇下一篇

猜你喜欢

热点阅读