开启 TCP BBR 实测:代理隧道发送端才有收益
八月 21, 2026 更新: 八月 24, 2026 [网络与安全] #sing-box #网络 #代理与科学上网背景
sing-box 代理链路(本机客户端 → 服务端 → 目标站)部署完成后,常听说「服务端开 TCP BBR 可以提速」。是否属实、在哪个环节有效,用内网测试拓扑实测一把:
- 本机为客户端(mixed 入站 127.0.0.1:2080),内网一台测试机为服务端(VLESS + Reality,回源握手走 amazon.com)
- 只测国内站点:清华镜像 3.3GB ISO 下载吞吐 + baidu/bilibili 页面可达性
- 两端系统参数基线为
cubic+fq_codel,开启后为bbr+fq - 交错 A/B 对比(cubic/bbr 交替各 3 轮),每轮 30s 窗口取平均下载速率
机制:BBR 是发送端拥塞控制
TCP 拥塞控制由数据发送方决定。下载场景下发送方是目标站(如镜像站),本机/代理服务端是接收方——接收方内核开不开 BBR,对下载吞吐没有直接影响。BBR 的收益体现在:
- 发送方(你自己)→ 接收方的路径:如代理服务端把数据发给客户端(VPS → 本机)
- 高带宽时延积 + 有丢包的路径:cubic 遇丢包就线性退避,BBR 不因丢包降速
实测数据
1. 直连国内站点(发送方 = 镜像站)
| 轮次 | cubic | bbr |
|---|---|---|
| 1 | 3.82 MB/s | 0.43 MB/s |
| 2 | 3.50 MB/s | 4.88 MB/s |
| 3 | 0.21 MB/s | 0.38 MB/s |
两者无稳定差异(第三轮是路径整体拥塞,双双掉底)。本机是接收方,本地开 BBR 与直连下载速度无关。
2. 服务端 → 镜像站(服务端为接收方)
cubic 0.5~3.4 MB/s,bbr 0.3~3.7 MB/s,同样无差异——再次印证接收方 CC 无关。
3. 经链全链路(本机 → 服务端 → 镜像站)
| 轮次 | cubic(两端) | bbr(两端) |
|---|---|---|
| 1 | 2.23 MB/s | 3.01 MB/s |
| 2 | 1.22 MB/s | 4.14 MB/s |
| 3 | 1.33 MB/s | 3.42 MB/s |
bbr 稳定 3.0~4.1 MB/s 不掉底,cubic 掉底到 1.2~1.8 MB/s。进一步拆分确认:只有服务端(隧道发送端)开 BBR 有效——
| 配置 | 结果 |
|---|---|
| 本机 cubic + 服务端 bbr(发送端 BBR) | 3.86 / 4.18 / 2.78 MB/s,稳定 |
| 本机 bbr + 服务端 cubic(接收端 BBR) | 0.26 / 4.01 / 1.77 MB/s,掉底 |
4. 纯内网隧道段对照
服务端本地起 HTTP 服务(1GB 文件)走隧道下载:cubic 与 bbr 均为 117 MB/s 满速——内网段本身无丢包,CC 无差异,问题出在跨网路径。
结论
- 直连国内站点:本机(接收方)开 BBR 没有收益,开启与否不影响下载速度
- 经链场景:服务端(隧道发送端)开 BBR 有收益——实测吞吐更稳、不掉底;这正是境外 VPS 部署的对应位置:VPS 是隧道发送端,跨境链路丢包率高,是 BBR 的典型受益场景,建议开启
- 本机开 BBR 无副作用;唯一的本机受益场景是上传(本机为发送方时)
- 内网测试无法完全复现跨境长路径的丢包特征,收益方向明确,幅度随路径而异
实际部署(VPS)
按上述结论在 VPS(隧道发送端)上实际开启并持久化:
- 开启前基线:内核 6.1 cloud 镜像,
cubic+fq_codel,tcp_bbr模块未加载(tcp_available_congestion_control只有 reno/cubic) - 三条命令落地(模块加载 → 立即生效 → 持久化):
sudo modprobe tcp_bbr
sudo sysctl -w net.ipv4.tcp_congestion_control=bbr net.core.default_qdisc=fq
printf "net.core.default_qdisc=fq\nnet.ipv4.tcp_congestion_control=bbr\n" | sudo tee /etc/sysctl.d/99-bbr.conf
验证输出:net.ipv4.tcp_congestion_control = bbr、net.core.default_qdisc = fq,/sys/module/tcp_bbr 存在。
两点注意:
sysctl -w只影响新建立的连接,存量 TCP 不受扰动——在线服务无需重启,对既有连接零影响- 部署后若客户端日志出现个别连接异常(如读响应
unexpected EOF),不要直接归因 BBR:实测链路正常时多为客户端 keep-alive 连接复用问题,先用 curl 复现再下结论
开启命令
modprobe tcp_bbr
sysctl -w net.ipv4.tcp_congestion_control=bbr net.core.default_qdisc=fq
持久化(/etc/sysctl.d/99-bbr.conf):
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
验证:
sysctl net.ipv4.tcp_congestion_control # 应输出 bbr
ls /sys/module/tcp_bbr # 模块已加载