姜维博客
欢迎来访~

小内存福音,Kcptun Shadowsocks加速方案

给大家介绍一个能替代 Finalspeed 的项目 — Kcptun。

Kcptun介绍

Kcptun 是一个非常简单和快速的,基于 KCP 协议的 UDP 隧道,它可以将 TCP 流转换为 KCP+UDP 流。而 KCP 是一个快速可靠协议,能以比 TCP 浪费10%-20%的带宽的代价,换取平均延迟降低 30%-40%,且最大延迟降低三倍的传输效果。

Kcptun 是 KCP 协议的一个简单应用,可以用于任意 TCP 网络程序的传输承载,以提高网络流畅度,降低掉线情况。由于 Kcptun 使用 Go 语言编写,内存占用低(经测试,在64M内存服务器上稳定运行),而且适用于所有平台,甚至 Arm 平台。

Kcptun 工作示意图:

KCP 协议:https://github.com/skywind3000/kcp

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

2016.08.31 v20160831发布,新版支持配置文件!

2016.08.29 新的客户端可视化配置工具可选

2016.08.13 发布一键安装脚本 https://blog.kuoruan.com/110.html

2016.08.06 添加Kcptun可视化运行工具和Android使用说明。

2016.06.17 添加客户端开机自启批处理,重写软件启动vbs脚本。

相关项目

以下为 Kcptun 的相关项目,如果有兴趣,可以了解一下。

1.Kcp-server:https://github.com/clangcn/kcp-server

Kcp-server 是在 Kcptun 的基础上,添加了配置文件的支持,并整合了一个socks5代理,可用不用配合其他软件单独使用,而原版 Kcptun 需要配合其他软件使用而不能单独使用。Kcp-server 简化了安装过程,一条命令即可配置完毕。

2.Shadowsocks-Plus:https://github.com/shadowsocks-plus/shadowsocks-plus

基于 Shadowsocks Go 版本,加入了以下特性:

  • 启动后降低权限至 nobody , 增强安全性;
  • 与 kcptun 集成,配合相应客户端可加速传输;
  • 网页控制面板。

部署Kcptun

扩软博客介绍的一键安装脚本已公开发布测试,支持 Kcptun 一键安装、更新、卸载、配置,可以测试使用:Kcptun 服务端一键安装脚本

响应速度:

fast3 > [fast2] > fast > normal > default

有效载荷比:

default > normal > fast > [fast2] > fast3

中间 mode 参数比较均衡,总之就是越快越浪费带宽(根据设置,可能会浪费数倍流量),请自行斟酌。推荐模式 fast2。

可用的参数请使用 ./server_linux_amd64 -h 查看:

更深层次的参数调整需要理解 KCP 协议,并通过“隐藏参数”调整。巭孬嫑乱动

下面是作者给的配置参数样例,适用大部分ADSL接入(非对称上下行)的参数(实验环境电信100M ADSL)。其它带宽请按比例调整,比如 50M ADSL,把 CLIENT 的 -sndwnd -rcvwnd 减掉一半,SERVER 不变。

服务端:   -mtu 1400 -sndwnd 2048 -rcvwnd 2048 -mode fast2
客户端:   -mtu 1400 -sndwnd 256 -rcvwnd 2048 -mode fast2 -dscp 46
 
带宽计算公式:

在不丢包的情况下,有最大-rcvwnd 个数据包在网络上正在向你传输,以平均数据包大小avgsize计算,在任意时刻,有:

network_cap = rcvwnd*avgsize

数据流向你,这个值再除以ping值(rtt),等于最大带宽使用量。

max_bandwidth = network_cap/rtt = rcvwnd*avgsize/rtt

举例,设rcvwnd = 1024, avgsize = 1KB, rtt = 400ms,则:

max_bandwidth = 1024 * 1KB / 400ms = 2.5MB/s ~= 25Mbps

(注:以上计算不包括前向纠错的数据量)

前向纠错是最大带宽量的一个固定比例增加:

max_bandwidth_fec = max_bandwidth*(datashard+parityshard)/datashard

举例,设datashard = 10 , partiyshard = 3,则:

max_bandwidth_fec = max_bandwidth * (10 + 3) /10 = 1.3*max_bandwidth = 1.3 * 25Mbps = 32.5Mbps

 

看不懂?那就别管它,你只要会简易自我调优方法就够了:

  1. 同时在两端逐步增大 client rcvwnd 和 server sndwnd;
  2. 尝试下载,观察如果带宽利用率(服务器+客户端两端都要观察)接近物理带宽则停止,否则跳转到第一步。

基本原则:SERVER 的发送速率不能超过 ADSL 下行带宽,否则只会浪费您的服务器带宽。

配置客户端

首先下载 Kcptun 的客户端文件。

请注意:客户端版本建议和服务端版本一致,有许多朋友没有检查两端造成无法连接!

Windows 64位:

 https://github.com/xtaci/kcptun/releases/download/v20161031/kcptun-windows-amd64-20161031.tar.gz

Mac 64位:

https://github.com/xtaci/kcptun/releases/download/v20161031/kcptun-darwin-amd64-20161031.tar.gz

注意:

1.0830以后的版本不和之前的版本兼容,请确保两端使用相同的版本!

2.下面的软件截图仅供选择软件时参考,请不要照着填写里边的参数!

当前,Kcptun 已经有可视化配置工具了,你可以自行选择使用。如果不想用工具,可以往后翻,手动创建启动文件。

1.Kcptun客户端配置管理工具,来自 @dfdragon

下载地址:https://github.com/dfdragon/kcptun_gclient/releases

2.kcptun-gui-windows,来自 @GangZhuo

下载地址:https://github.com/GangZhuo/kcptun-gui-windows/releases

3.来自“逗比根据地”的 Kcptun tools。由于软件是易语言编写的,可能会被杀毒软件报毒,请各位自行查毒。

软件说明:http://www.dou-bi.com/ss-jc37/

软件下载地址:https://pan.baidu.com/s/1i5HdlVv

4.KcptunGUI,来自“诸神的黄昏”。

源码地址:https://git.oschina.net/ragnaroks/KcptunGUI

软件下载:https://git.oschina.net/ragnaroks/KcptunGUI/releases

Mac 系统可以下载使用:https://github.com/dfdragon/kcptun_xclient/releases

注意:客户端和服务端参数必须一致的有:

  • datashard
  • parityshard
  • nocomp
  • key
  • crypt
点击查看手动创建启动文件的方法

上面的配置过程中出现了多个端口,我在这里画个图,方便各位理解各端口的作用(点击看大图):

小内存福音,Kcptun Shadowsocks加速方案 - 第7张  | 扩软博客

Shadowsocks 客户端配置

在客户端中新建服务器:

  • 服务器 IP 填写本机:127.0.0.1
  • 服务器端口填写:12948

正确填写你的 Shadowsocks 密码,加密方式,协议和混淆方式。

切换到该服务器上,测试是否正确运行。

速度实测

如何看Kcptun 是否有加速,别人的测试:

服务器是512M 内存,以此测试加速效果。

  • 按结论看,Kcptun 的加速效果略逊于 Finalspeed,估计需要细调配置。
  • 刚运行 Finalspeed 时,内存占用就达到了 9.1% 也就是接近 47M;而此时 Kcptun 占用 0.4%,也就是 2M左右。
  • YouTube 1440p 满跑情况下,FInalspeed 最高内存占用 15.4%,接近 79M;而此时 Kcptun 占用 3% 左右,即 15.5M。
  • 速度方面,Finalspeed 最大速度达到了10000 Kbps +,Kcptun 6000+ Kbps。

以上结论为别人测试所得,仅作为参考;实际情况请自行测试,如有纰漏,欢迎指出。

多人同时使用

如果想多人使用同一个服务器并同时使用 Kcptun 加速,需要启动多个 Kcptun 进程:

1.你使用的是本站的一键安装脚本,请使用命令: ./kcptun.sh add 来添加一个新实例,新 Kcptun 实例使用的端口需要与其他实例不一致。

2.你是自己创建的启动脚本:

为了启动多个 Kcptun 服务端,你可以将 start.sh 拷贝一份,然后修改其中的 Kcptun 运行端口。

Android上使用

请看这篇文章:Shadowsocks-Android客户端上的KCP配置说明

路由器上使用

如果需要在路由器上使用 Kcptun,首先你得有个智能路由器,然后能进入shell。

编译好的客户端文件在这里下载:

https://github.com/bettermanbao/openwrt-kcptun/releases

小米路由器、极路由等一大批国产智能路由器都是 MT7620 的芯片,请下载 ramips 版本。

 

-The End-

 
参考扩软博客  小内存福音,Kcptun Shadowsocks加速方案
 
可附来源转载:姜维博客 » 小内存福音,Kcptun Shadowsocks加速方案

评论 1

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    I have noticed you don’t monetize your website, don’t waste your traffic, you
    can earn extra cash every month because you’ve got high quality
    content. If you want to know how to make extra bucks, search for: best adsense alternative Wrastain’s tools

    86Danelle12个月前 (09-04)回复

待添加阿里云优惠