Nagle algoritam, nazvan po inženjeru Johnu Nagleu, dizajniran je da smanji zagušenje mreže uzrokovano problemima malih paketa sa TCP aplikacijama. UNIX implementacije su počele da koriste Nagle algoritam 1980-ih, i on je danas standardna karakteristika TCP-a.
Kako radi Nagle algoritam
Nagle algoritam obrađuje podatke na strani slanja TCP aplikacija metodom koja se zove nagling. On detektuje poruke male veličine i akumulira te poruke u veće TCP pakete prije slanja podataka preko žice. Ovaj proces izbjegava stvaranje nepotrebno velikog broja malih paketa.
Tehnička specifikacija za Nagle algoritam objavljena je 1984. godine kao RFC 896. Odluke o tome koliko podataka će se akumulirati i koliko dugo čekati između slanja kritične su za njegovu ukupnu izvedbu.
Prednosti naglinga
Nagling može efikasno iskoristiti propusni opseg mrežne veze na račun dodavanja kašnjenja ili kašnjenja. Primjer opisan u RFC 896 ilustruje potencijalne prednosti propusnog opsega i razlog za njegovo stvaranje:
- Ako TCP aplikacija koja presreće pritiske na tastaturi želi da komunicira svaki znak koji se upisuje prijemniku, može generirati niz poruka, od kojih svaka sadrži 1 bajt podataka.
- Pre nego što se ove poruke mogu poslati preko mreže, svaka mora biti upakovana sa informacijama TCP zaglavlja kako to zahteva TCP/IP. Svako zaglavlje ima veličinu između 20 i 60 bajtova.
- Bez prigovaranja, ovaj primjer aplikacije bi generirao mrežne poruke koje se sastoje od 95 posto ili više informacija zaglavlja (najmanje 20 od 21 bajta) i 5 posto ili manje stvarnih podataka sa tastature pošiljaoca. Koristeći Nagle algoritam, isti podaci se mogu isporučiti koristeći manje poruka, što rezultira velikom uštedom propusnog opsega.
Aplikacije kontrolišu svoju upotrebu Nagle algoritma sa opcijom programiranja TCP_NODELA socketa. Windows, Linux i Java sistemi obično podrazumevano omogućavaju Nagle. Stoga, aplikacije napisane za ta okruženja moraju specificirati TCP_NODELAY da bi isključili algoritam.
Ograničenja
Aplikacije koje zahtijevaju brz mrežni odgovor, kao što su video pozivi i online igre, možda neće raditi dobro kada je Nagle omogućen. Kašnjenja uzrokovana dok algoritmu treba dodatno vrijeme za sastavljanje manjih komada podataka mogu izazvati vidljivo zaostajanje vizualno na ekranu ili u digitalnom audio streamu. Takve aplikacije obično onemogućuju Nagle.
Ovaj algoritam je prvobitno razvijen u vrijeme kada su kompjuterske mreže podržavale manji propusni opseg nego danas. Gore opisani primjer baziran je na iskustvima Johna Naglea u Ford Aerospaceu ranih 1980-ih, gdje je hvatanje kompromisa sa Fordovom sporom, teško opterećenom mrežom za velike udaljenosti imalo smisla. Danas je sve manje situacija u kojima mrežne aplikacije mogu imati koristi od njegovog algoritma.
Nagle algoritam je upotrebljiv samo sa TCP. Drugi protokoli, kao što je UDP, ga ne podržavaju.