Connexions et échanges

Ce chapitre présente le mode d’établissement d’une connexion HDLC (LAP B) ainsi que le principe des échanges de trames de données. Nous étudierons notamment la gestion du séquencement des trames.

Initialisation de la connexion de niveau 2 …

Lorsque le niveau 1 est activé et que le train binaire (7E) est lancé, le réseau va commencer à émettre à intervalle de temps régulier des trames DM (Disconnect Mode) qui indiquent à l’U (nous dirons dorénavant U pour Utilisateur et R pour Réseau) que le réseau est présent mais qu’il n’y a pas de connexion établie.

Ci-contre R émet des trames à intervalles T1. T1 est le timer de réémission. Ce timer est paramétrable dans les équipements mais doit être identique des deux cotés (U et R). Nous aurons l’occasion d’y revenir. Les trames DM sont répétées N2 fois (valeur paramètrable). Puis il n’y a plus que des échanges de synchro (7E).

R émet ses DM avec un champ Adresse égal à 01 (A:01) car DM est une trame de réponse réseau ! (Hé ! Hé ! un petit retour dans le paragraphe précédent ? Vérifiez la position du bit c/r et du bit e/a et vérifiez le type de trame dans le tableau !).

La trame SABM (Set Asynchronous Balanced Mode) émise par l’U a son bit P positionné à 1 pour éviter qu’un croisement entre SABM et DM (comme ici sur le schéma) amène l’U à penser que la DM du R est la réponse à sa SABM, et que donc le réseau refuse la connexion (cas très improbable). L’UA en réponse a donc son bit F positionné en réponse au bit P de la SABM. Si le réseau voulait réellement refuser la connexion, il retournerait une DM avec F=1.

La connexion niveau 2 est établie à réception de l’UA (Unumbered Acknowledge) par l’U. Les compteurs Ns et Nr sont mis à zéro.

Les échanges de données peuvent commencer !

Echange de données simple …

Dans ce paragraphe nous allons étudier la gestion des compteurs Ns et Nr ainsi que le paramètre T2 dit « Temporisateur d’acquittement » dans un échange de données simple.

Acquittement par RR : Dans l’exemple ci-contre, l’U émet sa première trame INFO. C’est une trame de commande Utilisateur son champ Adresse est donc à 01h. Le compteur Ns est à la valeur 0 puisque c’est la première trame émise par U. Comme U n’a encore jamais reçu de trame de R, il indique dans Nr que la prochaine trame qu’il attend de lui est la trame 0 (Nr=0). Dès la fin d’émission de la trame, U active un timer T1 associé à cette trame. Il faudra que R l’acquitte avant expiration du T1 sinon U va réémettre la trame (nous verrons le cas plus tard !).

R n’a pas de données à émettre, il acquitte donc la trame par une trame RR qui ne véhicule pas de données. Cette trame est une réponse du réseau elle a donc le champ adresse à 01h. Le compteur Nr valide la réception de la trame 0 en indiquant qu’il attend la 1 (Nr=1).

Lorsque la Nr est reçue par U, elle désactive le timer T1 de la trame 0 qui n’était pas encore arrivé à expiration.

Peu de temps après, U émet une nouvelle trame INFO. Son Ns est à 1 puisque c’est la deuxième trame. Son Nr est toujours à 0 puisque U n’a toujours pas reçu de trames INFO de R. R acquitte la trame par une RR avec Nr = 2. Et ainsi de suite …

Cette partie illustre donc parfaitement le fonctionnement des compteurs Ns et Nr lors d’un acquittement au fil de l’eau. Passons à quelque chose d’un peu plus compliqué …

Acquittement par trame INFO : Au troisième envoi de trame par U (Ns=2), R a des informations à envoyer. Il va donc acquitter la trame de U par une trame INFO plutôt que d’utiliser une RR. Cette trame est une trame de commande Réseau, son champ Adresse est donc à 03h. Comme c’est la première trame INFO émise par R, son compteur Ns est à 0. Par contre cette trame acquitte également la trame Ns:2 de U, son compteur Nr est donc à 3.

Emission par anticipation d’acquittement : Dans la deuxième partie du schéma on autorise U à envoyer plusieurs trames consécutives sans avoir reçu d’acquittements. Nous verrons plus tard que l’on appelle ça le facteur d’anticipation d’acquittement (K). U émet donc les INFO Ns=3, 4 et 5 sans avoir reçu les acquittements correspondants. Le Nr des trames est à 1 car il a reçu précédemment une trame INFO Ns=0 de R. Chaque fois que R reçoit une trame il enclenche un timer T2 associé. Il peut attendre de disposer d’une trame INFO pour émettre son acquittement à l’émetteur (U ici) pendant T2. Si aucune trame INFO n’est à émettre pendant ce laps de temps, R émettra obligatoirement une RR d’acquittement (oui, oui, je sais ! Ca se corse ! Attendez c’est pas fini !). Ceci suppose donc qu’il y a une correspondance entre le T1 de U et le T2 de R ? Oui, il y a une correspondance, mais les deux timers n’ont pas du tout la même fonction !

T2 est un temporisateur d’acquittement. Plutôt que d’émettre sans cesse des RR pour acquitter les données reçues parce que R a pas de données à émettre, LAP B lui permet de patienter un peu pour acquitter en espèrant qu’il ait des données à émettre. En vérité, on préfére acquitter avec des trames INFO plutôt qu’avec des RR, ceci permet de rentabiliser la liaison et les équipements en évitant la construction et l’émission incessante de trames RR. L’ordre de grandeur de T2 est seulement de quelques millisecondes … pas des heures !

Il apparaît évident qu’il faut que T2 soit inférieur à T1. Car si le récepteur peut temporiser l’acquittement plus longtemps que l’émetteur n’est prêt à attendre l’acquittement, on court au drame ! C’est la seule vrai relation entre T1 et T2 : T2 < T1.

Nr : Numéro de trame attendue : Dans le cercle gris du schéma vous remarquez que R a une trame INFO à émettre après réception de la trame 4 de U (Ns:4). Il envoie donc une trame INFO avec un Nr = 5. Et c’est là qu’est la beautée du geste ! En indiquant 5 dans Nr, il dit « j’attends la trame 5, donc je t’acquitte les trames 3 et 4 qui étaient en instance d’acquittement » ! C’est bien plus performant que d’indiquer le numéro de trame que l’on acquitte ! Bien sûr l’acquittement a pour effet de stopper les timers T2 des trames correspondantes.

Expiration du T2 : Dans le cercle bleu du schéma, j’illustre ce qui arrive si R n’a plus de données à émettre. Le timer T2 de la trame 5 arrive à expiration, R émet donc une trame RR (Nr=6) pour acquitter cette trame à U.

Au passage vous remarquerez que U n’a absolument pas été choqué de recevoir de R un acquittement des trames 3 et 4 (par la trame INFO) seulement alors qu’il avait déjà émis la trame 5 ! Peu importe ! U veut seulement que R acquitte avant expiration du timer T1 de la trame 5. R peut prendre son temps s’il veut ! De toute façon R n’avait pas fini de recevoir la trame 5 donc il ne pouvait pas l’acquitter.

Ceci m’amène à vous préciser, pour ceux qui ne l’aurait pas déviné, que la pente des flèches sur les schémas, représente les délais de transmissions des données. Et dans le même temps vous avez ici la démonstration que le fonctionnement est bien full-duplex.

Synthèse

Que savons-nous maintenant ? Nous connaissons :

  • le format d’une trame HDLC et la fonction des champs la composant
  • le principe d’établissement d’une connexion HDLC et identifions les entités Réseau/Utilisateur, Commande/Réponse
  • le principe d’échange des trames de données, notamment la gestion des compteurs Nr/Ns et l’importance des timers T1/T2 pour les délais d’acquittements.

Etudions maintenant un peu plus avant l’importance des paramètres T2, T1, K et N2.

Page précédente | Page Suivante