ubuntu升级内核及开启BBR TCP拥塞控制




最近了解到了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.




Posted

in

by

Comments

发表回复/Leave a Reply

您的电子邮箱地址不会被公开。/Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.