"Nagle" algoritmas TCP tinklo ryšiui

" Nagle" algoritmas , pavadintas inžinieriaus Johno Nagle, buvo sukurtas taip, kad būtų sumažintas tinklo "perkrovos", susijusios su "mažų paketų problemomis", naudojant TCP programas . "Unix" diegimai pradėjo naudoti "Nagle" algoritmą 1980-aisiais, ir šiandien ji yra standartinė TCP funkcija.

Kaip veikia Nagle algoritmas

Nagle algoritmas apdoroja duomenis TCP programų siuntimo pusėje metodu, vadinamu nagling . Prieš siunčiant duomenis per laidą, jis aptinka mažus pranešimus ir kaupia juos į didesnius TCP paketus, taip išvengiant nereikalingo didelio skaičiaus mažų paketų generavimo. Nagle algoritmo techninė specifikacija buvo paskelbta 1984 m. Kaip RFC 896. Sprendimai dėl daugybės duomenų, kuriuos reikia kaupti ir kiek ilgai laukti tarp siunčiamų, yra labai svarbūs jos bendram rezultatyvumui.

Nagling gali efektyviau panaudoti tinklo ryšio pralaidumą , pridedant vėlavimų ( latentinis ) sąskaita. RFC 896 aprašytas pavyzdys iliustruoja galimus pranašumo pranašumus ir jo sukūrimo priežastį:

Programos kontroliuoja "Nagle" algoritmo naudojimą su "TCP_NODELAY" lizdo programavimo parinktimi. "Windows", "Linux" ir "Java" sistemos paprastai įjungia "Nagle" pagal nutylėjimą, todėl tokioms aplinkoms skirtos programos turi nurodyti TCP_NODELAY, norint išjungti algoritmą.

Apribojimai

Nagle algoritmas gali būti naudojamas tik su TCP. Kiti protokolai, įskaitant UDP , nepalaiko.

TCP programoms, kurioms reikia greito tinklo atsako, pvz., Interneto telefono skambučiai ar pirmojo asmens šaudyklių žaidimai, gali būti netinkami, kai "Nagle" yra įjungtas. Dėl vėlavimų, atsiradusių tuo metu, kai algoritmas užtrunka papildomai laiko surinkti mažesnius duomenų gabalus kartu, ekrane ar skaitmeniniame garso sraute vizualiai gali sukelti pastebimą vėlavimą . Šios programos paprastai neleidžia "Nagle".

Šis algoritmas iš pradžių buvo sukurtas tuo metu, kai kompiuterių tinklai palaikė žymiai mažesnę juostos plotį nei šiandien. Pirmiau aprašytas pavyzdys buvo pagrįstas Johno Nagle'o patirtimi "Ford Aerospace" 1980-ųjų pradžioje, kai jų lėtas, sunkiai prikrautais tolimojo susisiekimo tinklais buvo sunku suprasti. Yra vis mažiau situacijų, kai šiandien tinklo programos gali pasinaudoti savo algoritmu.