Una descripción general del algoritmo de Nagle para la comunicación de red TCP

El algoritmo de Nagle, llamado así por el ingeniero John Nagle, fue diseñado para reducir la congestión de la red causada por problemas de paquetes pequeños con aplicaciones TCP.

El algoritmo de Nagle, llamado así por el ingeniero John Nagle, fue diseñado para reducir la congestión de la red causada por «problemas de paquetes pequeños» con aplicaciones TCP. Las implementaciones de UNIX 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 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, evitando así la generación de cantidades innecesariamente grandes de paquetes pequeños. La especificación técnica para el algoritmo de Nagle se publicó en 1984 como RFC 896. Las decisiones sobre la acumulación de muchos datos y cuánto tiempo esperar entre envíos son fundamentales para su rendimiento general.

Nagling puede utilizar de manera más eficiente el ancho de banda de una conexión de red a expensas de agregar demoras (latencia). Un ejemplo descrito en RFC 896 ilustra los beneficios potenciales del ancho de banda y la razón de su creación:

  • Una aplicación TCP que intercepta las pulsaciones del teclado y desea comunicar cada carácter que se está escribiendo a un receptor, puede generar una serie de mensajes que contienen cada uno 1 byte de datos.
  • Antes de que estos mensajes puedan enviarse a través de la red, cada uno debe empaquetarse junto con la información del encabezado TCP según lo requiera TCP/IP. Cada encabezado varía en tamaño entre 20 y 60 bytes.
  • Sin la náusea, esta aplicación de ejemplo generaría mensajes de red que consisten en un 95% o más de información de encabezado (al menos 20 de 21 bytes) y un 5% o menos de datos reales del teclado del remitente. Usando el algoritmo Nagle, los mismos datos podrían ser entregados usando muchos menos mensajes y teniendo el 95% del contenido como información del teclado, un gran ahorro de ancho de banda.

Las aplicaciones controlan su uso del algoritmo Nagle con la opción de programación de socket TCP_NODELAY. Los sistemas Windows, Linux y Java normalmente habilitan Nagle de forma predeterminada, por lo que las aplicaciones escritas para esos entornos deben especificar TCP_NODELAY cuando se quiere desactivar el algoritmo.

Limitaciones

El algoritmo de Nagle solo se puede usar con TCP. Otros protocolos, incluido UDP, no lo admiten.

Las aplicaciones TCP que necesitan una respuesta de red rápida, como llamadas telefónicas por Internet o juegos de disparos en primera persona, pueden no funcionar bien cuando Nagle está habilitado. Los retrasos causados ​​mientras el algoritmo toma tiempo adicional para ensamblar fragmentos más pequeños de datos juntos pueden provocar un retraso notable visualmente en una pantalla o en una transmisión de audio digital. Estas aplicaciones suelen deshabilitar Nagle.

Este algoritmo se desarrolló originalmente en un momento en que las redes de computadoras soportaban mucho menos ancho de banda de lo que lo hacen hoy. El ejemplo descrito anteriormente se basó en las experiencias de John Nagle en Ford Aerospace a principios de la década de 1980, donde las negociaciones en su red de larga distancia lenta y muy cargada tenían mucho sentido. Cada vez hay menos situaciones en las que las aplicaciones de red pueden beneficiarse de su algoritmo hoy.

Rate article
labsfabs.com
Add a comment