Algoritmus Nagle pre sieťovú komunikáciu TCP

Algoritmus Nagle , pomenovaný po inžinierovi Johnom Nagleom, bol navrhnutý tak, aby znížil preťaženie siete spôsobené "malými paketovými problémami" s aplikáciami TCP . Implementácia UNIXu začala používať Naglov algoritmus v 80. rokoch minulého storočia a zostáva štandardnou súčasťou TCP.

Ako funguje algoritmus Nagle

Nagleov algoritmus spracováva dáta na odosielajúcej strane TCP aplikácií metódou nazývanou nagling . Detekuje správy s malou veľkosťou a nahromadí ich do väčších paketov TCP pred odoslaním údajov cez kábel, čím sa zabráni generovaniu zbytočne veľkého množstva malých paketov. Technická špecifikácia algoritmu Nagleho bola publikovaná v roku 1984 ako RFC 896. Rozhodnutia o množstve údajov, ktoré sa majú akumulovať, a o tom, ako dlho čakať medzi odosielaním, sú rozhodujúce pre celkovú výkonnosť.

Nagling môže efektívnejšie využiť šírku pásma pripojenia k sieti na úkor pridávania oneskorení ( latencia ). Príklad uvedený v dokumente RFC 896 ilustruje výhody potenciálnej šírky pásma a dôvod jej vytvorenia:

Aplikácie kontrolujú používanie algoritmu Nagle s možnosťou programovania TCP_NODELAY socket . Systémy Windows, Linux a Java štandardne štandardne umožňujú Nagle, takže aplikácie napísané pre tieto prostredia musia špecifikovať TCP_NODELAY, keď chcú vypnúť algoritmus.

obmedzenia

Naglov algoritmus je použiteľný len s protokolom TCP. Ostatné protokoly vrátane UDP ho nepodporujú.

Aplikácie TCP, ktoré potrebujú rýchlu sieťovú odpoveď, napríklad internetové telefónne hovory alebo strieľačky z prvej osoby, nemusí fungovať správne, keď je Nagle povolený. Oneskorené oneskorenia, kedy algoritmus trvá dlhší čas na zostavovanie menších kusov dát, môže spôsobiť značné oneskorenie vizuálne na obrazovke alebo v digitálnom audio toku. Tieto aplikácie zvyčajne zakážu Nagle.

Tento algoritmus bol pôvodne vyvinutý v čase, keď počítačové siete podporovali oveľa menej šírky pásma, ako dnes. Príklad uvedený vyššie bol založený na skúsenostiach Johna Nagla v spoločnosti Ford Aerospace na začiatku osemdesiatych rokov minulého storočia, kedy nabádajúce kompromisy na ich pomalé, silne naplnené diaľkové siete mali dobrý zmysel. Existuje čoraz menej situácií, keď sieťové aplikácie môžu využiť jeho algoritmus dnes.