n0 Announces noq: A QUIC Multipath Implementation in Rust with First-Class NAT Traversal
From Fork to Full Rewrite
The n0 team, creators of the peer-to-peer data sync platform iroh, have released noq ("number 0 QUIC") β a ground-up QUIC implementation in Rust that hard-forked from Quinn after their soft fork proved insufficient.
Why Fork?
iroh was doing complex work around QUIC that the protocol had no visibility into:
- Switching between relay and direct paths
- Managing NAT traversal
- Juggling congestion state across multiple paths
The mismatch between what iroh needed and what Quinn could provide grew until a hard fork became the honest path forward.
Key Features
QUIC Multipath (Full Spec Implementation)
Before multipath, iroh managed multiple paths (relay, IPv4, IPv6) as a hack below QUIC. With noq, all paths are first-class QUIC concepts:
- Per-path congestion control
- Intelligent path selection
- The relay path is a QUIC path, the direct UDP path is a QUIC path
QUIC NAT Traversal (First Production Implementation)
n0 claims the first production-grade implementation of the QUIC NAT traversal draft. NAT traversal is notoriously difficult β getting it right across the full range of NAT behaviors in the wild is a hard problem, battle-tested across hundreds of thousands of iroh devices.
QUIC Address Discovery (QAD)
Already in production use since iroh v0.32, replacing STUN with QUIC-based address discovery that encrypts packets without sacrificing round-trips.
Why This Matters
For the Rust Ecosystem
QUIC is the transport protocol of the future (HTTP/3, WebTransport, etc.). Having a high-quality Rust implementation with multipath and NAT traversal fills a critical gap. Quinn remains excellent for standard use cases, but noq handles the edge cases that modern P2P applications need.
For P2P Applications
Multipath QUIC + NAT traversal = reliable direct connections even behind NATs. This is the holy grail for P2P applications. If noq delivers, it could enable a new generation of peer-to-peer services that don't rely on centralized relays.
For the QUIC Standard
n0's implementation of QUIC NAT traversal β while based on a draft, not a final spec β provides valuable real-world data for the IETF working group. Production deployments at iroh's scale inform the standardization process.
The Engineering Lesson
n0's journey illustrates an important pattern in open source:
- Start with a fork β reasonable, low-commitment
- Try to contribute upstream β respectful collaboration
- Acknowledge when paths diverge β honest assessment
- Hard fork when necessary β fair to both projects
This is how open source should work. Quinn is still great. noq solves different problems. Both can coexist.
Source: n0 Blog