1.Abstract

之前的BBR加速已经解决的绝大部分的翻墙使用了,这里介绍一个大杀器--kcptun

setting:macos

2.Background

我是2016年底左右使用Kcptun的,有点记不清了。源起与我第一台瓦工的机器----openvz架构的小鸡。当时的速度慢出翔来了,youtube经常144p。当时BBR还没出来,后来查阅资料发现了kcptun神器。使用kcptun简直加速了几百倍,从1000k加速到50000k左右,简直飞起。 这是kcptun的有点,但是它也有缺点,就是必须要双边加速。这一点和BBR不同,BBR算法采用的是多倍发包,丢包了没关系,我几倍几倍的发给你,总能接收到吧。KCPTUN用的是TCP转UDP的方式,UDP可以断断续续发包,没必要像TCP那样必须一直有回应,一旦回应断了,就必须从头再来。UDP发完就不用管了,丢了再发,并且KCPTUN内含了前后纠错,这样一来确定前后纠错的区域范围,设置窗口大小,可以大比率的将数据传输,再也不用浪费在握手重传上面。 我的VPS在美国洛杉矶,一趟浪费就在150ms,一次握手至少300ms,这样一弄,丢包率上升一点点,网速就惨不忍睹。使用kcptun再进行参数调整,可以极大的优化网速和ping值。kcptun的基本原理:

3.Tutorial

我们从第一步介绍起,先是登录vps,需要安装wget yum install wget 然后打开kcptun的github项目下载地址 https://github.com/xtaci/kcptun/releases 这里有好多架构的系统的客户端 我的vps是64位amd架构的,所以我就copy link address 登录vps以后,使用wget下载 wget https://github.com/xtaci/kcptun/releases/download/v20190611/kcptun-linux-amd64-20190611.tar.gz //这里只是我写这篇文章时的最新版,更新了地址会不同 然后对下载好的文件进行解压 tar -zvxf kcptun-linux-amd64-20190611.tar.gz 会产生两个文件,一个叫server_linux_amd64,另一个叫client_linux_amd64。这是双边一套软件,这里我么你只需要使用server端的文件就可以了。 我们新建一个配置文件 vi kcptun.json 按照如下配置:

{
  "listen": ":26666",
  "target": "127.0.0.1:16666",
  "key": "66666666",
  "crypt": "none",
  "mode": "fast3",
  "mtu": 1440,
  "sndwnd": 2048,
  "rcvwnd": 2048,
  "datashard": 10,
  "parityshard": 3,
  "dscp": 0,
  "nocomp": true,
  "quiet": false,
  "pprof": false
}

然后保存退出 这里我详细介绍下参数: listen:服务器对外监听的端口 target:shadowsocks的本地地址和端口,既然在本地就直接127.0.0.1就好了,然后端口是shadowsocks的端口。 key:密码 mode:mode有几个级别,fast3>fast2>fast>normal>default。这里fast3响应最快,其次的fast2,default没有任何加速。这个响应速度的代价是由多倍发包换来的,也就是说响应速度越快,发包倍数越高,也就是有效载荷比就会降低,因为发包重复了许多 mtu:最高1500,默认是1350,这个是计算机网络的知识,我有点忘了,大家可以详细查一下报文头尾的字节数减掉就好了。我这个1440是我试出来的,没啥根据。这个数值越高代表一个数据分片的有效数据就越高,网速当然就越高。但是反过来说,如果只是单纯增加mtu,那么也意味着丢一个包损失的也越多。 sndwnd:服务器的上传速度,也就是客户端的rcvwnd接受带宽,值越大客户端的下载速度越大,当然不能超过客观带宽。这里无从考证,测试了2048比较对应100M带宽。 rcvwnd:服务器的接收带宽,也就是客户端的上传带宽。 其他的数值我们这里不用深究,我们这里只需要提高速度,对于极限的理论速度还是不要浪费太多时间。 然后输入 *nohup /root/kcptun/server_linux_amd64 -c /root/kcptun/server-config.json &*后台运行

cd /etc/rc.d
chmod +x rc.local
vim rc.local

在最底下添加一行 nohup /root/kcptun/server_linux_amd64 -c /root/kcptun/server-config.json & 然后重启也不用动了 ps:kcptun有时候吃内存还是听多了,有时候会Kill了kcptun的进程,这里要么就写一个kcptun的守护程序,要么就直接重启------小建议

4、Conclusion

速度上了好几十倍吧!愉快的玩耍吧!