Google BBR

TCP BBR 解决什么问题?

  1. 在有一定丢包率的网络链路上充分利用带宽。

  2. 降低网络链路上的buffer占用率,从而降低延迟。

BBR 原理

TCP 拥塞控制的目标是最大化利用网络上瓶颈链路的带宽。一条网络链路就像一条水管,要想用满这条水管,最好的办法就是给这根水管灌满水。

水管内的水的数量 = 水管的容积 = 水管粗细 × 水管长度

网络术语:网络内尚未被确认收到的数据包数量 = 网络链路上能容纳的数据包数量 = 链路带宽 × 往返延迟

TCP 维护一个发送窗口,估计当前网络链路上能容纳的数据包数量,希望在有数据可发的情况下,回来一个确认包就发出一个数据包,总是保持发送窗口那么多个包在网络中流动。

如何估计水管的容积呢?一种大家都能想到的方法是不断往里灌水,直到溢出来为止。标准 TCP 中的拥塞控制算法也类似:不断增加发送窗口,直到发现开始丢包。这就是所谓的 ”加性增,乘性减”,也就是当收到一个确认消息的时候慢慢增加发送窗口,当确认一个包丢掉的时候较快地减小发送窗口。

Reference

https://www.zhihu.com/question/53559433/answer/135903103
https://www.zhihu.com/question/53559433