今天是2016年9月3日,同时也是kcptun这款将TCP转UDP+KCP协议的插件的新功能上线日。
上了什么新玩意让我那么兴奋?它的名字叫SMUX是一款仿Yamux的工具。
Latest Kcptun Release Page

SMUX Page

背景介绍

本来kcptun只是跟FinalSpeed这样一类工具类似的东西--作为udp,然后以n倍数据投放的方式降低丢包率,提高速度。但是这样速度确实快,却仍然有可能因为流量丢得太急促,要么不丢,一丢丢一堆数据过来,这样在接收不到数据的时候就会在客户端这边呈现卡的状态。也是因为单线程,数据流出就不稳定了。而且可能同时在刷网页和刷视频,那么就不稳定了,因为我把网页的内容传了一部分过来,然后又要接收视频的。那么就等于暂停了我打开网页的过程来收一部分视频的内容,然后视频的内容也被阻碍了,相互阻碍之下明明非常快的kcptun也产生了缓慢的感觉。

原理介绍

原理图
原理就是跟上图所示那样,SMUX把数据统一做了一层名为MUX,过程介绍如下:
-----服务端-----

  1. 排序,让数据整齐排列好

  2. 打包,然后数据流和协议流打包

  3. 分段,等于说把一个流以并行方式发放
    -----客户端-----

  4. 并行接收

  5. 组装数据

  6. 拆分

ps:这样经过这一过程实现一个负载均衡的现象,可以使得shadowsocks传来的流量更加稳定,再加上ss和kcptun的两层加密过程,整个数据的的内容已经面目全非,也可以减少丢包现象(躲过墙的筛选)。

以下是我用了以后的截图,亲测youtube在3M/s到7M/s的范围,可能参数优化还可以彪上去。