Algoritmus Nagle, pojmenovaný podle inženýra Johna Nagleho, byl navržen tak, aby snižoval přetížení sítě způsobené malými problémy s pakety u aplikací TCP. Implementace UNIX začaly používat Nagleův algoritmus v 80. letech a dnes zůstávají standardní funkcí TCP.
Jak funguje Nagleův algoritmus
Algoritmus Nagle zpracovává data na straně odesílání aplikací TCP metodou zvanou otravování. Detekuje zprávy malé velikosti a hromadí tyto zprávy do větších paketů TCP před odesláním dat přes drát. Tento proces zabrání generování zbytečně velkého počtu malých paketů. Technická specifikace pro Nagleův algoritmus byla publikována v roce 1984 jako RFC 896. Rozhodnutí o tom, kolik dat se má akumulovat a jak dlouho čekat mezi odesíláním, jsou zásadní pro jeho celkový výkon.
Výhody Naglinga
Nagling může efektivně využívat šířku pásma síťového připojení na úkor přidávání zpoždění nebo latence. Příklad popsaný v RFC 896 ilustruje potenciální výhody šířky pásma a důvod jeho vytvoření:
- Pokud aplikace TCP, která zachycuje stisknutí kláves, chce sdělit každý typovaný znak přijímači, může vygenerovat řadu zpráv, z nichž každá obsahuje 1 bajt dat.
- Před odesláním těchto zpráv po síti musí být každá z nich zabalena s informacemi záhlaví TCP, jak to vyžaduje TCP / IP. Velikost každého záhlaví se pohybuje mezi 20 a 60 bajty.
- Bez otravování by tato ukázková aplikace generovala síťové zprávy skládající se z 95 procent nebo více informací v záhlaví (alespoň 20 z 21 bajtů) a 5 procent nebo méně skutečných dat z klávesnice odesílatele. Pomocí Nagleova algoritmu by mohla být stejná data doručena s použitím menšího počtu zpráv, což by vedlo k velkým úsporám šířky pásma.
Aplikace řídí jejich použití Nagleova algoritmu pomocí možnosti programování soketu TCP_NODELA. Systémy Windows, Linux a Java standardně Nagle standardně povolují. Proto aplikace napsané pro tato prostředí musí specifikovat TCP_NODELAY, aby se algoritmus vypnul.
Omezení
Aplikace, které vyžadují rychlou síťovou odezvu, jako jsou videohovory a online hry, nemusí fungovat dobře, pokud je Nagle povolen. Zpoždění způsobená tím, že algoritmus trvá déle, než shromáždí menší kousky dat, může vizuálně vyvolat znatelné zpoždění na obrazovce nebo v digitálním audio proudu. Takové aplikace obvykle deaktivují Nagle. Tento algoritmus byl původně vyvinut v době, kdy počítačové sítě podporovaly menší šířku pásma než dnes. Výše popsaný příklad byl založen na zkušenostech Johna Nagleho ve společnosti Ford Aerospace na počátku 80. let, kdy dávalo smysl dávat otravné kompromisy na pomalé, silně zatížené síti Ford na dlouhé vzdálenosti. Dnes je stále méně situací, kdy síťové aplikace mohou těžit z jeho algoritmu. Algoritmus Nagle je použitelný pouze s TCP. Jiné protokoly, například UDP, jej nepodporují.