CentOS7升级内核并启用BBR

BBR是Google开发的一种拥塞控制算法,这个算法自从Linux 4.9版本开始集成进内核,这个功能对我们玩VPS或者国外服务器的来说,最大的作用就是能在线路拥堵或者晚高峰的情况下提升我们本地与服务器之间的访问速度。
尤其是科学上网的情况下,启用BRR比未启用能得到一个很大的提升,在不花费额外成本的情况下有可能获得更好的服务器与服务器之间的数据传输体验。

本文在全程在Vultr的VPS上操作并全程通过,全球16个机房可选支持支付宝微信付款,月付2.5美元起,现在注册还赠送30天50美元的账户余额,注册链接:Vultr
推荐使用搬瓦工CN2 GIA线路VPS,全程CN2 GIA线路,对比常规线路,抽风少,访问速度快,国内一流速度:搬瓦工

写在开始

因为BBR是从Linux4.9才开始集成进Linux内核,如果想要启用BBR,需要内核Linux 4.9+版本,但是因为CentOS7的软件版本策略,默认情况下CentOS7的内核版本会一直维持在3.10.x,如果需要启用BBR,我们需要升级内核版本至4.9+。如果是正式环境的生产服务器,建议不要升级,因为升级内核可能会导致系统不稳定,毕竟选择CentOS7很大程度上是为了稳定。
因为系统架构限制,OpenVZ架构的VPS正常情况是无法更改内核的,只能KVM、部分XEN、VMWare以及HyperV架构的VPS或者云主机才支持更换内核,入手VPS或者云主机的需要注意下。

启用elrepo源

需要将内核升级到4.9+,我们需要借助elrepo源,elrepo是一个硬件相关源仓库,提供部分硬件相关的包用以增强CentOS/RHEL等的用户使用体验。
elrepo源项目主业:https://elrepo.org/tiki/tiki-index.php
配置elrepo源也很简单,CentOS7系统的话只需要如下一行命令即可配置好:

yum install https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm

升级CentOS7系统内核

elrepo提供两种Linux内核版本,分别是长期支持版本(kernel-lt)和主线版本(kernel-ml),当前(2019.04)主线版本是5.0,而长期支持版本还是4.4,要启用BBR还是需要安装长期支持版本,相关命令:

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

安装过程有点慢,需要耐心等待一下。
如无意外,应该能看到已安装的内核:

[root@cloudbool-Vultr ~]# rpm -qa | grep kernel
kernel-tools-3.10.0-957.10.1.el7.x86_64
kernel-3.10.0-957.10.1.el7.x86_64
kernel-3.10.0-693.el7.x86_64
kernel-tools-libs-3.10.0-957.10.1.el7.x86_64
kernel-3.10.0-693.11.6.el7.x86_64
kernel-ml-5.0.7-1.el7.elrepo.x86_64

上面最后一个kernel-ml就是刚刚安装的内核版本,说明已经安装成功了。

调整内核启动顺序

除了安装之外,还需要调整系统启动内核的顺序,通过如下命令查看所有可使用的内核及其顺序:

egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \’

相关输出如下:

[root@cloudbool-Vultr ~]# egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
CentOS Linux (5.0.7-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux 7 Rescue 07a8c022e26b4d7ab2c78893f381a99c (3.10.0-957.10.1.el7.x86_64)
CentOS Linux (3.10.0-957.10.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-693.11.6.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-00a62363617944e08db8db894ba6145e) 7 (Core)

如上输出,第一个就是我们刚刚安装的,我们只需设置其为开机启动的内核即可,设定命令:

grub2-set-default 0

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

reboot

CentOS7启用BBR

重启之后,如果没有意外就是使用新的内核了,可通过如下命令查看使用的版本:

[root@cloudbool-Vultr ~]# uname -a
Linux  5.0.7-1.el7.elrepo.x86_64 #1 SMP Fri Apr 5 18:07:52 EDT 2019 x86_64 x86_64 x86_64 GNU/Linux

如上就是使用了新的内核了,接下就是启用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启用成功。

CentOS8系统怎么启用BBR

这是CentOS7的启用方法,如果系统是CentOS8,可以移步这里:CentOS8系统启用BBR