In this post, I compare the performance of BBR and Cubic on ns3 in term of packets loss rate. And the simulation code is based on quic coebase[1]. A point to point channel is built. In each test case, three fows are injected into the link and with the same congestion control algorithm(Cubic or BBR).
And there is a paremeter (drain_to_target_) in quic BBR, which impact the performance of the algorithm in term of packet loss. Here, BBR(false) means that (drain_to_target_=false).
case | BBR(false) | BBR(true) | CUBIC |
---|---|---|---|
1 | 0.0360 | 0.0110 | 0.0077 |
2 | 0.0289 | 0.0099 | 0.0099 |
3 | 0.0301 | 0.0097 | 0.0106 |
4 | 0.0400 | 0.0128 | 0.0054 |
5 | 0.0255 | 0.0097 | 0.0073 |
6 | 0.0191 | 0.0097 | 0.0088 |
7 | 0.0330 | 0.0098 | 0.0047 |
8 | 0.0337 | 0.0096 | 0.0062 |
9 | 0.0168 | 0.0096 | 0.0076 |
The averge packets loss rate of BBR 1%~2% seems quite conforming with these tests in [3,4]. The cubic can achieve lower packets loss rate but also results in longer packet transmision delay (see pictures in [1]).
Even through BBR has bias torwards longer RTT flows [5], It can get quite high utilization of link bandwidth resource and achieve lower transmisison delay.
[1] simulation code
[2] Increased Retransmission using BBR
[3] BBR Congestion Control: An Update
[4] BBR Congestion Control Work at Google
[5] BBR擁塞控制RTT不公平性測試