# Lower-Latency Screen Updates over QUIC with Forward Error Correction
## 2 Background and Related Work
### QUIC and FEC  
QUIC replaced TCP as the underlying protocol for HTTP/3, which is the latest version of HTTP. QUIC keeps the useful features of TCP such as reliability, congestion, and flow control while also supporting some other features that can improve performance, such as the following:  
* Integrating TLS as a part of the protocol for security. * Multi-streaming of web resources to avoid the HOL blocking problem. * A 0-RTT connection setup for the clients, which previously connected to a server as opposed to TCP's classic three-way handshake for any new connection. * User-space level implementations, which provide easier development and deployment compared to kernel code. QUIC [7] supports multi-streaming, which allows us to define independent streams all running over a single QUIC connection. There are several QUIC implementations out there [11] which can differ slightly due to some details and support of different extensions. Figure 3: Consistency fences (based on Figure 3 in [4]). We used ngtcp2 [12]/nghttp3 [13] for this project because of three main reasons: (1) The code is readable and extensible, (2) its active forum helps us answering some of our questions quickly, and (3) it includes the Extensible Prioritization Scheme extension, which proved useful for turning on/off FEC for our experiments. The versions of ngtcp2/nghttp3 used for the results of this paper are ngtcp2 v1.0.1 and nghttp3 v1.0.0, which were downloaded in November 2023. FEC is a well-known technique to provide reliability and improve latency in different network layers, including the transport layer. Using FEC, we can avoid the waiting time for receiving the retransmission of a lost packet/frame at the TCP layer [14; 15]. Recently, QUIC [16] replaced the TCP for HTTP-based applications, and the possibility of taking advantage of FEC over QUIC is discussed in some papers that we focus on in this section. The first version of QUIC by Google [16] had FEC as a built-in option with a simple XOR-based method. However, FEC was dropped from QUIC due to overhead and its negative impact on performance [17]. There are some adaptive approaches to FEC in the literature to balance the overhead. For example, [PERSON] et al. [18] proposed the idea of setting the redundant rate adaptively based on the actual loss rate for QUIC using a simple XOR-based FEC method, which lacks the support of burst packet-loss patterns. [PERSON] et al. [19] first studied different FEC methods such as XOR, Reed-Solomon (RS), and Random Linear Codes (RLCs) for file transfers. Their findings showed that applying FEC over QUIC can be beneficial for small files but is not very useful for larger bulk transfers, as they used a fixed rate of redundant data. Afterwards, they improved their work published in 2022 [20] by considering three use cases: (1) bulk data transfer, (2) file transfers with restricted buffers, and (3) delay-constrained messages with an adjustable reliability level of the transfer. Also, they helped minimize the overhead of FEC by letting the application set the level of redundancy. [PERSON] et al. proposed QUIRL [21], which adds a parameter called MaxJitter to FEC over QUIC. If this parameter is provided by the application to define the maximum affordable data delivery delay, then FEC can be applied only on the necessary portion of the data to reduce the FEC overhead. Also, QUIRL adds a new ACK frame called SOURCE_SYMBOL_ACK to inform the sender that a lost frame has been recovered by FEC to avoid sending its retransmission. The new ACK frame adds potential complexity to QUIRL's integration with other parts of the CCA and QUIC protocol. [PERSON] et al. [22] proposed adding two additional parameters called burst loss tolerance (BLT) and repair delay tolerance (RDT) that can be set by the application to help perform a better weighted scheduling. Then, they proposed a new data scheduling algorithm based on resource priorities, and these new parameters were combined with FEC to reduce the completion time of web resources.