BBR(Bottleneck Bandwidth and RTT),全新的 拥塞控制算法,由 Google 开发,供 Linux 内核的 TCP 协议栈使用
查看当前内核
$ uname -r
1
输出类似于以下字符串
3.10.0-514.2.2.el7.x86_64
1
当前内核为3.10.0,因此需要更新内核
更新内核之前,先安装 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
1 2
安装内核
$ yum --enablerepo=elrepo-kernel install kernel-ml -y
1
确认结果
$ rpm -qa | grep kernel
1
如果安装成功,应该输出类似以下,且 kernel-ml-4.18.5-1.el7.elrepo.x86_64 在输出列表中看到
kernel-ml-4.18.5-1.el7.elrepo.x86_64
kernel-3.10.0-514.el7.x86_64
kernel-tools-libs-3.10.0-514.2.2.el7.x86_64
kernel-tools-3.10.0-514.2.2.el7.x86_64
kernel-3.10.0-514.2.2.el7.x86_64
1 2 3 4 5
通过设置默认引导为 grub2,来启用 4.18.5 内核
显示 grub2 菜单中的所有条目
$ egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'
1
结果输出类似于
CentOS Linux 7 Rescue a0cbf86a6ef1416a8812657bb4f2b860 (4.18.5-1.el7.elrepo.x86_64)
CentOS Linux (4.18.5-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.2.2.el7.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-bf94f46c6bd04792a6a42c91bae645f7) 7 (Core)
1 2 3 4 5
由于行计数开始于 0,且 4.18.5 内核条目位于第一行,因此将默认引导条目应设置为 0
$ grub2-set-default 0
1
重启系统
$ shutdown -r now
1
重启后,确认使用的是正确的内核
$ uname -r
1
看到如下结果
4.18.5-1.el7.elrepo.x86_64
1
删除无用的旧内核
yum remove $(rpm -qa | grep kernel | grep -v $(uname -r))
1
要启用 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
$ sysctl -p
1 2 3
确认是否已经启用了 BBR
$ sysctl net.ipv4.tcp_available_congestion_control
1
正常情况下应输出类似以下的字符串
net.ipv4.tcp_available_congestion_control = bbr cubic reno
1
接下来,继续验证
$ sysctl -n net.ipv4.tcp_congestion_control
1
应该输出类似以下字符串
bbr
1
最后,检查内核模块是否已加载
$ lsmod | grep bbr
1
应该输出类似于
tcp_bbr 20841 0
1
就这样,尽情享受高速网络带来的新体验!