1. BBR 适合解决什么问题#
BBR 是 Linux 可用的一种 TCP 拥塞控制算法,用来决定发送端怎样利用链路带宽。它可能改善某些高延迟或丢包路径的吞吐,但不会改变机房线路、物理距离、套餐限速或月流量,也不是安装后必然提速。
先用带宽测试留一份启用前记录。选择同一网络、同一目标、同一文件,在相近时段比较;仅看 Ping 数字通常看不出拥塞控制带来的变化。
2. 查看当前内核和可用算法#
本文适用于可以管理自己 Linux 内核的实例。旧式容器虚拟化可能由宿主机控制内核;不要为开启 BBR 套用来历不明的内核替换脚本。
uname -r
sysctl net.ipv4.tcp_congestion_control
sysctl net.ipv4.tcp_available_congestion_control
sysctl net.core.default_qdisc如果当前算法已经是 bbr,不需要重复安装。若可用列表没有它,先尝试加载发行版内核自带模块,再查询一次。
sudo modprobe tcp_bbr
sysctl net.ipv4.tcp_available_congestion_control出现模块不存在时,先检查当前系统和内核支持情况。优先使用发行版受支持的内核更新路径,参见系统升级;不要直接卸载仍可启动的旧内核。
3. 保存原值,先做临时切换#
将前一步的拥塞控制和队列规则记下来。确认可用列表含 bbr 后,临时改变默认配置。
sudo sysctl -w net.core.default_qdisc=fq
sudo sysctl -w net.ipv4.tcp_congestion_control=bbrtcp_congestion_control 影响后续新建 TCP 连接的默认选择;已有连接不一定立即改变。default_qdisc 是默认排队规则,修改后也不保证现有网卡队列立刻被替换。可用 tc qdisc show 观察实际网卡状态,不要为了让输出一致盲目删除线上队列。
4. 确认效果后再持久化#
临时设置通过后,在 /etc/sysctl.d/ 新建专用文件,例如 90-local-bbr.conf,写入两行。先用 rg 或 grep 查看其他 sysctl 文件是否重复设置同名参数,避免加载顺序把值覆盖。
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbrsudo sysctl -p /etc/sysctl.d/90-local-bbr.conf
sysctl net.ipv4.tcp_congestion_control
tc qdisc show完成一次计划内重启后再检查持久化结果。若业务不能重启,记录待验证项,在维护窗口完成;不必为了教程操作立刻中断服务。

5. 如何回退和判断是否保留#
恢复之前记录的拥塞控制算法和队列默认值,并修改或移走自己新增的配置文件。不要删除整个 /etc/sysctl.d/ 目录。再建立新连接,按相同方法测试。
保留 BBR 的依据是自己的业务表现:吞吐更稳定、请求延迟没有恶化、CPU 和流量没有异常。若结果无明显变化,继续检查路由丢包、应用负载和服务器限速。不要把换算法当作所有网络问题的统一修复。
完成后检查
若问题来自 DNS、CPU 或端口拦截,改变拥塞算法不会解决它。