甲骨文云免费实例默认的网络配置通常基于标准 Linux 内核,开启 BBR 主要是修改内核参数,大多数现代镜像无需重装系统即可生效,但效果取决于实际网络链路质量。
先说结论:BBR 是 Linux 内核自带的 TCP 拥塞控制算法,开启过程简单,但并非所有场景都能感知到明显速度提升。
- 先定位:确认当前内核版本是否支持 BBR 模块
- 先做:通过 sysctl 配置启用算法并持久化
- 再验证:检查当前激活的拥塞控制算法是否为 bbr
命令速用版
如果确认内核版本高于 4.9,可以直接执行以下命令开启并持久化配置:
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p为什么会这样
Linux 内核默认通常使用 CUBIC 算法管理 TCP 数据传输,这是一种基于丢包率的拥塞控制机制。BBR(Bottleneck Bandwidth and Round-trip propagation time)则是基于带宽和往返时间来模型化网络,旨在更充分地利用可用带宽并降低延迟。
在甲骨文云这类跨地域网络环境中,链路可能存在波动或队列堆积。开启 BBR 有助于在内核层面优化数据发送节奏,减少因缓冲区填满导致的等待。但这属于传输层优化,无法突破物理带宽上限,公开资料中没有看到可靠的量化数据表明它能固定提升多少百分比的网速。
分步处理
1. 检查内核版本
BBR 需要 Linux 内核 4.9 或更高版本。甲骨文云提供的 Ubuntu 20.04/22.04、Oracle Linux 8/9 镜像通常满足此条件。
uname -r如果版本号第一位小于 4,或第二位小于 9,则无法直接开启,需要考虑更换内核或升级系统。
2. 查看可用算法
确认内核编译时是否包含了 BBR 模块。
sysctl net.ipv4.tcp_available_congestion_control输出结果中应包含 bbr 字样。如果没有,说明当前内核不支持。
3. 启用并持久化
编辑 /etc/sysctl.conf 文件,添加或修改以下两行:
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr保存后执行 sysctl -p 使配置立即生效。这一步不需要重启服务器。
怎么验证是否生效
执行以下命令查看当前正在使用的拥塞控制算法:
sysctl net.ipv4.tcp_congestion_control如果输出为 net.ipv4.tcp_congestion_control = bbr,则说明开启成功。此外,可以使用 lsmod | grep bbr 查看模块是否加载,但在较新内核中 BBR 可能直接编译进内核而非模块,此时 lsmod 无输出也属正常,以 sysctl 查询结果为准。
常见坑
1. Oracle Linux 的 UEK 内核差异
甲骨文云默认提供的 Oracle Linux 有时使用 UEK(Unbreakable Enterprise Kernel)。虽然大多数 UEK5 和 UEK6 支持 BBR,但个别旧版本可能未启用。如果遇到无法切换的情况,建议切换至 RHCK 内核或更换为 Ubuntu 镜像。
2. 期望过高
BBR 主要优化高延迟、有丢包的网络环境。如果本地到服务器的链路本身质量很好(低延迟、无丢包),开启后可能感觉不到明显变化,甚至在内核版本极老或配置冲突时出现兼容性问题。
3. 面板冲突
如果服务器上安装了某些第三方运维面板或优化脚本,它们可能会覆盖 sysctl 配置。修改后建议重启服务器再次确认配置是否保留。
参考来源
- Linux Kernel Documentation - BBR Congestion Control, URL: https://docs.kernel.org/networking/bbr.html
- Google Research - BBR Repository, URL: https://github.com/google/bbr