Nageli algoritm , mille nimi on insener John Nagle, oli mõeldud selleks, et vähendada TCP rakendustes "väikeste paketiprobleemide" põhjustatud võrgu ülekoormust. UNIX-i rakendused hakkasid 1980-ndatel kasutama Nagle'i algoritmi ning see on TCPi standardseks tunnuseks täna.
Kuidas Nagle algoritm toimib
Nagle'i algoritm töötleb andmeid TCP-rakenduste saatmise poole meetodiga, mida nimetatakse naglingiks . See tuvastab väikesed sõnumid ja kogub need suurematesse TCP-pakettidesse, enne kui saatma andmed üle traadi, vältides sellega väikeste pakettide tarbetult suure hulga genereerimist. Nagle'i algoritmi tehniline spetsifikatsioon avaldati aastal 1984 RFC 896-ga. Otsuste tegemine palju andmete kogumiseks ja nende ooteaegade saatmine on selle üldise jõudluse seisukohast kriitiline.
Nagling võib tõhusamalt kasutada võrguühenduse ribalaiust viivituste lisamise arvelt ( latentsus ). RFC 896-s kirjeldatud näide illustreerib potentsiaalse ribalaiusega seotud eelised ja selle loomise põhjused:
- TCP-rakendus, mis katab klaviatuuri klahvivajutused ja soovib suhelda iga vastuvõtule sisestatud märgi abil, võib luua rida sõnumeid, millest igaüks sisaldab 1 baidi andmeid.
- Enne nende sõnumite saatmist kogu võrgust, tuleb igaüks TCP / IP-ga nõustuda koos TCP-päiste teabega. Iga päis on vahemikus 20 kuni 60 baiti.
- Ilma napsautamiseta genereerib see näide rakendus saatja klaviatuurilt võrgu sõnumeid, mis koosnevad 95% või enamast päiseinformatsioonist (vähemalt 20-st 21-st baitist) ja 5% või vähem tegelikust andmeid saatja klaviatuurist. Nagle algoritmi kasutades saab samu andmeid edastada, kasutades selleks palju vähem sõnumeid ja 95% sisu klaviatuuriandmetest, mis on väga suure ribalaiusega säästev.
Rakendused kontrollivad Nagle algoritmi kasutamist TCP_NODELAY pistikprogrammeerimise võimalusega. Kõik Windowsi, Linuxi ja Java-süsteemid võimaldavad vaikimisi Nagle'i lubada, nii et nende keskkondade jaoks kirjutatud rakendused peavad algoritmi lülitamisel soovima määrata TCP_NODELAY.
Piirangud
Nagle algoritm on kasutatav ainult TCP-ga. Muud protokollid, sealhulgas UDP, ei toeta seda.
Kui Nagle on lubatud, ei pruugi TCP-rakendused, mis vajavad kiiret võrguvastast reageerimist, näiteks Interneti-telefoni helistaja või esimest inimest mängijaga mängimine. Viivitused, mis tekivad siis, kui algoritm võtab rohkem aega väiksemate andmete kogumite kokkupanekuks, võib ekraanil või digitaalsel helivoogul visuaalselt ajendada märgatavat aeglustumist. Need rakendused keelavad tavaliselt Nagle.
Algoritm oli algselt välja töötatud ajal, mil arvutivõrgud toetasid palju vähem ribalaiust kui nad täna. Eespool kirjeldatud näide põhines John Nagle'i kogemustel Ford Aerospace'is 1980ndate aastate alguses, kus nende aeglase ja suure koormusega pika vahemaa võrgustikel tekkinud kompromissid olid mõistlik. Seal on üha vähem olukordi, kus võrgupraktikad saavad täna oma algoritmi kasu saada.