Algoritmus Nagle pro síťovou komunikaci TCP

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 ří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.