数据传输工具 kcptun

MIT
Google Go
跨平台
2016-04-21
xtaci

GoDoc Build Status Go Report Card Coverage Statusd 

TCP流转换为KCP+UDP流,⚡官方下载地址⚡工作示意图:

kcptun是kcp协议的一个简单应用,可以用于任意tcp网络程序的传输承载,以提高在丢包环境下的网络流畅度。
采用极简设计,客户端+服务器源码总共400行,方便用户自己扩展

快速设定 🍭

服务器: ./server_linux_amd64 -t "127.0.0.1:1080" -l ":554" -mode fast2 // 转发到本地1080端口 客户端: ./client_darwin_amd64 -r "IP地址:554" -l ":1080" -mode fast2 // 监听本地1080端口

适用范围限定 🍭

  1. 实时网络游戏的数据传输
  2. 跨运营商的流量传输
  3. 其他高丢包通信链路的TCP承载

推荐参数 🍭

适用大部分ADSL接入(非对称上下行)的参数(实验环境电信100M ADSL) SERVER: -mtu 1400 -sndwnd 2048 -rcvwnd 2048 -mode fast2 CLIENT: -mtu 1400 -sndwnd 256 -rcvwnd 2048 -mode fast2 -dscp 46 其它带宽请按比例降低窗口,比如50M ADSL,把CLIENT的 -sndwnd -rcvwnd减掉一半,SERVER不变巭孬嫑乱动

DSCP 🍭

DSCP差分服务代码点(Differentiated Services Code Point),IETF于1998年12月发布了Diff-Serv(Differentiated Service)的QoS分类标准。它在每个数据包IP头部的服务类别TOS标识字节中,利用已使用的6比特和未使用的2比特,通过编码值来区分优先级。
常用DSCP值可以参考Wikipedia DSCP,至于有没有用,完全取决于数据包经过的设备。

内置模式 🍭

响应速度:
fast3 > [fast2] > fast > normal > default
有效载荷比:
default > normal > fast > [fast2] > fast3
中间mode参数比较均衡,总之就是越快越浪费带宽,推荐模式 fast2
更高级的 手动档 需要理解KCP协议,并通过 隐藏参数 调整,例如:-mode manual -nodelay 1 -resend 2 -nc 1 -interval 20

前向纠错 🍭

前向纠错采用Reed Solomon纠删码, 它的基本原理如下: 给定n个数据块d1, d2,…, dn,n和一个正整数m, RS根据n个数据块生成m个校验块, c1, c2,…, cm。 对于任意的n和m, 从n个原始数据块和m 个校验块中任取n块就能解码出原始数据, 即RS最多容忍m个数据块或者校验块同时丢失。

通过-datashard 10 -parityshard 3可以调整Reed Solomon参数。

Snappy数据流压缩 🍭

Snappy is a compression/decompression library. It does not aim for maximum compression, or compatibility with any other compression library; instead, it aims for very high speeds and reasonable compression. For instance, compared to the fastest mode of zlib, Snappy is an order of magnitude faster for most inputs, but the resulting compressed files are anywhere from 20% to 100% bigger.

Reference: http://google.github.io/snappy/

SNMP 🍭

go // Snmp defines network statistics indicator type Snmp struct { BytesSent uint64 // payload bytes sent BytesReceived uint64 MaxConn uint64 ActiveOpens uint64 PassiveOpens uint64 CurrEstab uint64 InErrs uint64 InCsumErrors uint64 // checksum errors InSegs uint64 OutSegs uint64 OutBytes uint64 // udp bytes sent RetransSegs uint64 FastRetransSegs uint64 EarlyRetransSegs uint64 LostSegs uint64 RepeatSegs uint64 FECRecovered uint64 FECErrs uint64 FECSegs uint64 // fec segments received }

使用kill -SIGUSR1 pid可以在控制台打印出SNMP信息,通常用于精细调整当前链路的有效载荷比
观察RetransSegs,FastRetransSegs,LostSegs,OutSegs这几者的数值比例,用于参考调整-mode manual,fec的参数。

性能对比 🍭

```

root@vultr:~# iperf -s

Server listening on TCP port 5001

TCP window size: 4.00 MByte (default)

[ 4] local 172.7.7.1 port 5001 connected with 172.7.7.2 port 55453 [ ID] Interval Transfer Bandwidth [ 4] 0.0-18.0 sec 5.50 MBytes 2.56 Mbits/sec <-- connection via kcptun [ 5] local 45.32.xxx.xxx port 5001 connected with 218.88.xxx.xxx port 17220 [ 5] 0.0-17.9 sec 2.12 MBytes 997 Kbits/sec <-- direct connnection via tcp ```

免责申明

用户以各种方式使用本软件(包括但不限于修改使用、直接使用、通过第三方使用)的过程中,不得以任何方式利用本软件直接或间接从事违反中国法律、以及社会公德的行为。软件的使用者需对自身行为负责,因使用软件引发的一切纠纷,由使用者承担全部法律及连带责任。作者不承担任何法律及连带责任。

对免责声明的解释、修改及更新权均属于作者本人所有。

加载中

评论(1)

Kuangcp
Kuangcp
我名字拼音缩写是kcp诶...这个可以有

Kcptun v20171021 发布,基于 KCP 的 UDP 隧道

Kcptun 是一个非常简单和快速的,基于 KCP 协议的 UDP 隧道,可以将 TCP 流转换为 KCP+UDP 流,可以用于任意 TCP 网络程序的传输承载,以提高在丢包环境下的网络流畅度。 KCP 是一个快速可靠...

2017/10/24 07:50

Kcptun v20170301 发布,基于 KCP 的 UDP 隧道

Kcptun 是一个非常简单和快速的,基于 KCP 协议的 UDP 隧道,可以将 TCP 流转换为 KCP+UDP 流,可以用于任意 TCP 网络程序的传输承载,以提高在丢包环境下的网络流畅度。 KCP 是一个快速可靠...

2017/03/02 07:28

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

64位的kcptun与32位的kcptun

64位的kcptun mkdir kcptun cd kcptun wget https://github.com/xtaci/kcptun/releases/download/v20160906/kcptun-linux-amd64-20160906.tar.gz tar -zxf kcptun-linux-amd64-20160906.tar....

2016/09/16 22:17
135
0
用Kcptun给Shadowsocks加速

工作原理: 安装服务端: 1.安装Kcptun wget https://raw.githubusercontent.com/kuoruan/kcptun_installer/master/kcptun.sh chmod +x ./kcptun.sh ./kcptun.sh (备注:百度云下载) 1.设置...

2018/05/23 13:44
4.3K
0
[喵咪开源软件推荐(6)]TCP链路加速技术KcpTun

[喵咪开源软件推荐(6)]TCP链路加速技术KcpTun 今天有给大家带来新的东西KcpTun,KcpTun是利用Kcp技术对Tcp链路传输进行加速,大家熟知的网络协议一般是UDP和TCP,UDP传输快但是没有状态消息不可...

2017/11/09 16:10
614
0
shadowsocks+kcptun代理设置

shadowsocks+kcptun代理设置 服务器配置 首先得有一台国外的vps,可以购买搬瓦工的,价格1年100多 Mass VPS hosting on Enterprise equipment - BandwagonHost VPS 安装环境:ubuntu 16.04 ...

2018/08/17 13:48
275
0
kcptun 与ss 配置

系统环境: ( 服务器vps: centos6.5 64 位, 客户端: centos7 64位) ss 配置: 服务器:/etc/shadowsocks.json : { "server":" xx.xx.xx.xx"(服务器ip)), "server_port":443, "local_po...

2016/11/04 11:29
380
0
VPS教程(持续更新) -- 2018-04-28

»»»> VPS教程(持续更新)««««< @@本群Telegram官方电报群@@: https://goo.gl/aHLqmR 搬瓦工VPS官方网站: https://www.bandwagonhost.com/ 搬瓦工VPS中文网站: https://www.bandwago...

2018/04/28 20:12
368
0
[工具资源] 《HelloGitHub》第 08 期

兴趣是最好的老师,《HelloGitHub》就是帮你找到兴趣!

2016/11/30 09:21
21
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部