#quic #udp-socket #protocols #packets #sockets #explicit #ecn

kvärn-quinn-udp

临时 Kvarn 分支:为 QUIC 传输协议提供具有 ECN 信息的 UDP 套接字

1 个不稳定版本

0.5.0-alpha12024 年 2 月 4 日

#4 in #ecn

Download history 2/week @ 2024-03-11 9/week @ 2024-03-25 22/week @ 2024-04-01 19/week @ 2024-05-20 15/week @ 2024-05-27 13/week @ 2024-06-03 14/week @ 2024-06-10 10/week @ 2024-06-17 16/week @ 2024-06-24

54 每月下载量
3 个 crate 中使用(通过 kvarn-quinn

MIT/Apache

69KB
1.5K SLoC

提供统一接口以发送和接收 UDP 数据包,并具有对 QUIC 有用的先进功能

此 crate 提供了大多数现代系统上可用的内核 UDP 栈功能,这些功能对于高效且符合规范的 QUIC 实现是必需的。截至本文写作时,这些功能在 std 或主要异步运行时中不可用,其特性和复杂性是添加它们的障碍。因此,有一个专门的 crate。

公开的功能包括

  • 分段卸载用于大量发送和接收操作,减少 CPU 负载。
  • 报告接收到的数据包的确切目标地址,并指定发送数据包的显式源地址,允许从多个可能性中选择地址发送响应。这在绑定到 IPv6 的通配符地址时很常见,因为 RFC 8981 临时地址。
  • 显式拥塞通知,这是 QUIC 所必需的,以防止数据包丢失并在拥塞链路上降低延迟(如果网络路径支持)。
  • 禁用 IP 层分段,这允许检测真正的物理 MTU 并减少 QUIC 数据包丢失的风险。

某些功能在某些环境中不可用。这可能是由于过时的操作系统或驱动程序。某些操作系统可能根本不实现所需的特性,或者可能尚未被 crate 支持。当支持不可用时,功能将优雅地降级。

依赖项

~0.6–9.5MB
~82K SLoC