TCP-võrgu kommunikatsiooni Nagle algoritm

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:

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.