美文网首页
CUBIC: A New TCP-Friendly High-S

CUBIC: A New TCP-Friendly High-S

作者: 二进制研究员 | 来源:发表于2018-10-29 17:01 被阅读36次

作者:Sangtae Ha, Injong Rhee@North Carolina State University, Lisong Xu@University of Nebraska

摘要

CUBIC是TCP(传输控制协议)的一种拥塞控制协议。该协议将TCP中的线性窗口增长函数修改为cubic函数,以提高高速和长距离网络的可扩展性。通过将窗口增长独立于RTT,这些流以同样的速率增长它们的拥塞窗口)。因此,协议在具有不同RTT的流之间取得更好的等效带宽分配。在稳定状态期间,当窗口大小离饱和点较远时CUBIC激进地增加窗口大小;当窗口离饱和点较近时,CUBIC缓慢地增加窗口。当网络的带宽延迟积较大时,这一特性使得CUBIC具有较好的扩展性;同时,CUBIC比TCP数据流具有更高的稳定性和公平性。本文给出CUBIC的设计、实现、性能和评估。

导言

  • 随着Internet的演进,高速和长距离网络的数量增加。
  • 拥塞窗口的大小较大:带宽延迟积(网络中in flight的数据包的总量)较大且需要充分利用网络带宽。

TCP-Reno、TCP-NewReno和TCP-SACK之类的TCP协议在每个RTT增长其窗口大小。这使得TCP的数据传输层速率相对缓慢。在极端情况下,导致网络利用率较低,尤其是当数据流的持续时间低于TCP增长其窗口到BDP大小的时间。例如,假设网络链路的速率为10Gbps, RTT大小为100ms,数据大小为1250字节,BDP的大小约为100,000数据包。对于窗口大小从BDP中间值(50,000)开始的TCP,需要花费50,000个RTT(约1.4小时)。如果数据流在这之前完成,导致链路的利用不充分。

BIC-TCP使用二分查找算法;窗口在数据丢包时的窗口大小(max)和上一次RTT期间没有数据丢包的窗口大小(min)之间增长到中间窗口大小。这种查找中间窗口大小的合理性在于当前路径的容量是min和max窗口大小之间的某个值(如果网络状况在最后一个拥塞信号后没有快速变化)。当窗口大小增长到中间值大小,如果网络没有丢包,意味着网络可以容纳更多的流量,因此BIC-TCP将中间值设置为新的min值,并继续执行二分查找。上述过程的效果是:当窗口大小与路径可用容量较远时,窗口大小快速增长;当窗口大小与可用容量接近时,缓慢减少窗口增量。整个窗口增长函数是一种简化的对数凹函数。与线性函数和凸函数相比,凹函数使得饱和点或平衡点处拥塞窗口更长。

BIC-TCP窗口增长函数
上图给出BIC-TCP的增长函数。当出现数据包丢包时,BIC-TCP将窗口减少乘数因子 CUBIC窗口增长函数
当紧随丢包事件发生窗口减少时,CUBIC注册 part 1
part 2
part 3

当在拥塞避免期间收到ACK时,首先采用如下方式检查协议是否在TCP区域。我们可以分析就逝去时间t而言的TCP窗口大小。
W_{tcp(t)} = W_{max}(1-\beta) + 3\frac{\beta}{2-\beta}\frac{t}{RTT}
如果cwnd小于W_{tcp(t)},那么协议在TCP模式,并且在收到每个ACK时,将cwnd设置为W_{tcp(t)}。算法1中的cubic_tcp_friendliness给出这一过程。

当在拥塞避免阶段接收到ACK,如果协议不在TCP模式并且cwnd小于W_{max},那么协议处于concave区域。在这一区域,cwnd增加\frac{W(t+RTT)-cwnd}{cwnd}

如果协议处在convex区域(cwnd的值大于W_{max})且不在TCP模式,那么cwnd的值增加\frac{W(t+RTT)-cwnd}{cwnd}

为了增加现有数据流的带宽释放(为新流释放带宽),我们增加了称为fast convergence的机制。使用这一机制,当丢包发生时,在减少拥塞窗口前,协议在为当前丢包更新W_{max}前记住上一次的W_{max}值,称为W_{last\_max}。发生丢包事件时,如果当前W_{max}小于其上一次的值,表示当前流的饱和点降低了,因为可用带宽的改变。那么,我们允许当前流释放更多的带宽,通过进一步降低W_{max}的值。

相关文章

网友评论

      本文标题:CUBIC: A New TCP-Friendly High-S

      本文链接:https://www.haomeiwen.com/subject/hiebtqtx.html