A John Nagle mérnöke által elnevezett Nagle algoritmust úgy tervezték, hogy csökkentsék a "kis csomagproblémák" TCP-alkalmazások által okozott hálózati torlódásokat. A UNIX- implementációk 1980-ban kezdték használni a Nagle algoritmust, és ma is a TCP szabványos jellemzője.
A Nagle-algoritmus működése
A Nagle algoritmusa a TCP-alkalmazások küldő oldalán lévő adatokat nagling módszerrel dolgozza fel. Kis méretű üzeneteket észlel és nagyobb TCP csomagokba gyűjt, mielőtt adatokat küld a vezetéken, elkerülve ezáltal a szükségtelenül nagyszámú kis csomag előállítását. A Nagle algoritmusának műszaki leírását 1984-ben adták ki RFC 896-nak. A nagy mennyiségű adatgyűjtésre és a küldemények közötti várakozásra vonatkozó döntések döntő fontosságúak az általános teljesítmény szempontjából.
A Nagling hatékonyabban tudja kihasználni a hálózati kapcsolat sávszélességét a késések ( latencia ) hozzáadásának kárára. Az RFC 896-ban leírt példa bemutatja a lehetséges sávszélesség előnyeit és annak létrehozásának okait:
- A TCP-alkalmazás, amely lehallgatja a billentyűzet billentyűleütéseket, és minden egyes karaktert szeretne kommunikálni a vevőkészülékkel, egy sor üzenetet hozhat létre, amelyek mindegyike 1 bájtnyi adatot tartalmaz.
- Mielőtt ezeket az üzeneteket át lehetne küldeni a hálózaton, mindegyiket a TCP / IP által előírt TCP fejléc információkkal együtt kell csomagolni. Minden fejléc 20 és 60 byte közötti méretben van.
- Nyomaték nélkül ez a példa alkalmazás 95% vagy annál több fejléc információból (21 bájtból legalább 20-ból) és 5% vagy kevesebb tényleges adatból álló hálózati üzeneteket generálna a feladó billentyűzetéről. A Nagle algoritmust használva ugyanazt az adatot helyettesíthetnénk sokkal kevesebb üzenetben, és a tartalom 95% -a billentyűzetinformáció - nagy sávszélesség-megtakarítás.
Az alkalmazások szabályozzák a Nagle algoritmus használatát a TCP_NODELAY foglalat programozási opcióval. A Windows, a Linux és a Java rendszerek általában alapállapotban engedélyezik a Nagle-ot, ezért az ilyen környezetekben írt alkalmazásoknak meg kell adniuk a TCP_NODELAY-t, ha kikapcsolják az algoritmust.
korlátozások
A Nagle algoritmusa csak TCP-vel használható. Más protokollok, beleértve az UDP-t , nem támogatják.
A gyors hálózati válaszadást igénylő TCP-alkalmazások, például az internetes telefonhívások vagy az első személyű lövöldözős játékok, esetleg nem működnek jól, ha a Nagle engedélyezve van. Az algoritmust okozó késések, plusz időt töltenek a kisebb adatcsomagok összeszerelésére, vizuálisan észlelhető késedelmet okozhatnak egy képernyőn vagy egy digitális hangfolyamban. Ezek az alkalmazások általában letiltják a Nagle-t.
Ezt az algoritmust eredetileg akkor fejlesztették ki, amikor a számítógépes hálózatok sokkal kevesebb sávszélességet támogattak, mint ma. A fenti példa a John Nagle Ford Aerospace tapasztalataira épült 1980-as évek elején, ahol a lassú, nagy teherbírású távhálózatokon észrevehető kompromisszumokat észleltek. Számos olyan helyzet áll fenn, ahol a hálózati alkalmazások az algoritmusának előnyeit élvezhetik.