These dynamics don’t seem to be shown visually in the paper. However, I think I can shed some light on them:
I’ll assume we started the BBR flow with no competition, and that a new Reno flow has, for some reason, switched to congestion avoidance before reaching the full BDP. This implies a fairly high BDP, ie. both bandwidth and RTT are significant. This situation generalises well.
So BBR starts with knowledge of the true minRTT and maxBW. From here, maxBW will not increase as long as the path remains constant. With competition, the actual delivery rate is reduced from maxBW, so inflight begins to increase and eventually hits cwnd = maxBW * minRTT * cwnd_gain. Entering a PROBE_BW phase with pacing_gain=1.25 here simply increases inflight faster in the short term; the delivery rate still cannot increase enough to match. At inflight == cwnd, pacing_gain is no longer the controlling factor (except possibly when pacing_gain=0.75), and BBR becomes ack-clocked.
A key distinction between BBR and Reno is that cwnd is capped at a multiple of the true BDP at this point. When BBR becomes ack-clocked, its buffer occupancy and induced latency with a dumb FIFO is significantly less than with a loss-based CC.
After 20 seconds, the true maxBW and minRTT samples time out of the max- and min-filters, and new values are computed from more recent samples of delivery rate and effective RTT. The measurement window by now includes at least one cycle of the probe mechanism under competition. The maxBW value will therefore fall, and minRTT will rise.
Rising minRTT increases the cwnd cap, allowing BBR to compete fairly with loss-based CCs that fill a large buffer. Control of latency is lost, but that’s due to the competition ignoring it, not any failing in BBR.
Falling maxBW implements that fairness by sharing the buffer with the competition. Even at the true maxBW, BBR is only ever sending 25% faster than the path capacity, so there’s plenty of opportunity for Reno to insert packets as well. When ack-clocked, BBR is naturally limited to some relatively fair throughput, related to the ratio of cwnds at that time. In the worst case, the ack-clocked rate will eventually become the dominant value in the max-filtered delivery rate, as shown in Figure 3 in the paper.
Since Reno increases cwnd quite slowly in congestion-avoidance, BBR should initially converge on a slightly increased minRTT and a roughly halved maxBW. BW probes will *then* show a temporarily increased delivery rate, since they disturb the buffer-sharing equilibrium. However, because BBR paces its probes, they will never reveal the full path BW while there is competition for it, so BBR will always leave some room, and Reno will grow into it, forcing the RTT gradually upwards.
This does not mean the BBR is guaranteed to reach *equal* throughput with its competition. It is not, even approximately. But it won’t *starve* the competition. That’s what “fairness" means in congestion control.
Things get a bit more complicated when the buffer fills and starts dropping packets. This places a cap on Reno’s cwnd and BBR’s minRTT estimate. This results in the long-term sharing statistics, which depend on the buffer size relative to the true BDP.
- Jonathan Morton