最近了解到了BBR这个东西。BBR是Google开发的一种TCP拥塞控制算法。很多人反映境外的VPS用上BBR之后,速度得到了明显的提升。
如果有兴趣了解一些原理上的东西,可以参考这里:Linux Kernel 4.9 中的 BBR 算法与之前的 TCP 拥塞控制相比有什么优势?
从Linux内核4.9起,BBR已经被整合进Linux内核中,所以直接升级内核到4.9以上的版本并开启BBR模块即可。
只有KVM和Xen架构的VPS可以自行升级内核,因为OpenVZ无法进行内核层级的操作。
升级内核
请注意
如果VPS使用的时间较长,系统中会有很多旧版的内核。你可以先使用apt autoremove --purge
卸载已经不再需要的内核(和软件包)。
涉及内核的操作容易翻车,动手前请务必做好备份。
首先使用uname -r
确认正在使用的内核版本,我的是4.4.0-66-generic
在这里:http://kernel.ubuntu.com/~kernel-ppa/mainline/选择一个4.9以上的内核版本,我选择的是4.10.4。
进入相应版本的目录后,下载下面的三个文件:
i386和amd64分别代表34位和64位。一般的机器选择generic即可。
linux-headers-4.xx.x-xxxxxx_all.deb linux-headers-4.xx.x-xxx-generic(/lowlatency)_xxx_amd64(/i386).deb linux-image-4.xx.x-xxx-generic(/lowlatency)_xxx_amd64(/i386).deb
安装内核
sudo dpkg -i *.deb
更新grub配置并重启
sudo update-grub sudo reboot
再次使用uname -a
确认正在使用的内核。如果显示的是你安装的内核版本则无误。
开启BBR
这一步我使用sudo依然提示无权限,可能需要切换到root用户来执行。
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
保存配置
sysctl -p
验证BBR生效
执行sysctl net.ipv4.tcp_available_congestion_control
如果结果中有bbr
, 则证明你的内核已开启 bbr
执行lsmod | grep bbr
, 看到有tcp_bbr
模块即说明 bbr 已启动
完成后可以测试一下速度。我在位于北京的腾讯云服务器上下载位于Vultr东京的服务器上的文件,在使用BBR之前速度为10-20k,使用BBR后几乎可以跑满带宽。
Enjoy.
发表回复/Leave a Reply