CentOS 7 开启 TCP-BBR 的方式

标签: none

谷歌推出的 TCP-BBR 开源算法,起到单线程加速的作用 %&*(!$(&# (此处省略X字) :bubble_funny: 你要是问我具体什么理论和技术... 网络上有很多文章。我不懂我怎么说?

https://github.com/google/bbr
https://github.com/google/bbr/blob/master/Documentation/bbr-quick-start.md
https://groups.google.com/forum/#!forum/bbr-dev

系统 Centos7

开启 TCP-BBR 首先要升级 Linux 核心,也就是升级到 4.9.0-1.el7.elrepo.x86_64 (目前是这个版本,以后会有更高的更新)

OpenVZ 架构的 VPS 没办法使用。

部分服务商首先要去后台改一下内核设置,例如 Digital Ocean 和 Linode

如何更新 Digital Ocean 服务器 linux 核心?

我的 VPS 服务商是 Digital Ocean ,首先要在服务商的网页后台,Kernel 选择为 GrubLoader ,远程命令 poweroff VPS 关机 (为了避免数据损坏使用命令关机而不是网页后台),后台进入 Power ,选择 Power On VPS 开机,如果没问题应该可以开始更换内核了。

这里我出现了些问题,因为选择几次 GrubLoader,我已经安装配置好内核,但是内核没有改变,我当时是傻掉的。

原因是 DO 在国内属于被墙一半的情况,这几天网络掉包严重,后台选择后没有生效...

Linode 服务商 Kernel 选择 GRUB 2启动 (大概这样?! 我没有使用过 Linode )

首先确认目前使用内核

uname -r

https://elrepo.org/tiki/tiki-index.php

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml -y

下载指定版本内核更新, 到目前位置最新内核版本为 5.5.6 这个内核在甲骨文上不支持. 5.3.0 测试可用
因elrepo源都是最新版本, 4.19找不到了.
kernel rpm 历史归档版本

# wget http://mirror.rc.usf.edu/compute_lock/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-devel-5.3.0-1.el7.elrepo.x86_64.rpm
# wget http://mirror.rc.usf.edu/compute_lock/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-headers-5.3.0-1.el7.elrepo.x86_64.rpm
wget http://mirror.rc.usf.edu/compute_lock/elrepo/kernel/el7/x86_64/RPMS/kernel-ml-5.3.0-1.el7.elrepo.x86_64.rpm

rpm -ivh kernel-ml-5.3.0-1.el7.elrepo.x86_64.rpm

删除旧内核

uname -a
rpm -qa | grep kernel

[root@localhost ~]# rpm -qa | grep kernel
kernel-3.10.0-327.22.2.el7.x86_64
kernel-devel-3.10.0-327.22.2.el7.x86_64
kernel-headers-3.10.0-327.28.2.el7.x86_64
kernel-3.10.0-327.28.2.el7.x86_64
kernel-tools-3.10.0-327.28.2.el7.x86_64
kernel-devel-3.10.0-327.28.2.el7.x86_64

yum remove kernel-3.10.0-327.22.2.el7.x86_64

查看内核列表,第一个的编号是 0

# 一般位置
egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'

# 甲骨文 Oracle Cloud
egrep ^menuentry /boot/efi/EFI/centos/grub.cfg  | cut -f 2 -d \'

返回信息,可以看见刚刚安装的内核 4.9 处于第1位,编号 0

CentOS Linux (4.9.0-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.13.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-327.10.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-229.20.1.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-fd8cf26e06e411e4a9d004010897bd01) 7 (Core)

设置处于编号 0 的 4.9 内核默认运行

grub2-set-default 0

重启 linux,SSD 存储器的服务器重启速度还是快的,1分钟就可以重新远程控制了

reboot

查看内核是否在使用 4.9

uname -r

返回信息

[root@set-fire ~]# uname -r 
4.9.0-1.el7.elrepo.x86_64

写入参数到 sysctl.conf

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

检测设置是否生效

sysctl net.ipv4.tcp_available_congestion_control

返回信息,可以看见 bbr 已经启用

[root@set-fire ~]# sysctl net.ipv4.tcp_available_congestion_control 
net.ipv4.tcp_available_congestion_control = bbr cubic reno

查看 bbr 是否在运行

lsmod | grep bbr

返回信息

[root@set-fire ~]# lsmod | grep bbr
tcp_bbr                16384  29 

这样应该安装完成了,可以测试一下有没有传输速度上的提升。
我认为传输速度提升是有的,只是效果的差别,有些服务器作用明显,有些服务器因为网路传输原因而作用微小... 并且中国大陆有神奇的网路(丢包)。

Debian8/Centos7 开启 TCP-BBR 的方式


扫描二维码,在手机上阅读!

添加新评论