最近在写国内VPN搭建相关的文章,由于国内购买国外VPS大多都是多个VPS共享带宽,既然共享的那何不将带宽发挥到极致,来提升我的上网速度,降低访问延迟呢。好多小伙伴就要问了,那怎么将带宽发挥到极致呢,这里就要用到TCP BBR加速了,TCP BBR加速是TCP 阻塞控制策略的一种,就像我们在高速上堵车了,流量也会堵车,这时候有没有交警来指挥调度车辆,阻塞结束的时间可能会更长,几个车道也不会被充分利用,这里TCP BBR拥堵阻塞控制就是当我们遇到流量拥堵的时候实施的TCP流量控制策略。
什么是TCP BBR
TCP BBR(Bottleneck Bandwidth and Round-trip propagation time)是由Google设计,于2016年发布的拥塞算法。以往大部分拥塞算法是基于丢包来作为降低传输速率的信号,而BBR则基于模型主动探测。该算法使用网络最近出站数据分组当时的最大带宽和往返时间来建立网络的显式模型。数据包传输的每个累积或选择性确认用于生成记录在数据包传输过程和确认返回期间的时间内所传送数据量的采样率。该算法认为随着网络接口控制器逐渐进入千兆速度时,与缓冲膨胀相关的延迟相比丢包更应该被认为是识别拥塞的主要决定因素,所以基于延迟模型的拥塞控制算法(如BBR)会有更高的吞吐量和更低的延迟,可以用BBR来替代其他流行的拥塞算法,例如CUBIC。Google在YouTube上应用该算法,将全球平均的YouTube网络吞吐量提高了4%,在一些国家超过了14%。 TCP BBR拥堵阻塞算法只是众多TCP 拥堵阻塞算法中的一种,详细的所有算法和优劣势请参考拥堵阻塞算法大全。
TCP BBR加速有用么
只看上面的数据可能不太直观,不如我们来简单测试一下TCP BBR的加速效果。
启用TCP BBR加速
首先确定你的linux系统是否支持TCP BBR加速。TCP BBR加速在Linux内核4.9版本以及以后版本引入,下面列举一些常见的支持TCP BBR加速的Linux系统版本(表格由CHATGPT 4 提供,如果想使用CHATGPT 参照注册ChatGPT 教程。)
Linux发行版 | 发行版本号 | 发布日期 | 内核版本 |
---|---|---|---|
Ubuntu | 17.04 (Zesty Zapus) | 2017年4月 | 4.10 |
17.10 (Artful Aardvark) | 2017年10月 | 4.13 | |
18.04 LTS (Bionic Beaver) | 2018年4月 | 4.15 | |
20.04 LTS (Focal Fossa) | 2020年4月 | 5.4 | |
Fedora | 26 | 2017年7月 | 4.11 |
27 | 2017年11月 | 4.13 | |
28 | 2018年5月 | 4.16 | |
29 | 2018年10月 | 4.18 | |
30 | 2019年5月 | 5.0 | |
Debian | 10 (Buster) | 2019年7月 | 4.19 |
11 (Bullseye) | 2021年8月 | 5.10 | |
CentOS | 8 | 2019年9月 | 4.18 |
openSUSE | Leap 42.3 | 2017年7月 | 4.4 |
Leap 15.0 | 2018年5月 | 4.12 | |
Leap 15.1 | 2019年5月 | 4.12 | |
Arch Linux | 滚动更新 | 持续更新 | 最新稳定内核 |
启用BBR加速之前测试网络
服务端使用iperf 开启网络测试接口,如果没有安装iperf,需要手动安装一下。iperf是网络测速工具。在需要测试网速的机器上运行一下命令,则会启动一个网络测速下载服务。通过两次下载的速度不同,确定BBR加速是否有效。
# apt install -y iperf
# iperf -s
客户端使用iperf 请求刚刚启动的iperf服务端来测试未开启TCP BBR加速前的网速,注意域名可以更改为服务端IP。(未启动TCP BBR加速前的下载测试)
# iperf -c teampwd.com -i 2 -t 30
启动TCP BBR加速
使用 root 账户执行以下命令修改系统变量
# echo 'net.core.default_qdisc=fq' | sudo tee -a /etc/sysctl.conf
# echo 'net.ipv4.tcp_congestion_control=bbr' | sudo tee -a /etc/sysctl.conf
# sysctl -p
完成后,执行以下命令
# sysctl net.ipv4.tcp_available_congestion_control
输出应为 net.ipv4.tcp_available_congestion_control = bbr cubic reno
最后执行以下命令以检测 BBR 是否开启
# lsmod | grep bbr
如果返回值有 tcp_bbr 模块说明 BBR 已经启动。
启动后再次测试带宽
这里看一下两次下载的结果,下面的图片显示的是十几秒下载的平均值,增速20%。鉴定为点用,各位看情况使用吧。
总结一下
总体提升百分之20是有的,不过我测试的不一定准确,大家在评论区多给点数据吧,我觉得速度变化不大,不过使用过程中发现网速更稳定一点。总体使用体验是有增加的,大家见仁见智吧。