谷歌推出的 TCP-BBR 开源算法, 起到单线程加速的作用 %&*(!$(&# (此处省略X字) 你要是问我具体什么理论和技术… 网络上有很多文章。我不懂我怎么说?
github.com/google/bbr
bbr-quick-start.md
BBR Development
系统 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
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
这样应该安装完成了, 可以测试一下有没有传输速度上的提升。
我认为传输速度提升是有的, 只是效果的差别, 有些服务器作用明显, 有些服务器因为网路传输原因而作用微小… 并且中国大陆有神奇的网路 (丢包)。
原文