Vous êtes sur la page 1sur 32

Année 2010-2011

Réseaux I
Protocole de liaison de données

Nicolas Baudru
mél : nicolas.baudru@esil.univmed.fr
page web : nicolas.baudru.perso.esil.univmed.fr

1
Protocole de liaison de données (couche 2 du modèle OSI)

Lors de la transmission des données sur un support de transmission, des


erreurs peuvent se produire : le circuit de données n’est pas sûr en général.

Le protocole de liaison de données


supervise et définit un ensemble de règles
pour assurer la fiabilité des échanges sur un circuit de données.

Règles pour la spécification des unités de données échangées, appelées trames :


I délimitation des différentes trames
I contrôle de la validité des trames
I autres informations de commande

Règles pour la gestion du dialogue entre extrémités :


I procédure de reprise sur erreur
I contrôle du flux de données entre les extrémités
I gestion des acquittements des trames
2
Plan

1 Spécification des trames

2 Gestion du dialogue entre extrémités

3 Conclusion et mise en oeuvre

3
Spécification des trames

Plan

1 Spécification des trames

2 Gestion du dialogue entre extrémités

3 Conclusion et mise en oeuvre

4
Spécification des trames

La trame (données de couche 2)

Trame = paquet (données provenant de la couche 3) + infos de contrôle.


On dit que le paquet est encapsulé dans une trame.

couches OSI

Données paquet
3

encapsulé
informations de contrôle ajoutées
par le protocole de niveau 2
2

délimiteur contrôle du dialogue Données contrôle de validité délimiteur trame

(trans)codée

1
signaux

5
Spécification des trames

Délimitation de trames par fanion

Une séquence de bits spécifiques, appelée fanion, est ajoutée au début et à la


fin des trames pour les délimiter.

fanions

01111110 contrôle du dialogue Données contrôle de validité 01111110 trame

Afin d’interpréter correctement la trame, un mécanisme de transparence doit


être mis en oeuvre par le protocole sur l’ensemble de la trame hors fanions. On
peut utiliser par exemple la méthode du bit stuffing.

Exemple : Données du paquet : 0110 1111 1100 1110 1001.


Fanion utilisé par le protocole : 0111 1110.
Sans mécanisme de transparence la trame envoyée serait mal interprétée :
0111 1110 0110 1111 1100 1110 1001 0111 1110.
Avec mécanisme de transparence, il n’y a plus d’ambiguı̈té :
0111 1110 0110 1111 10100 1110 1001 0111 1110.
6
Spécification des trames

Délimitation de trames par transmission de la longueur des données

Un champs en entête indique la longueur des données utiles de la trame (en


octet, mot ou double mot). Ce champs est généralement précédé d’un
délimiteur de trame.

délimiteur lg. de trame contrôle du dialogue Données contrôle de validité trame

Ce mécanisme induit une taille de trame maximale. De plus les données utiles
doivent avoir une longueur multiple d’un octet, d’un mot ou d’un double mot
suivant le cas.

Exemple : Données du paquet : 0110 1111 1110 1110 1001 0010.


Taille du champs lg : 4 bits
Nombre d’octets de la trame : 3 soit 0011 (en binaire)
Fanion : 0101 0101
Trame envoyée : 0101 0101 0011 0110 1111 1100 1110 1001 0010.

7
Spécification des trames

Détection d’erreurs

Les supports de transmission n’étant pas fiables, il faut mettre en oeuvre des
mécanismes pour vérifier la validité des trames reçues. Pour cela, on ajoute
aux trames transmises une certaine redondance. Plusieurs mécanismes de
détection d’erreur existent :
I détection par echo
I détection par répétition
I détection d’erreur par clé calculée
I détection et correction d’erreur par code correcteur

8
Spécification des trames

Détection d’erreurs par clé

On ajoute aux trames transmises une redondance qui est une information de
contrôle calculée par un algorithme spécifié dans le protocole à partir des
données utiles.

calcul à l'émission vérification à la réception

couche liaison de données

ur
ur
information à transmettre information récupérée

couche liaison de données

re
re
er
er
d'
s

non
pa
oui
algo de
calcul =?

information redondante
erreur possible
couche physique couche physique
(adaptation de l'information au support) (adaptation de l'information au support)

canal de transmission

9
Spécification des trames

Exemple d’algorithmes de détection d’erreurs : VRC et LRC

Vertical Redundancy Check (VRC) : on effectue un calcul de parité pour


chaque caractère. Permet de déterminer si un nombre impair d’erreur s’est
produit lors de la transmission d’un caractère.

Longitudinal Redundancy Check (LRC) : on effectue un calcul de parité sur


les bits de même rang. S’utilise souvent avec VRC pour renforcer le code.

Exemple : VRC + LRC


lettre lettre codée VRC
H 0001001 0
E 1010001 1
L 0011001 1
L 0011001 1
O 1111001 1
LRC 0100001 0

H0 E1 L1 L1 O1 LRC = 0100001 0 trame

10
Spécification des trames

Exemple d’algorithmes de détection d’erreurs : CRC

Cyclic Redundancy Check (CRC) : appelé aussi contrôle polynomial, il est très
utilisé dans les protocoles modernes car il permet de détecter des erreurs sur
plusieurs bits.

Cette méthode utilise les polynômes suivants :


I Polynôme associé à une information P (x) : soit bn . . . b0 la suite de bits
correspondant à l’information à transmettre. Alors P (x) = bn xn . . . b0 x0 .
I Polynôme générateur Q(x) : polynôme caractérisant le contrôle.
I Polynôme reste R(x) : correspond à l’information redondante ajoutée en
fin de trame. Si r est le degrè de Q(x) alors R(x) est le reste de la division
euclidienne de xr × P (x) par Q(x) :
R(x) = (xr × P (x)) mod Q(x) = cr−1 xr−1 . . . c0 x0
L’information redondante correspondante à R(x) est cr−1 . . . c0 .

bn ... b0 cr ... c0 trame


P(x) R(x)

11
Spécification des trames

Exemple d’algorithmes de détection d’erreurs : CRC (suite)

Exemple : Soit 1000001110000100 l’information à transmettre. Alors le


polynôme correspondant est :
P (x) = x15 + x9 + x8 + x7 + x2
Soit le polynôme de contrôle de degrès 12 suivant :
Q(x) = x12 + x11 + x3 + x2 + x + 1
La division de x12 × P (x) par Q(x) donne le polynôme reste :
R(x) = (x12 × P (x)) mod Q(x) = x11 + x9 + x8 + x7 + x6 + x4 + 1
L’information redondante à ajouter en fin de trame est donc : 101111010001.

La trame envoyée contient donc : 1000001110000100 101111010001.

1000001110000100 101111010001 trame


P(x) R(x)

12
Spécification des trames

Exemple d’algorithmes de détection d’erreurs : CRC (fin)

Le protocole de liaison de données du coté destinataire reçoit donc une trame


du type :

b'n ... b'0 c'r ... c'0 trame


P'(x) R'(x)

Pour vérifier la validité des données, il suffit d’effectuer le quotient suivant :

(xr × P 0 (x) + R0 (x))/Q(x)

Si le reste est nul alors on suppose qu’il n’y a pas eu d’erreur de transmission.
Si le reste n’est pas nul, alors il y a eu une erreur de transmission et il faut
demander la réémission de la trame.

13
Gestion du dialogue entre extrémités

Plan

1 Spécification des trames

2 Gestion du dialogue entre extrémités

3 Conclusion et mise en oeuvre

14
Gestion du dialogue entre extrémités

Modes d’exploitation d’une liaison de données

Le mode d’exploitation d’une liaison de données peut être :


I simplex : l’échange de données se fait dans un seul sens ;
I half-duplex : l’échange de données se fait alternativement dans les deux
sens. Ce mode d’exploitation nécessite souvent des règles supplémentaires
d’accès au support pour éviter la contention. Ex. : Ethernet (IEEE 802.3) ;
I full-duplex : l’échange de données se fait dans les deux sens
simultanément. Ex. : ppp.

Remarque : le mode d’exploitation d’une liaison de données peut différer de


celui du circuit de données. Par exemple, un circuit de données permettant des
communications en half-duplex peut être exploité seulement en simplex par le
protocole de liaison.

15
Gestion du dialogue entre extrémités

Représentation des échanges de données

durée de délai de
transmission propagation

A
trame émise

temps
r

ir
re re
oi

tre

vo
tt
ev
ce me

et

ce
c

ém

re
é
à

d'
à

de
ce

it

it
fin
en

en

fin
A
m

B
m

m
co

co
A

16
Gestion du dialogue entre extrémités

Contrôle de flux — définition

Contrôle de flux : mécanisme de contrôle du rythme d’envoi des informations


vers le récepteur.

Que fait-on de
la trame orange ?

mémoire de B
(peut stocker
jusqu'à deux trames)

17
Gestion du dialogue entre extrémités

Contrôle de flux — trames de supervision

Trames de supervision : RR (Receiver Ready) et RNR (Receiver Not Ready).

délimiteur RR / RNR / données Données contrôle de validité délimiteur trame

R
R

R
un

un
A

nd

nd
te

te
at

at
A

A
B RR RNR RR RR RNR RR

Exemple sur un canal exempt d’erreur

18
Gestion du dialogue entre extrémités

Gestion des acquittements

Les trames de supervision peuvent aussi servir d’acquitement afin de gérer les
erreurs de transmission. Cela nécessite l’utilisation d’un temporisateur.

T>max T>max
=> réémission => réémission

T:=0 T:=0 T:=0 T:=0

B RR RR RR

La même trame
est reçue deux fois !
19
Gestion du dialogue entre extrémités

Numérotation des trames d’information

Pour éviter qu’une même trame soit reçue deux fois, le protocole de
communication numérote chaque trame d’information.

délimiteur RR / RNR / I num Données contrôle de validité délimiteur trame

Deux trames avec des numéros différents seront considérées différentes !

Mise en oeuvre :
I Soit m le nombre de bits dans la trame utilisé pour la numérotation.
Alors il ne peut y avoir plus de 2m numéros de trames différents.
=⇒ il faut numéroter modulo 2m .
I L’émetteur possède un compteur E (modulo 2m ). Si le compteur vaut n
alors la prochaine trame envoyée portera le numéro n. Puis le compteur
est incrémenté de 1 (mod 2m ).
I Le récepteur possède un compteur R (modulo 2m ). Si le compteur vaut n
alors la prochaine trame reçue doit porter le numéro n. Puis R est
incrémenté de 1 (mod 2m ).
Que manque-t-il dans cet algorithme ?
20
Gestion du dialogue entre extrémités

Numérotation des trames d’information

T>max T>max
=> réémission => réémission

T:=0 T:=0 T:=0 T:=0

A
I0 I1 I1 I1

B RR RR RR

I0
I1 I1
Poubelle

Le choix de la temporisation a-t-elle une influence sur la gestion du dialogue ?


21
Gestion du dialogue entre extrémités

Numérotation des trames d’information : problème de temporisation

T>max
=> réémission

T:=0 T:=0 T:=0 T:=0

A
I0 I0 I1 I2

B RR RR RR

I0 I0 I0
I2
Poubelle

Comment régler le problème ?

22
Gestion du dialogue entre extrémités

Notion de fenêtre

Dans les exemples précédents, l’émetteur doit attendre de recevoir un RR


avant de pouvoir réémettre. Afin d’augmenter l’efficacité du dialogue, on
utilise la notion d’anticipation :
on autorise maintenant l’émetteur à envoyer plusieurs trames successivement
sans avoir reçu de RR.
Si la numérotation des trames se fait modulo k, le nombre de trames r
pouvant être émises sans RR doit être inférieur à k − 1.
Pourquoi ?
Ce nombre r est appelé fenêtre d’anticipation.

Puisque plusieurs trames peuvent être émises successivement, il faut en cas


d’erreur que la trame de supervision RR explicite quelles trames ont été
correctement reçues. =⇒ il faut donc numéroter les trames RR.

Exemple : Si l’émetteur a émis les trames I3, I4, I5 et I6 puis qu’il reçoit la
trame RR5, alors les trames I3 et I4 ont bien été reçues.
23
Gestion du dialogue entre extrémités

Notion de fenêtre — Un premier exemple

Avec une fenêtre d’anticipation égale à 1 sur un circuit sans erreur :

7 0 7 0 7 0
6 1 6 1 6 1
fenêtre
5 2 5 2 5 2
d'émission 4 3 4 3 4 3

A
I0

B RR1
fenêtre 7 0 7 0
d'émission 6 1 6 1
5 2 5 2
4 3 4 3

24
Gestion du dialogue entre extrémités

Notion de fenêtre — un autre exemple

Avec une fenêtre d’anticipation égale à 2 sur un circuit sans erreur :

7 0 7 0 7 0 7 0 7 0
6 1 6 1 6 1 6 1 6 1
fenêtre
5 2 5 2 5 2 5 2 5 2
d'émission 4 3 4 3 4 3 4 3 4 3

A
I0 I1 I2

B RR1 RR2 RR3


fenêtre 7 0 7 0 7 0 7 0
d'émission 6 1 6 1 6 1 6 1
5 2 5 2 5 2 5 2
4 3 4 3 4 3 4 3

25
Gestion du dialogue entre extrémités

Protocole Go-Back-N

Avec une fenêtre d’anticipation égale à 3 sur un circuit avec erreur :

7 0 7 0 7 0 7 0 7 0
6 1 6 1 6 1 6 1 6 1
fenêtre
5 2 5 2 5 2 5 2 5 2
d'émission 4 3 4 3 4 3 4 3 4 3

A
I0 I1 I2 I0 I1

rupture de
B REJ0 RR1
séquence !
fenêtre 7 0 => 7 0 7 0
d'émission 6 1 B ne mémorise 6 1 6 1
5 2 pas la trame 1 5 2 5 2
4 3 et demande à A 4 3 4 3
de tout réémettre
à partir de la trame 0

26
Gestion du dialogue entre extrémités

Piggy-Backing

Supposons que l’échange soit bidirectionnel. Dans ce protocole, les trames


d’information vont aussi jouer le rôle de trames de suppervision. Pour cela, il
suffit d’ajouter un champs supplémentaire acquittant les trames émises dans le
sens opposé :

délimiteur num ack RR / RNR / I num Données contrôle de validité délimiteur trame

A
I0,1 I1,1 I2,3 I3,3 RR,4

B
I0,0 I1,0 I2,1 I3,3

Avec une fenêtre d’anticipation égale à 3.


27
Conclusion et mise en oeuvre

Plan

1 Spécification des trames

2 Gestion du dialogue entre extrémités

3 Conclusion et mise en oeuvre

28
Conclusion et mise en oeuvre

Services offerts par un protocole de liaison de données

Nous avons vu qu’un protocole de liaison de données peut offrir plusieurs


services au protocole de niveau supérieur :
I service sans acquittement, ni connexion, ni contrôle de flux
I service avec acquittement, mais sans connexion ni contrôle de flux
I service avec acquittement, connexion et contrôle de flux

Ne manque-t-il pas quelque chose pour que le protocole de liaison de données


soit complet ?

29
Conclusion et mise en oeuvre

HDLC (High level Data Link Control)

Protocole point à point normalisé par l’ITU. Il offre un service avec


acquittement, connexion et contrôle de flux.

I fonctionne en duplex intégral sur un liaison point à point


I transmisson synchrone
I met en oeuvre le bit stuffing
I utilise le plus souvent le Go-back-N avec un mécanisme de contrôle de flux
I transmission par bit de poids faible d’abord pour chaque champs

30
Conclusion et mise en oeuvre

HDLC (High level Data Link Control)

Structure de la trames HDLC :


I Fanion : marque le début et la fin de la trame de longueur quelconque.
I Adresse : identifie une des extrémités de la liaison.
I Contrôle : décrit le type de la trame (RR/RNR/REJ,I,U).
I Données : données provenant du protocole supérieur (peut être vide).
I FCS : Frame Control Sequence. C’est un contrôle polynomial avec comme
polynôme générateur x16 + x12 + x5 + 1.

01111110 Adresse Contrôle Données FCS 01111110


8 bits 8 bits 8 bits N bits 16/32 bits 8 bits

31
Conclusion et mise en oeuvre

HDLC — le champs contrôle

Trois types de trame HDLC :


I I : trame d’information

num ack P/F num 0


3 bits 1 bit 3 bits 1 bit

I S : trame de suppervision RR/RNR/REJ. Le champs de données est vide.


3 bits 1 bit 4 bits
num ack P/F RR=0001 ou RNR=0101 ou REJ=1001

I U : trame non numérotée. Sert entres autres pour l’initialisation et la


libération de la liaison. Le champs de données est vide.
3 bits 1 bit 4 bits
xxx P/F xx11

32