熟悉科学上网的同学可能会知道,由于境内外网络环境复杂,延迟高、丢包率高,许多基于TCP协议的翻墙工具会存在传输速度低且不稳定的问题。这在很大程度上是因为,TCP协议可以使用多种拥塞控制算法,而最常用的CUBIC算法存在着无法全速发送数据、易被丢包干扰、容易产生锯齿状波动等问题。因此,各种TCP单边加速工具层出不穷,如锐速(Appex)、ZetaTCP。但这些工具需要较高的运行权限且大部分是收费使用并不开源,因此从安全、成本和可靠性的角度会让使用者有更多顾虑。
好在,2016年09月,Google向Linux Kernel提交了Google BBR的Pull Request。Google BBR是一种新的TCP拥塞控制算法,在Google的内部广域网(B4)中已经进行了广泛的测试,该算法可以充分利用网络带宽,特别是可以在20%以内丢包率下保持较高的带宽(相关论文)。
最终在该Pull Request被包含进Linux 4.9并于2016年12月发布。此后,网络上出现了很多如何在VPS上开启BBR功能的文章,大部分比较详细。但我在Linode经过测试后发现手动安装4.9.x内核并更新引导项后,新内核并没有正确的被引导。经过一番搜索,我发现原来在Linode更换内核,其实不需要这么复杂。
因此我总结了如下三个步骤,即可在Linode VPS上使用BBR:
1、进入Linode管理后台,点击VPS操作系统的“Edit”链接进入编辑界面:
在编辑界面修改“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的贡献。
哈哈哈哈,我们在同一天写了几乎一样的一篇文章。不过我测试的时候直接用linode选择4.9.7的内核也是无效的,貌似linode的内核定制过,我替换的发行版内核才成功了。
你试试lsmod |grep bbr看看有没tcp_bbr
我查了一下,应该开启了,但是lsmod不显示而已。我那篇文章下面也有人是这样评论的。
网上找到一种说法:Linode自带的内核都是把模块都编译一块的,所以lsmod里看不到正常,lsmod是看额外加载的模块的。
应该就是这样了。
正解
谢谢指导与分享。
感谢分享
网站不错!!!!
文章不错非常喜欢
感谢分享,谢谢站长
感谢分享