Noq: n0's QUIC Implementation in Rust
概述
n0 团队发布了全新的 QUIC 实现 noq ("number 0 QUIC"),这是 iroh v0.96+ 的传输层,支持多路径和 NAT 穿透。
核心亮点: 完整实现 QUIC Multipath 规范,NAT 穿透生产级实现,首个 robust 方案
技术细节
1. QUIC Multipath 规范实现
- 多路径成为 QUIC 第一等公民概念
- relay 路径和直接 UDP 路径都是 QUIC 路径
- QUIC 维护每条路径的拥塞状态
- 自动选择最佳路径,降低延迟
2. NAT 穿透
- 生产级 robust NAT 穿透实现
- 通过数十万设备实战测试
- 在 QUIC 层表达打洞操作,而非底层
- 拥塞控制器能感知穿透过程
3. QUIC Address Discovery (QAD)
- 使用 QUIC 连接学习公网 IP
- 替代传统 STUN
- 加密数据包,不牺牲往返次数
- 防止协议僵化,增强隐私
4. qlog 支持
- 扩展 qlog 事件支持
- 支持多路径数据包流可视化
- 提供 qlog-viewer 原型工具
架构演进
从 Quinn 软分支到硬分支的历程:
- 2024 年:因 iroh 需求与 Quinn 不匹配而 fork
- 多路径、NAT 穿透开发导致迭代周期不匹配
- 硬分支避免对 Quinn 用户的公平影响
- 继续与 Quinn 团队在共同兴趣领域合作
生产就绪
- 自 iroh v0.96 起在生产环境运行
- 已服务数十万设备
- 与 picoquic(参考实现)进行互操作测试