BBR加速脚本合集:Plus/原版/魔改

BBR加速脚本集合。包含BBR Plus/BBR原版/BBR魔改版,开启自带BBR加速,BBR四合一脚本等。

BBR 加速脚本锦集

下面所有脚本请自行安装 Curl、Wget 等工具,代码如下:

yum -y install wget    # CentOS 安装 wget
apt-get install wget   # Debian Ubuntu 安装 wget
yum -y install curl    # CentOS 安装 curl
apt-get install curl   # Debian Ubuntu 安装 curl

BBR 到底是什么,为什么能让小水管快起来

BBR 是 Google 在 2016 年开源的 TCP 拥塞控制算法,核心思路是“不把丢包当成拥塞的唯一信号”。传统的 cubic 算法只要检测到丢包就把发送窗口砍半,而跨境线路、机房之间的骨干链路经常出现队列堆积造成的偶发丢包,窗口一砍,速度就永远上不去。BBR 改为实时估算链路的瓶颈带宽和最小往返时延(RTT),按估算出来的管道容量发送数据,并把排队控制在自己这一侧,因此在高丢包、高延迟的线路上表现明显更好。

实践中,一条 20Mbps 的中美线路在开启 BBR 前后,单线程下载速度从 2~3MB/s 提升到 8~10MB/s 是常见现象;更重要的是它不作为系统负载敏感,多连接并发时不会互相饿死。需要注意的是,BBR 只优化发送方向,对纯下载(你从服务器拉数据)效果最明显,上行方向的改善取决于对端是否也支持。

先分清四种“BBR”

  • 原版 BBR:内核 4.9 及以上自带,稳定、无风险,出问题也容易回退。
  • BBR Plus:基于 4.14 内核的第三方修改版,调参更激进,适合国际线路。
  • 魔改 BBR(俗称 99 版):把拥塞窗口和 pacing 参数改得更暴力,极限提速,但公平性较差。
  • LotServer(锐速):微软亚洲研究院的闭源加速方案,原理与 BBR 不同,靠修改内核网络栈做“丢包重传优化”,在老式内核上效果突出。

下面按“风险从低到高”的顺序给出三种做法:先开系统自带 BBR,再考虑四合一脚本,最后才是 LotServer。

注意事项

本脚本只针对 Debian≥9 或是 CentOS≥8 以上的系统,可以开启系统自带 BBR 加速。

方法一:Debian / CentOS 开启系统自带 BBR 加速

直接写入 sysctl 配置并生效,四行命令可以一次复制执行,也可以分四次一条一条执行。前提是内核版本足够新(Debian ≥ 9、CentOS ≥ 8,或手动升级过内核):

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

第三行让配置立即生效,第四行用来确认模块已加载——输出里能看到 tcp_bbr 就说明内核支持并已启用。随后用 sysctl net.ipv4.tcp_congestion_control 复核当前生效的算法,返回 net.ipv4.tcp_congestion_control = bbr 即完成。

方法二:四合一 BBR Plus / 原版 BBR / 魔改 BBR 一键脚本(推荐)

支持环境

CentOS 7、Debian 8/9、Ubuntu 16/18 测试通过,不支持 OpenVZ(OVZ)架构,因为 OVZ 共享宿主内核,无法自行更换。

脚本如下:

wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh

运行后会弹出中文菜单,大致流程是:先选数字安装内核(安装 BBR Plus 内核安装原版 BBR 内核),安装完成后脚本会提示重启,选择重启;机器重新上线后再执行一次 ./tcp.sh,此时选择“启用 BBR Plus / 启用 BBR / 启用魔改 BBR”即可。菜单里还带有“卸载内核”“更新脚本”“查看当前状态”等选项,装错了可以回到菜单里卸载重来。

如果服务器从 GitHub 拉取脚本超时,可以把脚本先下载到本地再上传,或者给 wget 加上代理环境变量;国内机器更推荐直接用下面这条备用地址:

# 备用:把脚本落到本地再执行
curl -fsSL https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh -o tcp.sh
chmod +x tcp.sh && ./tcp.sh

方法三:LotServer(锐速)安装与卸载脚本

LotServer 适合内核较老、或者 BBR 效果不理想的机器。它与 BBR 争夺同一个位置(TCP 拥塞控制),不要和 BBR 同时启用。安装前请先确认系统架构为 amd64 KVM/Xen 全虚拟化:

wget --no-check-certificate -O appex.sh https://raw.githubusercontent.com/0oVicero0/serverSpeeder_Install/master/appex.sh
chmod +x appex.sh && ./appex.sh install

安装过程中脚本会询问加速模式(一般用默认值即可)、并请求授权码,按提示操作完成安装。卸载或查看状态同样通过该脚本完成:

./appex.sh status     # 查看运行状态
./appex.sh restart    # 重启加速
./appex.sh uninstall  # 卸载

注意:锐速类脚本会替换内核模块,部分云厂商的定制内核可能安装失败;安装前务必给业务做一次快照或备份,出问题时可以直接回滚镜像。

如何确认加速已经生效

三种方案都可以用同一组命令自查,重点看“当前算法”和“内核模块”两处:

sysctl net.ipv4.tcp_congestion_control
sysctl net.core.default_qdisc
sysctl net.ipv4.tcp_available_congestion_control
lsmod | grep -E "bbr|appex"
dmesg | grep -i bbr | tail -5

期望看到:net.ipv4.tcp_congestion_control = bbrnet.core.default_qdisc = fq,以及 lsmod 里出现 tcp_bbr(锐速则是 appex)。如果算法仍是 cubic,多半是配置没写进 /etc/sysctl.conf 或者被云厂商的 cloud-init 覆盖,重启后重新执行一次并复核。

常用配套参数调优

BBR 只解决拥塞控制,队列规则、缓冲区、快速打开等参数配合调整收益更明显,可参考本站关于 TCP 缓冲区与 backlog 的整理:

cat >> /etc/sysctl.conf <<EOF
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_mtu_probing = 1
EOF
sysctl -p

其中 tcp_fastopen 需要客户端也支持才有收益,tcp_slow_start_after_idle 关闭后长连接空闲恢复时不会重新慢启动,对 SSH 和数据库连接体验改善明显。

风险提示与回退

  • 更换内核属于高风险操作,务必先做快照;生产服务器建议先在测试机验证。
  • OpenVZ 架构不支持换内核,只能依赖宿主配置,不要尝试安装 BBR Plus。
  • 魔改版 BBR 与锐速对网络公平性影响较大,共享带宽的宿主机上可能被服务商判定为滥用。
  • 启用后如果出现连接异常、丢包增加,先用 sysctl -w net.ipv4.tcp_congestion_control=cubic 临时切回,再决定是否卸载内核。

常见问题排查

  • 执行 lsmod | grep bbr 没有任何输出:说明当前内核不支持 BBR,先 uname -r 看版本,Debian 9 以下、CentOS 7 默认内核都需要先升级内核(可以用四合一脚本里的“安装内核”选项)。
  • sysctl 显示 bbr,重启后又变回 cubic:配置没写进 /etc/sysctl.conf,或者被 cloud-init、systemd-networkd 的覆盖文件还原,建议同时写入 /etc/sysctl.d/99-bbr.conf
  • 速度反而变慢:高带宽低延迟的局域网环境里 BBR 的优势不明显,甚至不如 cubic;此时换回原版算法对比测试即可。
  • 脚本运行报错 404 或超时:GitHub raw 域名在国内经常不稳定,换网络环境或使用镜像地址重新下载脚本。
  • 想彻底回到默认状态:把 sysctl 里的两行删掉执行 sysctl -p,再按四合一脚本菜单卸载内核,最后 update-grub 并重启。

相关阅读

想系统理解 TCP 缓冲区、backlog 与拥塞控制的关系,可以接着看 Linux Network Tuning with sysctl:TCP Buffers and Backlogs;加速后仍然慢的话,按 Linux 网络故障排查:思路、工具与实战场景 逐步定位;VPS 选型与整机运维则可以参考 Linux 服务器运维实战:从选型到故障排查全攻略