L' algoritme Nagle , nomenat després de l'enginyer John Nagle, va ser dissenyat per reduir la congestió de la xarxa causada per "petits problemes de paquet" amb aplicacions TCP . Les implementacions de UNIX van començar a utilitzar l'algorisme de Nagle en la dècada de 1980, i segueix sent una característica estàndard de TCP avui.
Com funciona l'algorisme de Nagle
L'algorisme de 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 els acumula en paquets TCP més grans abans d'enviar dades a través del cable, evitant així la generació de paquets petits innecessàriament grans. L'especificació tècnica de l'algorisme de Nagle es va publicar el 1984 com a RFC 896. Les decisions per acumular moltes dades i quant de temps esperen entre enviaments són fonamentals per al seu rendiment global.
Nagling pot utilitzar de manera més eficient l' ample de banda d'una connexió de xarxa a costa d'afegir retards ( latència ). Un exemple descrit en RFC 896 il·lustra els possibles beneficis d'ample de banda i el motiu de la seva creació:
- Una aplicació TCP que intercepta les pulsacions de teclat i vol comunicar-se a cada receptor, pot generar una sèrie de missatges que contenen cada 1 byte de dades.
- Abans que aquests missatges es puguin enviar a través de la xarxa, cadascun s'ha d'empaquetar juntament amb la informació de la capçalera TCP tal com ho requereix TCP / IP. Cada capçalera varia en grandària entre 20 i 60 bytes.
- Sense fer cas, aquesta aplicació d'exemple generaria missatges de xarxa que consisteixen 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 Nagle, les mateixes dades podrien ser lliurades utilitzant molts menys missatges i tenint el 95% del contingut com informació del teclat: un estalvi d'ample de banda molt gran.
Les aplicacions controlen l'ús de l'algorisme Nagle amb l'opció de programació TCP_NODELAY socket . Els sistemes Windows, Linux i Java normalment habiliten Nagle per defecte, de manera que les aplicacions escrites per a aquests entorns necessiten especificar TCP_NODELAY quan vulgui canviar l'algoritme.
Limitacions
L'algorisme de Nagle només es pot utilitzar amb TCP. Altres protocols que inclouen UDP no ho admeten.
Les aplicacions TCP que necessiten una resposta ràpida a la xarxa, com ara trucades telefòniques per Internet o jocs de trets en primera persona, poden no funcionar bé quan Nagle està habilitat. Els retards causats mentre l'algorisme pren més temps per muntar trossos de dades més petits junts pot provocar un retard notable en una pantalla o en un flux d'àudio digital. Normalment aquestes aplicacions inhabiliten Nagle.
Aquest algoritme es va desenvolupar originalment en un moment en què les xarxes informàtiques admeten molt menys ample de banda del que fan avui. L'exemple descrit anteriorment es va basar en les experiències de John Nagle a Ford Aerospace a principis de la dècada de 1980, on els compromisos de la seva llarga xarxa de llarg recorregut havien sentit. Cada vegada hi ha menys situacions en què les aplicacions de xarxa poden beneficiar-se del seu algoritme actual.