CentOS 7 系统启用Google BBR

我个人在DigitalOceanVultr都有服务器在运行,有时候需要当作测试服务器测试、调整某些服务的配置时,DigitalOceanVultr这种按量付费,即开即删的服务非常实用,我需要测试的时候,只需要在后台新建一台,选择系统,选择Region,再输入一个hostname,点击创建,等个一分钟就能建好,对比国内的服务,体验简直非常好。但是,不管怎么说,服务器都在国外,不能跟国内的比,再加上网路颠簸,速度可能上不去,对比锐速,我更相信出自Google的BBR。

记录配置之前,我先说一句,这些配置我只在测试服务器上操作,参考我这些步骤的,请不要在正式环境操作,毕竟选择CentOS,很大一部分原因就是看中CentOS的稳定,启用BBR涉及到更换内核,既然连内核都更换了,对于生产服务器来说,对稳定性或多或少都有影响。
查看当前内核信息:

[root@DOAMS3 ~]# uname -r
3.10.0-693.el7.x86_64

可以看出,CentOS7默认自带的内核都是3.10.x,要启用BBR,我们要更换成4.9+内核版本,下面开始,更换内核。
启用elrepo源:

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

安装Linux主线版本内核:

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

安装之后,查看内核列表:

rpm -qa | grep kernel

查看是否有4.9+的输出,如果有,则证明安装成功了:

[root@DOAMS3 ~]# rpm -qa | grep kernel
kernel-3.10.0-693.el7.x86_64
kernel-tools-libs-3.10.0-693.5.2.el7.x86_64
kernel-3.10.0-693.5.2.el7.x86_64
kernel-tools-3.10.0-693.5.2.el7.x86_64
kernel-ml-4.13.11-1.el7.elrepo.x86_64

我这里是最后以后就是刚安装的新内核。
查看所有可引导的内核列表:

[root@DOAMS3 ~]# egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
CentOS Linux (4.13.11-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux 7 Rescue 6546b7b4c5c34716a6344417a6bffac6 (3.10.0-693.5.2.el7.x86_64)
CentOS Linux (3.10.0-693.5.2.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-d1f142097d497f24c021d7de9b81cab4) 7 (Core)

看输出结果,第一个就是刚安装的,将其设置为默认启动内核就好了:

grub2-set-default 0

注意,上面最后一个0是4.9+内核所在的位置,从0开始数,第一个就是0,第二个是1,以此类推就好了。
设置完之后,重启系统:

reboot

重新登陆服务器,查看当前使用的内核信息:

[root@doams3 ~]# uname -r
4.13.11-1.el7.elrepo.x86_64

可以看出,已经是4.13.x内核了,符合启用BBR的要求,接下来就是启用BBR了。
输入以下几行命令,让BBR生效:

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

查看结果:

sysctl -n net.ipv4.tcp_congestion_control
lsmod | grep bbr

如果两行命令都有BBR字样输出,则代表BBR启用成功。可以用Nginx下载个文件体验一下BBR带来的加速了。