Il réduit la congestion du réseau causée par des problèmes de petits paquets, tel est l'importance de la lecture de cet article.
L'algorithme Nagle, nommé d'après l'ingénieur John Nagle, a été conçu pour réduire la congestion du réseau causée par de petits problèmes de paquets avec les applications TCP . Les implémentations UNIX ont commencé à utiliser l'algorithme Nagle dans les années 1980, et il reste une fonctionnalité standard de TCP aujourd'hui.
Comment fonctionne l'algorithme de Nagle
L'algorithme Nagle traite les données du côté envoi des applications TCP par une méthode appelée nagling. Il détecte les messages de petite taille et les accumule dans des paquets TCP plus volumineux avant d'envoyer des données sur le câble. Ce processus évite la génération d'un nombre inutilement grand de petits paquets.
La spécification technique de l'algorithme de Nagle a été publiée en 1984 sous la référence RFC 896 . Les décisions concernant la quantité de données à accumuler et la durée d'attente entre les envois sont essentielles à ses performances globales.
Les avantages de Nagling
Nagling peut utiliser efficacement la bande passante d'une connexion réseau au détriment de l'ajout de délais ou de latence . Un exemple décrit dans la RFC 896 illustre les avantages potentiels de la bande passante et la raison de sa création:
- Si une application TCP qui intercepte les frappes du clavier souhaite communiquer chaque caractère saisi à un récepteur, elle peut générer une série de messages, chacun contenant 1 octet de données.
- Avant que ces messages puissent être envoyés sur le réseau, chacun doit être emballé avec les informations d'en-tête TCP comme requis par TCP / IP. Chaque en-tête a une taille comprise entre 20 et 60 octets.
- Sans nagling, cet exemple d'application générerait des messages réseau composés de 95% ou plus d'informations d'en-tête (au moins 20 sur 21 octets) et de 5% ou moins de données réelles à partir du clavier de l'expéditeur. En utilisant l'algorithme Nagle, les mêmes données pourraient être livrées en utilisant moins de messages, ce qui se traduirait par de grandes économies de bande passante.
Les applications contrôlent leur utilisation de l'algorithme Nagle avec l' option de programmation de socket TCP_NODELA . Les systèmes Windows, Linux et Java activent normalement Nagle par défaut. Par conséquent, les applications écrites pour ces environnements doivent spécifier TCP_NODELAY pour désactiver l'algorithme.
Limites
Les applications qui nécessitent une réponse réseau rapide, comme les appels vidéo et les jeux en ligne, peuvent ne pas fonctionner correctement lorsque Nagle est activé. Les retards causés alors que l'algorithme prend plus de temps pour assembler de plus petits morceaux de données peuvent déclencher un décalage visible visuellement sur un écran ou dans un flux audio numérique. De telles applications désactivent généralement Nagle.
Cet algorithme a été développé à une époque où les réseaux informatiques supportaient moins de bande passante qu'aujourd'hui. L'exemple décrit ci-dessus était basé sur les expériences de John Nagle chez Ford Aerospace au début des années 1980, où des compromis tenaces sur le réseau longue distance lent et lourdement chargé de Ford avaient du sens. Il y a de moins en moins de situations aujourd'hui où les applications réseau peuvent bénéficier de son algorithme.
N.B: L'algorithme Nagle n'est utilisable qu'avec TCP. D'autres protocoles, tels que UDP , ne le prennent pas en charge.