Debian 13 / 12 / 11 开启 TCP BBR 完整教程
更新日期:2026-07-07
Debian 11、12、13 的默认内核都已经满足 TCP BBR 的常见使用条件。正常 KVM 云服务器、独立服务器、虚拟机都可以直接开启;如果是 LXC、OpenVZ 或受限容器,需要先确认宿主机是否允许修改内核网络参数。
先确认内核和可用算法
cat /etc/debian_version
uname -r
sysctl net.ipv4.tcp_available_congestion_control
如果输出里已经有 bbr,可以直接配置。如果没有,尝试加载模块:
sudo modprobe tcp_bbr 2>/dev/null || true
sysctl net.ipv4.tcp_available_congestion_control
仍然看不到 bbr 时,先升级到 Debian 官方内核,不建议在生产机器上随意混装来路不明的内核包。
Debian 开启 BBR
sudo modprobe tcp_bbr 2>/dev/null || true
echo tcp_bbr | sudo tee /etc/modules-load.d/bbr.conf >/dev/null
sudo tee /etc/sysctl.d/99-bbr.conf >/dev/null <<'EOF'
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF
sudo sysctl --system
验证是否生效
sysctl net.core.default_qdisc
sysctl net.ipv4.tcp_congestion_control
sysctl net.ipv4.tcp_available_congestion_control
期望看到:
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
如果想看当前连接是否正在使用 BBR:
ss -tin state established | grep -m 5 bbr
没有输出不一定是失败。先建立一个活跃外连 TCP 连接,比如下载文件或跑 iperf3,再重新查看。
Debian 云服务器注意事项
- Hetzner、OVH、Vultr、Linode、DigitalOcean 等 KVM 云主机通常可以直接配置。
- LXC 容器可能只能看到宿主机允许的参数,改 sysctl 会报 permission denied 或不持久。
- 如果 root qdisc 显示 mq,不一定代表 fq 没生效。多队列网卡可能会显示 mq,具体子队列仍可能使用 fq。
- 不要同时套用一整包 sysctl 优化参数。先只开 BBR 和 fq,观察吞吐、延迟和丢包。
回滚
sudo rm -f /etc/sysctl.d/99-bbr.conf /etc/modules-load.d/bbr.conf
sudo sysctl -w net.ipv4.tcp_congestion_control=cubic
sudo sysctl --system
sysctl net.ipv4.tcp_congestion_control
现有 TCP 连接可能继续沿用建立时的拥塞控制算法。重新建立连接后再观察。
参考资料
- Linux sysctl.d manual: https://man7.org/linux/man-pages/man5/sysctl.d.5.html
- systemd-sysctl manual: https://man7.org/linux/man-pages/man8/systemd-sysctl.8.html
- Debian sysctl.d manual page: https://manpages.debian.org/buster/systemd/sysctl.d.5.en.html
- Google BBR project: https://github.com/google/bbr