Nagu algoritms TCP tīkla komunikācijai

Nagles algoritms , kas nosaukts pēc inženiera Džona Nagla nosaukuma, tika izstrādāts, lai samazinātu tīkla sastrēgumus, ko rada "mazu pakešu problēmas", izmantojot TCP lietojumprogrammas . UNIX implementācijas sāka izmantot Nagle algoritmu 1980, un tas joprojām ir standarta iezīme TCP šodien.

Kā darbojas Nagle algoritms

Nagle algoritms apstrādā datus par TCP lietojumprogrammu nosūtīšanas pusi, izmantojot nulles metodi. Pirms datu nosūtīšanas pa vadu tā konstatē maza izmēra ziņojumus un uzkrāj tos lielākos TCP paketēs, tādējādi izvairoties no nevajadzīgi liela skaita mazu pakešu radīšanas. Nagle algoritma tehniskās specifikācijas tika publicētas 1984.gadā kā RFC 896. Lēmumi par lielu datu uzkrāšanu un to, cik ilgi jāgaida starp nosūtītajiem, ir kritiski svarīgi tā vispārējai veiktspējai.

Nagling var efektīvāk izmantot tīkla pieslēguma joslas platumu , uzrādot kavējumus ( latentuma ). Piemērs, kas aprakstīts RFC 896, parāda potenciālās joslas platuma priekšrocības un tās izveidošanas iemeslu:

Pieteikumi kontrolē to Nagle algoritma izmantošanu ar TCP_NODELAY ligzdas programmēšanas opciju. Windows, Linux un Java sistēmas parasti noklusējuma režīmā iespējo Nagle, tāpēc tiem, kas rakstīti šīm vidēm, ir jānorāda TCP_NODELAY, kad vēlaties mainīt algoritmu.

Ierobežojumi

Nagle algoritms ir izmantojams tikai ar TCP. Citi protokoli, tostarp UDP, to neatbalsta.

TCP lietojumprogrammas, kurām nepieciešama ātra tīkla atbilde, piemēram, interneta tālruņa zvana vai pirmās personas šāvēja spēles, var nedarboties, ja ir aktivizēta programma Nagle. Aizkavēšanās, kas rodas, kamēr algoritms aizņem papildu laiku, lai apkopotu mazākas datu kopas, var vizuāli izraisīt novēlošanos uz ekrāna vai ciparu audio straumē. Šīs programmas parasti atspējo Nagle.

Šis algoritms sākotnēji tika izstrādāts laikā, kad datoru tīkli atbalstīja daudz mazāku joslas platumu, nekā to dara šodien. Iepriekš aprakstītais piemērs tika balstīts uz Džona Nagle pieredzi Ford Aerospace 1980. gadu sākumā, kad lēnais, lielapjoma piekrauts tālsatiksmes tīkls bija labā izpratnē. Ir arvien mazāk situāciju, kad tīkla lietojumprogrammas var gūt labumu no viņa algoritma šodien.