Ubuntu 26.04 开启 TCP BBR:历代 Ubuntu 与主流 Linux 通用教程

July 7, 2026
Ubuntu 26.04 LTS 开启 TCP BBR 的完整教程,附 Ubuntu 18.04-26.04、Debian、Rocky/Alma/RHEL、Fedora、Arch、openSUSE 等主流 Linux 配置方式、验证和回滚命令。

Ubuntu 26.04 开启 TCP BBR:历代 Ubuntu 与主流 Linux 通用教程

更新日期:2026-07-07

这篇教程面向新装的 Ubuntu 26.04 LTS,也兼顾 Ubuntu 24.04、22.04、20.04、18.04,以及 Debian、RHEL/Rocky/Alma、Fedora、Arch、openSUSE 等主流 Linux。核心做法很简单:确认内核支持 BBR,然后把默认队列算法设为 fq,把 TCP 拥塞控制算法设为 bbr。

如果你正在看旧文 Ubuntu 20.04 & Ubuntu18.04 快速开启 TCP BBR,建议新服务器直接按本文配置。Ubuntu 20.04 LTS 已在 2025-05-31 结束标准支持;还在用 20.04 的机器要么升级到 22.04/24.04/26.04,要么接入 Ubuntu Pro/ESM。

适用条件

  • Linux kernel 4.9 或更新版本,并且内核包含 tcp_bbr。
  • 有 root 或 sudo 权限。
  • 主要收益出现在跨区域、高延迟、轻微丢包、长肥网络路径,比如海外 VPS、跨洲下载、反向代理、对象存储分发、长连接服务。
  • BBR 适合 TCP 连接的发送端。它不是 CDN,也不会改变运营商线路质量;如果线路本身严重限速,收益会有限。

先看内核版本和可用算法:

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

Ubuntu 26.04 LTS 一键开启 BBR

Ubuntu 26.04 LTS 官方 release notes 写明支持到 2031 年 4 月,Canonical 发布稿说明该版本基于 Linux 7.0。对 BBR 来说,这已经远高于 Linux 4.9 的最低门槛,所以绝大多数官方内核环境都可以直接开启。

推荐把配置写入独立的 sysctl.d 文件,便于以后查找和回滚:

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

sudo modprobe tcp_bbr 2>/dev/null || true
echo tcp_bbr | sudo tee /etc/modules-load.d/bbr.conf >/dev/null
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

如果机器上已经有活跃 TCP 连接,可以进一步确认连接是否正在使用 BBR:

ss -tin state established | grep -m 5 bbr

没有输出不一定代表失败,可能只是当前没有足够活跃的外连 TCP 会话。可以发起一次下载、跑 iperf3,或访问你的服务后再看。

为什么要同时设置 fq

BBR 会根据瓶颈带宽和 RTT 估算发送速率。fq 负责更细粒度的 pacing,让包不要成批突发出去。很多教程只设置 tcp_congestion_control=bbr 也能看到算法切换成功,但在服务器场景里,fq 仍然是更稳妥的搭配。

注意两个细节:

  • net.core.default_qdisc 影响之后创建的队列。某些网卡、多队列设备、虚拟化网络可能显示 root qdisc 为 mq,这是正常现象。
  • 如果你要强制给某个出口网卡换成 fq,可以先确认网卡名,再单独替换。
ip route get 1.1.1.1
tc qdisc show
sudo tc qdisc replace dev eth0 root fq

上面的 eth0 要替换成你自己的出口网卡名,比如 ens3、ens5、enp1s0。

历代 Ubuntu 开启方式

Ubuntu 26.04 LTS

推荐直接使用本文的一键方式。Ubuntu 26.04 基于 Linux 7.0,内核条件充足。新服务器优先选择 26.04 或 24.04,而不是继续部署 20.04。

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

Ubuntu 24.04 LTS

Ubuntu 24.04 同样可以直接开启。桌面和服务器版命令一致:

sudo modprobe tcp_bbr 2>/dev/null || true
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

Ubuntu 22.04 LTS

22.04 的默认内核也满足 BBR 要求。建议写入 sysctl.d,不要把所有调优都塞进 /etc/sysctl.conf。

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

Ubuntu 20.04 LTS

20.04 默认 Linux 5.4,技术上可以开启 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

Ubuntu 18.04 LTS

18.04 默认 Linux 4.15,满足 BBR 的最低内核要求。但 18.04 已进入扩展维护阶段,除非是历史系统,不建议新部署。

sudo modprobe tcp_bbr 2>/dev/null || true
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

Ubuntu 16.04 与更早版本

16.04 默认内核较老,通常不建议为了 BBR 去给老系统硬升第三方内核。更稳妥的选择是升级系统。如果你必须维护老 VPS,先确认内核:

uname -r
sysctl net.ipv4.tcp_available_congestion_control

看不到 bbr 时,不要盲目复制开启命令。先升级到受支持的 LTS。

主流 Linux 发行版开启 BBR

这一节已经拆成独立教程,方便按发行版收藏和维护。不同发行版的核心命令相同,但内核包、模块加载、云厂商镜像和持久化位置会有差异,建议直接看对应文章:

如果只是想快速确认通用命令,核心仍然是:

sudo modprobe tcp_bbr 2>/dev/null || true
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.ipv4.tcp_congestion_control

更详细的验证、回滚、容器限制和云服务器注意事项,请看上面的发行版专题。

回滚到默认算法

如果你要回滚,删除配置文件并改回 cubic:

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 连接,或者重启服务。

延伸阅读

如果你已经按发行版教程开启了 BBR,下面这些文章适合继续排查和优化:

常见问题

开启后一定会变快吗?

不一定。BBR 在高 RTT、轻微丢包、跨区域传输中更容易体现收益;本地机房内网、低延迟链路、瓶颈在磁盘或应用层时,差异可能很小。

VPS 使用 OpenVZ / LXC 可以开启吗?

容器环境不一定能改宿主机内核参数。LXC、OpenVZ、部分受限容器可能会报 permission denied 或者改了也不生效。KVM、裸金属、完整云主机通常更可控。

ss 看不到 bbr 怎么办?

先确认 sysctl 输出已经是 bbr。ss 只显示当前连接的 TCP 信息,没有活跃连接时可能看不到。可以新建一次到外部服务器的连接后再查。

BBR 和 BBRv2 是一回事吗?

本文讲的是 Linux 主线常见的 tcp_bbr。BBRv2 在不同内核和发行版中的可用状态不一致,生产环境不建议为了追新盲目替换内核。普通 VPS 开启 tcp_bbr + fq 已经足够。

要不要同时改 net.ipv4.tcp_fastopen、rmem、wmem?

不要一上来就堆参数。先只开 BBR 和 fq,观察吞吐、延迟和丢包。如果你明确知道业务是大吞吐服务,再按压测结果调整缓冲区。无压测的“万能 sysctl 优化包”容易制造副作用。

参考资料