Un aperçu de l'algorithme de Nagle pour la communication réseau TCP

Table des matières:

Un aperçu de l'algorithme de Nagle pour la communication réseau TCP
Un aperçu de l'algorithme de Nagle pour la communication réseau TCP
Anonim

L'algorithme Nagle, du nom de l'ingénieur John Nagle, a été conçu pour réduire la congestion du réseau causée par des problèmes de petits 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 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 sur le réseau. 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 en tant que 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 de Nagling

Nagling peut utiliser efficacement la bande passante d'une connexion réseau au détriment de l'ajout de retards 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 au clavier veut communiquer chaque caractère tapé à un récepteur, elle peut générer une série de messages contenant chacun 1 octet de données.
  • Avant que ces messages puissent être envoyés sur le réseau, chacun d'eux doit être empaqueté 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 nagling, cet exemple d'application générerait des messages réseau composés d'au moins 95 % d'informations d'en-tête (au moins 20 octets sur 21) et de 5 % ou moins de données réelles provenant 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 entraînerait d'importantes é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.

Image
Image

Limites

Les applications qui nécessitent une réponse rapide du réseau, comme les appels vidéo et les jeux en ligne, peuvent ne pas fonctionner correctement lorsque Nagle est activé. Les retards causés pendant 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é à 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 harcelants sur le réseau longue distance lent et très 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.

L'algorithme de Nagle n'est utilisable qu'avec TCP. D'autres protocoles, tels que UDP, ne le prennent pas en charge.

Conseillé: