kcptun基于KCP协议的UDP隧道 - 将TCP流转换为KCP+UDP流播放IPTV
适用于低延迟高速率要求的应用,据说传输效率可以加倍X2+
有什么用
通过UDP隧道,加速端到端的远程传输(点对点p2p传输,封装为UDP的KCP数据)
Kcptun 是一个简单和快速的,基于 KCP 协议的 UDP 隧道,它可以将 TCP 流转换为 KCP+UDP 流。
怎么用
部署和配置简单
讲一种例子:
- 远程/远距离客户端的某一个应用,需要访问服务的网段内的某个特定TCP服务(比如游戏或IPTV)。
- 通过启动远程客户端的路由器#1上的kcptun client(监听本地端口,然后指定服务器IP和端口,加密信息),这个kcptun客户端监听的端口就是本地应用要连接使用的端口。
- 去连接服务器(从路由器#2的端口转发)的特定kcp server(监听服务器端口,然后指定发往本地特定服务[TCP服务的IP地址和端口])
- 这样加密并封装过的整条链路就建立在UDP上了,据说传输效率可以加倍X2+
以下是两个使用docker应用kcptun的实例
实际用例1:
https://hub.docker.com/r/lowid/kcptun
如果按要封装的服务是服务器上的socks代理:
server side (kcp+socks) compose file
1 | kcp-server: |
server side sockd.conf
1 | debug: 0 |
client side compose file
1 | client: |
实际用例2:
1 | $ docker pull chenhw2/kcptun |
相关内容
实现方法
放弃docker的方式。
KCP Server:
1 | ./server_linux_amd64 -t "192.168.6.243:8012" -l ":29900" -mode fast3 -nocomp -dscp 46 --key op.carlzeng.com --crypt salsa20 |
说明:这个29900端口的服务,由于是配置在特定的服务器上(不是在公网IP的主路由器上),所以需要在公网IP的主路由上做一个端口映射(实现:把外网的29900 udp数据入世地转发到这台特定的服务器相同端口上)
1 | 配置在K2P的Padavan界面的 |
一张图看透整个流程
使用了特殊的测试方式,用frp穿透到另外一处播放;
实测体验:高清很顺畅,4K还是有卡顿的;
TODO:等待下一步在客户端的局域网播放测试
这样KCP传输以后,按报告上说是传输延迟减半,速率加倍*2+;有待于进一步实践考验
20240121 放弃这个方案
kcptun部署案例:
https://c.carlzeng.com:3/iptvKcptun-123-1-8388-V20240121.m3u
旧的DIYP配置:
https://c.carlzeng.com:3/tv
Perfect Player
https://c.carlzeng.com:3/kcpzl
配置yourls对应了https://c.carlzeng.com:3/iptvKcptun-123-1-8388-V20240121.m3u
2:16pm 感觉zl移动客户端的配置文件没问题,比如
http://192.168.123.1:8388/rtp/239.3.1.129:8008
想要检查服务端NAS中的server_linux_amd64执行情况,重启
2:28pm 启动NAS中的KCPTUN server,4K依旧卡。
2:33pm 4K播放,卡!kcptun方案 —— 淘汰
对比Perfect Player的 原始配置:
https://c.carlzeng.com:3/tvm3u
2:39pm 体验这个直接的互联网上http udpxy:速度和kcptun差不多。
4K测试台,反而不怎么卡;直观体验甚至可以说比kcptun以后的播放4K更流畅。
结论:保留原先这个Perfect Player的配置(直接互联网上访问udprxy)https://c.carlzeng.com:3/tvm3u
2:48pm
修改DIYP的配置为:
https://c.carlzeng.com:3/tvm
这个m移动的配置里面,有对所有北京频道的优化,添加首个为hby的udpxy地址。
方案三:直接本地组播(移动宽带)播放
思考
如果单单是用于播放IPTV,加速远程m3u8的播放内容的话;这个方案还要往前在走一步,
- 在手机端也下载kcptun-linux-arm64-20231012.tar.gz 在手机端运行./client_linux_arm64 配合上参数(见上方已实例测试过)就可以加速播放远程的IPTV或直播
- 在android盒子端下载kcptun-linux-arm64-20231012.tar.gz,并运行./client_linux_arm64 配合上参数(见上方已实例测试过)就可以加速播放远程的IPTV或直播或游戏…
灵感来源
教程、项目地址: https://github.com/xtaci/kcptun/