BBR vs BBRplus vs BBR2 一般网络速度对比
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 的速度情况,由于速度过慢未进行完整下载。