- Author:
Yiqing Ma
(Hongkong University of Science and Technology ) Congestion Control, Transport
一, 目标:
最初目标:
最初的TCP 通过维护一个cwnd来进行拥塞控制,只要网络中没出现拥塞,拥塞窗口的值就可以增大一些,把更多的包发送出去。但只要出现拥塞,拥塞窗口的值就应该减小一些,以减少注入到网络中的数据包数。
核心:
选择一个有效的策略来控制拥塞窗口的变化
二,种类:
- 基于丢包的拥塞控制 - Reno and Cubic
- 基于时延的拥塞控制 - Vegas and FastTCP
- 基于链路容量的拥塞控制 - BBR
- 基于学习的拥塞控制 - Remy
三,介绍:
Vegas:
Vegas 将时延RTT的增加作为网络出现拥塞的信号,RTT增加,拥塞窗口减小,RTT减小,拥塞窗口增加。具体来说,Vegas通过比较实际吞吐量和期望吞吐量来调节拥塞窗口大小.
缺点
:基于丢包的拥塞控制算法会尝试填满网络的缓冲区.Vegas 计算出来的RTT会偏大
适用
:于网络中只存在Vegas一种拥塞控制算法,竞争公平的情况。
Reno:
Reno 4个阶段:慢启动,拥塞控制,快速重传,快速恢复
缺点
:Reno 算法将收到 ACK 这一信号作为拥塞窗口增长的依据,在高带宽延时(High Bandwidth-Delay Product,BDP)网络中,RTT很大,导致拥塞窗口增长很慢,传输速度需要经过很长时间才能达到最大带宽.
适用
:低延时、低带宽的网络。
Cubic:
Cubic 是Linux内核2.6之后的默认TCP拥塞控制算法,使用一个立方函数(cubic function)作为拥塞窗口的增长函数。
公式表明:cwnd不跟RTT有关了,而仅仅取决于上次发生拥塞时的最大窗口和距离上次发生拥塞的时间间隔值。
Cubic拥塞窗口增长曲线如下,凸曲线部分为稳定增长阶段,凹曲线部分为最大带宽探测阶段。拥塞窗口增长很快,在接近Wmax口时,增长速度变的平缓,避免流量突增而导致丢包。在Wmax附近时,拥塞窗口不再增加。在远离Wmax后,增大窗口增长的速度,保证了带宽的利用率
缺点
:无法区分拥塞丢包和传输错误丢包以及过于激进,填满拥塞窗口,出现Bufferbloat.
适用
:高带宽,低丢包率网络,能够有效利用带宽。
BBR:
BBR是谷歌在 2016 年提出的一种新的拥塞控制算法,已经在 Youtube 服务器和谷歌跨数据中心广域网上部署.
BBR 算法不将出现丢包或时延增加作为拥塞的信号,而是认为当网络上的数据包总量大于瓶颈链路带宽和时延的乘积时才出现了拥塞,所以BBR也称为基于拥塞的拥塞控制算法(Congestion-Based Congestion Control)。BBR 算法周期性地探测网络的容量,交替测量一段时间内的带宽极大值和时延极小值,将其乘积作为作为拥塞窗口大小.由于 BBR算法不将丢包作为拥塞信号,所以在丢包率较高的网
络中,BBR依然有极高的吞吐量.
缺点
:设备队列缓存较大时,BBR 可能会竞争不过 Cubic 等比较激进算法,原因是 BBR 不主动去占据队列缓存.
适用
:高带宽、高时延、有一定丢包率的网络,可以有效降低传输时延,并保证较高的吞吐量。
Remy:
Remy也称为计算机生成的拥塞控制算法(computer-generated congestion-control algorithm),采用机器学习的方式生成拥塞控制算法模型。通过输入各种参数模型(如瓶颈链路速率、时延、瓶颈链路上的发送者数量等),使用一个目标函数定量判断算法的优劣程度.最终会生成一个网络状态到调节方式的映射表,在真实的网络中,根据特定的网络环境从映射表直接选取拥塞窗口的调节方式。
缺点
:这种方式比较依赖输入的训练集(历史网络模型),如果训练集能够全面覆盖所有可能出现的网络环境及拥塞调节算法,Remy算法在应用到真实的网络环境中时能够表现的很好,但是如果真实网络与训练网络差异较大,Remy 算法的性能会比较差。
适用
:网络环境为复杂的异构网络,希望计算机能够针对不同网络场景自动选择合适的拥塞控制方式,要求现有的网络模型能够覆盖所有可能出现情况。