Algoritem Nagle, imenovan po inženirju Johnu Naglu, je bil zasnovan za zmanjšanje prezasedenosti omrežja, ki jo povzročajo težave z majhnimi paketi pri aplikacijah TCP. Implementacije UNIX so začele uporabljati algoritem Nagle v osemdesetih letih prejšnjega stoletja in danes ostaja standardna funkcija TCP.
Kako deluje Naglov algoritem
Algoritem Nagle obdeluje podatke na pošiljateljski strani aplikacij TCP z metodo, imenovano nagling. Zazna sporočila majhne velikosti in jih zbere v večje pakete TCP, preden pošlje podatke po žici. S tem postopkom se izognemo ustvarjanju nepotrebno velikega števila majhnih paketov.
Tehnične specifikacije Naglovega algoritma so bile objavljene leta 1984 kot RFC 896. Odločitve o tem, koliko podatkov je treba zbrati in koliko časa je treba čakati med pošiljanjem, so ključne za njegovo splošno delovanje.
Prednosti naglinga
Nagling lahko učinkovito izkoristi pasovno širino omrežne povezave na račun dodajanja zamud ali zakasnitev. Primer, opisan v RFC 896, ponazarja možne prednosti pasovne širine in razlog za njeno ustvarjanje:
- Če želi aplikacija TCP, ki prestreza pritiske tipk na tipkovnici, vsak vtipkani znak sporočiti prejemniku, lahko ustvari niz sporočil, od katerih vsako vsebuje 1 bajt podatkov.
- Preden se lahko ta sporočila pošljejo po omrežju, mora biti vsako zapakirano z informacijami o glavi TCP, kot zahteva TCP/IP. Vsaka glava je velika med 20 in 60 bajti.
- Brez nagajanja bi ta vzorčna aplikacija ustvarila omrežna sporočila, sestavljena iz 95 odstotkov ali več informacij o glavi (vsaj 20 od 21 bajtov) in 5 odstotkov ali manj dejanskih podatkov iz pošiljateljeve tipkovnice. Z uporabo algoritma Nagle bi lahko iste podatke dostavili z manj sporočili, kar bi povzročilo velike prihranke pasovne širine.
Aplikacije nadzorujejo svojo uporabo algoritma Nagle z možnostjo programiranja vtičnice TCP_NODELA. Sistemi Windows, Linux in Java običajno privzeto omogočajo Nagle. Zato morajo aplikacije, napisane za ta okolja, podati TCP_NODELAY, da izklopijo algoritem.
Omejitve
Aplikacije, ki zahtevajo hiter omrežni odziv, kot so video klici in spletne igre, morda ne bodo delovale dobro, če je Nagle omogočen. Zamude, ki nastanejo, medtem ko algoritem potrebuje dodaten čas za sestavljanje manjših kosov podatkov, lahko sprožijo opazen zamik vizualno na zaslonu ali v digitalnem zvočnem toku. Takšne aplikacije običajno onemogočijo Nagle.
Ta algoritem je bil prvotno razvit v času, ko so računalniška omrežja podpirala manjšo pasovno širino kot danes. Zgoraj opisani primer je temeljil na izkušnjah Johna Nagla pri Ford Aerospace v zgodnjih osemdesetih letih prejšnjega stoletja, kjer je bilo napenjanje kompromisov v Fordovem počasnem, močno obremenjenem omrežju na dolge razdalje smiselno. Danes je vedno manj situacij, v katerih lahko omrežne aplikacije koristijo njegovemu algoritmu.
Algoritem Nagle je uporaben samo s TCP. Drugi protokoli, kot je UDP, ga ne podpirajo.