- HTTP/3 का विकास 2016 से हो रहा है, और इसका आधार प्रोटोकॉल QUIC पहली बार 2013 में Google ने पेश किया था
- यह अब standardize हो चुका है और इसे व्यापक समर्थन मिला हुआ है
- 95% ब्राउज़र इसे support करते हैं
- Cloudflare के HTTP requests में से 32% HTTP/3 का उपयोग करते हैं
- 35% वेबसाइटों पर HTTP/3 support दिखता है (
alt-svc या DNS के माध्यम से)
- लेकिन प्रमुख भाषाओं की standard library में QUIC और HTTP/3 support की कमी है
- Node.js, Go, Rust, Python, Ruby आदि की standard library में यह शामिल नहीं है
- Curl ने हाल ही में HTTP/3 support जोड़ा है, लेकिन यह experimental स्थिति में है और default रूप से disabled है
- लोकप्रिय सर्वर Nginx में support experimental है और default रूप से disabled है
- Apache की HTTP/3 support की कोई योजना नहीं है
- Kubernetes के Ingress-Nginx ने HTTP/3 support की योजना छोड़ दी है
HTTP/1.1 के बाद इसकी ज़रूरत
- HTTP/3 high-latency web browser और CDN traffic के लिए उपयोगी है
- HTTP/2 और HTTP/3 के मुख्य फायदे:
- multiplexing से response latency कम होती है
- HTTP header compression से traffic कम होता है (HPACK, QPACK का उपयोग)
- bidirectional streaming से client और server के बीच real-time data exchange संभव होता है
- prioritization के जरिए महत्वपूर्ण requests को पहले process किया जा सकता है
- HTTP/3 के अतिरिक्त फायदे:
- independent stream handling से packet loss का असर दूसरी streams पर नहीं पड़ता
- 0-RTT TLS handshake से connection initialization तेज़ होता है
- connection migration से IP address बदलने पर भी connection बना रह सकता है
- बेहतर congestion control से performance और reliability बढ़ती है
HTTP/3 के performance improvement का असर
- RequestMetric benchmark के नतीजे:
- HTTP/3, HTTP/1.1 और HTTP/2 की तुलना में तेज़ response speed देता है
- Fastly का वास्तविक उदाहरण:
- HTTP/3 में time to first byte 18% कम हुआ
HTTP/3 support की कमी की समस्या
- HTTP/3 को browser और CDN में व्यापक support है, लेकिन सामान्य developers के लिए इसका उपयोग करना कठिन है
- आज के web traffic के दो प्रकार:
- hyperscale web: प्रमुख browsers और बड़े server platforms पर आधारित (Google, Meta, Amazon आदि)
- long-tail web: छोटे और मध्यम server तथा client environments पर आधारित (backend API, mobile apps, IoT आदि)
- मुख्य अंतर:
- long-tail traffic कुल traffic का 67% है
- hyperscale में तेज़ development और deployment संभव है, जबकि long-tail में resources कम होते हैं और stability को प्राथमिकता दी जाती है
- open source tools पर निर्भरता अधिक होती है
OpenSSL और QUIC की समस्या
- OpenSSL अधिकांश open source networking tools की नींव है
- BoringSSL ने 2018 में QUIC support API जारी किया था, लेकिन OpenSSL ने अपना अलग QUIC API पेश किया
- मुख्य समस्याएँ:
- यह मौजूदा BoringSSL-आधारित implementations के साथ compatible नहीं है
- Curl और प्रमुख भाषाओं के लिए OpenSSL dependency बदलना कठिन है
- Node.js ने OpenSSL के बजाय BoringSSL उपयोग करने पर विचार किया था, लेकिन यह संभव नहीं हो पाया
आगे की दिशा
- hyperscale web द्वारा HTTP/3 अपनाने से long-tail web के साथ performance gap पैदा हो सकता है
- HTTP/3 support की कमी से ये समस्याएँ हो सकती हैं:
- hyperscale sites की speed और reliability की बढ़त और मज़बूत हो सकती है
- अगर HTTP/3-आधारित frameworks आम हो जाते हैं, तो long-tail web के लिए पहुँच कठिन हो सकती है
- HTTP/3 support न होना client blocking के मानदंड के रूप में इस्तेमाल किया जा सकता है
- समाधान:
- OpenSSL के QUIC API से जुड़ी समस्याओं का समाधान ज़रूरी है
- मौजूदा QUIC और HTTP/3 implementations के साथ compatibility बढ़ाने वाले tools और adapters विकसित करने की ज़रूरत है
- open source tools में HTTP/3 support बढ़ाने के लिए प्रयास आवश्यक हैं
निष्कर्ष
- HTTP/3 स्पष्ट performance और reliability लाभ देता है, लेकिन अभी यह ऐसी स्थिति में है जहाँ केवल hyperscale कंपनियाँ ही इसे आसानी से उपयोग कर सकती हैं
- long-tail web में भी HTTP/3 को आसानी से उपयोग योग्य बनाने के लिए tools और standards में सुधार की आवश्यकता है
1 टिप्पणियां
Hacker News की राय
यह राय है कि HTTP/3 को पूरी तरह सपोर्ट करने वाले लोकप्रिय open source tools ढूँढना मुश्किल है
प्रमुख भाषाओं की standard libraries में QUIC या HTTP/3 शामिल नहीं हैं
HTTP/3 के बड़े पैमाने पर deployment में सबसे बड़ी समस्या यह है कि संभावित रूप से कमजोर code का attack surface बढ़ जाता है
QUIC को धीरे अपनाए जाने का कारण यह है कि OpenSSL ने मौजूदा QUIC implementations के लिए ज़रूरी building blocks उपलब्ध नहीं कराए थे
HTTP/2 और HTTP/3 को अब application-layer protocols नहीं, बल्कि TCP और TLS स्तर की चीज़ों के रूप में देखा जाता है
nginx अभी भी production-ready HTTP/3 support उपलब्ध नहीं कराता
Python में niquests इस्तेमाल किया जा रहा है, और यह HTTP/3 को support करता है
Node.js ने QUIC की स्थिति पर update प्रकाशित किया है, और OpenSSL के धीमे API support के कारण कठिनाइयों का सामना कर रहा है
अगर public cloud providers के load balancer इस्तेमाल किए जाएँ, तो डिफ़ॉल्ट रूप से HTTP/3 उपयोग होता है
सभी projects किसी न किसी हद तक open source और community-driven होते हैं