Title

CentOS7 配置 BBR 降低延迟

BBR 的全称是 Bottleneck Bandwidth and RTT congestion control。该技术的目的是通过优化和控制 TCP 的拥塞,充分利用带宽并降低延迟,起到神奇般的加速效果 —— 通俗来讲就是对 Linux 内核 TCP 协议的优化从而达到提速的目的。自 Google 于 2016 年 9 月宣布将 BBR 开源起,世界各国的极客们就开始研究了。一些受制于特殊网络环境的网民,近年来一直在寻找各种提速的方法。不论是之前流行的锐速(后开始收费),还是 FinalSpeed 等都曾备受大家的爱戴。BBR 则提供了一个全新的加速方式,在内核较新的 Linux 系统,例如 Ubuntu 18.04 上,它可以方便的开启;而一些较旧的系统,则需要先升级内核才能启用。
这篇文章将介绍在 CentOS 7 上,启动 BBR 的方法。文中使用的是 yum 包管理工具。如果你的系统环境不同,本文可能并不适用。

yum 系统更新

将 CentOS 系统版本更新到 7.3 或更高:

yum update
yum upgrade

查看系统版本

cat /etc/redhat-release

输出如下,则表示已升级到 7.3

CentOS Linux release 7.3.1611 (Core)

安装 elrepo 并升级内核

执行 uname -r 查看内核版本,例如:

4.9.0-1.el7.elrepo.x86_64

如果内核版本低于 4.9,需要升级内核;否则可以跳过这一步,直接到「开启 BBR」部分。

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

这时,执行 yum repolist all 可以看到所有安装的源,可以启用 elrepo-kernal

yum-config-manager --enable elrepo-kernel
yum install kernel-ml -y

如果只是执行一次,也可以使用:

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

正常情况下这个命令将输出如下内容:

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

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

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

Complete!

随后更新 grub 文件并重启。执行:

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

或者

awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg

这时,所有可用的内核会被输出。记下新内核所在的行数,第一行为 0,第二行为 1,以此类推。
执行以下命令来启用最新内核,需要把 0 替换成上一步得到的新内核所在的行数:

grub2-set-default 0
reboot

重启后,ssh 会断开,稍等一会儿重新连接。可以再次查看内核版本,检查更新是否成功。如果一切顺利,下一步就是启动 bbr 了。

开启 BBR

执行

vim /etc/sysctl.conf

追加如下内容:

net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr

然后重新加载这些参数,如果没问题的话,会输出之前加入的内容:

sysctl -p

注:如果提示未找到命令,请确保 SELinux 已关闭,方法是编辑 /etc/selinux/config

除此之外,一些 VPS 主机由于虚拟化技术的限制,可能会在执行这一步时提示文件找不到:

sysctl: cannot stat /proc/sys/net/core/default_qdisc: No such file or directory

百度有解决办法

确定 BBR 已经开启

通过 sysctl

若执行

sysctl net.ipv4.tcp_available_congestion_control

输出

net.ipv4.tcp_available_congestion_control = reno cubic bbr

则表明成功。

通过 lsmod

若执行

lsmod | grep bbr

返回形如

tcp_bbr                16384  1

则表明成功。


原文章链接:

https://zhangshuqiao.org/2018-02/CentOS 7启动BBR教程/

posted @ 2022-05-24 17:52  快乐小洋人  阅读(966)  评论(0编辑  收藏  举报