Protocoles de liaison
HDLC - LAP B
3.2 - Protocole LAP B

Accueil
du Site

 

Avant :
Protocole LAP 1°
Parcours : "Couche 2 - Liaison"
Suite :
Protocole LAP 3°
 

 


ACQUITTEMENTS DE TRAMES - 1° fonctionnement sans incident -

Les acquittements de trames peuvent se faire par des trames information ou des trames RR.

  • Par des trames d'information quand le récepteur distant a de l'information à envoyer à l'émetteur.
    Nous sommes en effet en duplex intégral (full duplex) : on peut ainsi gagner du temps dans un échange bidirectionnel.

  • Par des tames de supervision RR quand le récepteur n'a pas de données à envoyer à l'émetteur.

    Rappels :
Trames I : Information
Rép/Com
N(R)
P
N(S)
0

RR : Prêt à recevoir. - Receive Ready
Rép/Com
N(R)
P/F
0
0
0
1

Dans les figures j'ai remplacé N(R) et N(S) par R et S pour plus de clarté.
Mais que se passe-t-il en cas d'incident de transmission ?
Nous le voyons un peu plus loin, mais d'abord, quelques informations qui vont nous être utiles.


PARAMETRES HDLC
  • Longueur minimale d'une trame : 32 bits
  • Longueur maximale d'une trame : 1150 bits
  • Nombre maximal de réémissions d'une trame sur absence d'acquittement : N2 = 10
  • Nombre de trames de la fenêtre d' anticipation : K inférieur ou égal à 7, paramétrable.
TEMPORISATEURS
  • T1
    Armé à l'envoi d'une trame (plus de précisions ci-après).
    Il est remis à zéro à la réception d'un acquittement pour cette trame.
    Si ce n'est pas le cas, à la fin de la temporisation, il déclenche le renvoi de la trame non acquittée.

    T1 = 100,200,400,800,1600 ou 2550 ms paramétrable.

  • T2
    Temps maximal au bout duquel le récepteur d'une trame émet une trame qui en accuse réception.
    C'est aussi le temp de transmission d'une trame de longueur maximale : 1150 bits plus le temps de traitement d'une trame en réception.

 

CONDITIONS D'ARMEMENT DES TEMPORISATEURS

Un temporisateur est armé ou réarmé à la valeur T1 :

  • lors de l'envoi d'une commande SABM ou DISC
  • lors de l'envoi de chaque trame dont le N(S) est égal au dernier N(R) reçu.

Il est arrêté :

  • lors de la réception d'une trame UA en réponse à SAMB ou DISC..
  • lors de la réception d'une trame dont le N(R) est égal à la valeur du N(S) de la trame dernièrement envoyée.

Il est réarmé lors de la réception de trames dont le N(R) a progressé par rapport au dernier reçu,
même s'il n'acquitte pas toutes les trames envoyées.

Mais tant que toutes les trame envoyées n'ont pas été acquittées, le compteur est relancé en attendant l'acquittement de cette trame.

Chaque station gère un compteur de retransmissions qui est incrémenté (augmenté de un) à chaque retransmission
d'une trame non acquittée

  • Il est désarmé à réception d'un acquittement des trames envoyées.
  • S'il dépasse N2, il déclenche une procédure d'incident (voir ci-après).

ALGORITHME D'ENVOI DE TRAMES

Je vous propose l'algorithme suivant pour illustrer les mécanismes de réception d'une salve de trames
et les divers cas de dysfonctionnement qui peuvent se produire.


VARIABLES D'ÉTAT

Pour comprendre cet algorithme, nous allons poser quelques variables d'état.
Ce sont des emplacements dans la mémoire de l'ordinateur permettant de programmer l'alogorithme.
Il s'agit de variables de l'émetteur.

Symbole
Valeur
Responsable
V(S)
Numéro de la prochaine trame à envoyer
Mis à jour
par le programme de l'émetteur
(voir algorithme)
V(R)
Numéro de la dernière trame
confirmée par le récepteur
Mis à jour automatiquement
par le logiciel de la partie récepteur
travaillant en tâche de fond
quand il reçoit une trame.
T1
Temporisateur qui peut être activé ou désactivé
ou interrogé par programme
Réponses : "en cours" ou "écoulé".
Dès qu'il est actif
il fonctionne automatiquement
en tâche de fond.
n2
Nombre de rejets restants.
Initialisé à N2 ( = 10)
Tend vers 0
Mis à jour
par le programme de l'émetteur
(voir algorithme)
n
Les champs d'information
des N trames à envoyer
sont préalablement mis en tampon,
et accessibles par l'indice n
variant de 0 à N -1
Mis à jour
par le programme de l'émetteur
(voir algorithme)
s
Emplacement pour mémoriser le numéro de la trame dont on veut vérifier l'acquittement.
Misà jour
par le programme de l'émetteur
(voir algorithme)
CONVENTIONS DE L'ALGORITHME

SIGNE "=" contre signe" = ="

V(S) = N(R) signifie que l'on donne à la variable V(S) la valeur qu'a N(R)
En informatique on appelle cela une afféctation.
Autre exemple : n2 = n2 - 1
On affecte à n2 la valeur qu'il a moins un.
Autrement dit on "décrémente n2"

N(R) = = N(S) est un booléen
qui peut être vrai si N(R) et N(S) sont égaux,
et faux s'ils sont différents.
Vous touverez des expressions de ce genre dans les alternatives de l'algorithme.
("rectangles pointus" aux deux bouts)
Celles-ci portent un petit cercle côté négatif.
(sortie si la condition contenue dans l'alternative est fausse)

Exemple : Si n2 = = 0 : Aller vers "Echec de la transmission"

Les valeurs T1, N2, K de l'algorithme sont les paramètres HDLC définis plus haut

COMMENTAIRES SUR L'ALGORITHME

Initialisation

  • V(S) = 0 car nous commençons par envoyer la première tame numérotée 0.

  • V(R) est raffraîchi automatiquement par le logiciel de la partie récepteur de l'émetteur qui travaille en tâche de fond
    et que nous activons dès le départ de notre programme d'émission.

  • Les champs d'information des diverses trames à envoyer sont préalablement stockés
    dans un buffer indicié par n.
    si n = = 0 l'information pointée est celle de la 1° trame.
    si n = = N - 1 l'information pointée est celle de la dernière trame.
    n sert donc à constituer la trame qui sera envoyée en ligne.

s = V(S)

On enregitre dans la mémoire s le numéro de la trame à envoyer.
On ne peut pas se baser sur V(S) car ce dernier est amené à varier
si plusieurs trames sont envoyées après celle portant le numéro s..

s nous permettra de vérifier périodiquement et pendant la durée d'activité de T1
si ce numéro de trame est ou non acquitté.

Comme vous le voyez dans l'algorithme, s est amené à changer pour devenir
les divers numéros que prendra la première trame non encore acquittée.

n # N

N est le nombre total de trames à envoyer.
n l'indice permettant de récupérer leur contenu dans un buffer.
N varie de 0 à N - 1

V(S) - V(R) < K

K est la fenêtre d'anticipation. K <= 7
C'est à dire que l'on peut envoyer successivement K trames sans attendre d'acquittement, mais pas plus.
Il faudra ensuite attendre cet acquittement pour les premières ou toutes celles envoyées.

T1 en cours

Signifie que le temporisateur T1 est en cours de fonctionnement et que par conséquent le temps T1 n'est pas encore écoulé.

T2 en cours

Rappelons que le temps T2 est nécessaire pour faire passer une trame entière dans le réseau.
Il est impossible pour l'émetteur d'envoyer deux trames à la fois.
Il devra donc attendre qu'une trame soit finie pour envoyer la suivante.

V(R) > s

Signifie que la trame de numéro "s" envoyée a été acquittée
puisque la station distante attend un numéro V(R) supérieur.
Dans ce cas, l'algorithme mène à la mémorisation en "s" du numéro de la trame que l'on va maintenant envoyer,
c'est à dire V(S) (incrémenté tout de suite après l'envoi de l'ancien s).

Si s n'a pas été acquittée, on questionne le temporisateur T1.
S'il est en cours, on ne se prive pas pour autant d'envoyer des trames,
mais on ne modifie pas la mémoire s. voir la porté du saut.

n = n - (s - V(R)) ; V(S) = s)

La temporisation est arrivée à bout sans qu'on reçoive d'acquittement pour la trame numéro s.
On va donc revenir aux conditions d'émission de la trame s.
La seule différence est que le bit P(Polling) de la trame va être mis à 1
Demandant ainsi une réponse au récepteur avec le bit F (Final) à 1

Le reste de l'algorithme est évident.

Orientation

Avant :
Protocole LAP 1°
Parcours : "Couche 2 - Liaison"
Suite :
Protocole LAP 3°
 
Sommaire

du Site