主题模式
Are you an LLM? You can read better optimized documentation at /vps/settings/bbr-optimization.md for this page in Markdown format
BBR 网络加速配置指南:TCP 拥塞控制优化实战
BBR(Bottleneck Bandwidth and RTT) 是 Google 开发的 TCP 拥塞控制算法,能显著提升网络吞吐量、降低延迟。对于 VPS 服务器和代理节点,开启 BBR 后速度提升立竿见影,尤其在高延迟、丢包的国际线路上效果显著。
📊 BBR vs 传统算法
为什么需要 BBR
传统 TCP 拥塞控制算法(如 Cubic、Reno)基于丢包判断网络拥塞:丢包了就减速。这导致:
- 带宽利用率低(不到带宽上限就因丢包减速)
- 高延迟线路速度惨不忍睹
- 缓冲区膨胀(Bufferbloat)导致延迟飙升
BBR 改为基于带宽和延迟建模,不依赖丢包判断:
| 算法 | 拥塞判断 | 带宽利用率 | 延迟 | 高丢包环境 |
|---|---|---|---|---|
| Cubic | 丢包 | ~70% | 高 | 速度暴跌 |
| BBR | 带宽+RTT | ~95%+ | 低 | 表现优异 |
BBR 版本演进
| 版本 | 特性 | 内核版本 | 状态 |
|---|---|---|---|
| BBR v1 | 基础带宽+延迟模型 | 4.9+ | 稳定 |
| BBR v2 | 改进 RTT 测量,减少排队 | 5.4+ (实验) | 实验性 |
| BBR v3 | 进一步优化公平性,更好的 ECN 支持 | 6.4+ (实验) | 实验性 |
| BBR Plus | 社区魔改版,针对代理场景优化 | 第三方内核 | 非官方 |
选择建议
- 普通用户:使用内核自带的 BBR v1(稳定可靠)
- 进阶用户:编译 BBR v3 内核获取更好性能
- 代理节点:BBR v1 已足够,或尝试 BBR Plus
🚀 一键开启 BBR
方式一:脚本一键开启(推荐新手)
bash
# 下载并运行 BBR 一键脚本
wget -O tcp.sh "https://raw.githubusercontent.com/ylx2016/Linux-NetSpeed/master/tcp.sh"
chmod +x tcp.sh
./tcp.sh脚本会显示交互式菜单:
========== TCP 加速管理脚本 ==========
1. 安装 BBR原版内核
2. 安装 BBRplus版内核
3. 安装 BBR3版内核(实验性)
4. 使用系统默认内核
————————————
5. 开启BBR加速
6. 开启BBRplus加速
7. 开启BBR3加速
8. 关闭加速
————————————
9. 查看当前状态
0. 退出
======================================按 1 安装 BBR 内核 → 重启 → 再运行脚本按 5 开启 BBR。
方式二:系统内置 BBR(Ubuntu 18.04+ / Debian 10+)
较新的 Linux 内核已内置 BBR,无需更换内核:
bash
# 检查内核版本(需 4.9+)
uname -r
# 检查 BBR 模块是否可用
lsmod | grep bbr
modprobe tcp_bbr
lsmod | grep bbr
# 开启 BBR
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
# 应用配置
sysctl -p
# 验证
sysctl net.ipv4.tcp_congestion_control
# 输出: net.ipv4.tcp_congestion_control = bbr方式三:手动编译 BBR3 内核
适合追求最新性能的进阶用户:
bash
# 安装编译依赖
apt update
apt install -y build-essential libncurses-dev bison flex libssl-dev libelf-dev bc
# 下载内核源码
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.8.tar.xz
tar xf linux-6.8.tar.xz
cd linux-6.8
# 配置内核(启用 BBR3)
make menuconfig
# 导航到: Networking support → Networking options → TCP: advanced congestion control
# 选择: BBR TCP (Experimental)
# 编译并安装
make -j$(nproc)
make modules_install
make install
# 更新 GRUB
update-grub
# 重启
reboot编译内核风险
编译安装内核有一定风险,可能导致系统无法启动。建议在非生产环境中测试,或使用快照备份后再操作。
⚙️ BBR 参数调优
关键参数详解
bash
# 查看当前 BBR 参数
sysctl net.ipv4.tcp_congestion_control
sysctl net.core.default_qdisc
sysctl net.ipv4.tcp_available_congestion_control
# BBR 专用参数(内核 5.4+)
sysctl net.ipv4.tcp_bbr_high_gain # 增益系数(默认 1.0)
sysctl net.ipv4.tcp_bbr_bw_rd_per_rtts # 带宽测量周期
sysctl net.ipv4.tcp_bbr_min_rtt_win_sec # 最小 RTT 窗口推荐配置
bash
# /etc/sysctl.d/99-bbr.conf
# 拥塞控制算法
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
# TCP 缓冲区优化
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
# 连接优化
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_notsent_lowat = 16384
# 队列优化
net.core.netdev_max_backlog = 10000
net.core.somaxconn = 4096
# 启用 ECN(显式拥塞通知,BBR3 推荐)
net.ipv4.tcp_ecn = 1bash
# 应用配置
sysctl -p /etc/sysctl.d/99-bbr.conf参数说明
| 参数 | 作用 | 推荐值 |
|---|---|---|
default_qdisc | 队列调度算法 | fq |
tcp_congestion_control | 拥塞控制算法 | bbr |
rmem_max | 最大接收缓冲区 | 67108864 |
wmem_max | 最大发送缓冲区 | 67108864 |
tcp_rmem | TCP 接收缓冲区范围 | 4096 87380 67108864 |
tcp_wmem | TCP 发送缓冲区范围 | 4096 65536 67108864 |
tcp_fastopen | TCP Fast Open | 3 |
tcp_slow_start_after_idle | 空闲后慢启动 | 0 |
netdev_max_backlog | 网卡接收队列 | 10000 |
somaxconn | 连接队列上限 | 4096 |
fq 队列的重要性
BBR 需要配合 fq(Fair Queue)队列调度算法才能发挥最佳效果。fq 提供精确的包 pacing,避免突发流量导致的丢包。
📈 性能对比测试
测试方法
bash
# 开启 BBR 前:测速
speedtest-cli
# 开启 BBR 后:测速
speedtest-cli
# 使用 iperf3 测试
# 服务端
iperf3 -s
# 客户端
iperf3 -c server-ip -t 30 -P 4典型提升效果
| 场景 | 开启前 | 开启 BBR | 提升幅度 |
|---|---|---|---|
| 中美直连(低丢包) | 50 Mbps | 85 Mbps | +70% |
| 中美直连(高丢包) | 15 Mbps | 60 Mbps | +300% |
| 中日直连 | 80 Mbps | 95 Mbps | +19% |
| 欧洲线路 | 30 Mbps | 75 Mbps | +150% |
| 本地带宽测试 | 950 Mbps | 980 Mbps | +3% |
BBR 效果因线路而异
BBR 在高延迟、高丢包的国际线路上提升最明显。本地网络或低延迟线路提升较小。
🔍 验证 BBR 是否生效
方法一:sysctl 检查
bash
sysctl net.ipv4.tcp_congestion_control
# 输出应为: net.ipv4.tcp_congestion_control = bbr方法二:lsmod 检查
bash
lsmod | grep bbr
# 输出应包含: tcp_bbr方法三:ss 命令查看连接
bash
ss -tin | grep bbr
# 应看到使用 bbr 的连接方法四:实时监控
bash
# 安装 nstat
apt install nstat
# 查看 BBR 统计
nstat -az | grep -i bbr🐧 不同系统的配置
Ubuntu / Debian
bash
# Ubuntu 20.04+ / Debian 11+ 默认内核已支持 BBR
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -pCentOS / RHEL
bash
# CentOS 8 / RHEL 8+ 默认内核已支持 BBR
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -pCentOS 7(需升级内核)
bash
# 安装 ELRepo
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
# 安装 5.x 内核
yum --enablerepo=elrepo-kernel install -y kernel-ml
grub2-set-default 0
reboot
# 重启后开启 BBR
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p🔄 BBR Plus 与魔改版
BBR Plus
BBR Plus 是社区修改版,针对代理场景优化:
bash
# 使用一键脚本安装 BBR Plus
wget -O tcp.sh "https://raw.githubusercontent.com/ylx2016/Linux-NetSpeed/master/tcp.sh"
chmod +x tcp.sh
./tcp.sh
# 选择 2. 安装 BBRplus版内核
# 重启后选择 6. 开启BBRplus加速BBR vs BBR Plus 对比
| 特性 | BBR (原版) | BBR Plus |
|---|---|---|
| 稳定性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| 速度 | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 兼容性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
| 维护 | 官方维护 | 社区维护 |
| 内核支持 | 内置 | 需第三方内核 |
| 推荐场景 | 通用 | 代理节点 |
BBR Plus 适合谁
BBR Plus 在代理节点(V2Ray、Xray 等)场景下比原版 BBR 有 5-15% 的速度提升。但需要更换第三方内核,稳定性不如原版。如果你追求极致速度且愿意承担风险,可以尝试。
🛠️ 故障排查
BBR 无法开启
bash
# 检查内核版本
uname -r
# 需要 4.9+
# 检查可用算法
sysctl net.ipv4.tcp_available_congestion_control
# 如果没有 bbr,需要加载模块
modprobe tcp_bbr
# 永久加载模块
echo "tcp_bbr" >> /etc/modules-load.d/modules.conf开启 BBR 后网络变慢
可能原因:
- 队列调度未设为
fq - 缓冲区设置过大导致缓冲区膨胀
- 某些云服务商的网络对 BBR 优化不佳
bash
# 检查队列调度
sysctl net.core.default_qdisc
# 应为 fq
# 如果不是 fq,修正
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
sysctl -p内核更换后无法启动
通过 VPS 提供商的 VNC 控制台:
- 在 GRUB 启动菜单选择旧内核
- 卸载新内核
- 恢复默认配置
❓ 常见问题
Q: BBR 和代理协议有关吗?
BBR 作用于 TCP 层,对基于 TCP 的代理协议(VLESS、Trojan、Shadowsocks)都有效。对基于 UDP 的协议(Hysteria2)无效,因为 Hysteria2 使用 QUIC 的拥塞控制。
Q: BBR 会影响服务器上其他服务吗?
会,但通常是正面的。BBR 提升所有 TCP 连接的性能,包括 Web 服务器、数据库等。一般不会产生负面影响。
Q: 开启 BBR 后需要重启吗?
- 如果内核已支持 BBR(4.9+),无需重启,
sysctl -p即时生效 - 如果需要更换内核(CentOS 7),需要重启
Q: BBR 和锐速(LotServer)哪个好?
BBR 更好。锐速是闭源的商业加速软件,存在安全隐患且已停止维护。BBR 是 Google 开源、内核原生支持的算法,更安全、更可靠。
Q: Docker 容器内需要单独开启 BBR 吗?
不需要。BBR 在宿主机内核层面生效,所有容器自动继承宿主机的 TCP 拥塞控制设置。
🔗 相关文章
- 代理协议深度对比 — 协议选择指南
- Xray Reality 部署实战 — 节点搭建
- Hysteria 2 节点搭建 — UDP 协议部署
- VPS 性能测试脚本汇总 — 测速工具
- Debian/Ubuntu 系统优化 — 系统调优
- 网络诊断工具箱 — 网络排查
