开启 BBR 加速:提升 TCP 吞吐与高延迟体验

用 Linux 内置的 BBR 拥塞控制算法,在高延迟、易丢包的跨境链路上榨出更高的下载与上传吞吐。

如果你的服务器到目标用户之间跨越了较长的物理距离,或者链路偶尔丢包,你可能会发现明明带宽不小,实际传输速度却上不去。这类场景下,把 TCP 拥塞控制算法切换到 BBR 往往能立竿见影地改善体验。

BBR 是什么

BBR(Bottleneck Bandwidth and Round-trip propagation time)是 Google 提出、并已合入 Linux 内核的拥塞控制算法。传统的 CUBIC/Reno 把「丢包」当作拥塞信号:一旦丢包就大幅降速。而在跨境或无线链路上,丢包常常来自线路质量而非真正的拥塞,这会让传统算法误判、白白压低速率。

BBR 换了思路:它持续测量链路的瓶颈带宽和往返时延(RTT),据此主动估算最合适的发送速率,而不是被动地等丢包再退让。因此在高延迟、中低丢包的链路上,BBR 通常能维持更高、更平稳的吞吐。

前置条件:检查内核版本

BBR 需要 Linux 内核 ≥ 4.9。先确认:

uname -r

只要版本号不低于 4.9,主流的 Ubuntu 18.04+/Debian 10+ 都满足。再确认内核已带 BBR 模块:

sysctl net.ipv4.tcp_available_congestion_control

输出里包含 bbr 即可。若没有,可尝试加载模块:

sudo modprobe tcp_bbr

开启 BBR

BBR 建议搭配 fq(Fair Queue)队列调度一起使用。先在当前会话即时生效,便于验证:

sudo sysctl -w net.core.default_qdisc=fq
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr

持久化到 /etc/sysctl.conf

上面的设置在重启后会丢失。把两行写入 /etc/sysctl.conf(或 /etc/sysctl.d/99-bbr.conf),开机自动加载:

echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

sysctl -p 会立即重新加载配置文件。

验证是否生效

确认当前拥塞控制算法已切换为 BBR:

sysctl net.ipv4.tcp_congestion_control

期望输出:

net.ipv4.tcp_congestion_control = bbr

也可以查看队列调度是否为 fq:

sysctl net.core.default_qdisc

适用与局限

  • 最适合:高延迟(跨国、跨大洲)且带宽较富余的链路,尤其是伴有轻中度丢包时,提升最明显。
  • 效果有限:同机房、低延迟的内网互联本身就快,BBR 带来的改善通常不明显。
  • 注意:BBR 只影响本机发出方向的 TCP 流量,对端无需任何改动;它优化不了物理带宽上限或严重拥塞。改动即时生效,无需重启,风险很低,若不理想可随时改回 cubic。

小结

BBR 是 Linux 内核自带、开箱即用的拥塞控制算法,尤其擅长应对高延迟、易丢包的链路。整个流程只有三步:确认内核 ≥ 4.9、用 sysctl 设置 fq 与 bbr、写入配置文件持久化并验证。几条命令即可让你的服务器在跨境传输上获得更稳定的吞吐体验。