Linode开启Google BBR的正确方法

熟悉科学上网的同学可能会知道,由于境内外网络环境复杂,延迟高、丢包率高,许多基于TCP协议的翻墙工具会存在传输速度低且不稳定的问题。这在很大程度上是因为,TCP协议可以使用多种拥塞控制算法,而最常用的CUBIC算法存在着无法全速发送数据、易被丢包干扰、容易产生锯齿状波动等问题。因此,各种TCP单边加速工具层出不穷,如锐速(Appex)、ZetaTCP。但这些工具需要较高的运行权限且大部分是收费使用并不开源,因此从安全、成本和可靠性的角度会让使用者有更多顾虑。

好在,2016年09月,Google向Linux Kernel提交了Google BBRPull Request。Google BBR是一种新的TCP拥塞控制算法,在Google的内部广域网(B4)中已经进行了广泛的测试,该算法可以充分利用网络带宽,特别是可以在20%以内丢包率下保持较高的带宽(相关论文)。

BBR对比CUBIC

最终在该Pull Request被包含进Linux 4.9并于2016年12月发布。此后,网络上出现了很多如何在VPS上开启BBR功能的文章,大部分比较详细。但我在Linode经过测试后发现手动安装4.9.x内核并更新引导项后,新内核并没有正确的被引导。经过一番搜索,我发现原来在Linode更换内核,其实不需要这么复杂。

因此我总结了如下三个步骤,即可在Linode VPS上使用BBR:

1、进入Linode管理后台,点击VPS操作系统的“Edit”链接进入编辑界面:

找到你的VPS

在编辑界面修改“Boot Settings”中的“Kernel”选项,只要是4.9.0及其以上的内核都是支持Google BRR的:

更换内核

保存之后重启VPS。

2、重启完成后,使用SSH登录VPS,执行以下命令:

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p

3、再次重启VPS,BRR即开启完成。

Linode的后台管理功能较为强大,替换内核等工作可以直接图形化操作,避免手动操作可能存在的风险。但如果已经按照网络上的教程配置好了GRUB2,那么在第一步中选择“GRUB 2”即可

最后,感谢Google对Linux Kernel的贡献。

一条评论

  1. 哈哈哈哈,我们在同一天写了几乎一样的一篇文章。不过我测试的时候直接用linode选择4.9.7的内核也是无效的,貌似linode的内核定制过,我替换的发行版内核才成功了。
    你试试lsmod |grep bbr看看有没tcp_bbr

    Reply

文章评论: