Insener John Nagle'i järgi nime saanud Nagle'i algoritm loodi TCP-rakenduste väikestest pakettprobleemidest põhjustatud võrgu ülekoormuse vähendamiseks. UNIX-i juurutused hakati kasutama Nagle'i algoritmi 1980. aastatel ja see jääb tänapäeval TCP standardfunktsiooniks.
Kuidas Nagle'i algoritm töötab
Nagle'i algoritm töötleb TCP-rakenduste saatva poole andmeid meetodil, mida nimetatakse närimiseks. See tuvastab väikese suurusega sõnumid ja kogub need sõnumid suuremateks TCP-pakettideks enne andmete saatmist juhtme kaudu. See protsess väldib tarbetult suure hulga väikeste pakettide genereerimist.
Nagle'i algoritmi tehniline spetsifikatsioon avaldati 1984. aastal kui RFC 896. Otsused selle kohta, kui palju andmeid koguda ja kui kaua saatmiste vahel oodata, on selle üldise jõudluse jaoks üliolulised.
Naglingi eelised
Nagling saab tõhus alt kasutada võrguühenduse ribalaiust viivituste või latentsuse lisamise arvelt. RFC 896 kirjeldatud näide illustreerib võimalikku ribalaiuse eelist ja selle loomise põhjust:
- Kui TCP-rakendus, mis peatab klaviatuuri klahvivajutused, soovib edastada vastuvõtjale iga sisestatava märgi, võib see genereerida sõnumiseeria, millest igaüks sisaldab 1 baiti andmeid.
- Enne kui neid sõnumeid saab üle võrgu saata, peab igaüks neist olema pakitud TCP päise teabega, nagu nõuab TCP/IP. Iga päise suurus jääb vahemikku 20–60 baiti.
- Ilma näägutamiseta genereeriks see näidisrakendus võrgusõnumeid, mis koosnevad 95 protsendist või enamast päiseteabest (vähem alt 20 baidist 21-st) ja 5 protsendist või vähemast tegelikest andmetest saatja klaviatuurilt. Nagle'i algoritmi kasutades saaks samu andmeid edastada vähemate sõnumitega, mille tulemuseks on suur ribalaiuse kokkuhoid.
Rakendused juhivad Nagle algoritmi kasutamist TCP_NODELA pesa programmeerimisvalikuga. Windowsi, Linuxi ja Java süsteemid lubavad tavaliselt vaikimisi Nagle'i. Seetõttu peavad nende keskkondade jaoks kirjutatud rakendused algoritmi väljalülitamiseks määrama TCP_NODELAY.
Piirangud
Rakendused, mis nõuavad kiiret võrgureaktsiooni, nagu videokõned ja võrgumängud, ei pruugi hästi töötada, kui Nagle on lubatud. Viivitused, mis tekivad, kui algoritmil kulub väiksemate andmete kogumiseks lisaaega, võivad ekraanil või digitaalses helivoos visuaalselt esile kutsuda märgatava viivituse. Sellised rakendused keelavad tavaliselt Nagle'i.
See algoritm töötati algselt välja ajal, mil arvutivõrgud toetasid vähem ribalaiust kui praegu. Ülalkirjeldatud näide põhines John Nagle'i kogemustel Ford Aerospace'is 1980. aastate alguses, kus Fordi aeglase, tugev alt koormatud pikamaavõrgustiku närivad kompromissid olid mõistlikud. Tänapäeval on üha vähem olukordi, kus võrgurakendused saavad tema algoritmist kasu saada.
Nagle'i algoritm on kasutatav ainult TCP-ga. Teised protokollid, nagu UDP, seda ei toeta.