Homepage of Max Inden

24th DistSys Reading Group - BBR Congestion-Based Congestion Control

Posted at — Apr 6, 2020

After a bit of a break due to current pandemic we decided to carry on and continue our meetings as virtual calls. Ignoring the usual initial hiccups and the missing whiteboard the medium worked well for us.

Topic and reading of this session was the ACM Queue article BBR: Congestion-Based Congestion Control [1], as well as the Dropbox article Evaluating BBRv2 on the Dropbox Edge Network [2].

We started off with a quick recap of the previous session covering why we need congestion control, how one can view a multi-hop connection as a single hop connection with a single bottleneck and most importantly the fact that the Internet is the largest distributed system that most of the time “just works” due to congestion control.

The key takeaways are best understood through figure 1 of the ACM Queue article [1]. A TCP connection can be in 3 states:

Figure 1 ACM queuearticle

Loss-based congestion control algorithms, as their name implies, operate based on loss detection, thus they only act once going from bandwidth limited to buffer limited. The key take-away and the novelty of BBR is that it does not operate based on loss-detection, but rather on perceived round-trip-time and bottleneck-bandwidth. With this mechanism BBR promises to operate closer to the optimal - the bandwidth delay product - preventing packet-loss in the first place instead of operating based on it.

For people wanting to dive deeper here is a list of resources mentioned during the session:

For the next session we will stay within the realm of networking and talk about packet scheduling and queuing in Linux and how one can implement QoS (Quality of Service).


[1] Cardwell, Neal, et al. “BBR: Congestion-based congestion control.” Queue 14.5 (2016): 20-53.