Per OpenBSD è stata implementata una configurazione che include la modalità TCP_NODELAY per l'intero sistema

Job Snijders, un esperto sviluppatore di OpenBSD, presidente di uno dei comitati dell'IETF (Internet Engineering Task Force), autore di 11 RFC relativi al routing e RPKI, nonché creatore di IRRd (Internet Routing Registry Daemon), ha pubblicato un insieme di patch per OpenBSD che aggiungono il nuovo parametro sysctl «net.inet.tcp.nodelay» per disabilitare l'algoritmo di Nagle a livello di sistema. Questo parametro solleva gli sviluppatori di applicazioni dall'obbligo di impostare il flag TCP_NODELAY per socket individuali.

L'algoritmo di Nagle viene utilizzato per aggregare piccoli messaggi al fine di ridurre il traffico. L'algoritmo sospende l'invio di nuovi segmenti TCP fino a ricevere conferma della ricezione dei dati precedentemente inviati o fino al verificarsi di un timeout. Ad esempio, senza aggregazione, l'invio di 1 byte comporta l'invio di ulteriori 40 byte con gli header TCP e IP del pacchetto, mentre con l'uso dell'algoritmo di Nagle, i messaggi inviati fino alla ricezione della conferma dal lato remoto vengono accumulati e inviati in un unico pacchetto. A causa dell'ottimizzazione "delayed ACK", che ritarda l'invio dei pacchetti ACK, il segnale attraverso i pacchetti di conferma in realtà non funziona, e l'invio dei messaggi accumulati avviene solo al verificarsi di un timeout.

Schneiders è dell'opinione che, nelle moderne realtà, l'algoritmo di Nagle, sviluppato in un'epoca in cui più utenti competevano per la larghezza di banda di 1200 baud, sia obsoleto e che nelle reti ad alta velocità da lui ci sono più danni che benefici. Recentemente, anche Marc Brooker di Amazon Web Services (AWS) ha espresso una posizione simile. I motivi per disattivare l'algoritmo di Nagle di default possono essere trovati in un articolo pubblicato alcuni giorni fa.

Per disattivare l'algoritmo di Nagle, è disponibile l'opzione TCP_NODELAY, che può essere impostata per singoli socket di rete. La modalità TCP_NODELAY è stata a lungo abilitata in molte applicazioni OpenBSD, tra cui openssh, httpd, iscsid, relayd, bgpd e unwind, e secondo Sneyders, è giunto il momento di offrire la possibilità di attivarla per tutti i socket TCP a livello di sistema. Sneyders propone anche di discutere l'implementazione di TCP_NODELAY come impostazione predefinita e di rendere l'algoritmo di Nagle un'opzione separata attivabile.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster