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

搬瓦工开启 BBR 教程:Debian、Ubuntu 配置、验证与回退
搬瓦工运维与建站教程 · 配置、验证与安全回退

BBR 经常被称为“加速”,但它不会改变搬瓦工的机房位置,也不会替你修复 DNS、应用慢查询或本地 Wi-Fi。更准确的用法是:在内核支持的前提下切换 TCP 拥塞控制,使用相同条件做前后对比,效果不好时能恢复原设置。

本文使用发行版自带内核,不安装第三方加速内核。修改前保留 SSH 和控制台通道;没有配置经验时先按只读部分检查,网络路径可参考 机房与测试 IP 资料。

一、BBR 适用范围

BBR 改变什么,不改变什么
不要把开启成功直接等同于速度提升。

BBR 根据连接测量结果控制 TCP 发送,不是保证网速翻倍的开关。它的实际表现取决于瓶颈、排队、丢包及双方实现;名称为 bbr 也不直接证明某个具体实验版本已经启用。不要把 TCP 配置推广成 UDP 或 QUIC 的统一加速结论。[1][2]

服务器上的 TCP 拥塞控制主要影响它发送数据的行为。下载测试方向不同,使用到的发送端算法也可能不同;从 VPS 拉一个文件和往 VPS 上传文件不能直接混为一项结果。

二、先记录现有配置

修改之前保存三项状态
恢复设置需要原值,不要默认所有机器原来都是 cubic。
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 直接替换来源不明的内核。优先使用受支持的发行版内核,并保留可启动的旧版本和备份。

相关阅读

参考资料

  1. Google BBR:项目与算法说明
  2. Linux:TCP 拥塞控制参数

微信订阅号

VPS收割者微信公众号

QQ群(全员禁言)

VPS收割者QQ群(全员禁言)