风和日丽 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
安装 fastestmirroryum install yum-plugin-fastestmirror
安装最新Kernelyum --enablerepo=elrepo-kernel install kernel-ml
切换到刚刚下载的新内核grub2-set-default 0
重启后,通过 uname -a
查看内核是否成功切换到最新的版本,确认后我们进入下一步开启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以上,可见提升非常巨大