Job Snijders, en vÀlrenommerad utvecklare av OpenBSD, ordförande för en av kommittéerna inom IETF (Internet Engineering Task Force), författare till 11 RFC:er relaterade till routning och RPKI, samt skapare av IRRd (Internet Routing Registry Daemon), har publicerat en uppsÀttning patchar för OpenBSD som lÀgger till en ny sysctl-parametern "net.inet.tcp.nodelay" för att inaktivera Nagle-algoritmen pÄ systemövergripande nivÄ. Parametern befriar applikationsutvecklare frÄn att behöva stÀlla in TCP_NODELAY-flaggor för enskilda sockets.
Nagle-algoritmen anvÀnds för att aggreggera smÄ meddelanden för att minska trafiken. Algoritmen pausar sÀndningen av nya TCP-segment tills ett meddelande om mottagande av tidigare skickade data har mottagits eller tills en tidsgrÀns uppnÄtts. Till exempel, utan att anvÀnda aggregation, nÀr 1 byte skickas, skickas dessutom 40 byte med TCP- och IP-rubrikerna i paketet, och med Nagle-algoritmen ackumuleras meddelandena som skickats innan bekrÀftelse frÄn den avlÀgsna sidan kommer, och skickas i ett enda paket. PÄ grund av optimeringen "delayed ACK", som försenar sÀndningen av ACK-paket, fungerar signalen via bekrÀftelsepaketen i praktiken inte, och sÀndningen av ackumulerade meddelanden utförs nÀr tidsgrÀnsen uppnÄs.
Snijders anser att Nagle-algoritmen, som utvecklades i en tid dÄ flera anvÀndare tÀvlade om en överföringskapacitet pÄ 1200 baud, Àr förÄldrad i höghastighetsnÀtverk och att den gör mer skada Àn nytta. Nyligen har ocksÄ Marc Brooker frÄn Amazon Web Services (AWS) uttryckt en liknande Äsikt. Argument för att inaktivera Nagle-algoritmen som standard kan lÀsas i en artikel som publicerades för nÄgra dagar sedan.
För att inaktivera Nagle-algoritmen finns det en TCP_NODELAY-alternativ som kan stÀllas in för enskilda nÀtverks sockets. TCP_NODELAY-lÀget har lÀnge stÀllts in i mÄnga OpenBSD-applikationer, bland dem openssh, httpd, iscsid, relayd, bgpd och unwind, och enligt Snijders Àr det dags att ge möjlighet att aktivera det för alla TCP-sockets pÄ systemnivÄ. Snijders föreslÄr ocksÄ att diskutera frÄgan om att aktivera TCP_NODELAY som standard och att klassa Nagle-algoritmen som ett alternativ som kan aktiveras.
KĂ€lla: opennet.ru
