← 返回博客列表

TCP 拥塞控制与 BBR 详解:为什么跨境下载慢、怎么开启 BBR、开了没效果怎么办

2026-09-29 · 刺猬VPN

很多人有过这样的困惑:家里办的是五百兆宽带,测速软件连国内服务器能跑满,从海外服务器下载一个镜像却只有几百 KB 到几 MB;买了一台海外 VPS,上传文件到服务器时快时慢,晚上更是慢得离谱。网上的教程会告诉你「开启 BBR」,于是照着敲了几行命令,有人立竿见影,有人却完全没感觉。

要理解这种差异,得先知道 TCP 拥塞控制在做什么。TCP 每发出一批数据都要等待确认,发送速度由拥塞窗口决定。传统算法把丢包当成网络拥堵的信号,一丢包就大幅降速;跨境链路距离长、往返时间高,偶发丢包又多,传统算法会一次次把速度砍下来,再慢慢爬升,平均吞吐远低于带宽。BBR 换了一种思路,下面先对比几种算法,再讲开启步骤、测试方法和常见误区。

常见拥塞控制算法对比

CUBIC 是目前主流系统的默认算法,在低延迟、低丢包的局域网和国内链路上表现很好。BBR 由谷歌提出,它不以丢包为信号,而是持续估算链路的瓶颈带宽和最小往返时间,按两者的乘积控制在途数据量。在长距离、有随机丢包的跨境链路上,BBR 往往能把吞吐拉高不少,但在拥堵严重的链路上并不能凭空变出带宽。

对比项RenoCUBICBBR
判断依据丢包丢包测量带宽与往返时间
遇到丢包窗口减半大幅降低后按曲线恢复不因单次丢包降速
长距离链路表现差一般通常更好
默认使用早期系统Linux、Windows、macOS 默认需要手动开启
对缓冲区影响容易填满容易填满倾向于保持低排队
与其他流公平性较好较好早期版本偏激进

在 Linux 服务器上开启 BBR:分步操作

  • 第一步:先把网络线路准备好。从国内登录海外服务器、下载内核或查阅官方文档时,如果直连不稳,先连上刺猬VPN 再操作;客户端注册只需自定义用户名和密码,不需要邮箱和手机号;
  • 第二步:查看内核版本,执行 uname -r。BBR 需要 4.9 及以上的内核,主流发行版的长期支持版本都已满足;
  • 第三步:查看当前算法,执行 sysctl net.ipv4.tcp_congestion_control,默认通常显示 cubic;再执行 sysctl net.ipv4.tcp_available_congestion_control,看可选列表里有没有 bbr;
  • 第四步:编辑 /etc/sysctl.conf,在末尾加上两行:net.core.default_qdisc=fq 与 net.ipv4.tcp_congestion_control=bbr;
  • 第五步:执行 sysctl -p 让配置生效,再用第三步的命令确认当前算法已变成 bbr,用 lsmod 加 grep bbr 确认模块已加载;
  • 第六步:用 iperf3 或者下载同一个大文件做前后对比,在同一时段测试三次取平均,避免把晚高峰的波动误当成效果;
  • 第七步:确认没有副作用后保留配置,重启服务器再检查一遍是否仍然生效。

BBR 只在发送端生效

这是最容易被忽略的一点。拥塞控制决定的是「发送方怎么发」,所以在你的海外服务器上开启 BBR,影响的是服务器发给你的数据,也就是你从服务器下载的速度;你往服务器上传文件,发送方是你的电脑,服务器上的设置管不着。反过来,在自己电脑上改算法,只影响上传,对从网站下载几乎没有作用,因为网站服务器用什么算法由对方决定。

所以「开了 BBR 没效果」的第一个排查点是:你测的方向对不对。在服务器上开启后,应该测从服务器下载的速度;想改善上传,就要看客户端系统能不能换算法。Windows 默认是 CUBIC,较新的版本可以通过 netsh 命令查看和调整,但相关选项属于实验性质,修改前先记下原值。

按现象排查

开启 BBR 后遇到问题,按现象对照原因处理。

  • 可选列表里没有 bbr:内核版本过低或模块未编译,升级到发行版提供的较新内核后重启;
  • sysctl -p 报错「No such file or directory」:配置项拼写错误或内核不支持该参数,逐行检查拼写;
  • 重启后又变回 cubic:配置写进了临时文件,或被云厂商的初始化脚本覆盖,改写到 /etc/sysctl.d/ 目录下的独立文件;
  • 开启后速度没有变化:测试方向不对,或者瓶颈在本地网络与运营商出口,而不是丢包;
  • 开启后延迟变高:缓冲区排队增加,确认队列规则已设为 fq,并检查本地路由器是否存在缓冲膨胀;
  • 容器里无法修改:容器共享宿主机内核,需要在宿主机上设置;
  • 同一台机器上其他用户抱怨变慢:早期版本对共享链路偏激进,可以考虑发行版提供的新版本实现。

不同线路与方案的表现

拥塞控制只是影响吞吐的一环。跨境速度还受国际出口拥堵、节点负载和目标网站本身的限制,单靠改算法解决不了所有问题。刺猬VPN 不对账号设速率上限,也不按套餐做人为限速,但实际速度仍取决于本地网络、国际出口、节点负载与目标网站,实际可用性取决于当前网络环境。

对比项直连跨境免费节点会员节点
往返时间受国际出口影响大视当前网络环境而定可选延迟较低的地区
丢包情况晚高峰明显高峰期波动负载相对可控
流量规则不涉及永久免费、不限流量时长套餐期间不限流量、不限速
适合场景国内业务偶尔查文档、下载小文件长时间下载、远程开发
拥塞控制取决于两端系统取决于节点配置取决于节点配置

怎么科学地测效果

测速最怕的是对比条件不一致。正确的做法是:在服务器上装好 iperf3,用 iperf3 -s 启动服务端,本地用 iperf3 -c 加服务器地址加 -R 参数测试下载方向,每次持续三十秒,分别在开启前后、同一时段各测三次。也可以准备一个几百 MB 的测试文件,用 curl 下载并记录平均速度。

如果条件允许,可以同时用 ping 记录往返时间和丢包率。BBR 生效的典型表现是:丢包率不变的情况下,吞吐明显提高,延迟没有显著增加。如果吞吐不变而延迟上升,多半说明瓶颈在本地或中间的缓冲区,这时要回头检查路由器的队列管理。测试结果最好记在表格里,写明日期、时段、方向和算法,过一段时间再复测一次,才能看出改动是不是长期有效,而不是碰巧赶上了线路空闲的时候。

各系统查看算法的命令对照

  • Linux:sysctl net.ipv4.tcp_congestion_control 查看当前算法,tcp_available_congestion_control 查看可选算法,修改写入 /etc/sysctl.d/ 下的配置文件;
  • Windows:在管理员终端执行 netsh int tcp show supplemental 查看各模板使用的拥塞控制提供程序,默认一般是 CUBIC,修改相关选项前先截图记下原值;
  • macOS:执行 sysctl net.inet.tcp 可以看到大量传输层参数,默认算法是 CUBIC,系统没有提供切换到 BBR 的常规入口;
  • 路由器与软路由:拥塞控制只对路由器自己发起的连接生效,对转发的流量没有作用,转发流量更应关注队列管理;
  • 安卓与苹果手机:系统不开放这类设置,也没有必要修改,下载速度主要取决于服务器端。

版本差异与公平性

BBR 有多个迭代版本。第一版在丢包严重的链路上依然能维持高吞吐,代价是对同链路上使用 CUBIC 的其他连接不太友好,在共享带宽的场景下可能抢占过多份额。后续版本加入了对丢包与显式拥塞通知的响应,表现更温和。各发行版内置的实现版本不同,查看内核文档或发行说明就能知道自己用的是哪一版。

对个人 VPS 来说,这种公平性问题影响不大;如果是公司内部的共享出口或者多人共用的服务器,就要谨慎评估。另外,部分云厂商的虚拟化网卡本身就做了优化,开启 BBR 后差异很小,属于正常现象。

与延迟、缓冲区知识的关系

理解 BBR 之前,最好先分清延迟与带宽这两个概念:带宽决定管道有多粗,延迟决定一来一回要多久,两者的乘积就是链路上能容纳的在途数据量,详细解释见 延迟与带宽的区别。BBR 本质上就是在估算这个乘积并按它来发包。

另一个常被忽视的问题是缓冲膨胀:路由器缓冲区过大,数据在里面排长队,延迟随之飙升。传统算法会不断把缓冲区填满,BBR 倾向于保持低排队,但如果本地路由器本身就有严重的缓冲膨胀,单靠服务器端改算法也无能为力,处理办法见 缓冲膨胀与 SQM 设置。服务器端用 BBR、家用路由器开启 SQM,两头配合效果最好。

常见报错速查表

现象原因解决办法
可选算法里没有 bbr内核过旧或模块缺失升级内核后重启
sysctl 提示找不到参数拼写错误或内核不支持逐行核对配置项
重启后恢复 cubic配置被覆盖写入 /etc/sysctl.d/ 独立文件
开启后无提速测试方向错误或瓶颈不在丢包测下载方向,检查本地出口
开启后延迟升高队列规则未改或缓冲膨胀设置 fq,路由器开启 SQM
容器内无法修改共享宿主机内核在宿主机上设置

高频问答

  • 问:家用电脑需要开 BBR 吗?答:一般不需要。下载速度取决于对方服务器的算法,自己电脑改了只影响上传;
  • 问:开了 BBR 网速一定会变快吗?答:不一定。它改善的是长距离、有随机丢包时的吞吐,瓶颈在出口拥堵时帮助有限;
  • 问:BBR 会不会被运营商限制?答:它只是改变发送节奏,不涉及协议伪装,和运营商策略无直接关系;
  • 问:需要装第三方加速脚本吗?答:不建议。系统自带的实现足够,来源不明的脚本可能替换内核或留下后门;
  • 问:Windows 能用 BBR 吗?答:较新版本提供了实验性选项,稳定性有争议,修改前记录原值以便恢复;
  • 问:BBR 和 VPN 冲突吗?答:不冲突。它作用在传输层的发送端,和是否经过线路无关。

把拥塞控制用在对的地方

TCP 拥塞控制决定了跨境链路上能跑出多少速度。开启 BBR 的正确姿势是:在负责发送数据的服务器上开启,设置 fq 队列规则,用同一时段、同一方向的测试验证效果;没有提升时,回头检查测试方向、本地缓冲区与出口拥堵。

刺猬VPN 采用 HTTPS+AES 加密传输,自定义用户名和密码即可匿名注册,不需要邮箱和手机号;免费节点永久免费、不限流量,适合查文档、下载内核;时长套餐期间不限流量、不限速,适合需要长时间远程开发与传输大文件的用户,一个账号可在多台设备上同时使用。实际速度受本地网络、国际出口、节点负载与目标网站影响,实际可用性取决于当前网络环境。

用刺猬VPN稳定连接跨境办公与学习

刺猬VPN提供永久免费节点,不限流量;无需邮箱,自定义用户名即可匿名注册。一个账号支持多设备同时在线,实际可用性取决于当前网络环境。