Valutazione delle prestazioni del protocollo QUIC in condizioni di alta velocità
Uno sguardo ai miglioramenti delle prestazioni di QUIC rispetto ai protocolli tradizionali.
― 5 leggere min
Indice
QUIC è un nuovo protocollo introdotto per migliorare le prestazioni del traffico web. Punta a rendere le connessioni più veloci e sicure rispetto ai protocolli tradizionali come TCP e TLS. L'obiettivo è accelerare il trasferimento di dati su internet. QUIC utilizza UDP come base, permettendo di inviare dati in un modo che può ridurre i ritardi e migliorare l'efficienza.
QUIC ha crittografia integrata, il che significa che i dati sono sicuri fin dall'inizio. Supporta anche più flussi di dati in una sola connessione, migliorando le prestazioni complessive. Questo articolo discute come le diverse implementazioni di QUIC si comportano, specialmente in condizioni ad alta velocità.
Panoramica del Protocollo
QUIC è stato sviluppato per affrontare i problemi con i protocolli esistenti come TCP, che possono essere lenti nel stabilire connessioni a causa di handshakes e conferme complessi. QUIC semplifica questo processo combinando la configurazione della connessione e la crittografia in meno passaggi. Questo riduce il tempo necessario per avviare la comunicazione.
Il protocollo è progettato per essere affidabile e garantire che i dati arrivino nell'ordine corretto. Tuttavia, consente anche di inviare dati senza aspettare che i messaggi precedenti vengano confermati, il che può accelerare il trasferimento complessivo dei dati. QUIC riesce a farlo attraverso meccanismi di conferma unici che aiutano a gestire il flusso dei dati in modo più efficace.
Test di Prestazione
Per valutare le prestazioni di QUIC, i ricercatori hanno utilizzato diversi server e client con varie versioni di QUIC. Si sono concentrati su quanto bene queste implementazioni si comportassero su connessioni ad alta velocità, guardando specificamente a quanti dati potessero essere trasferiti con successo in un dato tempo.
I test sono stati condotti su un collegamento 10G, che è significativamente più veloce delle normali connessioni internet domestiche. Questa configurazione ha aiutato a identificare i limiti e i punti di forza di ciascuna implementazione in condizioni ottimali.
Goodput
Risultati: Misurazione delIl goodput è una misura di quanti dati utili possono essere trasmessi su una connessione di rete. Tiene conto dei dati che vengono effettivamente consegnati all'utente finale, escludendo qualsiasi sovraccarico dei protocolli. Le misurazioni del goodput per le implementazioni di QUIC hanno mostrato una vasta gamma di prestazioni.
Alcune implementazioni hanno raggiunto tassi di goodput molto alti, mentre altre si sono comportate male. Queste differenze possono essere attribuite a diversi fattori, tra cui il linguaggio di programmazione utilizzato, il modo in cui i dati vengono gestiti e le ottimizzazioni fatte in ciascuna implementazione.
Dimensioni dei Buffer
Una scoperta significativa è stata l'impatto delle dimensioni dei buffer sulle prestazioni. I buffer sono aree di memorizzazione temporanee che trattengono i dati prima di essere inviati o dopo essere stati ricevuti. Nei test, le dimensioni predefinite dei buffer sono risultate essere troppo piccole, portando a perdite di pacchetti. Quando le dimensioni dei buffer sono state aumentate, il goodput è migliorato notevolmente.
Buffer più grandi aiutano a prevenire la perdita di dati, il che è cruciale per mantenere una connessione stabile, specialmente ad alte velocità. È stato raccomandato di aumentare la dimensione predefinita del buffer per migliorare le prestazioni di QUIC nelle applicazioni reali.
Crittografia e Elaborazione
QUIC utilizza metodi di crittografia per proteggere i dati. I test hanno valutato due algoritmi di crittografia principali: AES e ChaCha20. I risultati hanno indicato che entrambi si comportavano in modo simile in termini di goodput. Tuttavia, utilizzare l'accelerazione hardware per AES ha migliorato notevolmente le prestazioni.
Per le implementazioni senza supporto hardware per AES, le prestazioni sono crollate considerevolmente. La scelta del metodo di crittografia influisce direttamente sul goodput, con l'accelerazione hardware che offre un chiaro vantaggio.
Differenze di Implementazione
Diverse implementazioni di QUIC hanno mostrato livelli di prestazione variabili. Alcune librerie sono scritte in linguaggi di alto livello come Python, che generalmente portano a prestazioni più lente rispetto a quelle scritte in linguaggi a basso livello come C o Rust. I linguaggi a basso livello consentono una gestione dei dati più efficiente e migliori ottimizzazioni.
Le implementazioni che hanno ottenuto le migliori prestazioni nei test sono state quelle che erano state ottimizzate accuratamente per le prestazioni. Hanno fatto uso di tecniche e strategie di programmazione avanzate focalizzate sulla riduzione del sovraccarico e massimizzazione delle velocità di trasferimento dei dati.
Impatto delle Interfacce di Rete
La scheda di interfaccia di rete (NIC) gioca un ruolo cruciale in come i dati vengono trasmessi. Le ottimizzazioni a livello di NIC, come il caricamento di operazioni, possono migliorare notevolmente le prestazioni. Tuttavia, le attuali implementazioni di QUIC non stavano sfruttando queste funzionalità così efficacemente come potrebbero.
Le tecniche di caricamento della NIC, che consentono alla NIC di gestire alcune operazioni di rete solitamente eseguite dalla CPU, sono state testate ma non hanno mostrato benefici significativi per le prestazioni di QUIC. Questo contrasta fortemente con TCP, dove tali tecniche si sono dimostrate vantaggiose.
Conclusione
Le prestazioni delle implementazioni del protocollo QUIC variano ampiamente, influenzate da fattori come dimensioni dei buffer, linguaggio di programmazione, metodi di crittografia e ottimizzazioni della NIC. Per garantire che QUIC possa gestire efficacemente connessioni ad alta velocità, sono essenziali aggiustamenti come l'aumento delle dimensioni dei buffer e l'uso dell'accelerazione hardware per la crittografia.
È importante per sviluppatori e ricercatori concentrarsi su questi aspetti quando creano o ottimizzano implementazioni di QUIC. I lavori futuri dovrebbero esplorare ulteriori ottimizzazioni e l'applicazione di tecniche di caricamento della NIC per migliorare le prestazioni di QUIC in diversi ambienti.
Titolo: QUIC on the Highway: Evaluating Performance on High-rate Links
Estratto: 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.
Autori: Benedikt Jaeger, Johannes Zirngibl, Marcel Kempf, Kevin Ploch, Georg Carle
Ultimo aggiornamento: 2023-09-28 00:00:00
Lingua: English
URL di origine: https://arxiv.org/abs/2309.16395
Fonte PDF: https://arxiv.org/pdf/2309.16395
Licenza: https://creativecommons.org/licenses/by-nc-sa/4.0/
Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.
Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.