提醒:本文最后更新于 2609 天前,文中所描述的信息可能已发生改变,请仔细核实。
kcptun是一个基于KCP协议的UDP隧道,它可以非常简单和快速的将TCP流转换为KCP+UDP流。而KCP是一个快速可靠协议,能以比TCP浪费10%-20%的带宽的代价,换取平均延迟降低30%-40%,且最大延迟降低三倍的传输效果。更多介绍见Github。
本文操作基础是建立在你之前已经配置好Shadowsocks Server和Shadowsocks-Android的情况下,使用kcptun加速。
话不多说,首先在服务器上配置kcptun Server。本文以CentOS 6 x64为例,简单说下如何配置。
在官方的Github上,下载对应版本的应用程序,解压后运行即可。
wget -c https://github.com/xtaci/kcptun/releases/download/v20161207/kcptun-linux-amd64-20161207.tar.gz
tar zxvf kcptun-linux-amd64-20161207.tar.gz -C /usr/local/bin/
最后运行下面命令,启动kcptun即可。
server_linux_amd64 -t "1.1.1.1:111" -l ":11111" -crypt none -key none -mtu 1400 -sndwnd 2048 -rcvwnd 2048 -mode fast2 >/dev/null 2>&1 &
其中1.1.1.1:111
是你的Shadowsocks服务端IP:端口;而:11111
是KCP端口,记得带冒号。
推荐使用fast2 mode。其中datashard、parityshard、nocomp、key、crypt这几个参数配置的时候需要保证客户端和服务端一致。
如果你需要stdout,那么去掉>/dev/null 2>&1 &
启动kcptun。
在Shadowsocks安卓客户端上,维持原有配置的基础上,启用KCP协议,填好刚才在服务器上配置好的KCP端口:11111
。KCP参数跟服务器一致,填写:
--crypt none --mode fast2
最后,连接即可。现在试试,是不是快了很多?
如果你的Shadowsocks安卓客户端没有KCP选项,那肯定是版本过低了,请更新它。更新地址可见Shadowsocks-Android的Github。
据我测试,kcptun很浪费手机流量。。。一看即时速度提升很多,实际有用数据却不多。。。不过实际上下行确实有提升,非常明显就是你刷facebook、ins等这些图片或视频多的,加载很快,或许应该说kcptun对长连接有特效。
比较坑的是如果服务器参数设置有问题,可能会浪费十几倍的流量,而加速效果也并不会提升多少。所以所有参数的调整需要慎重及多次测试。
按照本文的参数并不会浪费太多的流量(大概是两倍多快三倍的样子),但不建议流量小的用户随意使用。土豪随意。
下面看看测试数据,测试机为美国VPS:
在国内100Mbps电信光纤下直连速度平均5.7Mbps;通过Kcptun,平均速度为8.9Mbps。
电信3G,平均直连速度,2Mbps,通过kcptun,3Mbps。
移动4G,平均直连速度,6.3Mbps,通过kcptun,9.8Mbps。
联通H+,平均直连速度,1.6Mbps,通过kcptun,7.6Mbps。
联通4G,平均直连速度,7.4Mbps,通过kcptun,12.8Mbps。
如果不用kcptun,用阿里云香港中转呢?下面也把数据给出来:
在国内100Mbps电信光纤下通过香港阿里云中转,平均速度为20.3Mbps(满速)。
电信3G,通过香港阿里云中转,平均2.9Mbps。
移动4G,通过香港阿里云中转,平均8.1Mbps。
联通H+,通过香港阿里云中转,平均8.8Mbps。
联通4G,通过香港阿里云中转,平均18.1Mbps。
虽然通过香港阿里云中转或许更快更稳定,但这个费用也不小就是了,使用kcptun基本不用再付费,一般流量都是够的。
还有个重要的点就是当服务器或客户端本身的带宽较低,可以适当调低sndwnd/rcvwnd
的值,还可以给客户端尝试通过-dscp 46
参数降低丢包率。
注意:无论是调整sndwnd/rcvwnd
参数,还是设置dscp
等其他参数不一定会更好,需要尝试。
常用DSCP值可以参考Wikipedia,至于有没有用,完全取决于数据包经过的设备。其他参数通过kcptun的Github了解更多。
还有一点就是TCP的BBR协议,对SS的提升并不大,所以还是要借助kcptun之类的应用来提速。
转载请注明转自:kn007的个人博客的《为Shadowsocks-Android启用kcptun加速》