QQ截图20200424155820.jpg

预备知识

在使用Google BBR之前,我们首先要了解它是什么。了解计算机网络的人都知道,在TCP连接中,由于需要维持连接的可靠性,引入了拥塞控制和流量管理的方法。

Google BBR就是谷歌公司提出的一个开源TCP拥塞控制的算法。对于该算法的分析,ss不经过其它的任何的优化就能轻松的跑满带宽。(speedtest测试或fast测试)。

由于Google BBR是新的,所以任何低于4.10的linux内核版本都需要升级才能使用,p.s.只有KVM架构的VPS才能使用本教程升级内核,对于openvz的VPS用户若内核版本较低则无法使用。

最简单的方法就是使用Google BBR一键安装脚本。(不过,这里出于学习的目的,博主我决定使用原始升级法)

一、检查内核

远程连接终端,使用命令: uname -r 查看当前内核版本(注意本文使用的VPS系统是Centos,其它系统请绕道)。

得到结果:

3.10.0-693.el7.x86_64

如果当前内核版本低于4.10(继续步骤二),可使用 ELRepo 源更新:
http://elrepo.org/tiki/tiki-index.php

二、手动安装,升级内核

1.导入公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

2.要为RHEL-安装ELRepo7,SL-7或CentOS-7:
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
(对应你的系统,其它请翻阅上面地址)

3.安装内核
yum --enablerepo=elrepo-kernel install kernel-ml -y

执行后,效果如下:

[root@ ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
[root@ ~]# rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
获取https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
准备中...                          ################################# [100%]
正在升级/安装...
   1:elrepo-release-7.0-3.el7.elrepo  ################################# [100%]
[root@ecs-zxDEN ~]# yum --enablerepo=elrepo-kernel install kernel-ml -y
已加载插件:fastestmirror
base                                                                                | 3.6 kB  00:00:00     
elrepo                                                                              | 2.9 kB  00:00:00     
elrepo-kernel                                                                       | 2.9 kB  00:00:00     
epel/x86_64/metalink                                                                |  30 kB  00:00:00     
epel                                                                                | 4.7 kB  00:00:00     
extras                                                                              | 2.9 kB  00:00:00     
updates                                                                             | 2.9 kB  00:00:00     
(1/5): elrepo/primary_db                                                            | 467 kB  00:00:04     
(2/5): epel/x86_64/group_gz                                                         |  95 kB  00:00:03     
(3/5): elrepo-kernel/primary_db                                                     | 1.9 MB  00:00:05     
(4/5): epel/x86_64/updateinfo                                                       | 1.0 MB  00:00:01     
(5/5): epel/x86_64/primary_db                                                       | 6.8 MB  00:00:04     
Determining fastest mirrors
 * base: ftp.rezopole.net
 * elrepo: repos.lax-noc.com
 * elrepo-kernel: repos.lax-noc.com
 * epel: lon.mirror.rackspace.com
 * extras: miroir.univ-paris13.fr
 * updates: centos.quelquesmots.fr
正在解决依赖关系
--> 正在检查事务
---> 软件包 kernel-ml.x86_64.0.5.6.7-1.el7.elrepo 将被 安装
--> 解决依赖关系完成

依赖关系解决

===========================================================================================================
 Package               架构               版本                             源                         大小
===========================================================================================================
正在安装:
 kernel-ml             x86_64             5.6.7-1.el7.elrepo               elrepo-kernel              49 M

事务概要
===========================================================================================================
安装  1 软件包

总下载量:49 M
安装大小:222 M
Downloading packages:
kernel-ml-5.6.7-1.el7.elrepo.x86_64.rpm                                             |  49 MB  00:00:11     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
警告:RPM 数据库已被非 yum 程序修改。
  正在安装    : kernel-ml-5.6.7-1.el7.elrepo.x86_64                                                    1/1 
  验证中      : kernel-ml-5.6.7-1.el7.elrepo.x86_64                                                    1/1 

已安装:
  kernel-ml.x86_64 0:5.6.7-1.el7.elrepo                                                                    

完毕!

4.安装完成后,查看已安装的内核:
rpm -qa | grep kernel

执行结果:

kernel-tools-3.10.0-693.el7.x86_64
kernel-headers-3.10.0-1062.18.1.el7.x86_64
kernel-tools-libs-3.10.0-693.el7.x86_64
kernel-3.10.0-693.el7.x86_64
kernel-devel-3.10.0-1062.18.1.el7.x86_64
kernel-ml-5.6.7-1.el7.elrepo.x86_64

在输出中看到类似 kernel-ml-5.6.7-1.el7.elrepo.x86_64 的内容,表示安装成功。

5.修改grub2引导
egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'

执行结果:

CentOS Linux (5.6.7-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-8508293106977c25a934808909d9e8a1) 7 (Core)

6.如上,一共看到三个内核,设置需要的内核为启动项
grub2-set-default 0 (序号从0开始,这里表示第一项)

7.重启服务器 reboot

8.待重启完成后,重新使用 uname -r 查看内核版本:

5.6.7-1.el7.elrepo.x86_64

至此,内核升级成功。

三、进入主题,开启BBR

1.执行命令,写入两条配置文件并保存(下面共三条命令,分别执行):

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

2.检查是否开始成功 sysctl net.ipv4.tcp_available_congestion_control

net.ipv4.tcp_available_congestion_control = bbr cubic reno

若出现BBR字样,表示已成功开启。

本文完