Cloudflare Open Sources tokioquiche, Promising Easier QUIC and HTTP/3 in Rust
Briefly

Cloudflare Open Sources tokioquiche, Promising Easier QUIC and HTTP/3 in Rust
"Cloudflare has open-sourced tokio-quiche, an asynchronous QUIC and HTTP/3 Rust library that wraps its battle-tested quiche implementation with the Tokio runtime to simplify the development of high-performance QUIC applications. The library was used internally to back the edge services, the Oxy HTTP proxies, or MASQUE-based tunnels, replacing Wireguard-based tunnels in the WARP client. Tokio-quiche is now available as an open-source crate on crates.io, with its source hosted in the quiche repository."
"The library combines the sans-io QUIC/HTTP/3 implementation in quiche with Tokio's async runtime, providing an integration layer that has been refined and used to handle millions of HTTP/3 requests per second in systems such as Apple iCloud Private Relay, next-generation Oxy-based proxies, and WARP's MASQUE client. The original quiche library was designed as a low-level, sans-io QUIC and HTTP/3 implementation that could be embedded in diverse environments, but wiring it into real applications required implementing UDP I/O, connection management, and the event loop by hand."
Tokio-quiche is an open-source Rust crate that binds quiche's sans-io QUIC and HTTP/3 implementation to the Tokio asynchronous runtime, streamlining UDP I/O, connection management, and event-loop driving. The library manages UDP sockets, routes datagrams to connections, and advances quiche's state machine so applications can focus on protocol logic rather than transport plumbing. An actor-model internal design uses an inbound packet router and per-connection I/O worker actors communicating via channels. An ApplicationOverQuic trait abstracts application protocols over QUIC, and an H3Driver (server and client) converts quiche's raw HTTP/3 events into higher-level async streams. Production deployments include Apple iCloud Private Relay, Oxy proxies, and WARP MASQUE tunnels.
Read at InfoQ
Unable to calculate read time
[
|
]