「BBR」- Bottleneck Bandwidth and RRT

  CREATED BY JENKINSBOT

系统要求

首先Linux的内核必须在4.9或者4.9以上。升级方法略过,已经由很多文章了。升级之后记得重启。

!!!注意BBR是在发送端进行设置的。

当前配置

开箱即用,Linux使用Reno和CUBIC,通过如下命令进行验证:

	# sysctl net.ipv4.tcp_available_congestion_control

上述命令查看TCP可用的拥塞控制,输出如下:

	net.ipv4.tcp_available_congestion_control = reno cubic

显示了支持的算法。

执行如下命令显示当前配置:

#!/bin/sh

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 = pfifo_fast
	net.core.default_qdisc=fq
	# net.ipv4.tcp_congestion_control = cubic
	net.ipv4.tcp_congestion_control=bbr

其中,注释的行为原由的参数。当不像使用BBR时,可以进行恢复。

然后执行sysctl -p命令,应用文件中的变更。

验证修改

最后,可以执行如下命令来验证变更是否有效:

#!/bin/sh

sysctl net.ipv4.tcp_congestion_control
sysctl net.core.default_qdisc

关闭设置

临时关闭

直接通过sysctl命令进行临时关闭:

#!/bin/sh

sysctl -w net.core.default_qdisc=pfifo_fast
sysctl -w net.ipv4.tcp_congestion_control=cubic

永久关闭

修改/etc/sysctl.conf文件,将设置修改为:

	net.core.default_qdisc = pfifo_fast
	# 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