最近新开了一台用来代理的机子,发现网络很快,油管2K画质都能加载出来,但是网络极其不稳定,不稳定到什么程度?忙时甚至连网页都打不开,而在闲时,虽然能看高画质的视频,但是有时候会出现720P也加载不出来的情况,最最关键的是,就算能加载出2K画质,网速也是慢慢从100多K往上提,在加载视频的时候,可以很清楚地看到网速显示插件里面的网速从100K涨到200K,然后是300K,就这样一直慢慢提速,提到2M/s需要花费10多秒(家里用的20M宽带),所以这个机子网速其实不错,就是稳定性太差了,于是开始着手网络优化。

需要注意的是,拥塞算法主要是对丢包率较高的网络有很好的优化效果。也就是说,丢包率越低的服务器,优化效果越差。

说明

目前比较流行的优化网络拥塞的工具也就是锐速BBR了,实际上,我选择BBR也没有经过太严谨的比对,只是通过查资料,发现锐速=闭源+收费,而且现在能找的也是老版本了,而BBR是由Google开发的TCP拥塞优化算法,并且在GitHub上面开源,可以在《google/bbr》查看。

更重要的是,BBR现在已经集成到Linux内核了,所以直接就选择BBR了。

安装

升级内核

其实说是安装BBR,但也就是升级内核,因为BBR已经集成到内核了。

查看正在使用的内核版本:

1uname -r

内核4.9.0以上已经集成了BBR,而我目前使用的是CentOS 7,内核3.10.0-862.14.4.el7.x86_64,显然不够。

升级内核推荐使用ELRepo RPM repository.

安装ELRepo repo:

1sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

然后通过ELRepo repo升级内核

1sudo yum --enablerepo=elrepo-kernel install kernel-ml -y

然后确认一下内核升级结果,如果看到类似下面的结果,那么就是安装成功了:

内核升级结果.png

可以看到,安装了4.19.0内核。

启用内核

刚安装的内核还没用上,需要手动启用,先查看目前所拥有的内核:

1sudo egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
内核.png

第一个就是新安装的4.19.0内核,然后设为启动项第1位(从0开始数)

1sudo grub2-set-default 0

设完后重启

1sudo shutdown -r now

重启完再进入系统就可以看到使用的是新内核了:

新内核已启用.png

打开BBR

由于BBR已经集成在内核里面了,所以直接启用即可:

1echo 'net.core.default_qdisc=fq' | sudo tee -a /etc/sysctl.conf
2echo 'net.ipv4.tcp_congestion_control=bbr' | sudo tee -a /etc/sysctl.conf

使配置生效

1sudo sysctl -p

确认BBR是否开启

完成上面的步骤后BBR就已经启用了,不过启用完后有些人可能不放心,要=确认一下BBR是否成功开启,以下提供几种方法验证:

1sudo sysctl net.ipv4.tcp_available_congestion_control

输出为 net.ipv4.tcp_available_congestion_control = bbr cubic reno

1sudo sysctl -n net.ipv4.tcp_congestion_control

输出为 bbr

查看内核模块是否已经加载

1lsmod | grep bbr

输出为 tcp_bbr 20480 1

至此,BBR就已经安装好并启用了。