Simple Science

Cutting edge science explained simply

# Computer Science# Networking and Internet Architecture

Assessing QUIC Protocol Performance Under High-Speed Conditions

A look into QUIC's performance enhancements over traditional protocols.

― 4 min read


QUIC Protocol PerformanceQUIC Protocol PerformanceAnalysisefficiency and security.Evaluating QUIC's data transfer
Table of Contents

QUIC is a new protocol introduced to improve web traffic performance. It aims to make connections faster and more secure compared to traditional protocols like TCP and TLS. The goal is to speed up the transfer of data over the internet. QUIC uses UDP as a base, allowing it to send data in a way that can reduce delays and improve efficiency.

QUIC has built-in Encryption, which means data is secure right from the start. It also supports multiple streams of data in a single connection, improving overall performance. This article discusses how different implementations of QUIC perform, especially under high-speed conditions.

Protocol Overview

QUIC was developed to address issues with existing protocols like TCP, which can be slow when establishing connections due to complex handshakes and acknowledgments. QUIC simplifies this process by combining connection setup and encryption into fewer steps. This reduces the time needed to start communication.

The protocol is designed to be reliable and ensure that data arrives in the correct order. However, it also allows for sending data without waiting for previous messages to be acknowledged, which can speed up overall data transfer. QUIC accomplishes this through unique acknowledgment mechanisms that help manage data flow more effectively.

Performance Tests

To evaluate QUIC’s performance, researchers used different servers and clients running various versions of QUIC. They focused on how well these implementations performed over high-speed connections, specifically looking at how much data could be successfully transferred in a given time.

The tests were conducted on a 10G link, which is significantly faster than standard home internet connections. This setup helped identify the limits and strengths of each implementation under optimal conditions.

Findings: Goodput Measurement

Goodput is a measure of how much useful data can be transmitted over a network connection. It takes into account data that is actually delivered to the end user, excluding any overhead from protocols. Goodput measurements for QUIC implementations showed a wide range of performance.

Some implementations achieved very high goodput rates, while others performed poorly. These differences can be attributed to several factors, including the programming language used, the way data is handled, and the optimizations made in each implementation.

Buffer Sizes

One significant finding was the impact of buffer sizes on performance. Buffers are temporary storage areas that hold data before it is sent or after it is received. In the tests, the default buffer sizes were found to be too small, leading to packet loss. When buffer sizes were increased, goodput improved significantly.

Larger buffers help prevent data from being dropped, which is crucial for maintaining a stable connection, especially at high speeds. It was recommended to increase the default buffer size to enhance QUIC performance in real-world applications.

Encryption and Processing

QUIC uses encryption methods to protect data. The tests evaluated two primary encryption algorithms: AES and ChaCha20. Results indicated that both performed similarly in terms of goodput. However, using hardware acceleration for AES significantly improved performance.

For implementations without hardware support for AES, performance dropped considerably. The choice of encryption method directly impacts goodput, with hardware acceleration giving a clear edge.

Implementation Differences

Different implementations of QUIC showed varying performance levels. Some libraries are written in high-level languages like Python, which generally leads to slower performance compared to those written in lower-level languages like C or Rust. The lower-level languages allow for more efficient handling of data and better optimizations.

The best-performing implementations in the tests were those that had been carefully optimized for performance. They made use of advanced programming techniques and strategies focused on reducing overhead and maximizing data transfer rates.

Impact of Network Interfaces

The network interface card (NIC) plays a crucial role in how data is transmitted. Optimizations at the NIC level, such as offloading operations, can significantly improve performance. However, the current QUIC implementations were not fully utilizing these features as effectively as they could.

NIC offloading techniques, which allow the NIC to handle some networking tasks usually done by the CPU, were tested but did not show significant performance benefits for QUIC. This contrasts sharply with TCP, where such techniques have proven to be beneficial.

Conclusion

The performance of QUIC protocol implementations varies widely, influenced by factors like buffer sizes, programming language, encryption methods, and NIC optimizations. To ensure QUIC can handle high-speed connections effectively, adjustments such as increasing buffer sizes and leveraging hardware acceleration for encryption are essential.

It is important for developers and researchers to focus on these aspects when creating or optimizing QUIC implementations. Future work should explore further optimizations and the application of NIC offloading techniques to improve QUIC's performance across different environments.

Original Source

Title: QUIC on the Highway: Evaluating Performance on High-rate Links

Abstract: QUIC is a new protocol standardized in 2021 designed to improve on the widely used TCP / TLS stack. The main goal is to speed up web traffic via HTTP, but it is also used in other areas like tunneling. Based on UDP it offers features like reliable in-order delivery, flow and congestion control, streambased multiplexing, and always-on encryption using TLS 1.3. Other than with TCP, QUIC implements all these features in user space, only requiring kernel interaction for UDP. While running in user space provides more flexibility, it profits less from efficiency and optimization within the kernel. Multiple implementations exist, differing in programming language, architecture, and design choices. This paper presents an extension to the QUIC Interop Runner, a framework for testing interoperability of QUIC implementations. Our contribution enables reproducible QUIC benchmarks on dedicated hardware. We provide baseline results on 10G links, including multiple implementations, evaluate how OS features like buffer sizes and NIC offloading impact QUIC performance, and show which data rates can be achieved with QUIC compared to TCP. Our results show that QUIC performance varies widely between client and server implementations from 90 Mbit/s to 4900 Mbit/s. We show that the OS generally sets the default buffer size too small, which should be increased by at least an order of magnitude based on our findings. Furthermore, QUIC benefits less from NIC offloading and AES NI hardware acceleration while both features improve the goodput of TCP to around 8000 Mbit/s. Our framework can be applied to evaluate the effects of future improvements to the protocol or the OS.

Authors: Benedikt Jaeger, Johannes Zirngibl, Marcel Kempf, Kevin Ploch, Georg Carle

Last Update: 2023-09-28 00:00:00

Language: English

Source URL: https://arxiv.org/abs/2309.16395

Source PDF: https://arxiv.org/pdf/2309.16395

Licence: https://creativecommons.org/licenses/by-nc-sa/4.0/

Changes: This summary was created with assistance from AI and may have inaccuracies. For accurate information, please refer to the original source documents linked here.

Thank you to arxiv for use of its open access interoperability.

More from authors

Similar Articles