Performance Case Study

How We Reduced Global p99 Video Stream Latency by 42% Using HTTP/3 & Custom gRPC Multiplexing

Published on August 14, 2026 By Elena Rostova, Lead Network Architect 8 min read

At RelayCDN, our edge nodes ingest thousands of concurrent 1080p60 and 4K live streams every second. In broadcast video distribution, average latency (p50) is only half the story — what separates a premium streaming infrastructure from a mediocre one is the tail latency (p99/p99.9).

When a live streamer on an imperfect uplink encounters 1-2% random packet loss, standard TCP-based ingest protocols (like RTMP or legacy HTTP/1.1 POST chunks) experience catastrophic head-of-line blocking. A single lost segment pauses the entire socket buffer, resulting in frame stutter and viewer rebuffering.

"By decoupling stream framing from the underlying transport byte stream using gRPC and HTTP/3 QUIC datagrams, we achieved deterministic sub-15ms ingest acknowledgement across our entire European PoP footprint."

The Bottleneck: TCP Head-of-Line Blocking in Video Ingest

In a classic streaming setup, video chunks (typically 200ms to 2-second fMP4 fragments) are pushed over a standard TCP connection. If TCP packet #4 is dropped in transit:

  • The kernel holds packets #5, #6, and #7 in the OS receive buffer until packet #4 is retransmitted.
  • Even if packets #5-7 contain critical I-frames or audio samples needed immediately by the edge transcoder, the application cannot read them.
  • p99 latency spikes from 18ms to 450ms+, triggering pipeline jitter.

The Solution: Bidirectional Binary gRPC Multiplexing

We moved our primary ingestion gateway to a custom gRPC service defined over HTTP/2 and HTTP/3:

relaycdn.v1.streaming.proto
service RelayIngestService {
  // High-bandwidth bi-directional frame pipe with independent stream IDs
  rpc StreamChunkPipe (stream VideoFrameChunk) returns (stream IngestAck);
}

With gRPC streams multiplexed over independent QUIC channels, each frame segment travels on its own stream identifier. If packet loss affects Stream B, Stream A and Stream C continue flowing directly into the edge ring buffer with zero latency penalty.

Linux Kernel TCP BBRv3 & eBPF Socket Dispatching

On our bare-metal edge nodes in Helsinki (FI-01), Paris (FR-02), and Moscow (RU-01), we replaced default CUBIC congestion control with an optimized BBRv3 kernel configuration:

sysctl.conf (RelayCDN Edge Profile)
net.core.default_qdisc = cake
net.ipv4.tcp_congestion_control = bbr
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_slow_start_after_idle = 0
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864

Benchmark Results

Under synthetic network simulation with 2.5% simulated packet loss and 40ms base RTT:

  • Legacy Ingest (TCP/RTMP): p99 latency was 284ms with 4.1% buffer stall rate.
  • RelayCDN HTTP/3 gRPC Ingest: p99 latency dropped to 14.2ms with 0.00% frame loss.

These optimizations are now active on all RelayCDN endpoints including video.relaycdn.me and regional ingress clusters.

← Back to Blog Try Ingest API