Algoritmus Nagle, pomenovaný po inžinierovi Johnovi Nagleovi, bol navrhnutý na zníženie preťaženia siete spôsobeného problémami s malými paketmi s aplikáciami TCP. Implementácie UNIXu začali používať algoritmus Nagle v 80. rokoch minulého storočia a dnes zostáva štandardnou funkciou TCP.
Ako funguje algoritmus Nagle
Algoritmus Nagle spracováva údaje na odosielacej strane aplikácií TCP metódou nazývanou nagling. Zisťuje malé správy a akumuluje tieto správy do väčších paketov TCP pred odoslaním údajov cez drôt. Tento proces zabraňuje generovaniu zbytočne veľkého počtu malých paketov.
Technická špecifikácia pre algoritmus Nagle bola zverejnená v roku 1984 ako RFC 896. Rozhodnutia o tom, koľko údajov sa má zhromaždiť a ako dlho čakať medzi odoslaniami, sú rozhodujúce pre jeho celkový výkon.
Výhody Nagling
Nagling dokáže efektívne využívať šírku pásma sieťového pripojenia na úkor pridávania oneskorení alebo latencie. Príklad opísaný v RFC 896 ilustruje potenciálne výhody šírky pásma a dôvod jeho vytvorenia:
- Ak chce aplikácia TCP, ktorá zachytáva stlačenia klávesov na klávesnici, komunikovať každý zadávaný znak do prijímača, môže vygenerovať sériu správ, z ktorých každá obsahuje 1 bajt údajov.
- Pred odoslaním týchto správ cez sieť musí byť každá z nich zabalená s informáciami v hlavičke TCP, ako to vyžaduje TCP/IP. Veľkosť každej hlavičky sa pohybuje od 20 do 60 bajtov.
- Bez otravovania by táto vzorová aplikácia generovala sieťové správy pozostávajúce z 95 percent alebo viac informácií hlavičky (najmenej 20 z 21 bajtov) a 5 percent alebo menej skutočných údajov z klávesnice odosielateľa. Použitím algoritmu Nagle by bolo možné doručiť rovnaké údaje pomocou menšieho počtu správ, čo by viedlo k veľkej úspore šírky pásma.
Aplikácie riadia svoje použitie algoritmu Nagle pomocou možnosti programovania soketu TCP_NODELA. Systémy Windows, Linux a Java štandardne povoľujú Nagle. Preto aplikácie napísané pre tieto prostredia musia špecifikovať TCP_NODELAY na vypnutie algoritmu.
Obmedzenia
Aplikácie, ktoré vyžadujú rýchlu odozvu siete, ako sú videohovory a online hry, nemusia fungovať správne, keď je povolený Nagle. Oneskorenia spôsobené tým, že algoritmus potrebuje viac času na zostavenie menších kúskov údajov, môžu spôsobiť viditeľné oneskorenie vizuálne na obrazovke alebo v digitálnom audio streame. Takéto aplikácie zvyčajne vypnú Nagle.
Tento algoritmus bol pôvodne vyvinutý v čase, keď počítačové siete podporovali menšiu šírku pásma ako dnes. Vyššie opísaný príklad bol založený na skúsenostiach Johna Nagleho z Ford Aerospace na začiatku osemdesiatych rokov, kde malo zmysel dotierať kompromisy na pomalej, silne zaťaženej sieti Ford na dlhé vzdialenosti. V súčasnosti je čoraz menej situácií, v ktorých môžu sieťové aplikácie ťažiť z jeho algoritmu.
Algoritmus Nagle je použiteľný iba s TCP. Iné protokoly, ako napríklad UDP, ho nepodporujú.