kn007的个人博客
♥ You are here: Home > 软件与网络 > VPS > 为Shadowsocks-Android启用kcptun加速

为Shadowsocks-Android启用kcptun加速

by | 22 Comments

提醒:本文最后更新于 2360 天前,文中所描述的信息可能已发生改变,请仔细核实。


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加速

donate
有所帮助?

Comments

22 Comments立即评论
  1. LV2回复

    用的阿里云新加坡,不用锐速、bbr都能跑满 :smile:

    1. MOD回复

      @ivmm: :mrgreen: 土豪,你好

  2. Shadowsocks 手机端全局流量吗?
    IOS版本的不越狱不能全局,安卓的应该可以吧

    1. MOD回复

      @World: 都可以啊。
      全局,分应用,都可以。

  3. 技术流的文章看的眼晕,我也就是常规用用SS,登一下Gmail和YouTube,速度不至于很坑爹,能有个3000kbps我就知足了。

    1. MOD回复

      @啄木游弋: :grin: 好吧,哈哈

    2. 回复

      @啄木游弋: 不跑Kcptun,存SS怎么会有3000kbs/s呢?不跑Kcptun,我通常不超过500k

    3. MOD回复

      @yangcin: 你俩的单位都挺迷的。。
      Kbps和KBps完全不同,游弋说的应该是Kbps,你说的是KBps吧? :grin:

      如果你说的也是Kbps,那你那SS也太残了

  4. 分享的不错,谢谢

    1. MOD回复

      @凯哥自媒体: 不客气

  5. 这时候需要来一发阿里云香港秀一波速度啦 :razz:

    1. MOD回复

      @科学上网就选我: 你可真是无处不在啊 :mrgreen:

  6. 回复

    很有用,谢谢

    1. MOD回复

      @十字镐: 不客气。

  7. 回复

    提前祝你圣诞快乐

    1. MOD回复

      @新世界: 谢谢,同乐

  8. 回复

    感觉好麻烦啊

    1. MOD回复

      @JianFu: :!: 这个已经算是很白话,很简单了

  9. 感觉用bbr好点,kcptun参数太难调了

    1. MOD回复

      @黑暗游侠: 主要是bbr提升不大。。

  10. 百度kcptun过来的 :smile:

    1. MOD回复

      @小怪物: 哈哈

icon_wink.gificon_neutral.gificon_mad.gificon_twisted.gificon_smile.gificon_eek.gificon_sad.gificon_rolleyes.gificon_razz.gificon_redface.gificon_surprised.gificon_mrgreen.gificon_lol.gificon_idea.gificon_biggrin.gificon_evil.gificon_cry.gificon_cool.gificon_arrow.gificon_confused.gificon_question.gificon_exclaim.gif