Le connessioni TCP (Transmission Control Protocol) sono “il sale” delle comunicazioni attraverso la rete Internet e le reti locali (LAN). Vint Cerf e Bob Kahn, universalmente considerati come i “padri della rete”, inventarono la suite di protocolli TCP/IP nel 1973 quando il Web, ad esempio, ancora non esisteva.
TCP fornisce un trasferimento affidabile dei dati tra dispositivi: gestisce infatti le connessioni, le conferme di ricezione dei pacchetti (ACK), il mantenimento del loro ordine in sequenza, le ritrasmissioni, l’integrità dei dati, esercita il controllo di flusso e della congestione. Le connessioni TCP sono “connection-oriented“: è necessario stabilire una connessione bidirezionale tra due host coinvolti nella comunicazione prima di trasmettere i dati.
Cosa sono le connessioni TCP concorrenti
Le connessioni TCP concorrenti sono i collegamenti simultanei che un sistema è in grado di gestire utilizzando il protocollo di controllo di trasmissione TCP. Come abbiamo visto, ad esempio, nella guida allo strumento Netstat, ogni dispositivo che utilizziamo quotidianamente instaura molteplici connessioni contemporaneamente. Verso host uguali o differenti.
La chiave di volta consiste nel gestire efficacemente un gran numero di connessioni, senza degradare le prestazioni o causare perdite di dati. Queste attività sono appannaggio del kernel del sistema operativo.
Quando un sistema è sottoposto a un carico di lavoro intenso, con numerose connessioni TCP attive in contemporanea (si pensi a un server Web molto trafficato o a un ambiente di rete aziendale con molte transazioni simultanee), la capacità di gestire efficacemente i pacchetti dati diventa cruciale per conservare prestazioni e affidabilità.
Il kernel Linux 6.8 si accinge a migliorare del 40% le connessioni TCP concorrenti
Il kernel Linux 6.8 è accreditato di diverse migliorie che andranno, tra le varie cose, a impattare positivamente sulla gestione delle connessioni TCP concorrenti.
Gli sviluppatori fanno presente, infatti, di aver profondamente rivisto le strutture di rete di base con il preciso obiettivo di ottimizzare l’uso di linee di cache dedicate e aggiungere salvaguardie per evitare correzioni di rotta in futuro, compreso il ripristino delle funzionalità precedenti. Diretta conseguenza di questa intensa attività è la gestione delle connessioni concorrenti, fino al 40% in più o anche oltre, in alcuni casi.
La cache è una memoria più veloce e più vicina al processore rispetto alla memoria principale del sistema, ed è progettata per immagazzinare temporaneamente dati e istruzioni frequentemente utilizzati al fine di ridurre i tempi di accesso. La cache del processore è quindi evidentemente utilizzata in modo intelligente per migliorare le prestazioni delle connessioni di rete.
Il kernel Linux 6.8 diventa in grado di ridurre al minimo l’occupazione delle linee di cache durante l’elaborazione delle strutture di rete di base, in particolare durante le operazioni di trasferimento dati all’interno dello stack TCP/IP e nella definizione del fast path. Nel caso del protocollo TCP, fast path è il percorso ottimizzato o accelerato attraverso il quale sono gestite rapidamente le varie operazioni di rete. Il termine indica la via più diretta ed efficiente per tutte quelle attività che richiedono una gestione rapida, come la trasmissione e la ricezione di dati in condizioni normali di funzionamento.
L’ottimizzazione del fast path in TCP può comportare la riduzione delle operazioni e delle verifiche superflue durante i trasferimenti di dati, migliorando le prestazioni complessive.
Quali sono i benefici in termini di performance sulle varie piattaforme
Gli interventi applicati sul kernel Linux e in arrivo con il futuro rilascio della versione 6.8, sono illustrati dagli ingegneri Google. Che forniscono anche qualche dato molto interessante sulle performance attese sulle varie piattaforme AMD e Intel dopo l’aggiornamento delle distribuzioni GNU/Linux al kernel 6.8:
Il balzo in avanti più netto è ravvisabile da chi utilizza processori AMD EPYC: in questo caso, l’adozione del kernel Linux 6.8, può portare a prestazioni migliorate fino al 44,5%, sia con IPv4 che con IPv6. Inutile dire, quindi, che i server costruiti su piattaforma AMD saranno in grado di assicurare prestazioni nettamente migliori in fase di trasferimento dati.
Il kernel Linux 6.8 segna anche l’arrivo di nuovi driver per il supporto di dispositivi hardware Ethernet: vengono ad esempio citati Octeon CN10K, Broadcom 5760X P7, Qualcomm SM8550 SoC e Texas Instrument DP83TG720S PHY.
Sul fronte WiFi, oltre alla rimozione dei driver ormai obsoleti, sono in corso lavori per implementare il supporto WiFi 7 e migliorare ulteriormente l’Extremely High Throughput (EHT).
Credit immagine in apertura: iStock.com – Funtap