Přehled algoritmu Nagle pro síťovou komunikaci TCP

Obsah:

Přehled algoritmu Nagle pro síťovou komunikaci TCP
Přehled algoritmu Nagle pro síťovou komunikaci TCP
Anonim

Algoritmus Nagle, pojmenovaný po inženýrovi Johnu Nagleovi, byl navržen tak, aby snížil zahlcení sítě způsobené problémy s malými pakety u aplikací TCP. Implementace UNIXu začaly používat algoritmus Nagle v 80. letech minulého století a dnes zůstává standardní funkcí TCP.

Jak funguje algoritmus Nagle

Algoritmus Nagle zpracovává data na odesílající straně TCP aplikací metodou zvanou nagling. Detekuje zprávy malé velikosti a shromažďuje tyto zprávy do větších paketů TCP před odesláním dat po drátě. Tento proces zabraňuje generování zbytečně velkého počtu malých paketů.

Technická specifikace pro algoritmus Nagle byla publikována v roce 1984 jako RFC 896. Rozhodnutí o tom, kolik dat se má nashromáždit a jak dlouho čekat mezi odesláními, jsou zásadní pro jeho celkový výkon.

Výhody Nagling

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 chce aplikace TCP, která zachycuje stisky kláves na klávesnici, komunikovat každý zadávaný znak do přijímače, může vygenerovat sérii 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 hlavičky 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 sestávající 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í algoritmu Nagle by mohla být stejná data doručena pomocí menšího počtu zpráv, což vedlo k velkým úsporám šířky pásma.

Aplikace řídí své použití algoritmu Nagle s možností programování soketu TCP_NODELA. Systémy Windows, Linux a Java obvykle standardně umožňují Nagle. Proto musí aplikace napsané pro tato prostředí specifikovat TCP_NODELAY, aby se algoritmus vypnul.

Image
Image

Omezení

Aplikace, které vyžadují rychlou síťovou odezvu, jako jsou videohovory a online hry, nemusí fungovat správně, když je zapnutý Nagle. Zpoždění způsobená tím, že algoritmus potřebuje více času na sestavení menších kousků dat, mohou způsobit znatelné zpoždění vizuálně na obrazovce nebo v digitálním audio streamu. Takové aplikace obvykle Nagle deaktivují.

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 Naglea ve Ford Aerospace na počátku 80. let, kde mělo smysl dohánět kompromisy na pomalé, silně zatížené síti Fordu na dlouhé vzdálenosti. V dnešní době 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, jako je UDP, jej nepodporují.

Doporučuje: