#数据传输 #UDP #UDP数据包 #连接 #实时 # #互联网

uflow

通过UDP提供有序、混合可靠性和拥塞控制的数据传输

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 2022年1月23日

#1501 in 网络编程

每月下载量31次

MIT许可证

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友好型拥塞控制
  • 接收器内存限制(用于数据包重组)
  • 没有哨兵数据包或帧
  • 一种额外的数据包发送模式,如果无法立即发送数据包,则会丢弃它们(时间敏感)
  • 没有对通道数量的迭代

新的设计很快将在更新的白皮书中总结。

依赖项