s2n-quic
s2n-quic copied to clipboard
fix(s2n-quic-core): don't reduce lower bounds during BBR startup
Description of changes:
This change fixes the behavior of BBR during Startup so that when loss is encountered during Startup, the short term data volume and data rate bounds are not updated. The original code assumed the BBRIsProbingBW()
function mentioned (but not defined) in the BBR RFC should return true only if BBR is in the ProbeBW state. After looking at the TCP Linux BBR implementation and the Chromium implementation, this is not correct.
The text at the beginning section 4.5.6.3 also makes this clear:
When not explicitly accelerating to probe for bandwidth (Drain, ProbeRTT, ProbeBW_DOWN, ProbeBW_CRUISE), BBR responds to loss by slowing down to some extent.
Testing:
Added a unit test
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.