Http 3: Everything You Need to Know
February 9, 2021 | 7 min read
Table of contents
The Hypertext Transfer Protocol, more commonly known as HTTP, is a protocol used to exchange data on the world wide web. HTTP/3 is the latest evolution of this protocol, and it has been designed to reduce latency and increase resilience when compared to the existing HTTP/1 and HTTP/2, especially over lossy networks that regularly see high packet loss such as mobile connections and those seen in IoT and emerging market use cases.
In order for a site to serve end-to-end traffic over HTTP/3, both the clients and servers must support the protocol. The good news is that HTTP/3 is being rapidly adopted and is already supported by 73% of running browsers and over 25% of websites . Implementing HTTP/3 in your applications is not trivial without an ingress, proxy, or API gateway that fully supports the final HTTP/3 RFC specification .
The Google and Envoy Proxy teams have led the way with implementing and testing HTTP/3, as highlighted in a recent podcast with Alyssa Wilk, Senior Staff Software Engineer at Google and committer on the Envoy Proxy project.
This page provides details of the HTTP/3 protocol, and highlights the benefits and challenges of adding support for this in your applications. We have also conducted preliminary benchmark tests using the Google Chrome web browser and Ambassador Edge Stack 3.0 to study HTTP/3 and test it against the previous versions of the HTTP protocol.
What is HTTP/3?
HTTP/3 is the next major version of the Hypertext Transfer Protocol that uses QUIC and UDP (rather than TCP) to provide a low-latency and resilient network connection for the World Wide Web.
Compared with HTTP/2, there are many benefits to using HTTP/3, mostly driven by the underlying Transmission Control Protocol (TCP) transport protocol being replaced with which is built on top of the User Datagram Protocol (UDP). The diagram below shows this in more detail.
Protocol Stack of HTTP/3 compared to HTTP/1.1 and HTTP/2 (Source: Wikipedia)
The use of QUIC allows for increased resilience when communicating over networks with high packet loss. And this situation may occur more frequently than anticipated, as it is not uncommon for Internet traffic to experience 2% or higher packet loss.
Read more about HTTP/3 and get hands on with implementing this using a sample Kubernetes-based application in “How to Implement HTTP 3 Support with Ambassador Edge Stack 3.0”
What are the HTTP/3 benefits?
Compared with HTTP/2, there are many benefits to HTTP/3, such as increased resilience with QUIC’s fast “Zero Round Trip Time Resumption (0-RTT)” reconnections and reduced latency when streaming data.
The main focus with the implementation of HTTP/3 is that it replaces the TCP in TCP/IP with QUIC (pronounced "quick") which is built on top of the User Datagram Protocol (UDP) over IP. UDP uses a simple connectionless communication model with a minimum of protocol mechanisms.
QUIC streams share the same connection, yet are delivered independently. This allows for much more flexibility when handling lossy or stalled connections compared to TCP, and this also eliminates the much maligned head-of-line-blocking issue that wasn’t resolved with HTTP/2.
Alyssa Wilk and Ryan Hamilton, engineers from Google that have worked on implementing HTTP/3 in Envoy, discussed this in more detail in an 2021 EnvoyCon talk, “HTTP/3 in Envoy: End to End Acceleration”.
How QUIC eliminates head of line blocking within HTTP/3 (Source: YouTube)
The Google and Envoy Proxy teams have led the way with implementing and testing HTTP/3, and more information on the benefits on the latest version of this network protocol were discussed in recent Ambassador Labs podcast with Alyssa Wilk.
HTTP 3 Support & Implementation
Enabling HTTP/3 in your applications is complex without an ingress, proxy, or API gateway that fully supports the final HTTP/3 RFC specification. HTTP 3 support in software and hardware networking components will increase over time. At the moment, many organizations are looking to utilize an Envoy Proxy -powered ingress or API gateway to provide HTTP/3 to their users.
Both Emissary-ingress and Edge Stack build on Envoy Proxy and allow developers or platform engineers to easily enable and manage HTTP 3 support using simple configuration.
By default, all communication occurring over HTTP is secured with TLS 1.3. If clients do not support TLS 1.3 the web server can negotiate the use of an earlier version of TLS, but this will fallback to using HTTP/2 or HTTP/1.X.
Fundamentally, HTTP/3 requires clients and web servers to support TLS 1.3.
How Can I Get Started with HTTP/3?
You can get started with implementing HTTP/3 with our guide, “How to Implement HTTP/3 Support with Edge Stack 3.0”. Using Ambassador Edge Stack (the implements the Envoy Proxy HTTP/3 support) and a simple web app deployed into Kubernetes, you will be able to get started with HTTP/3 in under 5 minutes.
Once you have your HTTP/3 enabled application up and running, you can then perform you own benchmarks with a range of browsers using our benchmarking guide as a template for your own experiments.
Want to Learn More About Kubernetes, Ingress, and API Gateways?
Do you want to learn about Kubernetes, Ingress, and API Gateways, but are not sure where to start? We get it! Finding the right place to start learning new concepts can be hard, and that’s why we created our Kubernetes Learning Center (https://www.getambassador.io/kubernetes-learning-center/) to give you the right resources you need for this learning journey.
Our free interactive guides and hands-on labs will provide you with all the fundamentals you’ll need to learn Kubernetes, and allow you to apply these learnings in real-time. You’ll also learn how to code, ship and run your applications efficiently on Kubernetes.