Hi all,We have been noticing that BBRv1 offers pretty high single-flow throughput with a policer regardless of the policer bucket size (as long as it is not too small), but that's not the case for BBRv3.
I know that there is no explicit policer detection in BBRv3, there is lot of other stuff going on in there like trying to maintain <2% loss in general, so my questions are:1. What prevents BBRv3 to implement a similar long-term BW estimate?
2. Are there any side-effects to BBRv1's policer detection? Are there any scenarios in which the long-term estimate won't work properly?
Do you have performance summaries or packet traces you can share to characterize what you are seeing with BBRv3 and policers?
In theory, nothing prevents BBRv3 from having a long-term BW estimate (aka policer detection) that is similar to that mechanism in BBRv1. The motivations for not including a long-term BW estimate in BBRv3 are mainly: simplicity, maintainability, and generality. Notably, since BBR v2 and v3 already have a general mechanism to adapt the cwnd and pacing rate based on loss signals, it seemed best to use that general mechanism, rather than adding complexity and state to incorporate the more specific long-term BW estimate that is tuned for detecting a single connection going through a fixed-rate policer.
One scenario in which the long-term estimate won't work properly is if multiple connections are sharing a policed bottleneck. In that case, typically the per-connection bandwidth would not be uniform enough to trigger the use of the long-term estimate.