计算机 · 2021年12月26日 0

vegas算法笔记

论文

TCP Vegas: end to end congestion avoidance on a global Internet – Selected Areas in Communications, IEEE Journal on

改进之处

1.New Retransmission Mechanism

以前的reno实现(或者说tcp/ip协议栈)的超时定时器粒度太粗(500ms),只有在重传超时定时器或者3次重复ack时才会去触发检测重传,导致重传的处理非常滞后。

Vegas则做了改进,在每次收到重复ack,或者是重传之后的第1个或者第2个ack,也进行重传检测,使得重传更加及时。

2.Congestion Avoidance Mechanism

Slow-Start阶段的算法由第3点Modified Slow-Start Mechanism描述。这部分只对非Slow-Start阶段适用。

BaseRTT:测量得到的最小RTT。

WindowSize:当前拥塞窗口。

Expected (sendrate):Expected = WindowSize/BaseRTT

Actual (sendrate):计算一个round的真实发送速率。计算方式为:记录一个包从发出去到收到ack期间总共发送了多少byte,再除以这个包从发出去到接收到ack所花时间。每个round计算一次。

Diff:Diff = Expected – Actual

Diff代表了Vegas估计的当前设置发送速率与链路瓶颈速率的差异。

如果Diff < 0:需要更新BaseRTT为最新的RTT采样值。

如果Diff >= 0:另外定义两个阈值alpha < beta,

当Diff < alpha时,在下一个round内线性增加cwnd;

当Diff > beta时,在下一个round内线性减少cwnd;

档alpht < Diff < beta时,cwnd维持不变。

实际实现中并不是使用Diff,而是使用Diff*BaseRTT来估计发端向网络发超了多少数据。

3.Modified Slow-Start Mechanism

vegas在slow-start阶段不是和reno一样每个rtt cwnd都在翻倍,而是每隔1个rtt再将cwnd翻倍。每次使用新的cwnd发送时,要持续发送2个round的时间,并且在第2个round发送结束时比较Expected sendrate和Actual sendrate。如果Actual sendrate比Expected sendrate低了,再进入线性调整cwnd的模式。