Förslag om att aktivera TCP_NODELAY som standard

Marc Brooker, ingenjör pÄ Amazon Web Services (AWS), har avfÀrdat missuppfattningar om hur man förbÀttrar effektiviteten i överföringen av smÄ meddelanden med algoritmen Nagle, som anvÀnds som standard i TCP/IP-stacken. Rekommendationerna gÄr ut pÄ att stÀnga av den standardmÀssiga Nagle-algoritmen, vilket i vissa applikationer kan göras genom att stÀlla in TCP_NODELAY-optionen för nÀtverks-sockets via anropet setsockopt, vilket redan görs i projekt som Node.js och curl.

Nagle-algoritmen gör det möjligt att aggregera smĂ„ meddelanden för att minska trafiken — den stoppar sĂ€ndningen av nya TCP-segment tills bekrĂ€ftelse pĂ„ mottagande av tidigare skickade data har erhĂ„llits. Till exempel, utan aggregering, skickas 40 byte TCP- och IP-headerinformation nĂ€r 1 byte skickas. I dagens lĂ€ge leder anvĂ€ndningen av Nagle-algoritmen till mĂ€rkbara fördröjningar, som Ă€r oacceptabla för interaktiva och distribuerade applikationer.

Tre huvudargument för att anvÀnda TCP_NODELAY som standard, vilket stÀnger av Nagle-algoritmen:

  • Inkompatibilitet mellan Nagle-algoritmen och optimeringen 'delayed ACK', dĂ€r ACK-svar inte skickas omedelbart utan efter mottagande av svarande data. Problemet Ă€r att i Nagle-algoritmen Ă€r mottagandet av ACK-paketet en signal för att skicka aggregerade data, och om ACK-paketet inte har kommit in, sker sĂ€ndningen vid tidouts. Detta skapar en ond cirkel dĂ€r ACK-paketet som signal inte fungerar, eftersom den andra parten inte fĂ„r data pĂ„ grund av ackumulering pĂ„ avsĂ€ndarens sida, och avsĂ€ndaren skickar dem inte förrĂ€n timeouten intrĂ€ffar eftersom ACK-paketet inte har mottagits.
  • RFC för Nagle-algoritmen antogs 1984, och den Ă€r inte anpassad till parametrarna i dagens högpresterande nĂ€tverk och servrar i datacenter, vilket leder till problem med responsivitet. Fördröjningen mellan att skicka en förfrĂ„gan och erhĂ„lla ett svar (RTT) i moderna nĂ€tverk Ă€r 0,5 ms + nĂ„gra millisekunder vid datacenterutbyte inom samma region + upp till hundra millisekunder vid global överföring. Under dessa millisekunder kan en modern server utföra en enorm mĂ€ngd arbete.
  • Moderna distribuerade applikationer skickar inte lĂ€ngre enskilda databyte, utan aggregationen av smĂ„ data genomförs vanligtvis pĂ„ applikationsnivĂ„. Även om storleken pĂ„ de anvĂ€ndbara data Ă€r nĂ„gra fĂ„ byte, ökar den faktiska storleken pĂ„ den skickade informationen avsevĂ€rt efter att serialisering, anvĂ€ndning av API-omslag i JSON och sĂ€ndning med TLS-kryptering har tillĂ€mpats. Besparingen av 40 byte blir mindre relevant.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster