新年折腾 BBR

人是一种很奇怪的东西,以前家里科学上网速度很慢的时候,只要能打开就很满意了。

现在换了联通,Google 明明已经秒开了,却又开始不满足现状了。

恰巧最近看到了各种 KCP, BBR 技术的介绍,就想给自己的梯子折腾折腾了。

 

KCP 介绍

KCP 是开源社区的一个新轮子,看 commit 记录是从 2014 年开始开发的。算是一个很新的东西了。

KCP是一个快速可靠协议,能以比 TCP浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。

项目地址:https://github.com/skywind3000/kcp

更多的内容就不详细介绍了,项目主页写得非常详细了。

 

该项目只是提供了 KCP 的核心算法,而没有对应的应用。如果要用起来的话,可以利用如下两个项目:

 

kcptun: A Simple UDP Tunnel Based On KCP

项目地址:https://github.com/xtaci/kcptun

和锐速之类的软件一样,可以在底层使用 SS,然后再用 KCP 通道加速。

 

v2ray: 自称是 SS 的替代者

项目地址:https://www.v2ray.com/

内置 KCP 协议,需要自己搭建,不依赖额外的组建。

 

KCP 相关的东西就不多介绍了,上面提到的各种产品都体验过。东西都很新,所以其实都还不成熟。

而且最大的问题是,没有好用的客户端,从终端启动也是挺麻烦的。

而且实测也并没有比 SS 快多少,所以就放弃了。

 

Linux 4.9 BBR 拥堵算法介绍

为什么它能为你的 SS 提速?因为之前的 TCP 拥堵算法都是基于丢包的,丢包多了它就认为带宽不够了。

而我们伟大的长城正好利用了这个特性,最终达到了慢却又不是完全不可用的状态。

知乎上有人解答的非常好,一下子就看懂了。

传送门:https://www.zhihu.com/question/53559433

 

第一次看到 Linux 4.9 我就吓尿了,我之前的 VPS 才 2.6 啊…

之前一直在用 bandwagonhost 高性价比机器,每年不到 100,机器速度也非常不多。唯一的缺点就是它是基于 OpenVZ 架构的。

意味着不能自己更换 Linux 内核。也就是说,继续用 bandwagonhost 的话就无法启用 Linux 4.9 了。

 

另外,同样很新为什么我更愿意用这个?因为它只是修改了服务器的内核,相关的工具包括所有的客户端都不需要做任何修改。因此部署起来方便,以后不用了也方便。

 

寻找好机器

既然 bandwagonhost 无法支持,那么第一步就是要找一台好机器了。网上搜寻一番后,发现 vultr 还不错。

  • 每月 $5,可按小时收费
  • 支持 API 调用,可以在不需要的时候关闭机器节约成本
  • 全球各地都有机房,试了一下日本机房速度还不错
  • KVM 架构,可以自己换内核

利用此链接注册,首次充值可多得 $20。

 

升级内核,启用 BBR

简单介绍一下 Ubuntu x64 下操作方式:

    # 下载并安装内核
    cd /tmp/
    http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9/linux-headers-4.9.0-040900_4.9.0-040900.201612111631_all.deb
    http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9/linux-headers-4.9.0-040900-generic_4.9.0-040900.201612111631_amd64.deb
    http://kernel.ubuntu.com/~kernel-ppa/mainline/v4.9/linux-image-4.9.0-040900-generic_4.9.0-040900.201612111631_amd64.deb
    sudo dpkg -i *.deb

    # 重启
    reboot

    # 查看是否安装成功
    uname -r

    # 启用 BBR 拥堵控制算法
    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

整个过程非常简单,其他系统可参考这篇文章:传送门

本作品由 Dozer 创作,采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。