Nagleův algoritmus , pojmenovaný podle inženýra John Nagle, byl navržen tak, aby redukoval přetížení sítě způsobené "malými paketovými problémy" s aplikacemi TCP . Implementace UNIXu začaly používat algoritmus Nagle v osmdesátých letech a zůstává standardním prvkem TCP dnes.
Jak funguje algoritmus Nagle
Nagleův algoritmus zpracovává data na odesílající straně aplikací TCP metodou nazývanou nagling . Detekuje zprávy o malých formátech a shromažďuje je do větších paketů TCP před odesláním dat přes drát, čímž se zabrání vytváření zbytečně velkého množství malých paketů. Technická specifikace algoritmu Nagleho byla publikována v roce 1984 jako RFC 896. Rozhodování o tom, jak velké množství dat se má akumulovat a jak dlouho čekají mezi zasíláním, jsou pro jeho celkovou výkonnost rozhodující.
Nagling může efektivněji využívat šířku pásma síťového připojení na úkor přidání zpoždění ( latence ). Příklad popsaný v dokumentu RFC 896 ilustruje výhody potenciální šířky pásma a důvod jejich vytvoření:
- Aplikace TCP, která zachycuje klávesové zkratky klávesnice a chce komunikovat každý znak, který je zadán do přijímače, může vygenerovat sérii zpráv, z nichž každý obsahuje 1 bajt dat.
- Předtím, než se tyto zprávy mohou odesílat po síti, musí být každá z nich společně s informacemi o hlavičce TCP, jak je požadováno protokolem TCP / IP. Každá záhlaví se pohybuje v rozmezí od 20 do 60 bajtů.
- Bez příkladu by tato příkladová aplikace mohla generovat síťové zprávy obsahující 95% nebo více informací o hlavičce (nejméně 20 z 21 bytů) a 5% nebo méně skutečných dat z klávesnice odesílatele. Pomocí algoritmu Nagle mohou být stejná data dodána s mnohem méně zpráv a 95% obsahu je informace o klávesnici - velmi úspory šířky pásma.
Aplikace řídí jejich použití algoritmu Nagle s možností programování soketu TCP_NODELAY. Systémy Windows, Linux a Java normálně standardně umožňují Nagle, takže aplikace napsané pro tato prostředí musí specifikovat TCP_NODELAY, když chtějí vypnout algoritmus.
Omezení
Naglovi algoritmus je použitelný pouze s protokolem TCP. Jiné protokoly včetně protokolu UDP jej nepodporují.
Aplikace TCP, které potřebují rychlou odpověď sítě, například telefonní volání z internetu nebo střílečky první hry, nemusí fungovat správně, když je povolena funkce Nagle. Zpoždění způsobená v době, kdy algoritmus potřebuje více času k sestavení menších kusů dat, může vyvolat zřetelné zpoždění na obrazovce nebo v digitálním zvukovém proudu. Tyto aplikace obvykle zakazují službu Nagle.
Tento algoritmus byl původně vyvinut v době, kdy počítačové sítě podporovaly mnohem méně šířky pásma než dnes. Příklad popsaný výše byl založen na zkušenostech Johna Nagla ve společnosti Ford Aerospace v časných osmdesátých letech, kdy se nahodilé obchodování na jejich pomalé, silně zatížené síti na dlouhé vzdálenosti daly dobrý smysl. Tam je stále méně situací, kde síťové aplikace mohou těžit z jeho algoritmu dnes.