操作之前先备份服务器,比如做快照。

[root@test104 ~]# uname -sr
Linux 3.10.0-1160.el7.x86_64

升级内核,BBR内核要求是4.9+,通常来说通过上面这个命令出来的内核版本是在3.x。

升级一下之后是直接变到了6.4.8。

进行下面三个命令即可对内核进行升级:

(1)安装ELRepo仓库:

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

(2)安装最新内核

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

(3)查看结果

[root@test104 ~]# rpm -qa|grep kernel-ml
kernel-ml-6.4.8-1.el7.elrepo.x86_64

设置默认的grub2引导条目来启用kernel-ml-6.4.8内核

[root@test104 ~]# egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
CentOS Linux (6.4.8-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-1a649b4351414f6c9fe834aa0fdb5c46) 7 (Core)

索引从0开始。这意味着4.9.0内核位于0(CentOS Linux (6.4.8-1.el7.elrepo.x86_64) 7 (Core) 在什么位置就是填几)

grub2-set-default 0

然后直接重启系统

shutdown -r now

重启之后,可以再次使用uname来看一下内核是不是6.4.8版本!

[root@test104 ~]# uname -r
6.4.8-1.el7.elrepo.x86_64

启用BBR直接一次输入下面的命令即可

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

使用以下命令确认已启用BBR

[root@test104 ~]# sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = reno cubic bbr

#输出应该类似于net.ipv4.tcp_available_congestion_control = bbr cubic reno(划重点:等于号后面有个bbr就对了)

验证一下:

sysctl -n net.ipv4.tcp_congestion_control

输出应该bbr

最后,检查内核模块是否已加载:

lsmod | grep bbr

输出类似于:

tcp_bbr         16384  10