We have been using HTTP for over 30 years. HTTP/0.9 debuted in 1991, then HTTP/1.0 and HTTP/1.1, were continuously released in 1996 and 1997, respectively. In 2015, IETF (Internet Engineering Task Force) standardized HTTP/2 with some key features such as server push, and stream multiplexing. Though the latter versions provide better tools to enhance the Quality of Experience while surfing the Internet, all of these versions are running on TCP and suffer from head-of-line (HoL) blocking. Currently, IETF is working on the latest version a.k.a HTTP/3 built on the QUIC protocol. HTTP/3 can cope with issues of its predecessors.
What is HTTP/3?
HTTP/3 is the 3rd major version of the HTTP. Different from previous versions that run over TCP. HTTP/3 uses QUIC as its transport protocol to provide faster connection establishment and to deal with HoL blocking issue. Google developed QUIC to provide a secure and reliable transport protocol over UDP.
Key features of HTTP/3
HTTP/3 inherits most of the features of HTTP/2 including server push, stream multiplexing, stream priority and stream termination. Besides, HTTP/3 provide a new feature which is 0-RTT connection setup due to the use of QUIC. Here we’ll give you an overview of the key features.
Server push
The server push feature enables the client to receive multiple responses from the server by an HTTP GET request. It is helpful when the server knows that these responses are necessary for the client to completely process the request. This feature helps the client save multiple RTTs compared to non-pipelined HTTP/1.1. HTTP/1.1 sends a new request only if the response of the previous request has fully come to the client.
Stream multiplexing
With this feature, the server can process different requests simultaneously. Each pair of HTTP requests and responses in an individual stream. A stream is an independent sequence of data delivered between the server and client. The data belonging to streams are interleaved.
Stream priority
There are two parameters: urgency (u) and incremental (i) to indicate the priority of a stream. The urgency (u) of a request expresses its importance and can be an integer number from 0 to 7. The lower values, the higher importance. The incremental (i) gets a Boolean value to say that if the server should process an HTTP response incrementally. When 2 requests have the same u and i, they share equally the bandwidth.
Stream termination
When the client considers a stream’s data is no longer necessary, it can send an H3_REQUEST_CANCELLED error code (in H3) to cancel that stream while keeping the connection with the server. This feature is to avoid wasting the throughput for downloading unused data. Meanwhile, the only way for HTTP/1.1 client to cancel a request is to close the TCP connection. This will causes other delays due to the three-way handshake and slow start.
How HTTP/3 improves QoE in video streaming?
Many existing work have validate that HTTP/3 can enhance the QoE in HAS. The problem is HOW? How HAS-related techniques leverage HTTP/3 features? We have listed some work in the literature working on this topics. Additionally, we also draw some interesting topics about HTTP/3 in HAS.
Let’s take a look at the following slides for our work:
Nguyen, Minh, Christian Timmerer, Stefan Pham, Daniel Silhavy, and Ali C. Begen. "Take the red pill for H3 and see how deep the rabbit hole goes." In Proceedings of the 1st Mile-High Video Conference, pp. 7-12. 2022.