A Nagle algoritmus TCP hálózati kommunikációhoz

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:

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.