L'algorisme de Nagle, que porta el nom de l'enginyer John Nagle, va ser dissenyat per reduir la congestió de la xarxa causada per petits problemes de paquets amb aplicacions TCP. Les implementacions d'UNIX van començar a utilitzar l'algoritme de Nagle a la dècada de 1980, i avui continua sent una característica estàndard de TCP.
Com funciona l'algoritme Nagle
L'algorisme Nagle processa les dades del costat d'enviament de les aplicacions TCP mitjançant un mètode anomenat nagling. Detecta missatges de mida petita i acumula aquests missatges en paquets TCP més grans abans d'enviar dades a través del cable. Aquest procés evita la generació d'un nombre innecessàriament gran de paquets petits.
L'especificació tècnica de l'algorisme de Nagle es va publicar l'any 1984 com a RFC 896. Les decisions sobre quantes dades s'acumulen i quant de temps esperar entre enviaments són fonamentals per al seu rendiment general.
Els beneficis de Nagling
Nagling pot utilitzar de manera eficient l'ample de banda d'una connexió de xarxa a costa d'afegir retards o latència. Un exemple descrit a la RFC 896 il·lustra els possibles beneficis de l'ample de banda i el motiu de la seva creació:
- Si una aplicació TCP que intercepta les pulsacions del teclat vol comunicar cada caràcter que s'escriu a un receptor, pot generar una sèrie de missatges, cadascun amb 1 byte de dades.
- Abans que aquests missatges es puguin enviar a través de la xarxa, cadascun s'ha d'empaquetar amb la informació de la capçalera TCP tal com requereix TCP/IP. La mida de cada capçalera oscil·la entre 20 i 60 bytes.
- Sense molestar, aquesta aplicació d'exemple generaria missatges de xarxa consistents en un 95% o més d'informació de capçalera (almenys 20 de 21 bytes) i un 5% o menys de dades reals del teclat del remitent. Mitjançant l'algorisme de Nagle, es podrien lliurar les mateixes dades amb menys missatges, la qual cosa comportarà un gran estalvi d'amplada de banda.
Les aplicacions controlen el seu ús de l'algorisme Nagle amb l'opció de programació de socket TCP_NODELA. Els sistemes Windows, Linux i Java normalment habiliten Nagle de manera predeterminada. Per tant, les aplicacions escrites per a aquests entorns han d'especificar TCP_NODELAY per desactivar l'algorisme.
Limitacions
Les aplicacions que requereixen una resposta ràpida de la xarxa, com ara les videotrucades i els jocs en línia, poden no funcionar bé quan Nagle està activat. Els retards causats mentre l'algoritme triga més temps a reunir trossos més petits de dades poden provocar un retard notable visualment en una pantalla o en un flux d'àudio digital. Aquestes aplicacions solen desactivar Nagle.
Aquest algorisme es va desenvolupar originalment en un moment en què les xarxes d'ordinadors admetien menys amplada de banda que avui. L'exemple descrit anteriorment es basava en les experiències de John Nagle a Ford Aerospace a principis de la dècada de 1980, on els intercanvis molestos a la xarxa de llarga distància lenta, fortament carregada de Ford tenien sentit. Cada cop hi ha menys situacions en què les aplicacions de xarxa es poden beneficiar del seu algorisme.
L'algorisme de Nagle només es pot utilitzar amb TCP. Altres protocols, com ara UDP, no ho admeten.