为了解决某些长距离通信的问题,我们在 UDP 上开发了这个用户态传输协议,经过了 alpha 阶段的测试,现在公开发布,邀请大家一起来玩,并请大家积极反馈结果,有能力的同学诚邀你们一起分析和完善。
Small-scale UDP Fast Transmission Protocol, SUFT ?
The SUFT is a application layer transmission protocol based on UDP and implemented in Golang. It provides some of the same service features: stream-oriented like TCP, low latency and esures reliable, ordered transport of stream with plain congestion control.
The protocol is designed for maximizing throughput and minimizing effect of losing packets on throughput, and it oriented in small and medium-scale communication scene.
https://github.com/spance/suft
这是刚做完的新项目,可能还有很多问题,希望有能力的同学能参与进来深入了解和持续改进。
SUFT 已经完整实现了 golang: net.Conn 接口,便于上层应用使用.
喜欢抓包分析的,已经写好了 wireshark 插件用于友好的剖析 SUFT.
对于这样的传输协议,我们着重观察和强调这几个方面
Transmitting model has predictable performance
遵循 吞吐=MSS*SWnd/Latency
Fast retransmission could better deal with lossy link
抗丢包能力?
“丢”就是被丢了,抗只是个念想,能做的就是尽可能早的发现丢然后重传。
通过后面的测试了解
Minimum retransmission without wasting traffic
是否浪费带宽?
凡实际重传率过多的超过了理论重传率即为 BAD
通过后面的测试了解
No resource consumption while the connection is idle
IDLE 时 cpu 消耗为 0 ,因为这是传输事件驱动并不是定时死循环。
负载传输时, 100Mbps 吞吐下, cpu 消耗 5%-10%,尚有优化空间。
目前仅是协议验证和优化期,具体可以怎么应用大家可以开动脑筋。。。
根目录 main 包有一个类似 netcat(nc)的传输工具,用来互传文件(甚至也可以是一个 Chat Room ),具体用法请查看 README.
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.