CentOS7开启BBR拥塞控制算法

风和日丽 2019-06-21

最近偶然获得一台Digital Ocean的VPS,然而中美之间的链路质量实在不敢恭维,DO San Francisco机房的VPS丢包率尚可,而延迟高了很多,体验也比较差。很多人通过锐速 ServerSpeeder来改善网络,然而这些有权限控制网络的闭源代码风险还是比较大的。而其他设置上的优化效果微乎其微,听闻Linux新内核已经支持了BBR算法,实验一波。

linux内核默认的拥塞控制算法是cubic,对于中美之间链路这种延迟较高、丢包率中等的网络效果非常差。Google员工开发的BBR拥塞控制算法对网络质量提升很大,这里教大家如何在一台CentOS 7 系统的VPS上,使用BBR拥塞控制算法。

升级内核

首先查看你的Linux内核版本

[root@centos-512mb-sfo2-01 ~]# uname -a
Linux centos-512mb-sfo2-01 4.12.1-1.el7.elrepo.x86_64 #1 SMP Thu Jul 13 07:25:32 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux

主机名后面那个就是版本号了,这里可以看到,这台机子已经升到了最新的4.12版本。
开启BBR拥塞控制算法的要求是Linux内核4.9以上版本,现在主流的Linux发行版内核还停留在2.x,我们需要先升级Linux内核版本。

首先,我们需要增加一个 ELRepo 源。
首先,让我们添加 ELRepo GPG key:
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

安装 fastestmirror
yum install yum-plugin-fastestmirror

安装最新Kernel
yum --enablerepo=elrepo-kernel install kernel-ml

切换到刚刚下载的新内核
grub2-set-default 0

重启后,通过 uname -a 查看内核是否成功切换到最新的版本,确认后我们进入下一步开启BBR

开启BBR

/etc/sysctl.conf中加入以下两句

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

检查是否成功设置

sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control

分别查看可以用和现在使用的拥塞控制算法

[root@centos-512mb-sfo2-01 ~]# sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = bbr cubic reno
[root@centos-512mb-sfo2-01 ~]# sysctl net.ipv4.tcp_congestion_control
net.ipv4.tcp_congestion_control = bbr

检查BBR是否正常运行
lsmod | grep tcp_bbr

[root@centos-512mb-sfo2-01 ~]# lsmod | grep tcp_bbr
tcp_bbr                16384  21

在开启前平均加载速度在2000以内,开启后一般可以稳定在8000以上,可见提升非常巨大

CentOS7开启BBR拥塞控制算法

相关推荐