Algorisme de Nagle per a la comunicació de xarxa TCP

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ó:

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.