Centos7开启BBR加速

前言

Google BBR 是一款免费开源的TCP拥塞控制传输控制协议, 可以使Linux服务器显著提高吞吐量和减少TCP连接的延迟。

升级内核

  • 查看内核版本
[root@ecs-09077087-003 ~]# cat /etc/redhat-release 
CentOS Linux release 7.9.2009 (Core)
[root@ecs-09077087-003 ~]# uname -a
Linux ecs-09077087-003 3.10.0-1160.25.1.el7.x86_64 #1 SMP Wed Apr 28 21:49:45 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
  • 查看当前已安装所有内核
[root@ecs-09077087-003 ~]# rpm -qa | grep kernel
kernel-headers-3.10.0-1160.59.1.el7.x86_64
kernel-tools-libs-3.10.0-1160.59.1.el7.x86_64
kernel-3.10.0-1160.59.1.el7.x86_64
kernel-3.10.0-1160.25.1.el7.x86_64
kernel-tools-3.10.0-1160.59.1.el7.x86_64
  • 启用elrepo仓库
[root@ecs-09077087-003 ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org #导入公共密钥
[root@ecs-09077087-003 ~]# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm #安装elrepo仓库的yum源
Retrieving http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
Retrieving http://elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:elrepo-release-7.0-4.el7.elrepo  ################################# [100%]
[root@ecs-09077087-003 ~]# yum --enablerepo=elrepo-kernel install kernel-ml -y
Loaded plugins: fastestmirror, versionlock
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * elrepo: mirror-hk.koddos.net
 * elrepo-kernel: mirrors.tuna.tsinghua.edu.cn
 * epel: mirrors.tuna.tsinghua.edu.cn
 * extras: mirrors.cqu.edu.cn
 * updates: mirrors.cqu.edu.cn
elrepo                                                                                                                                                                                                            | 3.0 kB  00:00:00     
elrepo-kernel                                                                                                                                                                                                     | 3.0 kB  00:00:00     
(1/2): elrepo/primary_db                                                                                                                                                                                          | 441 kB  00:00:00     
(2/2): elrepo-kernel/primary_db                                                                                                                                                                                   | 2.1 MB  00:00:02     
Resolving Dependencies
--> Running transaction check
---> Package kernel-ml.x86_64 0:5.17.1-1.el7.elrepo will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=========================================================================================================================================================================================================================================
 Package                                              Arch                                              Version                                                           Repository                                                Size
=========================================================================================================================================================================================================================================
Installing:
 kernel-ml                                            x86_64                                            5.17.1-1.el7.elrepo                                               elrepo-kernel                                             56 M

Transaction Summary
=========================================================================================================================================================================================================================================
Install  1 Package

Total download size: 56 M
Installed size: 255 M
Downloading packages:
kernel-ml-5.17.1-1.el7.elrepo.x86_64.rpm                                                                                                                                                                          |  56 MB  00:00:23     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Warning: RPMDB altered outside of yum.
  Installing : kernel-ml-5.17.1-1.el7.elrepo.x86_64                                                                                                                                                                                  1/1 
  Verifying  : kernel-ml-5.17.1-1.el7.elrepo.x86_64                                                                                                                                                                                  1/1 

Installed:
  kernel-ml.x86_64 0:5.17.1-1.el7.elrepo                                                                                                                                                                                                 

Complete!
  • 安装最新内核版本
[root@ecs-09077087-003 ~]# yum --enablerepo=elrepo-kernel install kernel-ml -y
  • 查看系统已安装的所有内核,并显示序号
[root@ecs-09077087-003 ~]# awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (5.17.1-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-1160.59.1.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-1160.25.1.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-2d373eb792a749f68374f19577cd62be) 7 (Core)
  • 设置新版本内核为默认启动并重启,后面的数字就是上面的序号
[root@ecs-09077087-003 ~]# grub2-set-default 0
  • 生成配置文件并重启
[root@ecs-09077087-003 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.17.1-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-5.17.1-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1160.59.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.59.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-1160.25.1.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1160.25.1.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-2d373eb792a749f68374f19577cd62be
Found initrd image: /boot/initramfs-0-rescue-2d373eb792a749f68374f19577cd62be.img
done
[root@ecs-09077087-003 ~]# reboot
  • 验证是否成功更换内核
[root@ecs-09077087-003 ~]# uname -a
Linux ecs-09077087-003 5.17.1-1.el7.elrepo.x86_64 #1 SMP PREEMPT Mon Mar 28 09:33:28 EDT 2022 x86_64 x86_64 x86_64 GNU/Linux

启用BBR

  • 修改/etc/sysctl.conf文件
[root@ecs-09077087-003 ~]# echo "tcp_bbr" >> /etc/modules-load.d/modules.conf
[root@ecs-09077087-003 ~]# echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
[root@ecs-09077087-003 ~]# echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
[root@ecs-09077087-003 ~]# sysctl -p
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.disable_ipv6 = 1
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
  • 验证BBR是否开启
[root@ecs-09077087-003 ~]# sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = reno cubic bbr
[root@ecs-09077087-003 ~]# lsmod | grep bbr
tcp_bbr                20480  1 

注意

  • bbr只支持使用syctemctl命令的系统,所以centos只支持7以上版本。centos6无法使用。
  • centos默认内核版本较低,需要先更新系统内核。
  • 升级完后可删除旧内核,参考以下:
rpm -ev kernel-3.10.0-1062.el7.x86_64

rpm -ev kernel-3.10.0-1062.12.1.el7.x86_64

rpm -ev kernel-3.10.0-1062.18.1.el7.x86_64

rpm -ev kernel-devel-3.10.0-1062.18.1.el7.x86_64
添加新评论