漫谈TCP Vegas如何收敛到公平

TCP Vegas,嗯,TCP维加斯,维加斯,你好。

Vegas是一个典型的AIAD算法。

我不是常说AIMD可以收敛到公平吗?这是有控制论作为理论基础的,AIAD,MIMD无论如何都不可能收敛,它们要么原地打转,要么正反馈到彻底失控。

知道你的魔改为什么让事情更糟糕了吗?因为你不懂控制论,你的魔改可能造成了正反馈,类似把话筒对着喇叭的那种。

可是Vegas就是一个AIAD算法啊。

Why Vegas?

其它算法都是在到达同步点实施Decrease操作的,可是Vegas的同步点是分布式的,所以在任何一个单独的连接中,均看不到这个同步点。Vegas不识别拥塞的信号,它是在运行过程中自动调节的,从而真正避免拥塞, Reno是识别到拥塞(同步点)后进行拥塞控制,Vegas是完全避免拥塞。

Vegas很简单,它不断的测算期望带宽和实际带宽的差异,通过这个差异来调节发送窗口。Vegas的具体细节不是本文的内容,本文主要介绍Vegas的公平性。

依然用之前的收敛图,我们来看一下Vegas如何收敛。

Vegas和其它算法的区别是,其它算法都是遇到同步点然后一起收敛,Vegas不需要这么一个收敛点。

所以我也就画不出那种单纯的收敛图了,只能在收敛区域做总体规划:
漫谈TCP Vegas如何收敛到公平_第1张图片
可以看出,按照Vegas算法,两个流的窗口均将收敛到11,12两个区域,这明显是公平的。

我的图画的不好,因为那些蓝色,橙色的线本应该是双曲线的一部分,但是drawio实在是很难画这种曲线,就只能用直线拼接来模拟了。

双曲线的意义是,w1和w2加在一起填充带宽和buffer,其实就是解一个方程而已:

α ≤ D i f f = C w n d R T p r o p − C w n d R T T ≤ β \alpha\le Diff=\dfrac{Cwnd}{RTprop}-\dfrac{Cwnd}{RTT}\le \beta αDiff=RTpropCwndRTTCwndβ

最终,我们发现在1,2,3,4区域,w1是AI的,在6,7,8,9区域,w1是AD的,同理w2的动力学也如此,最终,我们发现w1和w2均向11,12区域靠拢,它们只能趋向于这个区域,而在这个区域,我们发现,w1和w2是公平的!

啦啦啦,这就是经理,这就是公平。Vegas如此收敛到公平。

前面我们看到,不管是Reno家族(包括BIC/CUBIC)还是Westwood,BBR都有个明确的收敛点,在这个收敛点执行同步操作,从而保证收敛到公平,然而Vegas没有这样的收敛点,Vegas是自觉收敛的,自觉同步。

那么我看来,如果全网都是Vegas,那就是正确的做法了。然而只要有一个流是非自觉调节的算法,比如Reno,CUBIC,那么Vegas就会被完虐,Vegas碰到Reno/CUBIC,就像TCP碰到UDP一样,根本原因就是, Vegas不和其它算法一起“同步”,换句话说,Vegas根本识别不了所谓的“同步”。

如果有别的采取其它算法的TCP流占据了buffer,Vegas会按照自己的逻辑来理解这个现实,“不应该啊,这家伙的Diff已经够大了,马上就会减窗了”,然而事实上,这些流根本就不是维加斯流…


浙江温州皮鞋湿,下雨进水不会胖。

你可能感兴趣的:(tcp,vegas,公平性)