Nagle-algoritmi TCP-verkkoviestinnälle

Nagle-algoritmi , jonka nimi on insinööri John Nagle, oli suunniteltu vähentämään verkon ruuhkautumista, joka aiheutui "pienistä pakettiongelmista" TCP-sovelluksilla . UNIX- toteutukset alkoivat käyttää Naglein algoritmia 1980-luvulla, ja se on edelleen TCP: n vakiotoiminta tänään.

Miten Nagle-algoritmi toimii

Naglein algoritmi käsittelee tietoja TCP-sovellusten lähettävälle puolelle menetelmällä nimeltä nagling . Se havaitsee pienikokoiset viestit ja kerää ne suuriksi TCP-paketteiksi ennen tietojen lähettämistä langan yli, jolloin vältetään tarpeettoman suuri määrä pieniä paketteja. Naglein algoritmin tekninen erittely julkaistiin vuonna 1984 RFC 896: ksi. Päätökset siitä, että paljon tietoja kertyy ja kuinka kauan odottaa lähetysten välillä, ovat kriittisiä sen yleiselle suorituskyvylle.

Nagling voi tehokkaammin hyödyntää verkkoyhteyden kaistanleveyttä viivästysten lisäämisen kustannuksella ( latenssi ). Esimerkki, joka on kuvattu RFC 896: ssä, kuvaa mahdollisia kaistanleveyden etuja ja syytä sen luomiseen:

Sovellukset hallitsevat Nagle-algoritmin käyttöä TCP_NODELAY- liitännän ohjelmointivaihtoehdolla. Windows-, Linux- ja Java-järjestelmät kaikki normaalisti mahdollistavat Nagan oletusarvoisesti, joten kyseisille ympäristöille kirjoitettujen sovellusten on määritettävä TCP_NODELAY, kun halutaan vaihtaa algoritmi pois.

rajoitukset

Naglein algoritmi on käytettävissä vain TCP: n kanssa. Muut protokollat ​​kuten UDP eivät tue sitä.

TCP-sovellukset, jotka tarvitsevat nopeaa verkkovastausta, kuten Internet-puhelupuhelut tai ensiapupolkut, eivät ehkä toimi hyvin, kun Nagle on otettu käyttöön. Viivästykset, jotka aiheutuvat, kun algoritmi vie enemmän aikaa koota pienempiä paloja, voi aiheuttaa havaittavissa olevan viiveen visuaalisesti näytöllä tai digitaalisessa äänivirrassa. Nämä sovellukset yleensä estävät Naglein.

Tätä algoritmia kehitettiin alun perin silloin, kun tietokoneverkot tukivat paljon vähemmän kaistanleveyttä kuin nykyään. Edellä kuvattu esimerkki perustui John Naglein Ford Aerospace -kokemuksiin 1980-luvun alussa, jossa jyrkät kompromissit niiden hitaasta, raskaasti kuormitetusta pitkän matkan verkostosta saivat aikaan järkevän. On yhä vähemmän tilanteita, joissa verkko-sovellukset voivat hyötyä algoritmistaan ​​tänään.