前言-我的NAS才是内鬼
目前,运营商之间由于收益与成本支出问题,各个运营商之间对于跨网数据疯狂限速(网上大部分都说QoS,但其实对一半不对一半)。一个比较常用的方法是针对TCP传输丢包抑制速率,由于TCP存在重传机制,传统的TCP算法在检测到链路丢包率较大的时候会主动(注意是主动)降低传输速率以减少重传。但是这个丢包是人为的,是运营商SA板卡设备主动丢的包,而并非由于链路拥塞堵塞导致的。所以其实链路资源是完全充裕的(运营商有资源也不给你放开用)。而BBR算法是基于带宽和延迟探测链路是否拥堵(就是主动探测运营商那边链路带宽到底是不是充裕的),所以针对CUBIC或是Reno这一类传统的控制算法在BBR这里就会失效。

BBR原理与未来
基本原理
BBR的目的是找到了网络路径的带宽瓶颈(BtlBW,单位:bit/s)和往返传播延迟(RTprop,单位:s)。这两个参数的乘积是带宽延迟积(BDP,单位:bit),它代表了网络管道在不排队情况下的单位最大数据容量(容积)。BBR试图将网络中的数据传输量维持在BDP左右,从而实现高吞吐和低延迟。
与传统算法不同,BBR算到最大带宽和最小延迟无法同时获得,要测最大带宽就需要保持管道填满,这必然要引入排队延迟;要测量最小延迟,就需要让管道近乎空闲。因此,BBR采用交替探测的方式。
状态
- STARTUP(启动):连接建立后,像慢启动一样指数增长发送速率,快速探测瓶颈带宽。一旦发现带宽增长放缓(连续3次增幅低于25%),即认为已找到BtlBW,进入DRAIN阶段。
- DRAIN(排空):目标是排空在STARTUP阶段可能产生的排队数据包。此阶段会降低发送速率,使网络中的存量数据量降至BDP左右,然后转入PROBE_BW。
- PROBE_BW(探测带宽):这是稳定后的主要状态。BBR大部分时间在此状态运行,以一个稳定的基准速率发送数据,同时会周期性地(例如每8个RTT(往返时间)为一个周期)用更高的速率(如1.25倍)进行探测,看是否有更多可用带宽;随后用较低速率(如0.75倍)排空可能产生的队列,再回到稳定速率。这使得它能持续适应带宽变化。
- PROBE_RTT(探测延迟):约每10秒,如果未更新最小RTT,BBR会短暂进入此状态。它会显著降低发送量(如仅发4个报文),以排空队列,测量到最纯净的RTT(即RTprop),确保网络模型的准确性。
运营商的反制难度与措施
一般来说在大量的流量数据包传输压力下,对TCP随机丢包的性能开销会小的多,且对路由器或SA板卡的CPU性能开销影响小。如果引入队列管理加缓存区直接介入管控流量势必会加大转发性能的开销,大量的数据包堆积在缓冲区会导致机器响应变慢甚至死机(软/硬路由开启QoS或是VPN之后性能下降严重),所以针对TCP丢包让CUBIC算法主动降低传输数据是个明智之举(国家规定运营商必须按照合约内容提供带宽同时不得任何理由主动限速或降速,所以其实不是运营商那边限速而是运营商让你被迫主动降速,与公司恶心你让你主动离职一样的道理)。那么运营商应该也不会坐以待毙,可以通过部署更为先进的队列管理和更强大的缓冲区强制(主动)进行限速,同时精细化流量控制主动识别采用BBR算法的流量精准限速。但是无论怎样,从让别人(NAS)主动降低传输速率到运营商自己精确控制速率是两个不同的概念。
BBR开启教程
首先通过各种远程SSH登录软件进入SSH,填入地址,用户名和端口号。

没有这些软件也没关系,只要你的电脑是Windows10/11就会在cmd当中默认安装SSH客户端功能。命令是:
# ssh -p <端口> <用户名>@<地址>

# sudo -i #提权

# uname -r #查看系统内核要大于4.9</code></pre>

# vim /etc/sysctl.conf #编辑sysctl.conf文件
最后一行,添加:
# net.core.default_qdisc=fq
# net.ipv4.tcp_congestion_control=bbr

# sysctl -p #保持配置
# sysctl net.ipv4.tcp_available_congestion_control #验证BBR状态
# sysctl net.ipv4.tcp_congestion_control #确认启用BBR

# lsmod | grep bbr #不放心检查

不过需要注意一点的是,绿联系统更新之后会覆盖配置文件,需要重新开启BBR算法才行。还有编辑文件注意事项:按 Esc,然后输入 :set mouse-=a 临时禁用鼠标自动进入可视模式,再按 i 进入插入模式后粘贴。
最后测试
手机连接移动通信网络(电信、联通、移动),建议跨网测试更有代表性。然后登录APP下载文件(看电影效果观察可能没那么明显),一开始下载速度500KB左右是正常的,一般30s到1分钟速度就会逐渐起来然后波动趋于稳定,如果出现该现象表明BBR算法起效果了。BBR算法只是应当运营商QoS(被动的),而不是破解上行速度!当然运营商肯定是会有QoS的,但不会限速,因为合同写了,所以是被迫让你降速,当然,这个方法对于路由器也是可以开启的,openwrt之类的一些软路由开启BBR之后会对TCP连接进行优化。


Comments NOTHING