在Oracle Cloud美西机房Ubuntu 18.04LTS系统中开启Google BBR的正确姿势
Oracle美西地区机房线路本身并不差,但相比其日韩地区机房得天独厚的地理优势,在中国大陆用户眼中就不那么有竞争力了。要改善美西地区机房到中国大陆的网速表现,最佳实践就是启用Google BBR算法,从系统软层面的提升数据传输效率。Oracle云服务器免费提供的Ubuntu Linux操作系统最高版本是18.04LTS bionic,低于默认开启Google BBR的19版disco。网上现有的一些教程要么使用一键包,要么虽能成功但方法不合规范[1]。想要在Linux/UNIX环境下以正确的方式开启BBR就只能自己动手了。
常见的网络教程往往是在 /etc/sysctl.conf 配置文件中增加如下两行参数信息,再执行sysctl -p
来更新配置。
1 | net.core.default_qdisc=fq |
在Linux操作系统中进行配置文件修改时,通常将不同功能配置组分开处理,在Oracle Cloud服务器上提供的内核为4.15版的Ubuntu 18.04LTS上,正确的做法是在 /etc/sysctl.d 下新建一个文件(见附A),如60-bbr.conf,并在这个文件中增加以上两行配置信息,随后用命令sudo service procps restart
或sudo service procps reload
,或sudo invoke-rc.d procps restart
来更新配置[2]。增加两行配置参数后,直接使用sudo sysctl -p
是无效的,在这种情况下,应当添加具体文件的路径,如sudo sysctl -p /etc/sysctl.d/60-bbr.conf
[3]。
至此,给美西机房的Oracle云服务器[4]提速的工作完成,效果比网上介绍的还好。打开视频流数据信息查看连接速度,同一台机器之前只有500多,启用BBR算法后最高飙至13000+[5]!
以下是Youtube上同一视频在启用前后的数据传输表现(上前下后,点击可查看大图)。
有兴趣的网友也可以用下面这段视频尝试一番。
8k or 4K 60fps HDR NATURE ultra hd for |Ghost Towns
要知道从前即便是用CN2GIA的线路也极少看到一万以上的数值,而现在Oracle的美西机房竟就能给出如此的表现,不得不佩服Google的算法研究人员了。
附A:/etc/sysctl.d 目录
1 | ubuntu@instance-20190924-1816:/etc/sysctl.d$ ls -lah |
附B:README文件内容
1 | This directory contains settings similar to those found in /etc/sysctl.conf. |
Oracle Cloud的服务器系统模板据说与其它主机商提供的引导模式不太一样,全球主机交流论坛上报出过某些一键包执行完就造成内核损坏、无法启动的结果;一些国内国外的教程(如Rat’s Blog和LinuxBabe)均通过直接修改 /etc/sysctl.conf 后再以一条
sysctl -p
来更新配置使BBR模块生效,却非Linux/UNIX下正确严谨的方法。 ↩︎系统内的说明文档(见附B)指导用service procps start来更新配置,但据How do I reload sysctl from sysctl.d directory,正确的命令应当是
sysctl -p /etc/sysctl.d/*.conf
↩︎在这次测试中,达到13000以上的数据应存在较为明显的额外因素,比如同节点上其它主机和网络的影响,但从后来的几次测试来看,从网络状态较差情况下的数百到非高峰期的五千以上足以说明BBR算法的强劲之处了。 ↩︎