LLMpediaThe first transparent, open encyclopedia generated by LLMs

nghttp3

Generated by GPT-5-mini
Note: This article was automatically generated by a large language model (LLM) from purely parametric knowledge (no retrieval). It may contain inaccuracies or hallucinations. This encyclopedia is part of a research project currently under review.
Article Genealogy
Parent: QUIC Hop 4
Expansion Funnel Raw 40 → Dedup 0 → NER 0 → Enqueued 0
1. Extracted40
2. After dedup0 (None)
3. After NER0 ()
4. Enqueued0 ()
nghttp3
Namenghttp3
DeveloperTatsuhiro Tsujikawa, ngtcp2 project contributors
Initial release2019
Programming languageC (programming language)
Operating systemLinux, FreeBSD, NetBSD, OpenBSD, macOS, Microsoft Windows
GenreNetworking (computer), Application layer
LicenseMIT License

nghttp3.

nghttp3 is an open-source library implementing the HTTP/3 protocol and parts of the QUIC ecosystem, intended for use in web servers, clients, and proxy software. The project focuses on protocol correctness, interoperability, and a compact C implementation suitable for integration with existing NGINX, Apache HTTP Server, Envoy (software), and custom networking stacks. It interoperates with related projects such as ngtcp2, BoringSSL, and OpenSSL and is used in research, commercial, and infrastructure deployments across companies and institutions including Mozilla, Cloudflare, Fastly, Google, and Facebook.

Overview

nghttp3 provides a light-weight, production-ready implementation of the HTTP/3 framing and stream management layer that runs over the QUIC transport. The library implements core features from the IETF HTTP Working Group specifications and reads and writes HTTP/3 frames, manages stream states, and handles control streams for settings and priorities in coordination with QUIC libraries such as ngtcp2 and lsquic. It is designed for integration with TLS implementations like BoringSSL, OpenSSL, and WolfSSL for connection security and for pairing with event loops such as libevent and libuv.

History and Development

Development of nghttp3 began in the context of efforts to standardize HTTP/3 and QUIC during the IETF QUIC and HTTP Working Groups, with early contributions from implementers active in IETF drafts and interoperability events. The author and maintainers participated in QUIC interop events alongside teams from Google (company), Mozilla Foundation, Akamai Technologies, Cloudflare, and Fastly. Milestones include early support for draft versions of HTTP/3, stabilization following the publication of the HTTP/3 RFCs, and collaborative testing in events organized by IETF and industry consortia. The project evolved alongside associated implementations such as ngtcp2 and test suites used by Mozilla and Google for interoperability.

Features and Design

nghttp3 implements HTTP/3 features defined by the IETF HTTP Working Group specifications, including support for control streams, QPACK header encoding coordination, SETTINGS frames, and stream state machines. The design emphasizes modularity so that the framing layer is separable from QUIC transport, enabling reuse with different QUIC stacks like ngtcp2, msquic, and lsquic. It supports server push semantics aligned with the HTTP/3 model, integrates with QPACK implementations influenced by Google and Mozilla research, and includes facilities for prioritization inspired by discussions in IETF HTTPbis and implementation patterns seen in NGINX and Apache Software Foundation modules.

Implementation and Architecture

Implemented in C (programming language), nghttp3 exposes a compact API for creating HTTP/3 connection objects, managing streams, encoding and decoding frames, and handling application layer events. The architecture separates concerns across modules influenced by designs from ngtcp2 and cryptographic stacks like BoringSSL and OpenSSL. Core components include frame serializers/deserializers, control stream handlers, and QPACK integration hooks that coordinate with encoder/decoder state machines similar to those used by Chromium and Firefox (web browser). Testing harnesses reference interoperability test plans from IETF interop events and continuous integration practices used by GitHub projects.

Usage and Examples

Typical usage patterns show nghttp3 embedded in server and client applications where a QUIC implementation handles transport and TLS, while nghttp3 performs HTTP/3 framing. Example integrations exist in proxy projects comparable to Envoy (software) and in experimental modules for NGINX and Apache HTTP Server, demonstrating patterns for accepting QUIC connections, creating nghttp3 session objects, responding to HEADERS and DATA frames, and emitting push promises. Developers combine nghttp3 with libraries such as libevent, libuv, BoringSSL, and ngtcp2 in examples and sample applications provided in repository examples and community tutorials from Mozilla and Cloudflare engineering blogs.

Performance and Benchmarks

Performance assessments of nghttp3 focus on latency, CPU usage, and throughput when paired with QUIC stacks like ngtcp2 or msquic and TLS layers such as BoringSSL and OpenSSL. Benchmarks often compare HTTP/3 stacks against HTTP/2 implementations in NGINX, Apache HTTP Server, and Envoy (software), measuring gains from QUIC's 0-RTT and 1-RTT connection establishment and multiplexing advantages demonstrated in studies by Google (company), Cloudflare, and Mozilla. Interop events and community benchmarks report that nghttp3's framing overhead is modest relative to transport and crypto costs, and optimizations in QPACK and event handling can yield notable improvements in head-of-line blocking and tail-latency metrics seen in deployments at Fastly and large-scale platforms.

Licensing and Adoption

nghttp3 is distributed under the MIT License, enabling permissive reuse in open-source and commercial products. Adoption includes use by software vendors, research groups, and infrastructure teams in organizations such as Cloudflare, Fastly, Mozilla, Google (company), and contributors from the IETF community. The project is maintained with contributions from developers familiar with QUIC and HTTP/3 implementations, and the permissive licensing has facilitated integration into products and experimental modules across the Apache Software Foundation, NGINX, Inc. ecosystems, and independent startup projects.

Category:HTTP/3 Category:QUIC