Overview
quiche is Cloudflare’s implementation of the QUIC transport protocol and HTTP/3, written in Rust and following the IETF specifications. It powers HTTP/3 across Cloudflare’s edge network and is used well beyond it — Android’s DNS resolver relies on it for DNS over HTTP/3, and curl can be built with quiche to speak HTTP/3.
quiche deliberately provides a low-level API: it processes QUIC packets and manages connection state, while your application supplies the I/O (sockets) and an event loop with timers. That makes it easy to embed in existing networking stacks.
Key Features
- QUIC transport and HTTP/3 per the IETF standards
- Embeddable design: bring your own sockets and event loop
- C API via the optional
ffifeature, in addition to the native Rust API - Battle-tested at Cloudflare scale and in Android
- Command-line tools (
quiche-client,quiche-server) for experimenting and testing
Getting Started
Clone the repository, then try the example client against Cloudflare’s public QUIC test site:
git clone https://github.com/cloudflare/quiche
cd quiche
cargo run --bin quiche-client -- https://cloudflare-quic.com/
You can also start the example server with the bundled self-signed certificate:
cargo run --bin quiche-server -- --cert apps/src/bin/cert.crt --key apps/src/bin/cert.key
The example apps are for testing only and are not meant for production use. To use quiche in your own project, add the crate:
cargo add quiche
Who Uses quiche
- Cloudflare — HTTP/3 support across the edge network
- Android — DNS over HTTP/3 in the system resolver
- curl — optional HTTP/3 backend
License
BSD 2-Clause License.