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