7个版本 (4个重大更改)
0.7.1 | 2023年1月7日 |
---|---|
0.7.0 | 2022年11月25日 |
0.6.1 | 2022年5月22日 |
0.6.0 | 2022年3月28日 |
0.3.1 |
|
#1501 in 网络编程
每月下载量31次
540KB
6.5K SLoC
UFlow
UFlow是一个专注于简单性和健壮性的Rust库和UDP网络协议,用于实时互联网数据传输。尽管它是从头设计的,但UFlow的接口和功能受到了值得尊敬的ENet库的启发。
特性
- 两台主机之间的数据包导向数据传输
- 根据互联网MTU(1500字节)自动数据包分片和重组
- 三次握手连接管理
- 最多64个独立顺序的数据包流
- 4种直观的数据包传输模式:时间敏感、不可靠、持久和可靠
- 根据RFC 5348实现的TCP友好型流拥塞控制
- 高效的帧编码和传输协议,具有最小的数据包开销
- 对所有传输帧进行CRC验证(多项式:0x132c00699)
- 在理想网络条件下,100%的数据包吞吐量和不受影响的交付顺序
- 防重复数据包的序列ID管理
- 可由应用程序配置的接收器内存限制(防止内存分配攻击)
- 非验证数据确认(防止损失率/带宽欺骗)
- 对DDoS放大具有弹性(请求-回复比率≈28:1)
- 精心设计并单元测试以确保无阻塞行为
- 线程和无阻塞实现
文档
文档可在docs.rs找到。
架构
尽管在白皮书中描述了早期版本,但该库在此期间发生了许多变化(包括名称!)当前版本具有以下改进:
- 根据RFC 5348实现的TCP友好型拥塞控制
- 接收器内存限制(用于数据包重组)
- 没有哨兵数据包或帧
- 一种额外的数据包发送模式,如果无法立即发送数据包,则会丢弃它们(时间敏感)
- 没有对通道数量的迭代
新的设计很快将在更新的白皮书中总结。