Arch Linux / Manjaro 开启 TCP BBR 完整教程
更新日期:2026-07-07
Arch Linux 和 Manjaro 都属于滚动更新生态,内核通常较新,开启 BBR 的关键不是版本太老,而是确认当前正在运行的内核是否包含 tcp_bbr,以及配置是否写入 /etc/sysctl.d/。
检查内核与算法
uname -r
sysctl net.ipv4.tcp_available_congestion_control
如果没有看到 bbr,先更新系统并重启到新内核:
sudo pacman -Syu
sudo reboot
重启后再检查:
uname -r
sysctl net.ipv4.tcp_available_congestion_control
开启 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
tc qdisc show | head
ss -tin state established | grep -m 5 bbr
如果 tc qdisc show 看到 mq,不要急着判定失败。多队列网卡可能显示 mq,default_qdisc 仍然会影响后续子队列和新建队列。
Arch / Manjaro 特别注意
- Arch Wiki 对 sysctl 的说明是:sysctl 用于运行时检查和修改内核参数,持久化配置应放入 sysctl.d。
- 如果你使用 linux-lts、linux-zen、自编译内核,务必确认当前运行内核的模块目录里有 tcp_bbr。
- Manjaro 用户如果长时间没更新,先完成系统更新并重启,不要在旧内核上反复调参数。
检查模块文件:
find /lib/modules/$(uname -r) -name 'tcp_bbr*' 2>/dev/null
回滚
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
参考资料
- ArchWiki sysctl: https://wiki.archlinux.org/title/Sysctl
- Arch sysctl.d manual: https://man.archlinux.org/man/sysctl.d.5.en
- Linux sysctl.d manual: https://man7.org/linux/man-pages/man5/sysctl.d.5.html
- Google BBR project: https://github.com/google/bbr