#udp #multiplayer #networking

reliudp

为Rust定制的可靠UDP协议

3个不稳定版本

使用旧的Rust 2015

0.2.0 2020年1月11日
0.1.1 2018年10月8日
0.1.0 2018年10月4日

#multiplayer中排名第26

每月下载量28

MIT许可证

96KB
2K SLoC

Reliudp:为Rust定制的可靠UDP协议

(工作中)

简版

特性

  • 无不安全代码
  • 拥有UDP的所有缺点,但速度像TCP一样慢
  • 慢得像骆驼
  • 我不确定它是如何工作的
  • 实验性
  • 无法防止DOS攻击

缺点

  • 它确实能工作

详版

这个crate旨在类似于 https://github.com/BonsaiDen/cobalt-rs,在意义上它提供了

  • 通过UDP连接
  • 保证消息到达目的地
  • 极低延迟

这个crate主要针对带宽充足且低延迟至关重要的用例。特别是在线多人游戏。

与原始UDP相比的优势是什么?

  • 跟踪连接,处理超时(使用双向握手)
  • 自动数据包排序
  • 在IP数据包上添加额外的CRC32检查,将损坏数据的机会降至几乎为零
  • 确保数据包到达目的地

与原始TCP相比的优势是什么?

  • 非流式
  • 如果数据包第一次未通过,您可以选择丢弃哪些数据包
    • 重要消息将通过Ack系统确保通过
    • 可忽略的消息如果数据包第一次不完整将被丢弃

缺点是什么?

  • (计划) 没有网络拥塞处理
  • (计划) 没有测试覆盖率
  • (计划) 没有可选的SSL和其他安全数据传输方式:一切都是明文
  • (计划) 没有任何类型的错误纠正码(汉明码等)
  • (可能在未来改变) 负载数据量限制(约~300KB)
  • 未经DOS攻击测试
  • 不支持Future。可能永远不会支持。

许可证

MIT

依赖项

~800KB
~16K SLoC