系统要求
首先Linux的内核必须在4.9或者4.9以上。升级方法略过,已经由很多文章了。升级之后记得重启。
!!!注意BBR是在发送端进行设置的。
当前配置
开箱即用,Linux使用Reno和CUBIC,通过如下命令进行验证:
上述命令查看TCP可用的拥塞控制,输出如下:
显示了支持的算法。
执行如下命令显示当前配置:
sysctl net.core.default_qdisc sysctl net.ipv4.tcp_congestion_control
启用配置
临时开启
执行如下命令,临时启用BBR设置:
#!/bin/sh sysctl -w net.core.default_qdisc=fq sysctl -w net.ipv4.tcp_congestion_control=bbr
永久开启
下面开始设置BBR参数。修改/etc/sysctl.conf文件,追加如下行:
net.core.default_qdisc=fq
# net.ipv4.tcp_congestion_control = cubic
net.ipv4.tcp_congestion_control=bbr
其中,注释的行为原由的参数。当不像使用BBR时,可以进行恢复。
然后执行sysctl -p命令,应用文件中的变更。
验证修改
最后,可以执行如下命令来验证变更是否有效:
sysctl net.ipv4.tcp_congestion_control sysctl net.core.default_qdisc
关闭设置
临时关闭
直接通过sysctl命令进行临时关闭:
sysctl -w net.core.default_qdisc=pfifo_fast sysctl -w net.ipv4.tcp_congestion_control=cubic
永久关闭
修改/etc/sysctl.conf文件,将设置修改为:
# net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control = cubic
# net.ipv4.tcp_congestion_control=bbr
然后运行sysctl -p命令即可。
简单案例
网络环境:Web Browser -> SS Local -> SS Server -> YouTube
上述环境中,Web Browser与SS Local位于同一台机器上,HostA。SS Server位于HostB。
测试视频:https://www.youtube.com/watch?v=HbgzrKJvDRw
对于BBR设置,当HostA关闭,HostB关闭,视频在720P下的Connection Speed只有200Kbps的样子。
对于BBR设置,当HostA开启,HostB关闭,视频在720P下的Connection Speed只有200~255Kbps的样子。效果不时很明显。
对于BBR设置,当HostA关闭,HostB开启,视频在720P下的Connection Speed达到800Kbps,最高达到了1400Kbps,最后稳定在800~900之间。
对于BBR设置,当HostA开启,HostB开启,视频在720P下的Connection Speed达到1009Kbps以上,最高达到了1900Kbps左右。
当然,具体的速度和网络环境及远程主机都有关心。但是对于同一个环境,开启BBR之后,效果非常明显。
相关链接
https://en.wikipedia.org/wiki/TCP_congestion_control#TCP_BBR
CentOS6开启BBR加速
使用BBR一键脚本为你的CentOS/Debian/Ubuntu系统加速
参考文献
How to enable TCP BBR to improve network speed on Linux
Linux set sysctl variables
How to Easily Boost Ubuntu 16.04/17.10 Network Performance by Enabling TCP BBR
TCP BBR congestion control comes to GCP – your Internet just got faster