Mis on Nagle’i algoritm?

Nagle’i algoritm on süsteem, mida kasutatakse võrkude, eelkõige Interneti, tõhususe parandamiseks. Süsteem hõlmab andmete tarbetult väikeste partiidena saatmise vältimist, mis suurendab ka saadetavate partiide arvu. Kuigi Nagle’i algoritmil on oma kasutusotstarve, võib see teiste võrgukommunikatsiooni elementidega halvasti suhelda.

John Nagle’i nimelise mehe loodud Nagle’i algoritm töötab võrkudega, mis kasutavad TCP/IP-protokolle. Need on protokollid või “reeglid” selle kohta, kuidas võrk andmeid edastab. Kuigi protokollid võivad kehtida mis tahes võrgus, on need kõige sagedamini seotud Internetiga.

Algoritm käsitleb andmete edastamise viisi väikeste tükkidena ehk “pakettidena”. Iga pakett sisaldab mõningaid andmeid ja päise teavet, mis on samaväärne füüsilise ümbriku saatja ja saaja aadressiga. Pakett sisaldab ka kontrollsummat, mis on matemaatiline ekvivalent pakkenimekirja lisamisele, et saaja teaks, et kogu paketi sisu on turvaliselt kohale jõudnud.

Kuigi see süsteem töötab tavaliselt hästi, võib see olla ebatõhus, kui andmetükid on eriti väikesed. Äärmuslikel juhtudel võivad paketi andmed olla ainult ühe baidi suurused, kuid päise teave võtab enda alla 40 baiti olenemata andmete suurusest. See on ligikaudu võrdne kellelegi kirja kirjutamisega, kuid seejärel selle tükeldamisega ja iga sõna eraldi ümbrikus saatmisega. Kuna sõnumeid saadetakse binaarselt, on see veelgi ebaefektiivsem. Lisaks ribalaiuse raiskamisele suurendab see ka saadetavate pakettide arvu, mis suurendab edastusprotsessis vea ilmnemise võimalust.

Nagle algoritmi põhimõte seisneb selles, et pärast paketi saatmist ootab edastav arvuti enne järgmise paketi saatmist, kuni juhtub üks kahest asjast. Kui ta saab kinnituse, et viimane pakett on vastu võetud, saadab ta kohe oma andmed, olenemata nende suurusest. Vastasel juhul ootab see, kuni tal on saatmiseks “täis” pakett. Kui see juhtub, saadab see kogu paketi olenemata sellest, kas eelmine pakett on vastu võetud või mitte.

Mõnes olukorras võib Nagle algoritm teha rohkem kahju kui kasu. Üks näide on online-videomängud, mis on loodud eeldusel, et andmed saadetakse kohe. Kui kasutatakse Nagle’i algoritmi, lükatakse osa andmeid edasi, kuni täielik pakett on valmis. Sellel võib olla märgatav mõju sellele, kui hästi mäng mängijale tundub, ja aeglustab tõhusalt nende reaktsiooniaega võrreldes teiste mängijatega.