在CentOS 7系统上部署谷歌BBR

BBR(瓶颈带宽和RTT)是一种新的拥堵控制算法,由谷歌贡献给Linux内核TCP协议栈。有了BBR,Linux服务器可以获得显著增加的吞吐量和减少连接的延迟。此外,部署BBR很容易,因为这种算法只需要在发送端进行更新,而不是在网络或接收端。

在这篇文章中,我将向你展示如何在一个CentOS 7服务器实例上部署BBR。

前提条件

  • CentOS 7 x64服务器实例
  • sudo 权限用户

第1步: 使用elrepo RPM 仓库升级内核

为了使用BBR,你需要将你的CentOS 7机器的内核升级到5.19.5。你可以使用elrepo RPM仓库轻松完成这一工作。

升级前,使用以下命令查看当前内核

uname -r

这个命令应该输出一个类似于的字符串。

3.10.0-1160.el7.x86_64

可以看到当前内核版本为 3.10.0
安装elrepo rpm仓库

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

使用 elrepo仓库安装 5.19.5内核

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

确认安装结果

rpm -qa | grep kernel

如果安装成功,您应该在输出列表中看到 kernel-ml-5.19.5-1.el7.elrepo.x86_64

kernel-3.10.0-1160.el7.x86_64
kernel-tools-libs-3.10.0-1160.76.1.el7.x86_64
kernel-ml-5.19.5-1.el7.elrepo.x86_64
kernel-tools-3.10.0-1160.76.1.el7.x86_64
kernel-3.10.0-1160.76.1.el7.x86_64

更新安装的内核版本为操作系统默认启动内核
显示 grub2 菜单中的所有条目

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

响应结果

CentOS Linux (5.19.6-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.76.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-0f637986af7b4c0681d9f8fb9311279a) 7 (Core)

索引从 0 开始。这意味着 5.19.6 内核位于 2:

sudo grub2-set-default 0

重启系统:

sudo shutdown -r now

当服务器重新联机时,重新登录并重新运行 uname 命令以确认您使用的是正确的内核:

uname -r

响应结果如下

5.19.6-1.el7.elrepo.x86_64

第2步: 启用BBR

为了启用 BBR 算法,需要修改 sysctl 配置如下:

echo 'net.core.default_qdisc=fq' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

现在,您可以使用以下命令确认 BBR 已启用:

sudo sysctl net.ipv4.tcp_available_congestion_control

输出

net.ipv4.tcp_available_congestion_control = bbr cubic reno

接下来,验证:

sudo sysctl -n net.ipv4.tcp_congestion_control

输出

bbr

最后,检查内核模块是否已加载:

lsmod | grep bbr

输出

tcp_bbr                20480  1