帮助中心

服务器、网络和账户的分步教程。

网络与 IP

Linux VPS 开启 TCP BBR 拥塞控制教程(Debian、Ubuntu、CentOS、Rocky Linux)

Linux VPS 开启 TCP BBR 拥塞控制教程(Debian、Ubuntu、CentOS、Rocky Linux)

TCP BBR 是 Google 开发的拥塞控制算法,自 Linux 内核 4.9 起内置。在高延迟的长距离线路上,例如从 JUSTG 约翰内斯堡或莫斯科机房的服务器发送数据到亚洲用户,默认的 CUBIC 算法只要遇到少量丢包就会大幅降速;BBR 则会估算路径的实际带宽与往返时间,通常能让网站、下载、API 与文件传输的 TCP 传输速度明显提升。本文说明如何在 Debian、Ubuntu、CentOS、Rocky Linux 与 AlmaLinux 上用 sysctl 原生开启 TCP BBR,并验证是否生效。

为什么 TCP BBR 能改善长距离线路

CUBIC 这类基于丢包的算法,会把每一次丢包视为拥塞并降低发送速率。在延迟 150-300 毫秒的跨洲线路上,每次降速后要很久才能恢复,因此单个连接往往跑不满服务器的带宽。BBR 会对瓶颈带宽与最小往返时间建立模型,并据此控制发送数据包的节奏。它只改变服务器端的发送方式,访客端不需要安装任何东西。

步骤 1:检查内核版本与虚拟化类型

以 root(或具有 sudo 权限的用户)登录 VPS,确认内核版本。BBR 需要 4.9 以上的内核;Debian 11/12、Ubuntu 20.04/22.04/24.04、Rocky Linux 8/9、AlmaLinux 8/9 等当前版本都符合。

uname -r
systemd-detect-virt

若 systemd-detect-virt 显示 kvm、xen 或 vmware,代表你可以自行控制内核,可以继续操作。OpenVZ 或 LXC 容器使用的是宿主机内核,无法在容器内开启 BBR。

步骤 2:确认系统支持 BBR 模块

列出内核可用的拥塞控制算法;如果列表中没有 bbr,先加载模块:

sysctl net.ipv4.tcp_available_congestion_control
modprobe tcp_bbr
sysctl net.ipv4.tcp_available_congestion_control

常见的输出为 net.ipv4.tcp_available_congestion_control = reno cubic bbr。如果 modprobe 提示找不到模块,表示内核太旧,请参考步骤 6。

步骤 3:用 sysctl 开启 TCP BBR

BBR 搭配 fq(Fair Queue)队列调度效果最好。建议创建独立的配置文件,重启后仍会生效,日后也方便移除。Debian/Ubuntu 与 CentOS/Rocky/AlmaLinux 命令完全相同:

printf 'net.core.default_qdisc=fq\nnet.ipv4.tcp_congestion_control=bbr\n' | sudo tee /etc/sysctl.d/99-bbr.conf
sudo sysctl --system

设置会立即应用到新的连接,不需要重启;已经建立的连接要重新连接后才会改用 BBR。

步骤 4:验证 BBR 是否已启用

运行以下命令检查:

sysctl net.ipv4.tcp_congestion_control
sysctl net.core.default_qdisc
lsmod | grep bbr

正常应看到 net.ipv4.tcp_congestion_control = bbr 与 net.core.default_qdisc = fq。lsmod 通常会出现含有 tcp_bbr 的一行;但部分内核把 BBR 直接编译进内核而非模块,只要 sysctl 显示 bbr,lsmod 没有输出也属正常。想查看实际连接是否使用 BBR,可运行 ss -ti,在输出中寻找 bbr。

步骤 5:测试实际效果

建议从距离服务器较远的客户端比较开启前后的速度,例如用亚洲的电脑测试约翰内斯堡的服务器。可使用 iperf3:

# Debian / Ubuntu
apt install -y iperf3
# CentOS / Rocky / AlmaLinux
dnf install -y iperf3

# 在服务器上
iperf3 -s
# 在客户端(请换成你的服务器 IP)
iperf3 -c 203.0.113.10 -t 30 -R

测试期间才在防火墙开放 TCP 5201 端口,测完记得关闭。结果会受时段与客户端网络影响,建议多测几次再比较。

若要改回默认算法:删除 /etc/sysctl.d/99-bbr.conf,再运行 sysctl -w net.ipv4.tcp_congestion_control=cubic 与 sysctl --system。

步骤 6:非常旧的内核(旧方法)

CentOS 6/7(内核 2.6/3.10)或 Debian 8 等旧系统没有内置 BBR。过去社区常用 Teddysun 制作的一键脚本,它会安装较新的主线内核并同时开启 BBR,且从不支持 OpenVZ。现在我们只把这种做法视为旧方法:在已停止维护的发行版上更换内核,可能导致 VPS 无法开机,也收不到安全更新。较安全的方式是先备份数据,再从客户中心把 VPS 重装为当前的操作系统版本,然后按照步骤 1-4 操作。

更换内核前务必先备份。如果更换内核后 VPS 无法开机,可能需要重新安装操作系统。

常见问题

OpenVZ 可以开启 TCP BBR 吗?

不行。OpenVZ 等容器平台与宿主机共用内核,无法在虚拟机内部修改拥塞控制。JUSTG 云服务器采用全虚拟化,可以正常按照步骤 1-4 设置。

BBR 能加快 UDP 流量吗?

不能。BBR 只影响服务器发出的 TCP 连接,UDP 服务以及服务器接收的流量不会改变。

客户端也要开启 BBR 吗?

不需要。只要在发送端开启即可;对网站或下载服务器来说,发送端就是你的 VPS。

如果按照本文操作后仍无法解决,请提交工单,JUSTG 技术支持团队会协助你处理。

这篇文章有帮助吗?
帮助中心
网络与 IP VPS 网速测试:用 iperf3、Speedtest CLI 与 curl 测试服务器带宽与延迟 完整的 VPS 网速测试要回答两个问题:服务器能收发多少带宽,以及数据包在服务器与用户之间传输要多久。本文说明如何在运行 Debian/Ubuntu 或 CentOS/Rocky/AlmaLinux 的 JUSTG 云服务器或独立服务器上,使用 iperf3… 网络与 IP Linux 添加 IP 地址教程:在 Ubuntu、Debian、CentOS 与 Rocky Linux 绑定额外 IPv4 若您的 JUSTG 云服务器已添加额外 IP,或您为 JUSTG 独立服务器申请了 /24 IP 段,必须先在 Linux 添加 IP 地址,该 IP 才能响应流量。本文说明如何用 ip addr add 临时绑定额外 IPv4、如何在 Ubuntu 用… 网络与 IP 什么是原生 IP?如何查询服务器 IP 的归属地 原生 IP 是指注册在服务器实际所在国家网络名下的 IP 地址,因此 whois 记录和 IP 地理位置数据库显示的都是这个国家。用 whois 加一次地理位置查询,一分钟就能查清任意服务器 IP 的归属地,方法见下文。JUSTG 东京和首尔云服务器均配备日本、韩国原生… 网络与 IP 如何检测 VPS 能否解锁 Netflix、Disney+ 和 AI 服务 流媒体和 AI 服务根据服务器的公网 IP 判断你所在的位置,因此检测 VPS 是否“解锁”,先确认 IP 所属国家,再直接在服务器上逐项测试。本文介绍 Windows Server(通过 RDP 在浏览器中测试)和 Linux(用 curl 测试)两种方法,并附上 JUSTG…
AlipayUnionPayVISAMastercardPayPalUSDTstripe