chapitre 3.pdf

Preview:

Citation preview

Chapitre 3: Fiabilisation de transmission

(Couche liaison)

ABBACI KAHYA N

Université Badji Mokhtar Annaba

Département d'informatique

Kahya.noudjoud@gmail.com

Plan

Introduction

Délimitation de trames

Détection/Correction d’erreurs

Contrôle de flux

Introduction

Couche liaison

Nous avons étudié tous les mécanismes à mettre en œuvre pour

transmettre un flot de bits entre deux systèmes distants.

La couche physique nous permet une transmission brute de bits

par un medium reliant une machine A à une machine B.

Comment assurer une transmission exempte d'erreurs sur un

canal de communication ? couche liaison.

La couche liaison est responsable du transfert des

datagrammes d’un nœud à un nœud adjacent à travers une liaison.

DEFINITION : Ensemble des matériels et des logiciels

fournissant les moyens fonctionnels nécessaires pour

acheminer des données avec un taux d'erreur garanti.

OBJECTIF : fiabiliser la transmission physique et offrir un

service a la couche RESEAU pour acheminer les bits remis

par le processus réseau vers leur destination.

Services offerts

La délimitation des blocs de données

Contrôle de l’intégrité des données reçues.

L’organisation et le Contrôle de l’échange.

Contrôle de la liaison et l'accès à un canal partagé (MAC)

Trames

Les données sont fractionnées en trames.

Une donnée échangée au niveau liaison s’appelle une trame.

Données + Commandes

Problème : comment délimiter les trames ?

Délimitation de trames

Délimitation des trames

Il existe trois méthodes :

Indiquer la taille de chaque trame (Compter les caractères)

Utiliser des champs délimiteurs de trame

Violer le codage normalement utilisé dans la couche physique

Compter les caractères

On utilise un champ dans l'en-tête de la trame pour indiquer le

nombre de caractères de la trame.

Problème : si la valeur du champ est modifiée au cours de la

transmission.

Méthode rarement utilisée seule.

Compter les caractères

Utilisation des délimiteurs

Un fanion (délimiteur) est placé :

au début de chaque trame

à la fin de chaque trame (en fait, au début de la suivante)

Un fanion (flag) = séquence particulière de bits.

Des bits de transparence sont alors nécessaires pour

qu’une séquence binaire dans la trame ne corresponde

accidentellement au fanion.

Exemple

Fanion : 01111110

Bit de transparence : 0 inséré après toute séquence de cinq 1

successifs dans la trame.

Technique utilisée dans :

HDLC High-Level Data Link Control

PPP Point to Point Protocol

Exemple

01111110 01111110

01011001111110

Données :

Trame :

010110011111010

Utiliser des fanions

Avantages

permet toujours de retrouver la synchronisation

permet l'envoi de trames de tailles quelconques

technique la plus simple

.

Violer le codage

Utilisable lorsque le codage sur le support physique contient

des redondances

Par exemple :

0 = impulsion positive puis négative

1 = impulsion négative puis positive

On peut donc utiliser les combinaisons positive-positive et

négative-négative pour délimiter les trames

Utilisée dans la norme 802

Détection/Correction d’erreurs

Problématique

Le support matériel utilisé par la couche physique n'est pas fiable à 100%

Il est par conséquent nécessaire de pouvoir détecter des erreurs parmi la suite

de bits reçue, et éventuellement les corriger. Pour cela, la couche liaison de

données de l'émetteur ajoute des bits au message à transmettre, qui permettent

à la couche liaison de données de l'entité réceptrice du message de vérifier la

cohérence de ce qu'elle a reçu.

La problématique des erreurs comporte 3 aspects :

la détection d'une erreur ;

la localisation de l'erreur détectée ;

la correction de l'erreur trouvée.

Pour répondre a ces problèmes, on utilise des codes qui sont

appliqués au message à transmettre.

Ils permettent de détecter certaines erreurs, mais pas

nécessairement toutes, et peu permettent la correction.

Code simple

Un code simple : la répétition

Une approche naïve consiste à dupliquer ( c'est-à-dire répéter) le message à

transmettre.

Supposons que le message effectivement transmis soit le double du message réel.

Par exemple, pour envoyer 11100010, on transmet 1110001011100010

La détection et la localisation des erreurs sont alors simples : on cherche les

différences entre la première et la seconde moitiés du message.

Par contre, il est impossible de corriger une erreur détectée : le bit erroné est

différent dans les deux copies, et rien ne permet de dire lequel est le bon.

Pour remédier à ce problème, on peut envoyer les message en 3 exemplaires au

lieu de 2

Dans ce cas, un bit a soit la même valeur dans toutes les copies, ou la même

valeur dans deux d'entre elles et l'autre valeur dans la troisième copie. Le bit

correct est celui qui apparaît en deux exemplaires.

Un code simple : la répétition

Le code de répétition est simple, mais présente de nombreux

inconvénients:

o La détection et la correction d'erreurs nécessitent l'introduction

de redondance dans les messages transmis. La taille du message à

transmettre peut alors augmenter de manière significative.

o Certaines erreurs peuvent ne pas être détectées. C'est le cas

lorsque l'on utilise la redondance, si le même bit est erroné dans

toutes les copies du message.

Détection d’erreurs

Codes à contrôle de parité

Les codes à contrôle de parité sont de parité soit paire, soit impaire.

Dans le premier cas, on va protéger une séquence de bits en ajoutant

un nouveau bit de telle sorte que le nombre de bits ayant la valeur 1

(dans la séquence protégée plus le bit introduit) soit pair. Dans le

second cas, ce nombre doit être impair.

VRC (Vertical Redundancy Check)

C'est la technique la plus simple. Un code ASCII étant défini sur 7 bits,

on utilise le 8ème bit de l'octet pour introduire le code vérificateur.

Codes à contrôle de parité

Exemple : Pour transmettre la chaîne de caractères IUT, on code

chaque lettre en ASCII, puis on a joute le code de parité.

Pour envoyer le message avec un code de parité pair, on transmet

(avec l'ordre d'envoi des bits de gauche à droite) :

Ce code permet de détecter les erreurs en nombre impair sans

pouvoir corriger. Il est peu efficace.

Codes à contrôle de parité

LRC (Longitudinal Redundancy Check)

Le principe est similaire à celui du VRC, mais au lieu de protéger les caractères un par un, on protège l'ensemble des bits de même rang de tous les caractères. On obtient alors un code de protection sur 7 bits.

Pour envoyer le message avec un code de parité pair, on transmet:

Codes à contrôle de parité LRC+VRC

On peut également combiner les deux techniques précédentes. On

protège alors chaque caractère par un code VRC et l'ensemble des bits

par un code LRC. On obtient donc un LRC sur 8 bits. La parité des LRC

et VRC utilisés est la même (tous les deux pairs ou tous les deux

impairs).

Exemple : Pour transmettre la chaîne de caractères IUT, on code chaque

lettre en VRC puis en LRC :

Pour envoyer le message avec un code de parité pair, on transmet:

Codes polynomiaux

Les codes polynomiaux, encore appelés CRC (Cycling Redundancy

Code), sont utilisés par la plupart des protocoles actuels.

Un code polynomial est basé sur l'utilisation d'un polynôme générateur

G(x) connu à l'avance par à la fois l'émetteur et le récepteur du message.

Les polynômes manipulés sont binaires : tous les coefficients sont 0 ou 1

Par conséquent, un polynôme générateur de degré k s'écrit sous la forme :

Codes polynomiaux

Le polynôme G(x) est associé à une valeur binaire.

Exemple : La valeur binaire associée au polynôme G(x) = x 3 +

x+ 1 est 1011

Soit M le message (séquence de bits) à protéger. Un polynôme

M(x) lui est associé :

Exemple : Au message M = 1101 est associé le polynôme M(x) =

x 3 + x 2 + 1

Emetteur Soit D(x) les données à envoyer et k le degré de G(x)

1) calculer D(x)*xk

revient à ajouter k zéros (poids faibles) à D(x)

2) calculer D(x)*xk / G(x)

on obtient le quotient Q(x) et le reste R(x)

3) calculer T(x) = D(x)*xk - R(x)

revient à remplacer les k zéros par R(x)

Récepteur

T(x) est le mot transmis par l’émetteur

T’(x) est le mot reçu par le récepteur

Le récepteur effectue le test suivant :

Si T’(x) / G(x) donne un reste égal à 0 alors

pas d’erreur

sinon

une erreur

fin si

Normalisation

Plusieurs polynômes ont fait l’objet d’une norme car possédant

de bonnes propriétés

CRC 12 = x12 + x11 + x3 + x2 + x +1

CRC 16 = x16 + x15 + x2 + 1

CRC CCITT = x16 + x12 + x5 + 1

Exemple

D(x) = 0101 1100

G(x) = 1 1000 0101

D(x)*xk = 0101 1100 0000 0000

R(x) = 0100 1101

T(x) = 0101 1100 0100 1101

Exemple Exercice1 : Soient le polynôme générateur G(x) = x 3 + x + 1 et le

message à envoyer M = 1101. Le polynôme correspondant au

message est M(x) = x 3 + x 2 + 1. Le degré de G(x) est 3. Donc,

P (x) = M(x).x 3 = x 6 + x 5 + x 3

1. Effectuons la division de P (x) par G(x).

2. Trouvez R(x) et le message à envoyé.

Détection et Correction d’erreurs

Correction d'erreurs

Deux approches permettent de corriger les erreurs :

les codes auto-correcteurs, tels que le code de Hamming

la correction par retransmission qui demande à l'émetteur de

retransmettre le message lorsqu'une erreur est détectée.

Le code de Hamming

Le code de Hamming est utilisé dans les transmissions de

données car il permet de détecter et de corriger une erreur

survenue dans un bloc transmis.

Principe du codage.

On fixe un entier k et on code chaque bloc de m = 2k- k-1

bits de données par un bloc de n = 2k- 1 bits en ajoutant

donc k bits, dits de correction, a certaines positions au bloc

de m bits.

Le tableau suivant indique les nombres de bits de correction,

de données pour différentes valeurs de k.

Le code de Hamming

Position des k bits de correction :

Les k bits de correction sont placés dans le bloc envoyé aux

positions d’indice une puissance de 2. Ainsi, en notant k1 k2 k3

les bits de correction et m1 m2 m3 m4 les bits de données, le

bloc envoyé est :

m4 m3 m2 k3 m1 k2 k1.

Le code de Hamming Calcul des k bits de correction :

Les k bits de correction sont calcules en utilisant une matrice de parité H, représentée ci-dessous pour k=3.

Les k bits de correction sont tels qu’en

considérant le vecteur

Le code de Hamming

On obtient ainsi 3 équations scalaires que doivent vérifier les k

bits de correction :

Le code de Hamming

Réception des données et vérification :

On reçoit le bloc C = c1 c2 c3 c4 c5 c6 c7 qui peut être

différent du bloc A si il y a eut des perturbations sur la ligne.

Si on considère qu’il n’y a eut qu’une seule erreur de

transmission, alors on peut écrire :

C = A + E ou E est un bloc contenant 6 bits a 0 et 1 bit a 1.

Les positions des 0 et du 1 sont inconnues dans le bloc.

Le code de Hamming

On calcule le vecteur S tel que :

Finalement, S est une des colonnes de la matrice de parité dont

l’indice nous donne la position de l’erreur dans le bloc C. L’erreur est

corrigée en changeant le bit considère d’état.

s3 s2 s1 est le code binaire de position de l’erreur dans le bloc C que

nous obtenons a partir des équations suivantes :

Le code de Hamming

Exercice 1: On souhaite envoyer le message 1010, compléter

le mot de Hamming correspondant.

Exercice 2 : On veut envoyer le mot 1011, quels bits, je doit

lui adjoindre et quelle séquence je transmettrai alors ?

Exercice 3 : y a-t-il une erreur dans le mot suivant ? 1101101

Demande de retransmission

Lorsque l'on effectue de la correction par demande de

retransmission, l'émetteur conserve une copie des données

envoyées. Le récepteur applique une méthode de détection

des erreurs. Quand il reçoit un message, le récepteur renvoie

un paquet à l'émetteur, contenant un acquittement positif si

aucune erreur n'a été détectée, et un acquittement négatif si

une erreur a été trouvée. Lors de la réception d'un

acquittement négatif, l'émetteur retransmet le message

erroné.

Contrôle de flux

contrôle de flux

Réguler le flux de données entre un émetteur et un récepteur Capacité de stockage

Capacité de traitement

Plusieurs variantes de contrôle de flux :

Protocole de type « envoyer et attendre » (Send and Wait)

Les données ne circulent que dans un sens

Une seule trame est envoyée a la fois

Le récepteur Informe I 'émetteur de son état par un acquittement

Protocoles avec fenêtre d'anticipation (Sliding Window)

Les données circulent dans les deux sens

Plusieurs trames sont envoyées a la fois

Liste des numéros de séquence de trames = fenêtre d'anticipation

Contrôle de flux : principes

Chaque trame envoyée doit être acquittée par le récepteur.

L’acquittement peut être positif (ACK) ou négatif (NACK)

Contrôle de flux : principes Problème 1:

Solution : Armer un temporisateur T1 après l’envoi d’une trame d’information.

Si T1 expire avant la réception d’un acquittement (+ ou -), Alors l’émetteur renvoi la même trame d’information.

Contrôle de flux : principes

Problème 2 :

Solution : Numérotation de trames (identification).

Contrôle de flux : principes

Problème 3 :

Si chaque trame doit être acquittée par une trame spécifique

et d’une manière individuelle l’efficacité de la liaison sera

très faible.

La plupart de temps les extrémités de la liaison seront en état

d’attente d’acquittement.

Contrôle de flux : principes

Solutions :

Piggypacking : le récepteur peut acquitter une trame

d’information reçue par l ’envoi d’une autre trame

d’information.

Anticipation : l’émetteur peut envoyer w trames sans avoir

un acquittement.

Acquittement groupé : Le récepteur peut acquitter par une

seule trame un groupe de trames reçues.

• Numérotation de trames d’information

• Acquitter la trame N c’est acquitter toutes les trames précédentes 1..N

Contrôle de flux : principes

L’acquittement peut être explicite ou implicite

Chaque trame d’informations est identifiée par un numéro.

La numérotation de trames est faite modulo 2n où n est le

nombre de bits utilisés pour représenter les numéros de

trames.

Selon le protocole HDLC, n = 3

Protocoles de liaison de données

1960 : BSC (Binary synchronous communication) - IBM

Protocole orienté caractère

Synchronisation en continue

1970 : SDLC (Synchronous Data Link Control) - IBM/ANSI

Orienté trame

1976-80 : HDLC (High Data Link Control) - ISO

Protocole orienté bit

ISO 3309 (format), ISO 4335 (HDLC), ISO 7776 (LAP-B), ISO 7448 (MLP) ISO 8471 (HDLC équilibré)

1985 : Liaison de réseaux locaux

HDLC

HIGH-LEVEL DATA LINK CONTROL Protocole de référence normalisé par I'lSO.

Version très générale (LAP-B, LAP-D, LLC, PPP, LAP-X, ...),

Utilise dans LAN, Internet, GSM.

Caractéristiques:

Transmission synchrone

Oriente bit

Liaisons point-a-points ou multi-points

Full Duplex

Mécanisme d'anticipation

fenêtre de 7 trames : HDLC et LAP-B

fenêtre de 127 trames : LAP-B étendu, PPP

Transmission fiable ?

Problème : Garantir la réception correcte, sans duplication

et dans l’ordre des informations transmises.

Solution:

Utilisation d’un code polynomial. G( x) = x16 + x15 + x2 + 1.

Utilisation de technique d’acquittement positif et négatif.

Numérotation de trames.

Format des trames (HDLC)

Format des trames (HDLC)

Taille minimale d’une trame : 6 octets

Types de trames

HDLC est un protocole de transmission fiable qui opère en mode connecté :

Trames de gestion de la liaison (U)

Demande de connexion, acceptation, refus, libération de la connexion

Trames d’informations (I)

Trames de transmission effective des données.

Trames de supervision de la transmission (S)

Acquittements : positifs et négatifs

Trois types : 2 bits suffisent pour les distinguer

Types de trames : définitions

Le champs contrôle définit le type de la trame.

Le bit P/F

On dit que le bit P/F est positionné s’il a la valeur 1.

Par pure convention de notation on dit :

Un bit P/F positionné a la valeur P si la trame est une trame de commande.

Un bit P/F positionné a la valeur F si la trame est une trame de réponse.

L’émetteur d ’une commande exige une réponse immédiate.

En recevant une trame avec le bit P/F positionné, la signification de ce bit dépend du contexte local.

F si le récepteur a déjà envoyé une commande

P si aucune commande n ’est envoyée.

Trames d’informations (I)

Ns : Numérotation des trames émises: 3 bits donc numéro

module 8

Nr : Numéro de la prochaine trame d’information

attendue: Numérotation modulo 8.

Une trame acquitte toutes les trames de numéros strictement

inférieur à Nr

Trames de supervision (S)

RR (Recieved Ready) [00]: Acquittement

Prêt à recevoir, accusé de réception utilisé lorsque le récepteur n’a pas de trame d’infot à envoyé.

RNR (Recieved & Not Ready) [10] : contrôle de flux

Non prêt à recevoir, le récepteur demande à l’émetteur d’arrêter ses émissions et d’acquitté les trames acceptées N( r ) -1

REJ (Reject) [01]

Demander la retransmission a partir de la trame Nr.

Trames de gestion (U)

SABM [11100]: commande de passage en mode équilibré,

chaque station peut émettre sans autorisation.

SABME [11110]: passage en mode étendu.

UA [00110]: Trame de confirmation de connexion

DISC [11010]: Libération de la connexion

FRMR[11000]: Rejet de trames

HDLC : ÉTABLISSEMENT ET RUPTURE DE

CONNEXION (TRAME U)

Connexion

La source demande l’établissement d’une liaison par l’envoi de trames non numérotées (U) de type SABM (Set Asynchronous Balanced Mode) , P =1

La destination, si elle accepte la connexion, répond par la trame non numérotée UA (Unnumbered Acknowledgement), F = 1 identique à celui du bit P.

La liaison est établie, l’échange d’informations peut donc commencer.

Déconnexion

La source émet une demande de déconnexion DISC (DISConnect), P est positionné indifféremment à 1 ou à 0.

La destination accuse la réception avec UA, F prend la même valeur du bit P de la trame DISC

La liaison est rompue.

HDLC : ÉTABLISSEMENT ET RUPTURE DE

CONNEXION (TRAME U)

HDLC : ÉCHANGE DE DONNÉES (TRAME I)

Chaque extrémité met à jour les variables suivantes :

V(s) : indique le numéro de la trame à émettre,

V(r) : indique le numéro de la trame attendue

Après la phase de connexion les compteurs sont initialisés à zéro de chaque côté

N(S) : numéro de la trame reçus

N(R) : acquittement des trames reçues de numéro strictement inférieur à N(S)

HDLC : GESTION DES ERREURS (TRAME S)

Exemple de la reprise sur erreur

Supposons la trame 2 erronée, elle est ignorée par le récepteur.

La trame 3 est alors reçue hors séquence, elle est rejetée.

La machine B émet alors une trame de supervision de rejet (REJ : Reject) en indiquent à A à partir de quelle trame il doit reprendre la transmission [N(r) = 2].

Toutes les trames dont la valeur de Ns est supérieure à 2 sont alors rejetées (rejet simple).

La machine A reprend la transmission à partir de la trame 2 (N(s) = 2).

Si, suite à la trame erronée, A n’avait plus de données à émettre, alors B n’aurait pas détecté le déséquencement.

Dans ce cas, c’est A qui à l’échéance du temporisateur T1, aurait pris l’initiative de retransmettre la trame 2.

HDLC : GESTION DES ERREURS (TRAME S)

HDLC : GESTION DE FLUX (TRAME S)

HDLC utilise le contrôle de flux implicite.

La fenêtre est paramétrée à l’installation du logiciel ou

négociée lors de la connexion par le protocole de niveau

supérieur.

En cas de saturation des tampons de réception, le récepteur,

(la machine B) rejette la trame en excès et informe A de son

incapacité temporaire à accepter de nouvelles données.

Il émet la trame S indique RNR (Receive Not Ready) avec le

compteur Nr positionné au numéro de la trame reçue et

rejetée.

HDLC : GESTION DE FLUX (TRAME S)

Calcul du temps de transmission

Temps de propagation Tp: Temps nécessaire à un signal pour parcourir un support d'un point à un autre

Temps de transmission Tt: Délai qui s'écoule entre le début et la fin de la transmission d'un message sur une ligne

performances

Soit:

C: Débit de la transmission D: distance de propagation

L: Longueur de la trame a émettre L' : Longueur de I 'acquittement

V : Vitesse du support

Te: temps d‘émission de la trame = L/C

Tp: temps de propagation aller de la trame = D/V

T'e : temps d‘émission de I 'acquittement = L' /C

T'p: Temps de propagation retour de I'ACK = Tp = D / V

Texec : Temps de traitement des données = négligeable

T: temps de transmission total = Te + 2Tp + T'e = ((L+L')/C) + 2D/V

Exercices

Exercice 1 : Calcul du VRC et du LRC

1. Calculez le VRC et le LRC du message HELLO en utilisant la

parité paire, sachant que H est codé par 0001001, E par 1010001,

L par 0011001 et O par 1111001.

2. Déterminer le message construit à transmettre.

Exercice 2 : Protocole HDLC

1. On considère un échange de données bidirectionnel simultané entre deux stations A et B, géré par le protocole LAP-B (sous-ensemble de HDLC utilisant le rejet simple des erreurs). La liaison est déjà initialisée et aucun temporisateur n’est armé. La station A a 5 trames d’information à transmettre à la station B. Celle-ci en a 10 à émettre vers A. On suppose que toutes les trames sont de même longueur. Les deux stations commencent leur transmission à des instants très voisins l’un de l’autre. Donnez le schéma des échanges en indiquant le numéro des trames émises et reçues avec la nomenclature classique : I, N(S), N(R) pour une trame I portant le numéro N(S) et acquittant les trames jusqu’au numéro N(R)– 1. On suppose de même :

• Qu’il n’y a aucune erreur de transmission sur les trames de A.

• Qu’il y a une erreur de transmission sur les sixième et septième trames de B.

• Que les trames sont correctement retransmises.

Recommended