在 CentOS 7 上开启 Google BBR 拥塞控制算法

Google 开源了其 TCP BBR 拥塞控制算法,并提交到了 Linux 内核,从 4.9 开始,Linux 内核已经用上了该算法。根据以往的传统,Google 总是先在自家的生产环境上线运用后,才会将代码开源,此次也不例外。 根据实地测试,在部署了最新版内核并开启了 TCP BBR 的机器上,网速甚至可以提升好几个数量级。

Google BBR Effect

根据 Google 的测试数据,BBR 的吞吐量可以比当今最好的基于损耗的拥塞控制高出2700倍; 排队延误可降低25倍。

在本文中,我们将向您展示如何在 CentOS 7 服务器上部署 Google BBR 拥塞控制算法。

第一步:升级系统内核

要使用 BBR,首先您需要升级到 CentOS 7 的最新稳定内核。

我们先来看看当前的系统内核:

uname -r

在我们的例子中,输出将是如下结果:

3.10.0-514.2.2.el7.x86_64

这表明我们的内核版本是 3.10,我们需要将其升级到最新版本以启用 BBR。

安装 ELRepo:

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

使用 ELRepo 安装 5.0.7 内核:

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

完成后,我们检查一下新内核是否安装成功:

rpm -qa | grep kernel

如果安装成功,您应该在结果中看到 kernel-ml-5.0.7-1.el7.elrepo.x86_64:

kernel-3.10.0-957.10.1.el7.x86_64
kernel-ml-devel-5.0.7-1.el7.elrepo.x86_64
kernel-3.10.0-957.5.1.el7.x86_6
kernel-tools-libs-3.10.0-957.10.1.el7.x86_64
kernel-tools-3.10.0-957.10.1.el7.x86_64
kernel-ml-5.0.7-1.el7.elrepo.x86_64
kernel-3.10.0-957.el7.x86_64
kernel-devel-3.10.0-957.10.1.el7.x86_64
kernel-headers-3.10.0-957.10.1.el7.x86_64

第二步:启用新内核

现在,您需要通过设置默认的 grub2 引导来启用 5.0.7 内核。

显示 grub2 菜单中的所有条目:

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

结果应该类似于:

CentOS Linux (5.0.7-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-957.10.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-957.5.1.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-957.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-48eae5db334f4be180c62013c3806594) 7 (Core)

设置默认引导条目,这里的计数是从 0 开始的,最新的稳定内核在第 1 行,因此将其设置为 0。

grub2-set-default 0

现在我们只需要重启服务器:

shutdown -r now

服务器重启完成后,请重新登录服务器并重新运行 uname 命令以确认您使用的是正确的内核:

5.0.7-1.el7.elrepo.x86_64

第三步:启用 Google BBR

要启用 Google BBR 算法,您需要按如下方式修改 systctl:

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

现在我们来验证 BBR 是否已启用,运行以下命令:

sysctl net.ipv4.tcp_available_congestion_control

输出如下结果:

net.ipv4.tcp_available_congestion_control = bbr cubic reno

接下来,验证:

lsmod | grep bbr

输出如下结果:

tcp_bbr 20480 21

搞定!到此 BBR 就安装成功了,在网络高峰延时增加的时候,BBR 会发挥出它强大的作用——增加吞吐量并减少连接延迟。

关联文章