# 检查 TCP 拥塞控制并按需启用 BBR

BBR 是 TCP 拥塞控制算法。它可能改变拥塞环境下的传输表现，但不能修复错误路由、服务未启动或所有类型的限速。旧的 OpenVZ/LKL 加速脚本不适用于现代 KVM 的通用配置。

更新日期：2026-09-16

规范地址：https://stock.iftalking.com/guides/bbr/

## 1. BBR 适合解决什么问题

BBR 是 Linux 可用的一种 TCP 拥塞控制算法，用来决定发送端怎样利用链路带宽。它可能改善某些高延迟或丢包路径的吞吐，但不会改变机房线路、物理距离、套餐限速或月流量，也不是安装后必然提速。

先用[带宽测试](https://stock.iftalking.com/guides/speed-tests/)留一份启用前记录。选择同一网络、同一目标、同一文件，在相近时段比较；仅看 Ping 数字通常看不出拥塞控制带来的变化。

## 2. 查看当前内核和可用算法

本文适用于可以管理自己 Linux 内核的实例。旧式容器虚拟化可能由宿主机控制内核；不要为开启 BBR 套用来历不明的内核替换脚本。

```bash
uname -r
sysctl net.ipv4.tcp_congestion_control
sysctl net.ipv4.tcp_available_congestion_control
sysctl net.core.default_qdisc
```

如果当前算法已经是 `bbr`，不需要重复安装。若可用列表没有它，先尝试加载发行版内核自带模块，再查询一次。

```bash
sudo modprobe tcp_bbr
sysctl net.ipv4.tcp_available_congestion_control
```

出现模块不存在时，先检查当前系统和内核支持情况。优先使用发行版受支持的内核更新路径，参见[系统升级](https://stock.iftalking.com/guides/os-upgrade/)；不要直接卸载仍可启动的旧内核。

## 3. 保存原值，先做临时切换

将前一步的拥塞控制和队列规则记下来。确认可用列表含 `bbr` 后，临时改变默认配置。

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

`tcp_congestion_control` 影响后续新建 TCP 连接的默认选择；已有连接不一定立即改变。`default_qdisc` 是默认排队规则，修改后也不保证现有网卡队列立刻被替换。可用 `tc qdisc show` 观察实际网卡状态，不要为了让输出一致盲目删除线上队列。

## 4. 确认效果后再持久化

临时设置通过后，在 `/etc/sysctl.d/` 新建专用文件，例如 `90-local-bbr.conf`，写入两行。先用 `rg` 或 `grep` 查看其他 sysctl 文件是否重复设置同名参数，避免加载顺序把值覆盖。

```ini
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
```

```bash
sudo sysctl -p /etc/sysctl.d/90-local-bbr.conf
sysctl net.ipv4.tcp_congestion_control
tc qdisc show
```

完成一次计划内重启后再检查持久化结果。若业务不能重启，记录待验证项，在维护窗口完成；不必为了教程操作立刻中断服务。

![控制台中的重启和状态入口，操作前先保存业务数据](https://stock.iftalking.com/tutorial-media/provider-kiwivm-overview.jpg)

*图示说明：服务商官方知识库公开截图（旧版界面），用于对照功能名称；当前菜单位置可能调整。图中的套餐、IP、端口和日期仅为示例。*

## 5. 如何回退和判断是否保留

恢复之前记录的拥塞控制算法和队列默认值，并修改或移走自己新增的配置文件。不要删除整个 `/etc/sysctl.d/` 目录。再建立新连接，按相同方法测试。

保留 BBR 的依据是自己的业务表现：吞吐更稳定、请求延迟没有恶化、CPU 和流量没有异常。若结果无明显变化，继续检查[路由丢包](https://stock.iftalking.com/guides/network-diagnostics/)、应用负载和服务器限速。不要把换算法当作所有网络问题的统一修复。


## 完成后检查

若问题来自 DNS、CPU 或端口拦截，改变拥塞算法不会解决它。

## 参考资料

- [Ubuntu Server 文档](https://documentation.ubuntu.com/server/)
- [服务商官方说明](https://bandwagonhost.com/kb.php?action=displayarticle&id=30)
