Nagle algoritam za komunikaciju TCP mreže

Algoritam Nagle , nazvan po inženjeru John Nagle, bio je dizajniran da smanji zagušenje mreže uzrokovanih "malim problemima u paketima" sa TCP aplikacijama . Implementacije UNIX- a počele su da koriste Nagleov algoritam tokom osamdesetih godina i danas ostaje standardna karakteristika TCP-a.

Kako funkcioniše Nagle algoritam

Nagleov algoritam obrađuje podatke na strani za slanje TCP aplikacija metodom koja se naziva nagging . On prepoznaje male poruke i akumulira ih u veće TCP pakete pre slanja podataka preko žice, čime izbegava stvaranje nepotrebno velikog broja malih paketa. Tehnička specifikacija za Nagleov algoritam objavljena je 1984. godine kao RFC 896. Odluke o velikom broju podataka koje se akumuliraju i koliko dugo čekaju između pošiljki su ključne za njegovu opštu performansu.

Nagling može efikasnije koristiti propusni opseg mrežne veze na račun dodavanja kašnjenja ( latence ). Primjer opisan u RFC 896 ilustruje potencijalne koristi propusnog opsega i razlog za njegovo stvaranje:

Aplikacije kontrolišu njihovu upotrebu Nagle algoritma sa TCP_NODELAY opcijom programiranja soketa . Windows, Linux i Java sistemi obično omogućavaju Nagle podrazumevano, tako da aplikacije koje su napisane za ta okruženja treba da odrede TCP_NODELAY kada želite da isključite algoritam.

Ograničenja

Nagleov algoritam je upotrebljiv samo sa TCP-om. Drugi protokoli, uključujući UDP , ne podržavaju.

TCP aplikacije kojima je potreban brzi mrežni odgovor, kao što su Internet telefonski pozivi ili igre prvog čoveka, možda neće raditi dobro kada je Nagle omogućen. Kašnjenja koja su prouzrokovana dok algoritam uzima više vremena da zajedno sakuplja manja udubljenja podataka može aktivno da prikaže vidljiv lag na ekranu ili u digitalnom audio tokau. Ove aplikacije obično onemogućavaju Nagle.

Ovaj algoritam je prvobitno bio razvijen u vrijeme kada su računarske mreže podržavale mnogo manje bandwidth nego danas. Primer koji je gore opisan zasnovan je na iskustvima John Naglea u Ford Aerospace početkom osamdesetih godina prošlog vijeka, gdje su nagomilane kompromitacije na njihovoj sporovoj, snažno opterećeni mreži na daljinu napravile dobar smisao. Postoji sve manje situacija u kojima mrežne aplikacije mogu imati koristi od svog algoritma danas.