28 Febbraio 2023

TCP Fast Open, migliorare le performance di rete e abbattere la latenza del TCP tramite il TFO

Cos’è TCP Fast Open e come implementarlo correttamente su sistemi Linux e Web Server Apache e NGINX

Introduzione

L’esperienza dell’utente è uno degli elementi chiave per il successo di qualsiasi sito web, e la velocità di caricamento è un fattore cruciale che influisce sulla percezione dell’utente. Inoltre, la velocità del sito web ha un impatto significativo sulla posizione sui motori di ricerca, poiché i motori di ricerca attribuiscono un peso sempre maggiore alla velocità del sito web nell’algoritmo di ranking.

Per migliorare la velocità del sito web, uno dei fattori importanti da considerare è il TTFB (Time To First Byte), ovvero il tempo trascorso tra la richiesta del client al server e la ricezione della prima risposta dal server. Un TTFB basso può contribuire ad aumentare la velocità di caricamento del sito web e migliorare l’esperienza dell’utente.

Tuttavia, il processo di connessione tra client e server può rappresentare una limitazione importante per il TTFB. Il three-way handshake del protocollo TCP richiede infatti tre messaggi per stabilire una connessione, e questo processo può richiedere del tempo aggiuntivo, aumentando il TTFB e rallentando il sito web.

Per ovviare a questo problema, è stato sviluppato TCP Fast Open, una tecnologia che consente di ridurre il tempo necessario per stabilire una connessione TCP, migliorando le prestazioni di rete e la velocità di caricamento del sito web. Implementando TCP Fast Open, il server può inviare dati al client già durante la fase di handshake, riducendo il tempo necessario per stabilire la connessione e migliorando il TTFB e la latenza del sito web.

Cos’è TCP Fast Open?

TCP Fast Open (TFO) è una tecnologia di ottimizzazione delle prestazioni di rete del protocollo TCP (Transmission Control Protocol) che consente di ridurre i tempi di apertura delle connessioni di rete. In pratica, TFO prevede l’invio di dati critici durante la fase di apertura della connessione stessa, senza dover attendere l’esito del three-way handshake, che normalmente avviene tra il client e il server. In questo modo, si riducono i ritardi di apertura della connessione, migliorando le prestazioni di rete complessive.

Obiettivi del post

L’obiettivo di questo post è di fornire una panoramica completa su TCP Fast Open, spiegando il funzionamento della tecnologia, i vantaggi e gli svantaggi, e come abilitarla su server e client. In particolare, il post si rivolge a chi ha una conoscenza di base del protocollo TCP e vuole approfondire l’argomento, ad esempio per migliorare le prestazioni della propria rete o per comprendere meglio i meccanismi di funzionamento del protocollo.

Il presente post vuol avere sia finalità introduttiva che implementativa per utenti generici ed addetti ai lavori come sistemisti informatici che vorrebbero migliorare l’efficienza della loro rete, le performance del TCP/IP e migliorarne la velocità soprattutto in un contesto in cui si voglia utilizzare il protocollo HTTP o HTTP/2 piuttosto che HTTP3 o QUIC che normalmente adopera connessioni UDP piuttosto che TCP.

Comprendere il funzionamento del TCP

Il modello di comunicazione del TCP

Il protocollo TCP è uno dei protocolli di comunicazione più utilizzati a livello di rete. Si basa su un modello di comunicazione a flusso di byte, ovvero i dati vengono inviati e ricevuti in forma di flusso continuo di byte, senza interruzioni. Il protocollo garantisce l’affidabilità della comunicazione, ovvero garantisce che i dati vengano ricevuti correttamente e in ordine, attraverso l’uso di numeri di sequenza e conferme di ricezione.

Il three-way handshake

Per stabilire una connessione TCP tra un client e un server, viene utilizzato un meccanismo di handshake a tre vie, chiamato “three-way handshake”. In pratica, il client invia un pacchetto di SYN al server, il server risponde con un pacchetto SYN/ACK, e infine il client invia un pacchetto di ACK per confermare la connessione. Questo meccanismo di handshake garantisce che il client e il server siano sincronizzati e pronti a scambiare dati in modo affidabile.

Three Way Handshake

La congestione di rete

Il protocollo TCP è anche dotato di un meccanismo di controllo della congestione di rete. In pratica, il protocollo monitora costantemente le prestazioni della rete, per evitare di inviare troppi dati in contemporanea e causare congestione di rete. Se la rete risulta congestionata, il protocollo riduce la velocità di trasmissione dei dati, per evitare di peggiorare la situazione.

In generale, il protocollo TCP è stato progettato per garantire un’affidabilità elevata della comunicazione, ma a discapito delle prestazioni di rete in termini di velocità di trasmissione dei dati.

TCP Fast Open: come funziona

Il three-way handshake di TFO

TCP Fast Open prevede un meccanismo di handshake alternativo a quello tradizionale del three-way handshake. In pratica, durante la fase di apertura della connessione, il client invia un pacchetto di SYN con un campo di dati aggiuntivo (cookie TFO), che contiene informazioni sulla connessione precedente. Il server può utilizzare queste informazioni per autenticare la richiesta del client e rispondere immediatamente con un pacchetto SYN/ACK, contenente anch’esso un cookie TFO. Il client può quindi inviare subito i dati critici della connessione, senza attendere l’esito del three-way handshake completo.

TCP Fast Open

Come TFO riduce i ritardi di apertura della connessione

TCP Fast Open riduce i tempi di apertura della connessione, in quanto consente al client di inviare subito i dati critici della connessione, senza dover attendere l’esito del three-way handshake completo. Questo meccanismo è particolarmente utile in caso di richieste ripetitive tra lo stesso client e server, ad esempio durante il download di contenuti da un sito web. In questo modo, si riducono i ritardi di apertura della connessione e si migliorano le prestazioni di rete complessive.

In generale, TCP Fast Open è una tecnologia di ottimizzazione delle prestazioni di rete del protocollo TCP che consente di ridurre i tempi di apertura delle connessioni di rete, migliorando le prestazioni di rete complessive.

Implementazione di TCP Fast Open

Supporto dei sistemi operativi

TCP Fast Open è supportato da diversi sistemi operativi, tra cui Linux, macOS e Windows 10. In particolare, a partire dalla versione 3.6 del kernel Linux, TCP Fast Open è abilitato di default. In macOS, TCP Fast Open è stato introdotto nella versione 10.11. In Windows 10, TCP Fast Open è supportato a partire dalla versione 1607.

Abilitare TCP Fast Open su Linux

Per abilitare TCP Fast Open su Linux, è necessario che il sistema operativo abbia un kernel che supporti questa tecnologia. In particolare, il supporto per TCP Fast Open è stato introdotto nella versione 3.7 del kernel Linux, quindi è importante verificare che il kernel del sistema sia aggiornato a questa versione o successiva.

Una volta verificata la versione del kernel, è possibile abilitare TCP Fast Open modificando le impostazioni del kernel tramite il file di configurazione /etc/sysctl.conf. Per farlo, è necessario aggiungere la seguente riga al file di configurazione:

net.ipv4.tcp_fastopen=3

Questa impostazione abilita TCP Fast Open sul sistema, consentendo al server di inviare dati al client durante la fase di handshake TCP.

È importante notare che per utilizzare TCP Fast Open, anche il software del server deve supportare questa tecnologia. Ad esempio, se si utilizza Apache come server web, è possibile abilitare TCP Fast Open aggiungendo la seguente riga al file di configurazione:

AcceptFilter http none

Per abilitare TCP Fast Open su NGINX, è necessario verificare che la versione di NGINX in uso supporti questa tecnologia. In particolare, il supporto per TCP Fast Open è stato introdotto a partire dalla versione 1.5.7 di NGINX.

NGINX Banner

Una volta verificata la versione di NGINX, è possibile abilitare TCP Fast Open aggiungendo la seguente riga alla configurazione del server NGINX:

tcp_fastopen on;

Questa impostazione consente al server NGINX di inviare dati al client durante la fase di handshake TCP, migliorando le prestazioni di rete e la velocità del sito web.

È importante notare che, come per Linux, anche il client deve supportare TCP Fast Open per poter sfruttare appieno i vantaggi di questa tecnologia. In caso contrario, la tecnologia verrà disabilitata.

Inoltre, è possibile configurare ulteriori parametri per TCP Fast Open in NGINX, come ad esempio il numero massimo di connessioni TCP Fast Open per ogni client o la dimensione massima dei dati che possono essere inviati durante la fase di handshake TCP.

Inoltre, è necessario verificare che il client supporti TCP Fast Open, in quanto in caso contrario la tecnologia non potrà essere utilizzata.

Limitazioni di TCP Fast Open

TCP Fast Open ha alcune limitazioni che ne limitano l’utilizzo in determinati scenari. Ad esempio, non è consigliabile utilizzare TCP Fast Open in caso di connessioni a siti web non affidabili, in quanto potrebbe essere vulnerabile ad attacchi di tipo “spoofing” o “man-in-the-middle”. Inoltre, TCP Fast Open richiede che il server abbia supporto per questa tecnologia, altrimenti non è possibile utilizzarla.

Conclusioni

Vantaggi di TCP Fast Open

TCP Fast Open offre diversi vantaggi in termini di prestazioni di rete. In particolare, consente di ridurre i tempi di apertura delle connessioni di rete e migliorare le prestazioni complessive della rete. Ciò si traduce in una maggiore efficienza delle applicazioni che utilizzano il protocollo TCP, in particolare quelle che richiedono una comunicazione rapida e frequente tra client e server.

Sfide nell’implementazione di TCP Fast Open

Nonostante i vantaggi, l’implementazione di TCP Fast Open presenta alcune sfide. In particolare, come abbiamo visto, TCP Fast Open richiede che il server abbia supporto per questa tecnologia, il che potrebbe limitare la sua utilità in alcuni scenari. Inoltre, l’utilizzo di TCP Fast Open potrebbe comportare alcuni rischi di sicurezza, in particolare in caso di connessioni a siti web non affidabili.

Hai dei dubbi? Non sai da dove iniziare? Contattaci !

Abbiamo tutte le risposte alle tue domande per aiutarti nella giusta scelta.

Chatta con noi

Chatta direttamente con il nostro supporto prevendita.

0256569681

Contattaci telefonicamente negli orari d’ufficio 9:30 – 19:30

Contattaci online

Apri una richiesta direttamente nell’area dei contatti.

INFORMAZIONI

Managed Server S.r.l. è un player italiano di riferimento nel fornire soluzioni avanzate di sistemistica GNU/Linux orientate all’alta performance. Con un modello di sottoscrizione dai costi contenuti e prevedibili, ci assicuriamo che i nostri clienti abbiano accesso a tecnologie avanzate nel campo dell’hosting, server dedicati e servizi cloud. Oltre a questo, offriamo consulenza sistemistica su sistemi Linux e manutenzione specializzata in DBMS, IT Security, Cloud e molto altro. Ci distinguiamo per l’expertise in hosting di primari CMS Open Source come WordPress, WooCommerce, Drupal, Prestashop, Joomla, OpenCart e Magento, affiancato da un servizio di supporto e consulenza di alto livello adatto per la Pubblica Amministrazione, PMI, ed aziende di qualsiasi dimensione.

Red Hat, Inc. detiene i diritti su Red Hat®, RHEL®, RedHat Linux®, e CentOS®; AlmaLinux™ è un marchio di AlmaLinux OS Foundation; Rocky Linux® è un marchio registrato di Rocky Linux Foundation; SUSE® è un marchio registrato di SUSE LLC; Canonical Ltd. detiene i diritti su Ubuntu®; Software in the Public Interest, Inc. detiene i diritti su Debian®; Linus Torvalds detiene i diritti su Linux®; FreeBSD® è un marchio registrato di The FreeBSD Foundation; NetBSD® è un marchio registrato di The NetBSD Foundation; OpenBSD® è un marchio registrato di Theo de Raadt. Oracle Corporation detiene i diritti su Oracle®, MySQL®, e MyRocks®; Percona® è un marchio registrato di Percona LLC; MariaDB® è un marchio registrato di MariaDB Corporation Ab; REDIS® è un marchio registrato di Redis Labs Ltd. F5 Networks, Inc. detiene i diritti su NGINX® e NGINX Plus®; Varnish® è un marchio registrato di Varnish Software AB. Adobe Inc. detiene i diritti su Magento®; PrestaShop® è un marchio registrato di PrestaShop SA; OpenCart® è un marchio registrato di OpenCart Limited. Automattic Inc. detiene i diritti su WordPress®, WooCommerce®, e JetPack®; Open Source Matters, Inc. detiene i diritti su Joomla®; Dries Buytaert detiene i diritti su Drupal®. Amazon Web Services, Inc. detiene i diritti su AWS®; Google LLC detiene i diritti su Google Cloud™ e Chrome™; Facebook, Inc. detiene i diritti su Facebook®; Microsoft Corporation detiene i diritti su Microsoft®, Azure®, e Internet Explorer®; Mozilla Foundation detiene i diritti su Firefox®. Apache® è un marchio registrato di The Apache Software Foundation; PHP® è un marchio registrato del PHP Group. CloudFlare® è un marchio registrato di Cloudflare, Inc.; NETSCOUT® è un marchio registrato di NETSCOUT Systems Inc.; ElasticSearch®, LogStash®, e Kibana® sono marchi registrati di Elastic N.V. Questo sito non è affiliato, sponsorizzato, o altrimenti associato a nessuna delle entità sopra menzionate e non rappresenta nessuna di queste entità in alcun modo. Tutti i diritti sui marchi e sui nomi di prodotto menzionati sono di proprietà dei rispettivi detentori di copyright. Ogni altro marchio citato appartiene ai propri registranti. MANAGED SERVER® è un marchio registrato a livello Europeo da MANAGED SERVER SRL Via Enzo Ferrari, 9 62012 Civitanova Marche (MC) Italia.

SOLO UN ATTIMO !

Vorresti vedere come gira il tuo WooCommerce sui nostri sistemi senza dover migrare nulla ? 

Inserisci l'indirizzo del tuo sito WooCommerce e otterrai una dimostrazione navigabile, senza dover fare assolutamente nulla e completamente gratis.

No grazie, i miei clienti preferiscono il sito lento.
Torna in alto