Nagle algoritms, kas nosaukts inženiera Džona Nagla vārdā, tika izstrādāts, lai samazinātu tīkla pārslodzi, ko izraisa nelielas pakešu problēmas ar TCP lietojumprogrammām. UNIX implementācijas sāka izmantot Nagle algoritmu 1980. gados, un tas joprojām ir TCP standarta līdzeklis.
Kā darbojas Nagle algoritms
Nagle algoritms apstrādā datus TCP lietojumprogrammu sūtīšanas pusē, izmantojot metodi, ko sauc par šķelšanos. Tas nosaka maza izmēra ziņojumus un uzkrāj tos lielākās TCP paketēs pirms datu nosūtīšanas pa vadu. Šis process ļauj izvairīties no nevajadzīgi liela skaita mazu pakešu ģenerēšanas.
Nagle algoritma tehniskā specifikācija tika publicēta 1984. gadā kā RFC 896. Lēmumi par to, cik daudz datu uzkrāt un cik ilgi jāgaida starp sūtījumiem, ir būtiski tā vispārējai veiktspējai.
Nagling priekšrocības
Nagling var efektīvi izmantot tīkla savienojuma joslas platumu, palielinot aizkavi vai latentumu. RFC 896 aprakstītais piemērs ilustrē iespējamās joslas platuma priekšrocības un tās izveides iemeslu:
- Ja TCP lietojumprogramma, kas pārtver tastatūras taustiņsitienus, vēlas katru ievadīto rakstzīmi nosūtīt uztvērējam, tā var ģenerēt virkni ziņojumu, katrs satur 1 baitu datu.
- Lai šos ziņojumus varētu nosūtīt tīklā, katrs no tiem ir jāiepako ar TCP galvenes informāciju, kā to pieprasa TCP/IP. Katras galvenes lielums ir no 20 līdz 60 baitiem.
- Bez ņurdēšanas šī lietojumprogrammas piemērs ģenerētu tīkla ziņojumus, kas sastāv no 95 procentiem vai vairāk galvenes informācijas (vismaz 20 no 21 baita) un 5 procentiem vai mazāk faktisko datu no sūtītāja tastatūras. Izmantojot Nagle algoritmu, tos pašus datus varētu piegādāt, izmantojot mazāk ziņojumu, tādējādi ietaupot lielu joslas platumu.
Lietojumprogrammas kontrolē Nagle algoritma izmantošanu, izmantojot TCP_NODELA ligzdas programmēšanas opciju. Windows, Linux un Java sistēmas parasti pēc noklusējuma iespējo Nagle. Tāpēc lietojumprogrammām, kas rakstītas šīm vidēm, ir jānorāda TCP_NODELAY, lai izslēgtu algoritmu.
Ierobežojumi
Lietojumprogrammas, kurām nepieciešama ātra tīkla reakcija, piemēram, videozvani un tiešsaistes spēles, var nedarboties labi, ja ir iespējots Nagle. Kavēšanās, kas rodas, kamēr algoritmam ir nepieciešams papildu laiks, lai apkopotu mazākus datu gabalus, var izraisīt ievērojamu aizkavi vizuāli ekrānā vai digitālajā audio straumē. Šādas lietojumprogrammas parasti atspējo Nagle.
Šis algoritms sākotnēji tika izstrādāts laikā, kad datortīkli atbalstīja mazāku joslas platumu nekā mūsdienās. Iepriekš aprakstītā piemēra pamatā bija Džona Nagla pieredze uzņēmumā Ford Aerospace 80. gadu sākumā, kur bija saprātīgi sarežģīti kompromisi Ford lēnajā, smagi noslogotajā tālsatiksmes tīklā. Mūsdienās kļūst arvien mazāk situāciju, kad tīkla lietojumprogrammas var gūt labumu no viņa algoritma.
Nagle algoritmu var izmantot tikai ar TCP. Citi protokoli, piemēram, UDP, to neatbalsta.