Server-网络加速Kcptun

KCPTun是一个使用UDP来实现网络加速传输速度的开源软件。

 

KCPTun网络结构

 

 

Kcptun结构图

 

TCP协议是可靠的数据流传输协议。简单来说,如果数据传输过程中发生了丢包,TCP协议会重新发送相应数据包,如果数据包到达顺序与发送顺序不一致,TCP协议会进行数据包重组,即:TCP协议可以通过控制帧来保证数据流的传输顺序和正确性。但TCP协议的控制机制比较复杂,在线路质量差导致丢包率极高时,传输效率就会指数级下降。

UDP协议是数据报协议,由于比TCP简单得多,传输效率和延迟率都要优于TCP协议,但UDP协议不是可靠的传输协议,不能保证数据正确与可达,所以只能应用在一些对单个数据包的正确与可达不是要求很严格(比如:IM)、但对数据传输延迟率有很高要求(比如:视频流或者多人在线游戏)的场合。

有没有一种传输协议既可信又能保证传输效率呢?这就是R-UDP:可信UDP协议,一种在UDP协议基础上增加了部分TCP的控制逻辑来保证数据正确完整的协议。目前已经有很多可用库(rUDP、enet等等),虽然没有成为像TCP/UDP这样的标准协议,但已经广泛运用到了大型多人在线游戏等领域。KCPTun就是利用这种机制实现UDP可靠传输(KCP over UDP),来大幅加速网络传输效率的。

 

网络测试

丢包率/网络延时测试:

ping -n 100 www.baidu.com,windows –n/linux -c

 

网络丢包率对传输速率的影响

 

总结:

在丢包率比较大的情况下加速才比较明显,网络丢包率很小或者不丢包时反而会降低传输效率。

 

Kcptun网络加速

Kcptun

集成加速***

Windows&Linux64位版本

https://github.com/xtaci/kcptun/releases/download/v20180926/kcptun-linux-amd64-20180926.tar.gz

https://github.com/xtaci/kcptun/releases/download/v20180926/kcptun-windows-amd64-20180926.tar.gz

https://github.com/xtaci/kcptun/releases

解压 tar -zxvf xxxx.tar.gz

WindowsClient客户端命令

client_windows_amd64 -r "172.245.210.123:61250" -l ":61240" -mode fast2

LinuxServer服务端命令

/home/soft/server_linux_amd64 -t "127.0.0.1:61240" -l ":61250" -mode fast2

速度

fast3 > fast2 > fast > normal > default

 

参数调试

// FEC关闭

-datashard 0 -parityshard 0

// 调节发送/接受窗口

-sndwnd 2048 -rcvwnd 512

// 高有效载荷

-mtu 1300 -sndwnd 2048 -rcvwnd 512 -datashard 0 -parityshard 0 -mode normal -nodelay 1 -resend 0 -nc 1 -interval 500

参数issue:

        https://github.com/xtaci/kcptun/issues/251  参数组合分享

        https://github.com/xtaci/kcptun/issues/342  增加SNMP信息

        https://github.com/xtaci/kcptun/issues/329  有效载荷

参数解析

*      --nocomp    true/false  // 是否压缩

 *      --localaddr value, -l value      // 本地地址

 *      --remoteaddr value, -r value     // kcp server address

 *      // 加密算法

 * --crypt value   // aes, aes-128, aes-192, salsa20, blowfish, twofish, cast5, 3des, tea, xtea, xor, none (default: "aes")

 *          -crypt none // 不加密

 *      --key value     // 加密密码?

 *      --mode value    // 模式 profiles: fast3, fast2, fast, normal (default: "fast")

 *      --conn value    // 设置服务器的UDP连接数(默认值:1)

 * --autoexpire value // 设置单个UDP连接的自动过期时间(以秒为单位),禁用0(默认值:0)

 *      --mtu value     // 设置UDP数据包的最大传输单元(默认值:1350)

 *      --sndwnd value  // 设置发送窗口大小(数据包数量)(默认值:128)

 *      --rcvwnd value  // 设置接收窗口大小(数据包数量)(默认值:512)

 *      --datashard value, --ds value    // 设置reed-solomon删除编码 - 数据库 (default: 10)

 * --parityshard value, --ps value  // 设置reed-solomon擦除编码 - 奇偶校验分片(默认值:3)

 *          // fec占比parityshard/datashard parityshard=0关闭FEC

 *      --dscp value    // set DSCP(6bit) (default: 0)

 *          常用值:https://en.wikipedia.org/wiki/Differentiated_services#Commonly_used_DSCP_values

 *      --snmplog value     // 收集snmp文件,了解golang的时间格式,如:./snmp-20060102.log

 *      --snmpperiod value  // snmp collect period, in seconds (default: 60)

 *      --log value         // specify a log file to output, default goes to stderr

 *      -c value            // config from json file, which will override the command from shell

 *      --help, -h          // show help

 *      --version, -v       // print the version

 *      手动控制

 *      -mode manual -nodelay 1 -interval 20 -resend 2 -nc 1

 *          nodelay:是否启用节点模式,未启用0; 1启用。

 *          interval :协议内部工作间隔,以毫秒为单位,例如10毫秒或20毫秒。

 *              interval 的作用是控制 flush 的时间间隔,主要控制 cpu 的耗用

 *              interval设的大些可以增加有效数据的载荷

 *          resend :快重传模式,0表示默认关闭,2可以设置(2个ACK跨度将导致直接重传)

 *          nc :是否关闭流量控制,0代表默认“不关闭”,1代表“关闭”。

 *      总结:

 *          场景:丢包率小/大延时网络场景

 *          FEC/MTU/发送-接收窗口参数对带宽影响大

 *          crypt/nocomp加密压缩影响性能及安全性

 *          手动控制参数影响小

 *      REF:

 *      https://github.com/xtaci/kcptun

 *     https://github.com/skywind3000/kcp/blob/master/README.en.md#protocol-configuration

官方资源

https://github.com/xtaci/kcptun

https://github.com/skywind3000/kcp

 

 

 

 

Ref:

     使用KCPTun加速***代理

转载于:https://www.cnblogs.com/zhen-android/p/9729803.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值