对于甲骨文云 ARM 实例,不建议直接运行来源不明的一键脚本,优先检查系统内核是否已原生支持 BBR,通过手动配置 sysctl 参数即可启用,这样更安全且可控。
先说结论:手动配置优于脚本,先确认内核版本再操作,避免安全风险。
- 适合:需要优化网络吞吐和降低延迟的场景
- 先准备:确保拥有 SSH 根权限或 sudo 权限
- 验收:通过 sysctl 命令确认当前拥塞控制算法
命令速用版
# 检查当前拥塞控制算法
sysctl net.ipv4.tcp_congestion_control
# 临时启用 BBR(重启失效)
sysctl -w net.ipv4.tcp_congestion_control=bbr
# 永久启用(写入配置)
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
sysctl -p
为什么会这样
BBR 是 Google 提出的一种 TCP 拥塞控制算法,旨在提高高带宽、高延迟网络链路的吞吐量。甲骨文云 ARM 实例通常基于较新的 Linux 发行版,其内核版本大多已在 4.9 以上,原生支持 BBR 模块,无需重新编译内核。很多脚本的本质也是修改 sysctl 配置,但封装后的脚本可能包含未知代码,存在安全隐患。手动操作能让你清楚每一步改了什么,出问题也容易回滚。
分步处理
1. 确认内核版本
输入命令 uname -r。BBR 算法在 Linux 内核 4.9 版本合并入主线。如果显示版本低于 4.9,则无法直接启用,需要升级内核或更换系统镜像。
2. 检查可用算法
输入命令 sysctl net.ipv4.tcp_available_congestion_control。查看输出中是否包含 bbr。如果有,说明内核已支持,无需加载额外模块。
3. 修改配置文件
使用编辑器打开 /etc/sysctl.conf,在文件末尾添加以下内容:
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
4. 应用配置
执行 sysctl -p 使配置生效。如果报错,检查语法是否正确。
怎么验证是否生效
执行命令 sysctl net.ipv4.tcp_congestion_control,如果返回值为 net.ipv4.tcp_congestion_control = bbr,则说明已生效。此外,可以使用 lsmod | grep bbr 查看模块是否加载(部分内核编译为内置则不显示模块)。在网络传输测试中,观察高延迟下的吞吐表现,但公开资料中没有看到可靠的量化数据证明具体提升百分比,实际效果取决于网络链路质量。
常见坑
1. 甲骨文云特定内核
甲骨文云部分实例使用 UEK(Unbreakable Enterprise Kernel),虽然基于较新内核,但配置路径可能略有不同,建议优先使用官方提供的系统镜像。
2. 脚本安全风险
网络上流传的“BBR 加速脚本”权限要求高,可能修改防火墙或安装后门。除非你能审计代码,否则不要随意 curl 管道执行。
3. IPv6 配置
如果实例启用了 IPv6,部分旧教程可能忽略 IPv6 的拥塞控制配置,建议同步检查 net.ipv6.conf.all.tcp_congestion_control 参数。
4. 回滚方案
如果启用后网络异常,可将 /etc/sysctl.conf 中相关行注释掉,执行 sysctl -p 恢复默认算法(通常是 cubic)。
参考来源
- The Linux Kernel Archives, Release 4.9
- Oracle Linux Documentation, Kernel Features
- Google Cloud Blog, BBR Congestion Control