搬瓦工开启 BBR 教程:Debian、Ubuntu 配置、验证与回退

BBR 经常被称为“加速”,但它不会改变搬瓦工的机房位置,也不会替你修复 DNS、应用慢查询或本地 Wi-Fi。更准确的用法是:在内核支持的前提下切换 TCP 拥塞控制,使用相同条件做前后对比,效果不好时能恢复原设置。
本文使用发行版自带内核,不安装第三方加速内核。修改前保留 SSH 和控制台通道;没有配置经验时先按只读部分检查,网络路径可参考 机房与测试 IP 资料。
一、BBR 适用范围

BBR 根据连接测量结果控制 TCP 发送,不是保证网速翻倍的开关。它的实际表现取决于瓶颈、排队、丢包及双方实现;名称为 bbr 也不直接证明某个具体实验版本已经启用。不要把 TCP 配置推广成 UDP 或 QUIC 的统一加速结论。[1][2]
服务器上的 TCP 拥塞控制主要影响它发送数据的行为。下载测试方向不同,使用到的发送端算法也可能不同;从 VPS 拉一个文件和往 VPS 上传文件不能直接混为一项结果。
二、先记录现有配置

uname -r
sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control
sysctl net.core.default_qdisc
ip -br link
tc qdisc show
再查是否有已有持久化设置:
sudo grep -RnsE 'tcp_congestion_control|default_qdisc' \
/etc/sysctl.conf /etc/sysctl.d /usr/lib/sysctl.d 2>/dev/null
保存原算法和队列参数,不要只记住新值。tc 显示的是当前接口队列,default_qdisc 是默认设置,二者不一定一样。后者改变不代表已经把所有接口实时换成新队列。
三、确认支持,再临时切换
如果可用列表已有 bbr,不必强制加载模块。没有时可尝试发行版提供的模块:
sudo modprobe tcp_bbr
sysctl net.ipv4.tcp_available_congestion_control
模块加载失败但列表已经包含 bbr,可能是内核内建实现;列表仍没有,则先核对发行版支持和内核配置,不下载不明“一键脚本”覆盖系统。本文不将 lsmod 作为唯一成功标准。
确认 bbr 可用并已记录原值后,进行临时切换:
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr
sysctl net.ipv4.tcp_congestion_control
这一步不重装系统,也不修改默认路由。具体网络命名空间和程序是否自行设置算法仍要确认;不要在 Docker 容器内改完一个参数,就认为宿主机所有连接都已改变。
四、fq 队列是否一定要一起改
很多配置会同时使用 fq 作为默认队列。但不要把一组参数当成所有内核和网卡的通用答案。先查看实际 qdisc 和内核支持;需要设置时再记录原值并操作:
sudo sysctl -w net.core.default_qdisc=fq
tc qdisc show
现有网卡的队列不一定被这条命令马上替换。若希望在维护窗口通过接口重新初始化或重启应用默认队列,应先安排回退;本文不让读者在唯一 SSH 连接中直接执行 tc qdisc replace,以免影响当前业务。
五、验证新连接,再写入开机配置

在受控目标上建立一个新的 TCP 传输,同时观察:
ss -tin
结合目标地址找到对应连接,查看是否显示 bbr 及相关 TCP 信息。已有连接可能仍按之前算法运行;没有活跃 TCP 连接时看不到算法,也不意味着设置失败。
确认有效后,才创建自己的 /etc/sysctl.d/90-bwh-bbr.conf。若该文件已存在,先查看并备份,不能直接覆盖:
net.ipv4.tcp_congestion_control = bbr
net.core.default_qdisc = fq
第二行仅在前面已经确认采用 fq 时保留。加载这一个文件后再检查;不要用一次 sysctl --system 的输出代替对重复设置和后续覆盖的核对。实际启动后还要验证当前值,系统中其他配置文件或程序可能在更晚阶段修改参数。
六、怎样对比效果

固定下载目标、文件大小、连接数、IP 协议、代理状态和时段,每种配置只运行少量样本。记录速度、重传、实际业务响应和稳定性,而不是挑选其中最好的一次发布。
总流量受套餐额度约束,测试前看 搬瓦工流量用完怎么办?流量统计和重置时间。若延迟主要来自距离或路由绕行,算法调整不能把美国机房变成香港;考虑 迁移机房 前,仍应保留数据和地址变更计划。
七、怎样恢复原设置
根据之前保存的原值,恢复 tcp_congestion_control,需要时恢复 default_qdisc。然后移除或停用本次创建的配置文件,不改其他工具管理的配置。原值不清楚时不要凭印象填 cubic、fq_codel 或 pfifo_fast。
# 将下面的值替换为修改前记录的真实值,不能原样执行占位词
sudo sysctl -w net.ipv4.tcp_congestion_control=原算法
sudo sysctl -w net.core.default_qdisc=原队列
重新建立连接并复测。若现有接口队列没有即时恢复,安排维护窗口处理,不在生产峰值时随意重启网络。其他吞吐和安全设置也不应夹带修改,保持回退范围明确。
常见问题
出现 bbr 字样就表示提速成功了吗?
只能说明相关设置或连接使用了该算法。是否改善业务要通过同条件测量判断。
开启 BBR 后还需要换线路吗?
算法和路由是不同层面。跨境拥塞、距离和运营商路径问题仍可能存在。
能一键装最新版 BBR 内核吗?
不建议在生产 VPS 直接替换来源不明的内核。优先使用受支持的发行版内核,并保留可启动的旧版本和备份。
相关阅读
参考资料

