通过对BBR拥塞控制的仿真,使我坚信,能够设计一个比BBR拥塞控制还要好的协议,是一件极其困难的事情。
之前,我在ns3仿真中验证了RTT的公平性特性[1]。使用的拓补很简单,在一个point2point channel中运行了三个数据流。
但是正如[2]中所言,BBR在在相同rtt的组内维持很好的公平性,但是RTT较大的组却可以获得较大的吞吐量。这个就是RTT的不公平性,传统的AIMD的拥塞控制算法确实利于RTT小的数据流,BBR算法正好于此相反。
Flows with equal RTT converge to a fair share within their group, however, groups with higher RTT claim a bigger share overall.
论文[3]指出,BBR的存在RTT不公平性现象,即在同一个瓶颈链路中,rtt大的BBR流可以获得大部分带宽,rtt小的BBR流获取的带宽较少,甚至被饿死。这个小缺点可能恶意利用,这个问题使得rtt较小的数据流采用BBR算法,可能并没有达到吞吐量提升的效果。这个特性可以被恶意利用,正如[3]中所述:
BBR’s bias towards long RTTs can be easily manipulated by strategic receivers, who can steal bandwidth by artificially inflating its RTT.
已有一些文献[3,4,10]在探寻问题的成因。[10]中的解释相对容易理解。
我在一个dumbbell的拓补上进行仿真。
带宽占用如下图:
我发现,把quic代码中bbr_sender.cc中的drain_to_target_这个开关代开,rtt不公平性的问题就有所缓解。测试图:
[1] test quic bbr on ns3 https://blog.csdn.net/u010643777/article/details/90758947
[2] Towards a Deeper Understanding of TCP BBR Congestion Control
[3] Fairness of Congestion-Based Congestion Control: Experimental Evaluation and Analysis
[4] Unraveling the RTT-fairness Problem for BBR: A Queueing Model
[5] TCP LoLa: Congestion Control for Low Latencies and High Throughput
[6] TCP-LoLa https://git.scc.kit.edu/TCP-LoLa
[7] BBR high RTT unfairness: Fifty Shades of Congestion Control: A Performance and Interactions Evaluation
[8] Experimental Evaluation of BBR Congestion Control
[9] Misbehaving TCP Receivers Can Cause Internet-Wide Congestion Collapse
[10] Improving Google’s BBR forReduced Latency and Increased Fairness