Algoritem Nagle za omrežno komunikacijo TCP

Algoritem Nagle , imenovan po inženirju Johnu Nagleju, je bil zasnovan za zmanjšanje zastojev v omrežju, ki jih povzročajo "majhne težave s paketom" s TCP aplikacijami . Izvedbe UNIX so začele uporabljati Nagleov algoritem v osemdesetih letih in danes ostaja standardna značilnost TCP.

Kako deluje algoritem Nagle

Nagleov algoritem obdeluje podatke na strani pošiljanja aplikacij TCP z metodo, imenovanim nagging . Odkriva majhna sporočila in jih zbira v večje pakete TCP pred pošiljanjem podatkov preko žice, s čimer se izogiba nastajanju nepotrebno velikega števila majhnih paketov. Tehnična specifikacija za Naglejev algoritem je bila objavljena leta 1984 kot RFC 896. Odločitve o številnih podatkih, ki se kopičijo, in kako dolgo čakati med pošiljkami, so ključnega pomena za njegovo splošno uspešnost.

Nagling lahko učinkoviteje izkoristi pasovno širino omrežne povezave na račun dodajanja zamud ( latence ). Primer, opisan v RFC 896, prikazuje potencialne koristi pasovne širine in razlog za njegovo ustvarjanje:

Aplikacije nadzorujejo njihovo uporabo algoritma Nagle s programsko možnostjo vtičnice TCP_NODELAY. Sistemi Windows, Linux in Java vse običajno omogočajo Nagle privzeto, zato morajo biti programi, napisani v teh okoljih, določiti TCP_NODELAY, če želijo preklopiti algoritem.

Omejitve

Nagleov algoritem je uporaben samo pri TCP. Drugi protokoli, vključno z UDP , ne podpirajo.

Aplikacije TCP, ki potrebujejo hiter odziv omrežja, kot so internetni telefonski klici ali igre s prvimi osebami strelec, morda ne bodo delovale dobro, ko bo omogočeno Nagle. Zamude, ki nastanejo, ko algoritem vzame več časa za združevanje manjših kosov podatkov skupaj, lahko na zaslonu ali v digitalnem avdio toku sprožijo zaznavno zaostajanje . Te aplikacije navadno onemogočajo Nagle.

Ta algoritem je bil prvotno razvit v času, ko so računalniška omrežja podpirala veliko manj pasovne širine kot danes. Primer, opisan zgoraj, je temeljil na izkušnjah John Nagle v Ford Aerospace v zgodnjih 80-ih letih, ko so bili nagnjeni kompromisi na počasni, močno naloženi mreži na dolge razdalje dobro razumeti. Vedno manj je situacij, kjer lahko danes uporabljajo algoritmi za omrežne aplikacije.