Secure Reliable Transport (SRT) 是用来传输媒体文件的协议,项目见https://github.com/Haivision/srt
里面实现了一个srt-tunnel ,作用是将srt协议用作tcp协议的隧道,文档见于doc/srt-tunnel.md,本人对其进行了一点试用,现将其使用记录下来。
https://github.com/Haivision/srt/blob/39ea5262fa1e9fca928f030bdb599b56f613b5fd/docs/srt-tunnel.md
srt-tunnel 需要客户端和服务器端,架构图大意如下:
<TCP client> --> <Tunnel: TCP->SRT> --> ...
....
(long distance)
....
--> <Tunnel: SRT->TCP> --> <TCP server>
srt-tunnel编译随srt一起生成,默认位于/usr/local/bin/目录下
客户端 : 对外监听10086端口,将数据通过srt协议转发到177.77.77.77的10086端口
/usr/local/bin/srt-tunnel tcp://0.0.0.0:10086 srt://177.77.77.77:10086
服务端命令(即177.77.77.77服务器上)
/usr/local/bin/srt-tunnel srt://0.0.0.0:10086 tcp://127.0.0.1:1080
意思是将srtr接收到的信息转发到本机的1080端口上,1080端口运行socks5服务
连接客户端的10086端口,数据则转发到服务端的1080端口上。
通过实际测试发现:
1.srt-tunnel 程序运行在多个客户端连接时会出现
newConnection: listen backlog=5 EXCEEDED
的错误,此程序是测试程序,功能不全
2.具体的速度非常不理想,SRT作为中间协议进行传输并无优势,甚至连普通TCP都不如。尚不清楚是srt-tunnel 程序的问题还是SRT协议的问题。