超流
UFlow 是一个 Rust 库和 UDP 网络协议,用于实时互联网数据传输,重点是简单性和鲁棒性。尽管它是从头开始设计的,但 UFlow 的界面和功能的灵感来自于古老的 ENet 库。
特征
- 两台主机之间面向数据包的数据传输
- 根据互联网MTU(1500字节)自动进行数据包分段和重组
- 用于正确连接管理的 3 路连接握手
- 多达 64 个独立排序的数据包流
- 4 种直观的数据包传输模式:时间敏感、不可靠、持久和可靠
- TCP 友好的流式拥塞控制根据 RFC 5348 实施
- 高效的帧编码和传输协议,数据包开销最小
- 所有传输帧的 CRC 验证(多项式:0x132c00699)
- 理想网络条件下数据包吞吐率100%,投递顺序不受影响
- 无懈可击的序列 ID 管理可最大程度地减少重复
- 应用程序可配置的接收器内存限制(以防止内存分配攻击)
- 经过随机数验证的数据确认(以防止丢失率/带宽欺骗)
- 能够抵御 DDoS 放大(请求-答复比率 ≈ 28:1)
- 精心设计和单元测试,确保无失速行为
- 无线程、非阻塞实现
文档
文档可以在 docs.rs 中找到。
建筑学
尽管白皮书中描述了以前的版本,但与此同时该库发生了很多变化(包括名称!)。当前版本有以下改进:
- 根据 RFC 5348 实施 TCP 友好的拥塞控制
- 接收器内存限制(用于数据包重组)
- 无哨兵数据包或帧
- 额外的数据包发送模式,如果无法立即发送数据包,则会导致数据包被丢弃(时间敏感)
- 通道数量无需迭代
新设计将很快™在更新的白皮书中进行总结。