Kernel 4.9 正式版本的发布带来了一些令人激动的特性以及一些驱动的更新。 其中来自 Google 的 TCP BBR (Bottleneck Bandwidth and RTT) 拥塞控制算法也在这个版本并入了主线。

0x00 Background

几个月前就在Github上fork了Google开源的神器BBR算法,但是一直都没有深入去分析研究。最近看Kubernetes相关的文档突然想起了这个神器,于是我大晚上的搭了一台测试机对TCP BBR进行了测试。

根据以往的传统,G家总是先在自家的生产环境上线运用后,才会将代码开源,此次也不例外。我在一台代理服务器节点上部署了TCP BBR 拥塞控制算法。从电信出口到日本Vultr的实测下载速度从381KB/s提高到了4.26MB/s.

补充测试环境说明:是在日本的Vultr服务器上配置了 BBR,日本的服务器是数据的发送方。这个服务器是访问墙外资源的 HTTP 代理。我本地的电信出口到代理服务器之间不是dedicated专线,走的是公网,电信出口这边是 10Mbps 无限速(但是要跟其他人share),代理服务器实测是限速1Mbps。RTT 是 96 ms。实测结果这么好,也是因为大多数人用的是 TCP Cubic (Linux) / Compound TCP (Windows),在有一定丢包率的情况下,TCP BBR 更加激进,抢占了更多的公网带宽。因此也是有些不道德的感觉。

Continue reading