Réseaux I Protocole de liaison de données

Transcription

Réseaux I Protocole de liaison de données
Année 2010-2011
Réseaux I
Protocole de liaison de données
Nicolas Baudru
mél : [email protected]
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
3
paquet
Données
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
information redondante
er
d'
s
pa
couche liaison de données
information récupérée
oui
algo de
calcul
couche liaison de données
information à transmettre
re
ur
er
re
non
ur
vérification à la réception
=?
erreur possible
couche physique
(adaptation de l'information au support)
couche physique
(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
H
E
L
L
O
LRC
lettre codée
0001001
1010001
0011001
0011001
1111001
0100001
H0 E1 L1 L1 O1
10
VRC
0
1
1
1
1
0
LRC = 0100001 0
trame
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
P(x)
R(x)
11
trame
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
P(x)
R(x)
12
trame
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
P'(x)
trame
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
transmission
A
délai de
propagation
trame émise
m
m
co
B
A
co
m
m
en
ce
à
en
é
ce me
tt
à
re re
c
ev
A
oi
fin
r
it
d'
ém
et
tre
B
fin
it
de
re
ce
vo
ir
B
16
temps
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.
A
Que fait-on de
la trame orange ?
B
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).
Données
trame
contrôle de validité délimiteur
B
RR
R
un
at
te
A
A
at
te
nd
A
nd
un
R
R
RR / RNR / données
R
délimiteur
RNR
RR
RR
Exemple sur un canal exempt d’erreur
18
RNR
RR
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:=0
T:=0
T>max
=> réémission
T>max
=> réémission
T:=0
T:=0
A
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
A
B
T:=0
T:=0
I0
I1
T>max
=> réémission
T>max
=> réémission
T:=0
T:=0
I1
I1
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
A
B
T:=0
I0
T:=0
I0
RR
I1
I2
RR
I0
RR
I0
Poubelle
Comment régler le problème ?
22
T:=0
I0
I2
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 :
fenêtre
d'émission
6
5
7 0
1
2
6
5
4 3
7 0
1
2
6
5
4 3
A
4 3
I0
B
fenêtre
d'émission
7 0
RR1
6
5
7 0
1
2
6
5
4 3
7 0
4 3
24
1
2
1
2
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 :
6
5
fenêtre
d'émission
7 0
1
2
6
5
7 0
1
2
7 0
4 3
4 3
4 3
I0
I1
I2
A
B
fenêtre
d'émission
6
5
1
2
RR1
6
5
7 0
4 3
1
2
6
5
7 0
7 0
4 3
4 3
25
7 0
1
2
6
5
4 3
1
2
RR3
6
5
7 0
4 3
RR2
6
5
1
2
6
5
7 0
4 3
1
2
1
2
Gestion du dialogue entre extrémités
Protocole Go-Back-N
Avec une fenêtre d’anticipation égale à 3 sur un circuit avec erreur :
fenêtre
d'émission
A
B
fenêtre
d'émission
6
5
7 0
1
2
6
5
7 0
1
2
6
5
7 0
4 3
4 3
4 3
I0
I1
I2
rupture de
séquence !
=>
7 0
B ne mémorise
6
1
pas la trame 1
5
2
4 3
et demande à A
de tout réémettre
à partir de la trame 0
1
2
6
5
7 0
1
2
6
5
4 3
4 3
I0
I1
REJ0
6
5
7 0
4 3
26
1
2
7 0
RR1
6
5
7 0
4 3
1
2
1
2
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
A
B
num ack
I0,1
I0,0
I1,0
RR / RNR / I
num
Données
I1,1
I2,3
I2,1
contrôle de validité délimiteur
I3,3
RR,4
I3,3
Avec une fenêtre d’anticipation égale à 3.
27
trame
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
8 bits
Adresse
8 bits
Contrôle
8 bits
Données
N bits
31
FCS
16/32 bits
01111110
8 bits
Conclusion et mise en oeuvre
HDLC — le champs contrôle
Trois types de trame HDLC :
I
I : trame d’information
num ack
3 bits
I
I
P/F
num
0
1 bit
3 bits
1 bit
S : trame de suppervision RR/RNR/REJ. Le champs de données est vide.
3 bits
1 bit
num ack
P/F
4 bits
RR=0001 ou RNR=0101 ou REJ=1001
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