CentOS7升级内核以开启TCP BBR拥塞控制算法

$uname -r

输出如下:

3.10.0-514.26.2.el7.x86_64

说明当前的内核为 3.10.0

安装 ELRepo
repo

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

通过ELRepo repo安装新版内核

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

查询安装结果

$rpm -qa | grep kernel

输出如下:

kernel-3.10.0-514.26.2.el7.x86_64
kernel-tools-libs-3.10.0-514.26.2.el7.x86_64
kernel-tools-3.10.0-514.26.2.el7.x86_64
kernel-headers-3.10.0-514.26.2.el7.x86_64
kernel-ml-5.2.4-1.el7.elrepo.x86_64
kernel-3.10.0-514.el7.x86_64

看倒数第二行 kernel-ml-5.2.4-1.el7.elrepo.x86_64
,说明安装成功了。

将新版内核设置为grub2的启动入口

使用如下命令获取grub2的所有选项

$sudo egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'

输出如下:

CentOS Linux (5.2.4-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.26.2.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-963c2c41b08343f7b063dddac6b2e486) 7 (Core)

我们需要设置的内核版本在第1行,即0号位置(下标从0开始计算)。所以我们使用如下命令设置

$grub2-set-default 0

重启机器

$reboot

检查内核版本是否已更新

$uname -r

输出如下:

5.2.4-1.el7.elrepo.x86_64

说明内核升级已完成。

开启BBR

修改sysctl的配置

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

查看当前可用的拥塞控制算法

$sysctl net.ipv4.tcp_available_congestion_control

输出如下:

net.ipv4.tcp_available_congestion_control = reno cubic bbr

验证bbr是否开启

$sudo sysctl -n net.ipv4.tcp_congestion_control

输出如下:

bbr

验证内核模块是否被加载

$lsmod | grep bbr

输出如下:

tcp_bbr                20480  2

结束,感谢阅读~