Nagleov algoritam za TCP mrežnu komunikaciju

Nagleov algoritam , nazvan po inženjeru John Nagle, osmišljen je za smanjenje zagušenja mreže zbog "malih problema s paketom" s TCP aplikacijama . UNIX implementacije počele su upotrebljavati Nagleov algoritam u osamdesetim godinama, a danas ostaje standardna značajka TCP-a.

Kako funkcionira Nagleov algoritam

Nagleov algoritam obrađuje podatke na strani za slanje TCP aplikacija metodom pod nazivom nagling . Otkriva poruke male veličine i akumulira ih u veće TCP pakete prije slanja podataka preko žice, čime se izbjegava generiranje nepotrebno velikog broja malih paketa. Tehnička specifikacija za Nagleov algoritam objavljena je 1984. godine kao RFC 896. Odluke za puno podataka koji se akumuliraju i koliko dugo treba čekati između šalica ključni su za njegovu cjelokupnu izvedbu.

Nagling može učinkovitije iskoristiti širinu pojasa mrežne veze na štetu dodavanja kašnjenja ( kašnjenja ). Primjer opisan u RFC 896 ilustrira potencijalne prednosti propusnosti i razlog za njegovo stvaranje:

Aplikacije kontroliraju upotrebu algoritma Nagle uz opciju programiranja TCP_NODELAY socket . Windows, Linux i Java sustavi obično omogućuju Nagle prema zadanim postavkama pa aplikacije napisane za te okruženja moraju navesti TCP_NODELAY kada žele isključiti algoritam.

Ograničenja

Nagleov algoritam je moguće koristiti samo s TCP-om. Ostali protokoli, uključujući UDP , ne podržavaju.

TCP aplikacije koje zahtijevaju brzu reakciju na mrežu, kao što su internetske telefonske pozive ili prve pucačke igre, možda neće dobro funkcionirati kada je omogućen Nagle. Zakašnjenja koja nastaju dok algoritam uzima dodatno vrijeme za skupljanje manjih komada podataka može izazvati vidljivo zastoj vizualno na zaslonu ili u digitalnom audio streamu. Ove aplikacije obično onemogućuju Nagle.

Ovaj je algoritam izvorno razvijen u vrijeme kada računalne mreže podržavaju mnogo manju propusnost nego danas. Gore opisani primjer temelji se na iskustvima John Naglea u Ford Aerospaceu početkom osamdesetih godina prošlog stoljeća, pri čemu su naglašavajući sporazumi o njihovoj sporoj, jako naprćenoj mreži s velikim udaljenostima imali dobar osjećaj. Sve je manje situacija u kojima mrežne aplikacije danas mogu imati koristi od njegovog algoritma.