4. Le protocole HDLC
HDLC ("High Level Data Link Control")
-
offre un service de transfert de données fiable et efficace entre deux systèmes adjacents.
-
protocole utilisant le mode connecté
High-level Data Link Control :
-
ISO 3309 : HDLC frame structure
-
ISO 4335 : HDLC : elements of procedure,
-
ISO 7448 : MultiLink procedure (MLP),
-
ISO 7776 : LAP-B compatible link control procedure,
-
ISO 7809 : Consolidated classes of procedures,
-
ISO 8471 : HDLC balanced, link address information
Utilisé comme protocole de la couche Liaison de données dans les normes X.25 (du CCITT) en usage dans les réseaux publics de transmission numérique de données (TRANSPAC, par exemple).
Note : le protocole PPP d'Internet réutilise HDLC
4.1. Historique
1960 : BSC ("Binary synchronous communication") - IBM
-
tout premier protocole synchrone :
-
l'horloge du récepteur est maintenue synchronisée même s'il n'y a pas de transmission de données
-
transmission plus rapide (sans resynchronisation)
-
nécessite un contrôleur de communication spécialisé
-
l'unité de transmission est le caractère (code ASCII (7 bits) ou EBCDIC (8 bits))
-
par abus : protocole "orienté" caractère
70 : SDLC ("Synchronous data link control") - IBM
-
l'unité de transmission est la trame
-
normalisé par l'ANSI ("American national standard institute") sous le nom ADCCP ("Advanced data communication - control procedure")
76 : HDLC ("High data link control")
-
protocole basé sur l'élément binaire ("orienté" bit)
-
ISO 3309 : HDLC frame structure
-
ISO 4335 : HDLC : elements of procedure
80 : adapté pour l'accès au réseau numérique de données
-
LAP-B ("Link access procedure-balanced") :
-
rôles équilibrés (symétriques) entre les deux systèmes adjacents
-
normalisé : CCITT X25.2 et ISO 7776
85 : adapté aux réseaux locaux
-
protocole de la sous-couche d'homogénéisation LLC ("Logical link control")
-
apparition d'un mode de transmission non connecté (LLC classe 1)
-
normalisé : IEEE 802.2 et ISO 8802/2
Autres adaptations :
-
LAP-X : Télex - CCITT T71
-
LAP-D : canal D du RNIS (Numéris) - CCITT Q921 ou I441
-
LAP-F : relai des trames ("frame relay") - UIT-T Q931 ou I451
-
LAPDm : liaison radio GSM
4.2. Format général d'une trame HDLC
Trame : L-PDU ("Link protocol data unit")
4.3. Le fanion ("flag")
Délimite la trame : dedans/dehors
-
la trame est de longueur variable puisque le champ de données est de longueur variable
Format :
-
octet formé de 6 bits consécutifs à 1, préfixés et suffixés par un bit à 0.
Unicité :
-
Comment assurer l'unicité de la configuration binaire du fanion à l'intérieur de la trame puisque le champ de données de la trame peut comporter n'importe quel octet (le transport des données est transparent) ?
Transcodage :
-
la trame (sauf les fanions) est transcodée lors de la transmission
-
toute suite de 5 bits consécutifs à 1 est transcodée en une suite de cinq bits à 1 et d'un bit à 0.
-
augmentation de la longueur de la trame (6/5 au maximum)
-
la longueur de la trame transcodée n'est plus un multiple d'octets !
-
Rencodage : opération inverse au récepteur
Notes :
-
Abandon de la transmission d'une trame :
-
au moins sept bits consécutifs à 1
-
Remplissage de l'espace intertrame :
-
par des fanions ou des éléments de 7 à 14 bits consécutifs à 1.
-
Les trames successives peuvent n'être séparées que par un seul fanion
-
Une suite de plus de 15 bits consécutifs à 1 est interprétée comme une liaison hors service
-
dépend du codage de transmission :
-
codage bipolaire (avec 1 = état neutre).
Exemple :
-
suite binaire originale : 01100010111111110111110
-
suite transcodée: 0110001011111111101111110
4.4. Les adresses
Seulement 2 adresses utilisées normalement (LAP-B)
Identification de la station à laquelle la commande est destinée
-
commande de l'ETCD vers l'ETTD : @A = 11000000
-
commande de l'ETTD vers l'ETCD : @B = 10000000
Identification de la station qui émet la réponse à la commande
-
réponse de l'ETCD vers l'ETTD : @B
-
réponse de l'ETTD vers l'ETCD : @A
Adresse fictive : 00000000
Adresse de diffusion totale ("broadcast"): 11111111
Champ d'adresse extensible :
-
suite quelconque d'octets dont le premier bit est = 0, sauf pour le dernier octet de la suite
-
exemple : 0001 0010 0100 1000 1111 0110 = 0010 0101 0010 0011 1011 0
4.5. Les différents types de trames
Trois types de trames :
-
les trames d'information (I Information)
-
les trames de supervision (S Supervisory)
-
les trames non numérotées (U Unnumbered)
Elles se distinguent notamment par leur champ Commande :
Exemples de champ Commande :
-
I(3, 5, P) : 00111101
-
REJ(4, F) : 01011100
Deux formats du champ Commande existent :
-
le format normal (8 bits)
-
le format étendu pour les trames numérotées (16 bits) : négocié lors de l'établissement de la connexion (SABME) pour avoir un champ de commande plus grand et ainsi effectuer la numérotation modulo 128.
4.6. Les trames d'information
Acheminent les données. Utilisent le "piggybacking".
N(S) :
-
numéro de la trame d'information (modulo 8 ou 128)
N(R) :
-
numéro de la prochaine trame d'information attendue (modulo 8 ou 128)
-
acquitte toutes les trames de numéros strictement inférieurs à N(R)
-
la perte d'un acquittement peut ainsi être compensée par le prochain acquittement
-
exemple : cf paragraphe 4.12
Le bit P/F ("Poll/Final") :
-
Dans le mode équilibré du protocole : LAP-B
-
dans une commande : demande de réponse immédiate
-
dans une réponse : réponse à la demande de réponse immédiate
-
Dans le mode normal (historique) du protocole : LAP
-
code l'alternance du droit d'émission (maître/esclave)
4.7. Les trames de supervision
4 types de trames de supervision,
-
codées dans le sous-champ Type du champ Commande
-
commande ou réponse
-
RR ("Received & Ready") - 00 : acquittement
-
confirme la réception des trames de données de nº < N(R)
-
demande la transmission des trames suivantes
-
RNR ("Received & Not Ready") - 10 : contrôle de flux
-
confirme la réception des trames de données de nº < N(R)
-
interdit la transmission des trames suivantes
-
REJ ("Reject") - 01 : protection contre les erreurs
-
confirme la réception des trames de données de nº < N(R)
-
demande la retransmission des trames de nº >= N(R)
-
SREJ ("Selective Reject") - 11 : protection contre les erreurs
-
confirme la réception des trames de données de nº < N(R)
-
demande la retransmission de la trame de nº = N(R)
-
non-utilisée par LAP-B
4.8. Les trames non-numérotées
Toutes les autres trames nécessaires à la gestion de la connexion
-
MMMMM : code le type des trames non-numérotées
Trame d'établissement de la connexion (commande) :
-
SABM ("Set asynchronous balanced mode") [11100] - en format normal
-
SABME ("Set asynchronous balanced mode extended") - en format étendu
Trame de libération de la connexion (commande) :
-
DISC ("Disconnection") [00010]
Trame de confirmation (réponse) :
-
UA ("Unnumbered acknowledgment")[00110]
Trame de récupération des erreurs (réponse) :
-
FRMR ("Frame reject") [11000]
Trame d'indication de connexion libérée
-
DM ("Disconnected mode") [10 001]
4.9. Quelques variables des entités du protocole
Chaque entité tient à jour les trois variables suivantes :
-
V(S) = numéro de la prochaine trame d'information à émettre,
-
V(R) = numéro de la prochaine trame à recevoir,
-
DN(R) = numéro du dernier acquittement reçu.
et connaît les constantes suivantes :
-
T1 = délai de garde au bout duquel une trame non acquittée est réémise.
-
T2 = délai d'acquittement pendant lequel le récepteur peut retarder l'envoi de l'acquittement d'une trame.
-
N1 = taille maximum d'une trame.
-
N2 = nombre maximum de réémissions d'une même trame.
-
W = largeur de la fenêtre.
-
etc.
4.10. Quelques aspects algorithmiques de la procédure (du protocole) HDLC
4.10.1 Emission d'une trame
Emission d'une trame I :
vérifier que V(S) < DN(R) + W puis :
-
N(S) = V(S) et N(R) = V(R) ;
-
mémoriser la trame;
-
incrémenter V(S) modulo N;
-
armer le temporisateur (délai de garde T1) associé à la trame;
-
armer T2.
Emission d'une trame REJ :
Emission d'une trame RR :
4.10.2 Réception d'une trame
Sur réception d'une trame :
-
Si la trame est invalide
-
alors la trame est ignorée (si FCS incorrect) ou émission d'une trame FRMR (format incorrect).
-
sinon la trame est décodée
Sur réception d'une trame I :
-
Si N(S) != V (R)
-
alors trame non-attendue (déséquencée)
-
sinon /* N(S) = V(R) */
-
armement du temporisateur T2 (délai d'acquittement) associé à N(S);
-
incrémentation de V(R).
-
Si DN(R) =< N(R) < V(S) alors
-
désarmer les temporisateurs T1 des trames de nº compris entre DN(R) et N(R);
-
DNR(R) = N(R);
Sur réception d'une trame RR
-
Si DN(R) =< N(R) < V(S) alors
-
désarmer les temporisateurs T1 des trames de nº compris entre DN(R) et N(R);
-
DNR(R) = N(R).
Sur réception d'une trame REJ
-
Si DN(R) =< N(R) < V(S) alors
-
désarmer les temporisateurs T1 des trames de nº compris entre DN(R) et N(R);
-
DNR(R) = N(R);
-
émettre les trames de numéros compris entre N(R) et V(S) (< N2).
4.10.3 Expiration d'un délai
A l'expiration du délai T1 associé à une trame
-
Si le nombre de retransmissions n'est pas dépassé (< N2)
-
alors on réémet la trame I telle qu'elle a été mémorisée.
A l'expiration du temporisateur T2
4.11. Scénario d'établissement et de rupture d'une connexion
4.12. Scénario de transfert de données
Unidirectionnel ou bidirectionnel
Avec perte
Avec contrôle de flux