Outils pour utilisateurs

Outils du site


cours:informatique:reseau:principes_des_reseaux_de_donnees:360_protocole_hdlc

Un exemple de protocole : HDLC

Nous avons vu précédemment comment différents services pouvaient être rendus au travers de protocoles indépendants les uns des autres. Nous allons voir lors de sur cette présentation un protocole complet les rendant tous, le protocole HDLC.

Protocole HDLC

Le protocole HDLC pour « High-Level Data Link Control » est un protocole de niveau liaison de donnée développé dans les années 70. D’abord utilisé très largement dans les réseaux étendus tels que X25, il a inspiré par la suite de nombreux autres protocoles. Le protocole HDLC peut fonctionner dans plusieurs modes, celui qui nous intéresse aujourd’hui étant le mode appelé asynchrone équilibré. Ce mode permet la communication entre deux systèmes, deux équipements considérés comme égaux.

Caractéristiques générales

Le protocole HDLC fournit un certain nombre de services:

  • La délimitation et la transparence;
  • la détection des erreurs;
  • La détection et la reprise sur perte;
  • Le contrôle de flux.

Pour cela HDLC utilise un format d’unité de donnée composée de plusieurs champs:

  • Les délimiteurs ayant une valeur binaire de 01111110 sont placés en début et en fin d’unité de donnée;
  • Un champ adresse qui n’a pas de réelle utilité dans le mode du protocole que nous étudions;
  • Un champ de contrôle que nous détaillerons plus tard et qui permet entre autre de distinguer trois types de trames: les trames d’information, les trames de supervision et les trames non numérotées. Comme leur nom l’indique les trames d’information sont utilisées pour transporter les informations utiles (SDU) reçues depuis la couche supérieure. Ces informations sont alors placées dans le champ de donnée qui suit le champ de contrôle. Ce champ de donnée n’existe pas pour les autres types de trames.
  • On trouve enfin un code de contrôle de type CRC calculé sur tous les champs à l’exception des fanions et permettant de rendre le service de détection d’erreur.

Intéressons nous maintenant au champ de contrôle.

Le type de trame est codé au travers des deux premiers bits du champ de contrôle.

  • Le premier bit à 0* indiquant une trame d’information notée I;
  • les bits 10 une trame de supervision notée S;
  • Enfin les bits 11 indiquant une trame non numérotée notée U.

Comme nous l’avons dit précédemment les trames d’information permettent de transporter les informations reçues depuis la couche supérieure. Les trames non numérotées permettent principalement de gérer la communication entre les deux systèmes. Enfin les trames de supervision permettent de rendre les services de détection de perte, de reprise sur perte et de contrôle de flux.

Afin de mettre en œuvre les services dont nous venons de parler chaque type de trame possède un champ de contrôle avec un format propre.

Règles de fonctionnement

Regardons maintenant les règles de fonctionnement du protocole. Dans HDLC les éléments les plus originaux sont liés à la détection et au traitement des pertes.

Les unités de données (PDU) contenant des informations utiles sont numérotées comme dans le cadre du protocole du bit alterné. Ce numéro associé au compteur NS des trames I (trames d'information) est codé sur 3 bits. Afin de savoir quel est le prochain numéro à utiliser (pour la valeur de NS), l’émetteur maintient une variable appelée VS qui est incrémentée à chaque nouvelle émission de trame I.

Lorsqu’une trame I est reçue correctement par le récepteur, il acquitte sa réception au travers d’une trame de supervision appelée RR pour « Receive Ready ». Dans cette trame, le récepteur indique au travers du champ NR, dans le champ de contrôle, le numéro de la prochaine trame attendue.

Afin de savoir quel est ce numéro le récepteur maintient une variable appelée VR qui est incrémentée à chaque fois qu’une trame est reçue correctement.

On considère qu’une trame est reçue correctement lorsque son numéro correspond au prochain numéro de trame attendu, c'est-à-dire que l’on considère que les trames doivent être reçues dans l’ordre.

Comme dans le cadre du bit alterné, la perte de trame peut être détectée en associant un minuteur à l’émission de chaque trame. Lors de l’expiration du minuteur, la variable d’émission VS reprend la valeur qu’elle avait avant l’émission de la trame perdue, et celle-ci est réémise.

Emission et perte de données

Illustrons le fonctionnement du protocole par un exemple d'échange représenté par le diagramme temporel ci-dessous.

  • Lorsqu’il reçoit des données de la couche supérieure, l’émetteur enclenche le minuteur et envoie la trame I 0,0. C'est-à-dire une trame d’information dans laquelle la valeur du champ NS représenté par le premier chiffre a pris la valeur de VS: 0. Nous expliquerons plus tard le rôle du deuxième zéro présent ici.
  • Il incrémente ensuite la variable VS.
  • Lors de la réception de cette trame, le récepteur vérifie que la valeur de NS est égale à VR. Comme c’est le cas la trame est considérée comme reçue correctement et le récepteur incrémente son compteur VR puis envoie un acquittement au travers de la trame de supervision RR 1. Dans cette trame la valeur du champ NR a pris la valeur de VR. Enfin son contenu est délivré à la couche supérieure.
  • L’acquittement est reçu par l’émetteur. Celui-ci reçoit alors de nouvelles données depuis la couche supérieure.
  • Comme précédemment, il enclenche le minuteur et envoie la trame I 1,0 et incrémente ensuite la variable VS à 2. Cette deuxième trame d’information se perd.
  • Le minuteur se déclenche donc au bout d’un certain temps. La valeur de VS reprend alors la valeur avant l’émission de la trame associée au minuteur c'est-à-dire 1. Le minuteur est de nouveau enclenché puis la trame est réémise.
  • Enfin le compteur VS est incrémenté passant de 1 à 2. Cette fois la trame arrive à destination.
  • Comme précédemment le récepteur compare la valeur du champ VR au champ NS de la trame reçue, les valeurs étant les mêmes il incrémente VR puis envoie un acquittement au travers de la trame de supervision RR 2 puis délivre le contenu de la trame à la couche supérieure.
  • RR 2 est ensuite reçue par l’émetteur.

La perte d'acquittement

Le compteur VR présent chez le récepteur et dont nous avons déjà parlé permet de régler le problème des duplicatas. Ainsi si l’émetteur réémet une trame déjà reçue par le récepteur, le récepteur se rend compte en comparant le numéro de la trame NS à son compteur VR que ce n’est pas la trame qu’il attend. Dans cette situation, le récepteur envoie une trame d’indication d’erreur de type REJ (REJECT) dans laquelle le champ NR prend la valeur de VR, c'est-à-dire indique le prochain numéro de trame attendue et ignore par la suite les trames d’information ne portant pas le numéro attendu.

Voyons au travers d’un exemple comment cela fonctionne. Comme dans notre exemple précédent, la trame initiale parvient au récepteur qui l’acquitte. Les variables sont incrémentées de part et d’autre.

  • Cependant l’acquittement RR 1 se perd.
  • Le minuteur se déclenche donc chez l’émetteur qui remet la variable VS à 0 réenclenche le minuteur et retransmet I 0,0.
  • Lors de la réception de cette unité de donnée, le récepteur compare VR à NS et se rend compte que les deux valeurs 0 et 1 sont différentes. Il laisse donc VR inchangé ne délivre pas les données à la couche supérieure et renvoie un message de rejet REJ 1.

La mise en pipeline

Une des améliorations apportées par HDLC est la mise en pipeline. Dans le protocole du bit alterné, une unité de donnée ne circule de l’émetteur vers le récepteur que lorsque la précédente a été acquittée. HDLC peut également fonctionner selon ce principe comme nous le voyons ici.

Cependant ceci limite le débit effectif entre l’émetteur et le récepteur puisque l’émetteur passe du temps à attendre les acquittements sans rien faire. Ainsi nous voyons ici que la transmission des trois trames d’information utilisant ce principe prend le temps t1.

Dans le cas d’une mise en pipeline, les trames d’information peuvent être émises sans attendre ce qui réduit le temps total de transmission à t2, (t2 plus court que t1).

t2 étant plus petit que t1 et la quantité d'information transmise étant la même, le débit effectif est plus important que dans l'échange précédent.

L’existence du mode pipeline dans HDLC implique la possibilité pour plusieurs minuteurs d’être enclenchés simultanément, chacun étant attaché à l’émission d’une trame d’information.

Détection de la perte chez le récepteur

La possibilité d’envoyer plusieurs trames d’information au récepteur sans attendre leur acquittement pose cependant un problème. Que faire lorsqu’une trame d’information parmi l’ensemble des trames envoyées se perd ?

Dans la version du protocole HDLC que nous étudions, cela se traduit par l’arrivée d’une trame portant un numéro NS plus grand que le numéro attendu VR (2 par rapport à 1 dans le chronogramme d' exemple ci-dessus).

Le récepteur considère alors la trame comme non reçue correctement, ignore sont contenu et envoie comme nous l’avons vu précédemment un message de rejet REJ associé au numéro de trame attendu. Lorsque ce message arrive à l’émetteur, il donne à la variable VS la valeur contenue dans le champ NR c'est-à-dire 1, désarme les minuteurs en cours et renvoie immédiatement les messages leur étant associés à partir de ceux numérotés VS. Ce mode de reprise sur perte est appelé « go back n » puisque l’émetteur retourne dans l’état ou il était avant l’émission de la trame d’information numérotée NR.

Ce mode de fonctionnement fait alors porter la détection de la perte chez le récepteur au travers de la découverte d’un « trou » entre deux numéros de séquence de trames reçues consécutivement. L’émetteur est informé de cette découverte au travers de la trame REJ. Ce fonctionnement permet généralement d’accélérer la reprise sur perte par rapport à l’utilisation du minuteur chez l’émetteur.

Échanges full duplex

Nous avons supposé jusqu’à présent que l’information circulait uniquement dans le sens émetteur vers récepteur : client vers banque dans les exemples. Dans la pratique, la banque peut évidemment avoir également envie de transmettre de l’information au client.

HDLC offre cette possibilité. Afin de permettre la gestion de la communication dans les deux sens, chaque entité maintient deux variables, VS et VR contrôlant respectivement les trames d’information transmises et reçues. Ces deux nouvelles variables sont représentées ci-dessous en rouge.

Dans cet exemple chaque trame d’information est acquittée au travers d’une trame de supervision RR.

Piggy backing

La possibilité de transmettre des trames d’information dans les deux sens est utilisée par HDLC pour une autre amélioration appelée « piggy backing ». L’idée est d’utiliser les trames d’information afin de réaliser les acquittements sans utiliser des trames de contrôle.

Ce mécanisme est donc utilisé par le récepteur lorsque celui-ci doit envoyer un acquittement à l’émetteur et doit envoyer à peu près au même moment une trame d’information à celui-ci. A cet effet les trames d’information possèdent dans le champ de contrôle un champ NR dans lequel le récepteur indique le numéro de la prochaine trame d’information attendue, c'est-à-dire en y copiant la valeur de la variable VR. La valeur de ce second champ est indiquée dans nos échanges par la deuxième valeur numérique précédant le I.

Lorsqu’il reçoit une trame d’information, l’émetteur considère que toutes les trames d’information d’un numéro inférieur à la valeur contenue dans NR ont été reçues par le récepteur et désactive les minuteurs associés.

Quizz

Un petit exercice pour conclure. En supposant que l’on ait l’échange suivant entre les deux entités Client et Banque

Quelles sont selon vous les valeurs de X et Y ?

  1. 1 et 1
  2. 2 et 1
  3. 1 et 2
  4. 2 et 2

La bonne réponse et 2 pour X et 1 pour Y en effet, la banque lorsqu’elle reçoit la trame I 1,1 incrémente VR (c'est-à-dire X) de 1 à 2, VS (c'est-à-dire Y) reste inchangé. Du coté du client VR (c'est-à-dire Y) est incrémenté de 0 à 1 après la réception de I 0,1, VS (c'est-à-dire X) reste inchangé. L’émission et la réception des trames de supervision RR n’a pas d’influence sur les variables.

◁ Précédent | ⌂ Sommaire | Suivant ▷

cours/informatique/reseau/principes_des_reseaux_de_donnees/360_protocole_hdlc.txt · Dernière modification : 2023/03/20 22:48 de yoann