Algoritmo de Nagle para a Comunicación de rede TCP

O algoritmo Nagle , nomeado co enxeñeiro John Nagle, foi deseñado para reducir a conxestión da rede causada por "pequenos problemas de paquetes" con aplicacións TCP . As implementacións de UNIX comezaron a usar o algoritmo de Nagle na década de 1980, e segue sendo unha característica estándar de TCP hoxe.

Como funciona o algoritmo de Nagle

O algoritmo de Nagle procesa os datos do lado de envío das aplicacións TCP mediante un método chamado nagling . Detecta mensaxes de pequeno porte e acumúlallas en paquetes TCP maiores antes de enviar datos a través do fío, evitando así a xeración de grandes cantidades de pequenos paquetes innecesariamente. A especificación técnica para o algoritmo de Nagle foi publicada en 1984 como RFC 896. As decisións para que acumulen moita información e canto tempo esperemos entre os envíos son críticos para o seu rendemento xeral.

Nagling pode utilizar de forma máis eficiente o ancho de banda dunha conexión de rede a costa de engadir demora ( latencia ). Un exemplo descrito no RFC 896 ilustra os beneficios potenciais do ancho de banda eo motivo da súa creación:

As aplicacións controlan o uso do algoritmo de Nagle coa opción de programación TCP_NODELAY. Os sistemas Windows, Linux e Java normalmente permiten a Nagle de forma predeterminada, polo que as aplicacións escritas para eses ambientes precisan especificar TCP_NODELAY ao querer cambiar o algoritmo.

Limitacións

O algoritmo de Nagle só se pode usar con TCP. Outros protocolos que inclúen UDP non o apoian.

As aplicacións TCP que precisan unha resposta rápida da rede, como chamadas telefónicas por internet ou xogos de disparos en primeira persoa, poden non funcionar ben cando Nagle está habilitado. Os atrasos causados ​​mentres o algoritmo leva tempo extra para montar fragmentos de datos máis pequenos pode disparar un desprazamento visible nunha pantalla ou nunha transmisión de audio dixital. Estas aplicacións adoitan desactivar Nagle.

Este algoritmo foi orixinalmente desenvolvido nun momento no que as redes de computadores apoiaban moito menos ancho de banda do que fan hoxe. O exemplo descrito anteriormente foi baseado nas experiencias de John Nagle en Ford Aerospace a principios dos anos 80, onde as negociacións negativas na súa rede lenta e longa de carga longa tiveron sentido. Cada vez hai menos situacións nas que as aplicacións de rede poden beneficiarse do seu algoritmo hoxe.