Linux内核BBR加速配置指南(Debian 12/13 兼容)

想象一下:你买了一台海外 VPS,带宽标着 1Gbps,结果传个文件慢得像蜗牛,ping 过去延迟 200ms,稍微有点丢包速度就直接腰斩。

这不是带宽在骗你,是 TCP 拥塞控制算法在拖后腿。

Linux 默认用的是 Cubic,这个算法有个臭毛病——一检测到丢包就猛降发送速率,在高延迟、有丢包的跨境链路上,表现一塌糊涂。Google 也忍不了这个,于是搞了 BBR(Bottleneck Bandwidth and Round-trip propagation time),直接用带宽和 RTT 来动态算出发送节奏,不再被丢包吓破胆。

实测效果:延迟能降 30%-70%,在丢包率 1%-3% 的弱网环境下,吞吐量比 Cubic 高出好几倍。对于跨境服务器、视频传输、海外 VPS 这种场景,开了 BBR 和没开,体验天差地别。

看看你的内核够不够格

BBR 需要 Linux 内核 4.9 及以上。先跑一下:

uname -r

输出类似 5.10.0-8-amd64 这种就没问题。如果看到 4.9 以下的数字,得先升级内核。

升级内核——Ubuntu 和 Debian 走的路不一样:

Ubuntu:

sudo apt update && sudo apt upgrade -y
sudo apt install linux-generic-hwe-$(lsb_release -rs)

Debian:

# 添加 backports 源
echo "deb http://deb.debian.org/debian $(lsb_release -cs)-backports main" | sudo tee /etc/apt/sources.list.d/backports.list
sudo apt update
sudo apt -t $(lsb_release -cs)-backports install linux-image-amd64

升级完重启,再跑 uname -r 确认新内核已生效。

开启 BBR

这里又是那个老问题——Debian 12 和 Debian 13 的配置方式不一样。先看一眼你的版本:

cat /etc/debian_version

Debian 12 及之前版本 / Ubuntu

/etc/sysctl.conf 追加两行:

echo 'net.core.default_qdisc = fq' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control = bbr' | sudo tee -a /etc/sysctl.conf

⚠️ 注意是 fq(Fair Queue),不是 fq_pie。后者是另一个 qdisc,BBR 搭配 fq 效果最好。

让配置立即生效:

sudo sysctl -p

Debian 13(Trixie)及之后版本

前面 Swap 那篇提过,Debian 13 改了 sysctl 机制,/etc/sysctl.conf 重启后不再被 systemd 自动加载。你得在 /etc/sysctl.d/ 下创建一个独立的配置文件:

sudo tee /etc/sysctl.d/99-bbr.conf <<EOF
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
EOF

然后让 systemd-sysctl 重新加载:

sudo sysctl --system

到这里,BBR 已经跑起来了。

确认一下是否真的生效

三步验证:

# 1. 系统支持哪些拥塞控制算法
sysctl net.ipv4.tcp_available_congestion_control
# 输出应包含 bbr → net.ipv4.tcp_available_congestion_control = bbr cubic reno

# 2. 当前用的是哪个
sysctl net.ipv4.tcp_congestion_control
# 输出 → net.ipv4.tcp_congestion_control = bbr

# 3. 内核模块有没有加载
lsmod | grep bbr
# 有输出就说明模块正常

全绿就对了。如果第 2 条显示的是 cubic,回头检查一下上一步的配置文件有没有写错。

那 BBRv3 呢?

你可能看到过网上不少文章讲 BBRv3 效果更好,这里得掰扯清楚:

BBRv3 目前不在主线内核里。 它是 Google 内部生产环境用的版本,没有合并进 Linux mainline。你在系统里跑 sysctl net.ipv4.tcp_available_congestion_control 是看不到 bbr3 这个选项的,原因就在这里。

市面上能给普通 VPS 用上 BBRv3 的方式,要么是装第三方编译的带补丁内核(比如某些一键脚本),要么是 Google 自家 GCP 云上的定制内核。这两种都不是标准操作,兼容性和稳定性自己掂量。

主线内核自带的 BBR(即 BBRv1),对绝大多数人来说已经够用了。 别被那些"必须上 BBRv3"的标题带跑偏。

踩坑自救

症状 原因 怎么救
BBR 没生效 配置文件写错或没加载 sysctl --system | grep bbr 看有没有报错
升级内核时报依赖冲突 软件源没更新全 sudo apt --fix-broken install 修一下
开了 BBR 但速度没变化 网络本身低延迟低丢包 正常,BBR 在这个场景和 Cubic 差距不大
速度反而变慢了 MTU 或防火墙 QoS 冲突 检查 MTU 值,尝试 ip link set mtu 1500 dev eth0

两条命令的事,你的服务器网络可能就脱胎换骨了。尤其是跨境链路、高延迟、有丢包的场景——BBR 带来的提升是实打实的。

折腾之前记得先快照/备份,虽然改 sysctl 一般不会搞崩系统,但好习惯省得后悔。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容