Insinööri John Naglen mukaan nimetty Nagle-algoritmi on suunniteltu vähentämään TCP-sovellusten pienistä pakettiongelmista aiheutuvia verkon ruuhkautumista. UNIX-toteutukset alkoivat käyttää Nagle-algoritmia 1980-luvulla, ja se on edelleen TCP:n vakioominaisuus.
Kuinka Nagle-algoritmi toimii
Nagle-algoritmi käsittelee tietoja TCP-sovellusten lähetyspuolella menetelmällä, jota kutsutaan nalkutukseksi. Se havaitsee pienikokoiset viestit ja kerää ne suurempiin TCP-paketteihin ennen tiedon lähettämistä langan yli. Tämä prosessi välttää tarpeettoman suurten pienten pakettien luomisen.
Nagle-algoritmin tekniset tiedot julkaistiin vuonna 1984 nimellä RFC 896. Päätökset siitä, kuinka paljon dataa kerätään ja kuinka kauan lähetysten välillä on odotettavaa, ovat kriittisiä sen yleisen suorituskyvyn kann alta.
Naglingin edut
Nagling voi hyödyntää tehokkaasti verkkoyhteyden kaistanleveyttä lisäämällä viiveitä tai latenssia. RFC 896:ssa kuvattu esimerkki havainnollistaa mahdollisia kaistanleveyden etuja ja syytä sen luomiseen:
- Jos TCP-sovellus, joka sieppaa näppäimistön näppäinpainalluksia, haluaa välittää jokaisen kirjoitettavan merkin vastaanottajalle, se voi luoda sarjan viestejä, joista jokainen sisältää yhden tavun dataa.
- Ennen kuin näitä viestejä voidaan lähettää verkon yli, jokainen niistä on pakattava TCP/IP:n edellyttämällä TCP-otsikkotiedolla. Jokaisen otsikon koko on 20–60 tavua.
- Ilman nalkutusta tämä esimerkkisovellus luo verkkoviestejä, jotka koostuvat vähintään 95 prosentista otsikkotiedoista (vähintään 20 tavusta 21:stä) ja enintään 5 prosentista todellisista tiedoista lähettäjän näppäimistöltä. Nagle-algoritmia käyttämällä samat tiedot voitaisiin toimittaa pienemmällä määrällä viestejä, mikä johtaisi suuriin kaistanleveyden säästöihin.
Sovellukset ohjaavat Nagle-algoritmin käyttöä TCP_NODELA socket -ohjelmointivaihtoehdolla. Windows-, Linux- ja Java-järjestelmät sallivat yleensä Naglen oletuksena. Siksi näihin ympäristöihin kirjoitettujen sovellusten on määritettävä TCP_NODELAY algoritmin kytkemiseksi pois päältä.
Rajoitukset
Nopeaa verkkovastausta vaativat sovellukset, kuten videopuhelut ja online-pelit, eivät välttämättä toimi hyvin, kun Nagle on käytössä. Viiveet, jotka aiheutuvat siitä, että algoritmi vie ylimääräistä aikaa pienempien tietopalojen kokoamiseen, voivat laukaista havaittavan viiveen visuaalisesti näytöllä tai digitaalisessa äänivirrassa. Tällaiset sovellukset poistavat yleensä Naglen käytöstä.
Tämä algoritmi kehitettiin alun perin aikana, jolloin tietokoneverkot tukivat vähemmän kaistanleveyttä kuin nykyään. Yllä kuvattu esimerkki perustui John Naglen kokemuksiin Ford Aerospacessa 1980-luvun alussa, jolloin Fordin hitaassa, raskaasti kuormitetussa pitkän matkan verkossa oli järkevää tehdä kompromisseja. Nykyään on yhä vähemmän tilanteita, joissa verkkosovellukset voivat hyötyä hänen algoritmistaan.
Nagle-algoritmia voi käyttää vain TCP:n kanssa. Muut protokollat, kuten UDP, eivät tue sitä.