如何通过 BBR 优化甲骨文云 VPS 的 TCP 连接速度

文章导读
对于大多数甲骨文云 VPS 实例,开启 BBR 拥塞控制算法有助于在高延迟或有一定丢包的网络环境中改善 TCP 吞吐表现,但前提是系统内核版本支持且网络瓶颈确实在于拥塞控制而非带宽上限。
📋 目录
  1. A 命令速用版
  2. B 原理简述
  3. C 分步处理
  4. D 性能测试验证
  5. E 怎么验证是否生效
  6. F 常见坑
  7. G 参考来源
A A

对于大多数甲骨文云 VPS 实例,开启 BBR 拥塞控制算法有助于在高延迟或有一定丢包的网络环境中改善 TCP 吞吐表现,但前提是系统内核版本支持且网络瓶颈确实在于拥塞控制而非带宽上限。

先说结论:BBR 是 Linux 内核自带的 TCP 拥塞控制算法,开启它属于系统调优范畴,适合长距离传输或网络波动场景,不适用于解决带宽不足问题。

  • 先定位:确认当前内核版本是否支持 BBR(通常需 4.9+)。
  • 先做:通过 sysctl 配置启用 bbr 模块并设置为默认拥塞控制,注意配置幂等性。
  • 再验证:检查当前生效的拥塞控制算法是否为 bbr,并进行前后速度对比测试。

命令速用版

如果你确认内核版本符合要求,可以直接尝试以下命令开启。此脚本已处理配置重复问题,多次执行不会导致配置文件冗余:

grep -q "net.core.default_qdisc=fq" /etc/sysctl.conf || echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
grep -q "net.ipv4.tcp_congestion_control=bbr" /etc/sysctl.conf || echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

原理简述

Linux 默认的 TCP 拥塞控制算法通常是 CUBIC,它在高带宽、低延迟的网络中表现良好,但在高延迟或丢包较多的跨洋链路中,可能会过于保守地降低发送速度。BBR(Bottleneck Bandwidth and Round-trip propagation time)通过测量带宽和往返时间来构建发送模型,而不是单纯依赖丢包信号,因此在长肥网络(Long Fat Network)中往往能更充分地利用可用带宽。

分步处理

1. 检查内核版本

BBR 需要 Linux 内核 4.9 或更高版本。甲骨文云的主流镜像(如 Ubuntu 20.04/22.04, Oracle Linux 8/9)通常默认满足条件。

uname -r

如果版本号小于 4.9,不建议强行升级内核,可能存在启动风险。

2. 确认 BBR 模块可用

lsmod | grep bbr

如果没有输出,尝试手动加载:

modprobe tcp_bbr

3. 配置系统参数

编辑 /etc/sysctl.conf 文件,确保包含以下内容。若使用命令行追加,请务必先检查是否存在,避免重复:

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

保存后执行 sysctl -p 使配置生效。

性能测试验证

开启 BBR 后,建议通过实际传输测试对比优化效果。由于 BBR 主要优化高延迟下的吞吐量,普通局域网测试可能无明显变化。

如何通过 BBR 优化甲骨文云 VPS 的 TCP 连接速度

方法一:curl 下载测试(简单快捷)

选择一个稳定的大文件源(如 Linux 镜像源),分别在开启前后执行以下命令对比下载速度:

curl -o /dev/null -w "Average Download Speed: %{speed_download} bytes/sec\n" http://releases.ubuntu.com/jammy/ubuntu-22.04-live-server-amd64.iso

方法二:iperf3 测试(专业准确)

如果有另一台 VPS 作为服务端,可使用 iperf3 进行 TCP 吞吐量测试:

# 服务端运行
iperf3 -s
# 客户端运行
iperf3 -c <服务器 IP> -t 30

观察 Bitrate 数值变化,高延迟环境下 BBR 通常能提升传输稳定性及平均带宽利用率。

怎么验证是否生效

执行以下命令查看当前生效的拥塞控制算法:

sysctl net.ipv4.tcp_congestion_control

输出应为 net.ipv4.tcp_congestion_control = bbr。也可以使用 ss -n -i 查看具体连接的内部信息,观察是否显示 bbr 字样。

常见坑

1. 不是带宽加速器:BBR 无法突破 VPS 实例本身的带宽上限,如果甲骨文云后台限制了带宽,开启 BBR 无效。

2. 内核兼容性:部分老旧镜像或特定架构实例可能内核过旧,强行更换内核可能导致无法启动,建议先快照备份。

3. UDP 不受影响:BBR 仅优化 TCP 连接,基于 UDP 的业务(如部分游戏、QUIC)不会因此提速。

4. 队列调度:开启 BBR 通常建议配合 fq 队列调度器,否则可能无法发挥效果。

5. 配置冗余:多次执行追加命令会导致 /etc/sysctl.conf 内容重复,虽不影响功能但不规范,建议使用 grep 检查后再写入。

参考来源

  • Linux Kernel Documentation - BBR Congestion Control, https://docs.kernel.org/networking/bbr.html
  • Google Research - BBR: Congestion-Based Congestion Control, https://research.google/pubs/pub45610/