最近在评论区收到不少朋友反应[RaySync FTP]文件传输的效果挺好,谢谢大家的鼓励。也有部分熟悉技术的同学希望介绍下原理,有部分同学咨询RaySync传输协议会不会是通过超量发包来达到快速传输,担心网络流量利用率低,比如[net-speeder]的双倍发包来抵抗网络丢包。
这篇文章从原理和实测数据两方面,给大家介绍一下RaySync 传输协议的有效带宽利用率。
RaySync 传输协议原理简介:
1、RaySync 协议是在UDP协议之上,增加了RaySync的报文封装,完成了拥塞控制、报文确认、丢包重传等一系列完整的功能,可对比的实现包括[UDT]、[QUIC]、[KCP]。
2、RaySync传输协议重传机制参考了TCP的快速重传,但是做了全新的报文和确认机制设计,RaySync的重传机制可以确保在网络中丢失的报文在1个RTT时间就立刻得到重传,同时可以把由于网络乱序而触发的误重传率控制在1%以内,保障了网络带宽的充分有效利用。
3、RaySync 传输协议从电信行业IPSIGTRAN规范的[SCTP]传输协议也借鉴了一些功能设计,比如单个连接(connection)内部多流(stream)的特性,使RaySync 传输协议在两个端点之间多流传输时,无需建立多条连接,实时性得到了优化。
RaySync 数据传输带宽有效性利用对比:
RaySync 传输协议测试方法和数据收集方法简介
- 使用RaySync FTP客户端,从RaySync FTP 服务器下载文件
- RaySync FTP 服务器为Linux系统,RaySync FTP客户端为Windows系统
- 使用Linux tc工具在服务器端控制丢包率和时延大小
- 使用tcpdump在服务器端抓取网络实际发送流量
- 测试时关闭RaySync FTP内置的压缩功能,保证传输文件所有数据未经压缩。
带宽(Mbps) | 丢包率(%) | 时延(毫秒) | 测试文件大小(MB) | 实际网络发送流量(MB) | 传输完成时间(秒) | 网络带宽利用率 | 网络带宽有效利用率 |
---|---|---|---|---|---|---|---|
100 | 2% | 100 | 1000 | 1028 | 85 | 97% | 94% |
100 | 5% | 100 | 1000 | 1060 | 88 | 96.3% | 90.9% |
从上面实测数据看,RaySync 传输协议在高丢包和高时延环境中,可以保持良好的有效带宽利用率。丢失的数据报文重传是基于精准重传算法策略判断,并非net-speeder工具的暴力双倍发包。