TCP BBR 相信大家都不陌生了，这是一套由 Google 所设计并发布的 TCP 拥塞控制算法。由于锐速迟迟没有提供对新内核的支持，再加上自 Linux 4.9内核开始默认支持 TCP BBR，它开始逐渐成为服务器单边加速的首选。而 BBRplus 则是 CSDN 网友 dog250 针对原版 BBR 进行修改而来的加强版。而 BBRv2 则是原版 BBR 的后续迭代版本，目前仍然处于测试阶段。不过面对种类繁多的 BBR 衍生版本，网络上却很少能够看到对他们的横向对比评测。现有的一些评价也往往都基于经验和主观印象，或是变量不可控的异地测试。于是 reizhi 决定抽空对 BBR BBRplus 和 BBR2 进行本地横向测试一探究竟。**测试环境**使用 VMware workstation 开启两台 Debian 虚拟机，其中 A 机为服务器，通过 Nginx 架设 Web 服务并放置 100mb 文件供下载测速；B 机为客户机，使用 wget 进行下载。两台虚拟机通过虚拟内部网络连通，且均位于 SSD 固态硬盘上。**测试方法**通过 tc 命令将 A 机网卡设置为延迟 150ms ± 15ms（随机波动），丢包8%用于模拟一般化的网络环境。安装不同 BBR 分支加速后，在 B 机通过 wget 下载 100MB 的测试文件若干次（≥5次），并取最快3次的平均速度。**测试结果**我们直接来看测试结果，目前仍处于测试版本的 BBRv2 是本次测试中最慢的，速度与4.19内核默认的 cubic 算法几乎相同。而令人意外的是，BBRplus 虽然显著快于原版 BBR，却被5.5内核的 BBR 远远甩在身后。测试中让人非常意外的是，BBRplus 分支在启动下载后速度攀升非常迅速。但不知何种原因，在下载进行到50% ~ 60%左右时，速度会骤然回落。下图完整的记录了 BBRplus 4.14.129 的速度变化情况。起初 reizhi 以为是测试误差或其他原因，但经过了重启，重装系统，重装内核，手动编译内核开启 BBRplus 等操作后均未改善。在同等测试环境下，BBR 5.5 的速度表现就要稳定得多。虽然 BBR 5.5.10 起步加速和峰值速度都不如 BBRplus，但在下载全程中均保持了非常不错的速度，最终整体耗时远低于 BBRplus。这是否意味着 BBRplus 更适合于突发小流量而 BBR 则擅长大流量持续吞吐呢？**附注**在本次测试中同样也尝试了锐速及 Net-speeder，不过与 BBR2 类似的，他们的全程速度均只有2位数，在此便没有将结果包纳进来。以上是 BBR2 的速度情况，由于速度过慢未进行完整下载。作者：https://roov.org/2020/03/bbr-bbrplus-bbr2/