Una descripción general del algoritmo de Nagle para la comunicación de red TCP
El algoritmo de Nagle, que lleva el nombre del ingeniero John Nagle, fue diseñado para reducir la congestión de la red causada por problemas de paquetes pequeños con TCP aplicaciones. UNIX Las implementaciones comenzaron a usar el algoritmo de Nagle en la década de 1980 y sigue siendo una característica estándar de TCP en la actualidad.
Cómo funciona el algoritmo de Nagle
El algoritmo de Nagle procesa datos en el lado de envío de las aplicaciones TCP mediante un método llamado nagling. Detecta mensajes de pequeño tamaño y los acumula en paquetes TCP más grandes antes de enviar datos a través del cable. Este proceso evita la generación de cantidades innecesariamente grandes de paquetes pequeños.
La especificación técnica del algoritmo de Nagle se publicó en 1984 como RFC 896. Las decisiones sobre cuántos datos acumular y cuánto tiempo esperar entre envíos son fundamentales para su rendimiento general.
Los beneficios de nagling
Nagling puede utilizar eficientemente el banda ancha de una conexión de red a expensas de agregar retrasos, o
- Si una aplicación TCP que intercepta las pulsaciones del teclado desea comunicar cada carácter que se escribe a un receptor, puede generar una serie de mensajes, cada uno de los cuales contiene 1 byte de datos.
- Antes de que estos mensajes se puedan enviar a través de la red, cada uno debe estar empaquetado con información de encabezado TCP como lo requiere TCP / IP. Cada encabezado tiene un tamaño de entre 20 y 60 bytes.
- Sin molestar, esta aplicación de ejemplo generaría mensajes de red que constan del 95 por ciento o más información del encabezado (al menos 20 de 21 bytes) y 5 por ciento o menos de datos reales del remitente teclado. Con el algoritmo de Nagle, los mismos datos podrían entregarse utilizando menos mensajes, lo que se traduce en un gran ahorro de ancho de banda.
Las aplicaciones controlan su uso del algoritmo de Nagle con TCP_NODELA enchufe opción de programación. Los sistemas Windows, Linux y Java normalmente habilitan Nagle de forma predeterminada. Por lo tanto, las aplicaciones escritas para esos entornos deben especificar TCP_NODELAY para desactivar el algoritmo.

Limitaciones
Es posible que las aplicaciones que requieren una respuesta de red rápida, como las videollamadas y los juegos en línea, no funcionen bien cuando Nagle está habilitado. Las demoras causadas mientras el algoritmo toma más tiempo para ensamblar fragmentos más pequeños de datos pueden desencadenar notoriamente retraso visualmente en una pantalla o en una transmisión de audio digital. Estas aplicaciones normalmente desactivan Nagle.
Este algoritmo se desarrolló originalmente en un momento en que las redes informáticas admitían menos ancho de banda que en la actualidad. El ejemplo descrito anteriormente se basó en las experiencias de John Nagle en Ford Aerospace a principios de la década de 1980, donde tenía sentido hacer concesiones en la red de larga distancia, lenta y pesadamente cargada de Ford. Cada vez hay menos situaciones en las que las aplicaciones de red pueden beneficiarse de su algoritmo.
El algoritmo de Nagle solo se puede utilizar con TCP. Otros protocolos, como UDP, no lo apoye.