写在前面
之前其实写过一篇类似文章,也是有关于CUBIC与BBR算法的比较。但是那一篇文章大多是比较感性的探讨,并没有仿真数据作为支撑。所以这里我将会结合数据对CUBIC与BBR的公平性进行探讨。
(万分感谢@Soonyang Zhang学长的ns3相关源码)
公平性探究
在点对点通信的情况下,我将公平性探究分为三个部分。第一种是所有流都为CUBIC流,第二种是所有的流都为BBR流,第三种是CUBIC流与BBR流混合。
仅CUBIC
在所有的流都为CUBIC流的情况下,公平性如图所示:
CUBIC的收敛性是因为它加增乘减的特性。拥有大吞吐量的流下降的幅度会更大,而小吞吐量的流下降幅度会相对较小。在几个周期之后CUBIC流之间就会共同达到收敛。
仅BBR
在所有的流都为CUBIC流的情况下,公平性如图所示:
BBR流收敛速度会比CUBIC更快。我理解会出现这种原因是因为BBR吞吐量的上升比CUBIC更加激进,会一直上升到BBR自己计算的可用带宽。
CUBIC与BBR混合
在bufsize等于1.5倍BDP的情况下,CUBIC和BBR基本达到公平。
BBR和CUBIC竞争时,当BDP已经被填满的情况下,由于没有发生丢包事件,CUBIC会继续增加发送速率来填满bufsize,而此时由于RTT的上升,BBR的发送速率会持续降低,而这个过程的持续长短就是竞争的关键。
当bufsize很大时,丢包事件会出现的比较晚,CUBIC会取得优势。
当bufsize很小时,丢包事件会出现的很早,CUBIC会把带宽让出来给BBR,从而使BBR取得优势。
这个公平点差不多就是1.5BDP。
在bufsize等于0.6倍BDP的情况下,BBR占据优势。
在3倍BDP的情况下,CUBIC占据小优势。
这非常有趣,与BBR论文中的实验结果不相同。BBR论文中的结果表明在3倍BDP的情况下CUBIC优势会非常大,但是这里CUBIC只是略优于BBR。
CUBIC在内核中采取的新型的慢启动机制hybrid slow start。这个机制会让CUBIC在还未出现丢包时就降低自己的发送速率。虽然这个机制加快了CUBIC的收敛速度,但是同时也降低了面对BBR的竞争力。
(图为改变bufsize但是却慢启动的收敛点却是相同的,也就是hybrid slow start机制)
最后
仿真结果做出来了,公平点大约是在1.5倍BDP左右。但是这个仅仅只是实验结果而已,关于这个最优点的计算还需要深入阅读理解两个论文的具体公式,然后再来对比。
毫无疑问这是个纯数学计算,纯数学计算对我可太难了…麻了麻了…算不出,有机会和时间我再去看看。输麻了