BBR(Bottleneck Bandwidth and Round-trip propagation time)是 Google 于 2016 年提出的 TCP 拥塞控制算法,已合并进 Linux 4.9+ 内核。与传统的 CUBIC 相比,BBR 能在网络存在轻微丢包和延迟抖动的场景下维持更高的吞吐量,非常适合跨地区、跨洋的 VPS 网络环境。本文带你一步步检查内核版本、开启 BBR 并验证生效。

本文要点

  • 确认 Linux 内核 ≥ 4.9,搬瓦工最新系统镜像均已满足
  • 两步修改 /etc/sysctl.conf 即可永久启用
  • sssysctl 命令验证是否生效
  • BBR 与系统原有参数兼容,无需担心副作用

什么是 TCP 拥塞控制

TCP 拥塞控制负责在网络出现拥塞时调节发送速率,防止大量数据包同时涌入导致丢包加剧。Linux 历史上默认使用 CUBIC 算法,它依赖检测丢包来判断拥塞,在高延迟或轻微随机丢包的环境中容易误判,吞吐量损失较大。

BBR 改变了思路:它不再等丢包,而是持续测量带宽与延迟,主动推算最优发送速率,从而在相同物理链路上取得更高的实际传输速度。

检查内核版本

BBR 需要 Linux 内核 4.9 或更高版本。搬瓦工默认提供的 Debian 12、Ubuntu 22.04 等系统均已满足,但如果你使用的是较旧的镜像,请先确认:

uname -r
# 输出示例:6.1.0-21-amd64
# 确保版本号主版本 >= 4,次版本 >= 9(或主版本 >= 5)

OpenVZ 架构限制

搬瓦工部分低价套餐使用 OpenVZ 6 容器化架构,共享宿主内核,无法自定义内核参数,BBR 在这类机器上无效。KVM 架构(搬瓦工大多数套餐)才能完整支持 BBR。可在 KiwiVM 主界面确认虚拟化类型。

开启 BBR

编辑 /etc/sysctl.conf,在文件末尾追加两行:

# 开启 BBR 拥塞控制
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
  1. 用编辑器打开配置文件:nano /etc/sysctl.conf
  2. 在末尾追加上述两行,保存退出(Ctrl+O → Enter → Ctrl+X)
  3. 立即应用配置:sysctl -p
  4. 无需重启,BBR 即时生效

fq 队列调度器

net.core.default_qdisc = fq 将排队规则改为 Fair Queue,这是 BBR 的推荐搭配,能更好地利用 BBR 的速率控制能力。绝大多数 Linux 发行版内核均已内置 fq 模块,无需额外安装。

验证 BBR 是否生效

执行以下任一命令确认启用状态:

# 方法一:确认当前拥塞算法
sysctl net.ipv4.tcp_congestion_control
# 期望输出:net.ipv4.tcp_congestion_control = bbr

# 方法二:通过 ss 查看已建立连接使用的算法
ss -tni | grep bbr
# 有活跃连接时会显示 bbr 字样

# 方法三:查看内核已加载的拥塞算法列表
sysctl net.ipv4.tcp_available_congestion_control

效果与注意事项

场景BBR 效果备注
跨地区高延迟传输吞吐量提升明显延迟越高提升越显著
本地低延迟局域网改善有限CUBIC 已足够
轻微随机丢包仍维持高速BBR 不因丢包降速
严重网络拥塞优于 CUBIC,但仍受物理限制并非万能

BBR 对网站访客的影响

开启 BBR 后,VPS 向客户端推送大文件(图片、视频、下载资源)的速度通常有显著提升,网页加载体验改善明显,尤其在客户端位于延迟较高的地区时效果最佳。

小结

  • 内核 ≥ 4.9(KVM 架构)才能使用 BBR,搬瓦工主流套餐均满足
  • /etc/sysctl.conf 追加两行,sysctl -p 立即生效,无需重启
  • sysctl net.ipv4.tcp_congestion_control 验证结果
  • 高延迟、轻丢包场景下效果最明显,是 VPS 调优的第一步

常见问题

BBR 和 BBR2 有什么区别?

BBR2 是 BBR 的改进版,在公平性与拥塞响应上更优,但目前需要较新的内核(5.x+)且仍处于实验阶段。日常使用 BBR(v1)已绰绰有余,搬瓦工 KVM 套餐开箱即用。

开启 BBR 后能提升多少速度?

取决于网络环境,延迟越高、丢包越多提升越大。实测跨洋场景下吞吐量提升 30%~200% 不等,本地低延迟环境则提升有限。

BBR 会影响服务器稳定性吗?

不会。BBR 是内核成熟功能,已大规模部署在 Google 自有网络,只修改拥塞控制算法,不影响其他系统功能。

重启后 BBR 会失效吗?

不会。写入 /etc/sysctl.conf 是持久化配置,重启后内核会自动应用。