Un aperçu de l'algorithme Nagle pour la communication réseau TCP
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 TCP applications. UNIX les implémentations 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 accumule ces messages dans des paquets TCP plus volumineux avant d'envoyer des données via le câble. Ce processus évite la génération d'un nombre inutilement élevé de petits paquets.
La spécification technique de l'algorithme de Nagle a été publiée en 1984 sous le titre RFC 896. Les décisions concernant la quantité de données à accumuler et le temps d'attente entre les envois sont essentielles à ses performances globales.
Les avantages du Nagling
Nagling peut utiliser efficacement le
- Si une application TCP qui intercepte les frappes du clavier veut communiquer chaque caractère tapé à 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 conditionné avec les informations d'en-tête TCP requises par TCP/IP. Chaque en-tête a une taille comprise entre 20 et 60 octets.
- Sans tracas, cet exemple d'application générerait des messages réseau composés de 95 % ou plus informations d'en-tête (au moins 20 octets sur 21) et 5 % ou moins des données réelles de l'expéditeur clavier. En utilisant l'algorithme Nagle, les mêmes données pourraient être livrées en utilisant moins de messages, ce qui se traduirait par d'importantes économies de bande passante.
Les applications contrôlent leur utilisation de l'algorithme Nagle avec le TCP_NODELA prise possibilité de programmation. 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 des décalage 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é à l'origine à 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 difficiles sur le réseau longue distance lent et fortement chargé de Ford étaient logiques. Il y a de moins en moins de situations aujourd'hui où les applications réseau peuvent bénéficier de son algorithme.
L'algorithme Nagle n'est utilisable qu'avec TCP. D'autres protocoles, tels que UDP, ne le supportez pas.