A Tale of Two HTTP/2 Codecs
Summary
This post investigates Envoy's HTTP/2 codec performance by comparing nghttp2 and Google's oghttp2. It documents a 15–25% throughput regression on header-heavy traffic after upgrading to oghttp2 and explains that the bottleneck lies not in decoding alone but in the data path, including header handling, representation, and copies in QUICHE. The authors conclude that the fix is to revert to nghttp2 via a runtime flag (envoy.reloadable_features.http2_use_oghttp2: false) for certain Envoy versions, and emphasize benchmarking upgrades and profiling before deploying updates.