Linux Kernel 4.9 的 TCP BBR 算法

BBR

BBR 是一种“TCP 阻塞控制”算法,由 google 于 2016 年 9 月开始向 Kernel 提交相关代码,在 Kernel 4.9 正式被支持。

如果经常使用代理的话,一定在某些供应商那边听过“锐速”这个东西。它跟 BBR 类似,也是一种阻塞控制算法的实现,所以新的 TCP 阻塞控制算法其实并不稀奇。算法是否是绝对的“正解”也不好下定论。

原始 TCP 阻塞控制弊端

  1. 当出现丢包,会主动降低发送端速率
  2. 无法区分错误丢包还是阻塞导致的丢包
  3. 以网络堵塞程度来预估发送窗口的大小
  4. 等。

TCP BBR 的做法

  1. 不考虑丢包
  2. 不预估发送窗口大小而是预估宽带和延迟
  3. 等。

总结

TCP 阻塞控制很复杂,可能只有这方面的专家才能正确的认识和解释其中的奥秘。
BBR 算法十分有效的解决了在网络利用率低的场景下尽可能充分的利用宽带,有非常多的测试可以证明这个观点。

TCP-BBR 是谷歌在生产环境实践以后才发表了相关论文并且将实现开源,有很充分的可靠性。而不是像“锐速”这中闭源的商业产品,不仅可靠性低,而且不安全,所以锐速才死了嘛。

最后

BBR 在 4.9 内核中可以手动开启,无需安装多余的组件。下篇文章我将专门购买一个海外主机升级内核启用 BBR 来做测试。