BBR(瓶颈带宽和RTT)是一种新的拥堵控制算法,由谷歌贡献给Linux内核TCP协议栈。有了BBR,Linux服务器可以获得显著增加的吞吐量和减少连接的延迟。此外,部署BBR很容易,因为这种算法只需要在发送端进行更新,而不是在网络或接收端。
在这篇文章中,我将向你展示如何在一个CentOS 7服务器实例上部署BBR。
为了使用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
为了启用 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