QUIC Protocol Implementation Practice at NetEase News: Achieving 45% Response Time Reduction
NetEase News adopted Google’s gQUIC via Chromium’s Cronet library together with Nginx + Caddy, making QUIC handle over 75% of traffic and cutting average response time by about 45%, halving error rates and reducing video stutter by more than 25% within three months.
This article details how NetEase News implemented QUIC protocol to significantly improve network performance within 3 months. By using Chromium's Cronet network library combined with Nginx + Caddy for traffic entry, they achieved remarkable results: QUIC requests now account for 75%+ of total requests, average response time (RT) reduced by 45%, error rate decreased by 50%+, and video stuttering reduced by 25%+.
What is QUIC?
QUIC (Quick UDP Internet Connections) is a network transport protocol developed by Google in 2013 to improve network transmission speed. In 2018, HTTP over QUIC was renamed HTTP/3 by IETF. QUIC implements loss recovery mechanisms similar to TCP on top of UDP, with packet-level headers and monotonically increasing packet numbers. It provides encryption for both header and data, and uses DH key exchange algorithm during connection establishment, offering advantages in hijacking prevention. QUIC is functionally equivalent to TCP + TLS + HTTP/2 while providing additional improvements over traditional HTTP + TCP.
Implementation Strategy
The team chose gQUIC (Google QUIC) over iQUIC (IETF QUIC) due to better maturity and support. For the client-side network library, they selected Chromium's Cronet because: 1) Google has open-sourced Chromium for years with proven stability; 2) Cronet has excellent cross-platform support for both Android and iOS; 3) Cronet directly supports gQUIC.
Android Implementation
On Android, they used OKHttp's interceptor mechanism to integrate Cronet. The interceptor was placed at the bottom of the application interceptors to avoid short-circuiting subsequent interceptors. They used CronetHttpURLConnection for multimedia scenarios. To solve timeout control issues with CronetHttpURLConnection's closed design, they created a proxy layer by extending MessageLooper through reflection to gain flexible timeout control.
iOS Implementation
On iOS, they integrated Cronet via NSURLProtocol network interception. They enabled metrics collection through Cronet's setMetricsEnabled interface and obtained protocol types via URLSession's networkProtocolName property.
Data Performance
The implementation showed significant improvements: QUIC average response time reduced by ~45% compared to HTTP/2; error rate significantly decreased; in weak network scenarios (LTE signal levels 0-2), QUIC showed even more pronounced improvements in response time and error rate; video stuttering rate decreased by ~25%; video 1-second playback rate improved notably.
NetEase Media Technology Team
NetEase Media Technology Team
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.