没有找到文章原文,只看到一些说明,以及初步测试结果。
BBR is a new algorithm for TCP Congestion Control. It was tested in Google's data center networks as well as on some of their public-facing Web servers including Google.com and YouTube. It strives to optimize both throughput and latency/RTT by estimating the bottleneck bandwidth and RTT to compute a pacing rate. One goal—one that sets it apart from most traditional TCP variants—is to avoid filling up the bottleneck buffer, which might induce Bufferbloat.
Operation
A description of the algorithm was published in the September/October 2016 issue of ACM Queue. An implementation in the Linux kernel has been proposed as a patch. Dave Täht posted a preliminary evaluation ("a quick look...") on his blog. An good description of the BBR's motivation and approach is included in the proposed kernel patch (see below).
In the STARTUP phase, BBR tries to quickly approximate the bottleneck bandwidth. It does so by increasing the sending rate until the estimated bottleneck bandwidth stops growing.
Bottleneck bandwidth is estimated from the amount of data ACKed over a given period, filtered through a "windowed max-filter".
In the DRAIN phase, the sending (pacing) rate is reduced to get rid of the queue that BBR estimates to have created while probing the bottleneck bandwidth during STARTUP.
In steady state, BBR will pace to the estimated bottleneck bandwidth. Periodically it tries to improve its network model by doing probing:
PROBE_BW mode: BBR probes for a bandwidth increase at the bottleneck by increasing the pacing rate, then decreasing the rate to remove temporary queuing in case the bottleneck bandwidth hasn't grown.
PROBE_RTT mode: RTT is filtered through a windowed min-filter. Sometimes the algorithm will reduce the pacing rate to better approximate the base RTT in case queueing ("bufferbloat") is in effect.
-------------------
其中PROBE_BW mode:通过调整发送速率的方法来测试瓶颈带宽,颇有启发
ref:
[1] BBR 机制简介:http://kb.pert.geant.net/PERTKB/BbrTcp
[2] BBR 实验测评:http://blog.cerowrt.org/post/bbrs_basic_beauty/