很多人通过锐速 ServerSpeeder来改善网络,先不说闭源代码的风险问题,实际提升并不明显。而其他设置上的优化效果微乎其微,听闻Linux新内核4.9版已经支持了BBR算法,实验一波。
TCP BBR 致力于解决两个问题:
1、在有一定丢包率的网络链路上充分利用带宽。
2、降低网络链路上的 buffer 占用率,从而降低延迟。
linux内核默认的拥塞控制算法是cubic,对于中美之间链路这种延迟较高、丢包率中等的网络效果非常差。Google员工开发的BBR拥塞控制算法对网络质量提升很大,这里教大家如何在一台CentOS 7 系统的VPS上,使用BBR拥塞控制算法。
升级内核
首先查看你的Linux内核版本
1 2 | [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:
1 | rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org |
添加源:
1 | rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm |
安装 fastestmirror
1 | yum install yum-plugin-fastestmirror |
安装最新Kernel
1 | yum --enablerepo=elrepo-kernel install kernel-ml |
切换到刚刚下载的新内核
1 | grub2-set-default 0 |
重启后,通过 uname -a 查看内核是否成功切换到最新的版本,确认后我们进入下一步开启BBR
开启BBR
在/etc/sysctl.conf中加入以下两句
1 2 | net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr |
编辑完成后,请执行以下命令使变动立即生效:
1 | /sbin/sysctl -p |
检查是否成功设置
1 2 | sysctl net.ipv4.tcp_available_congestion_control sysctl net.ipv4.tcp_congestion_control |
分别查看可以用和现在使用的拥塞控制算法
1 2 3 4 | [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是否正常运行
1 | lsmod | grep tcp_bbr |
1 2 | [root@centos-512mb-sfo2-01 ~]# lsmod | grep tcp_bbr tcp_bbr 16384 21 |