ASR4 - Mars 2006Notions de codes1 Détection et correction derreurs… … au sein de la couche 2 : liaison de données
ASR4 - Mars 2006Notions de codes2 Introduction Les erreurs de transmission sont : rares sur des supports numériques (fibre optique), beaucoup plus fréquentes sur les boucles locales du RTC (paires torsadées analogiques) ou les réseaux sans fil. Ces erreurs se produisent la plupart du temps en rafale : Avantage (par rapport aux erreurs isolées, ie 1 seul bit) : en moyenne, moins de blocs de bits sont affectés. Exemple : Soit la taille des blocs = 1000 bits, le taux derreur = 1/1000 Erreurs isolées : la plupart des blocs contiennent 1 erreur Erreurs en rafale de 100 ou plus : 1 ou 2 blocs sur 100 seulement Inconvénient : beaucoup plus difficiles à détecter et à corriger
ASR4 - Mars 2006Notions de codes3 Il faut donc apprendre à vivre avec les erreurs… Deux stratégies ont été développées. Lémetteur inclut dans le bloc de données : 1. suffisamment de redondance pour que le récepteur puisse reconstituer les données originales. utilise des codes correcteurs derreur plutôt pour des canaux non fiables comme le sans fil 2. juste assez de redondance pour que le récepteur puisse détecter les erreurs et demander une retransmission. utilise des codes détecteurs derreur plutôt pour des canaux fiables comme la fibre optique
ASR4 - Mars 2006Notions de codes4 Principe On souhaite envoyer m bits de données. On y rajoute r bits de redondance selon un certain « algorithme » ou « codage ». Ainsi, la longueur de la trame envoyée est n = m + r. (cette séquence de n bits un mot du code) A la réception, en fonction du « codage », on pourra détecter (2.) et/ou corriger (1.) des erreurs. En général, lapproche (1.) induit davantage de redondance, ce qui diminue le débit utile du canal…
ASR4 - Mars 2006Notions de codes5 Généralités sur les codes Un code C de longueur n est un ensemble de mots (séquences) de n bits. Ex : n = 3, C = { 110, 101, 011 } Parmi toutes les séquences possibles de n bits (2 n ) : celles qui appartiennent à C sont valides. celles qui nappartiennent pas à C sont invalides. Ex :111 est invalide 101 est valide
ASR4 - Mars 2006Notions de codes6 A la réception dune séquence S de n bits… Soit S est invalide (nappartient pas au code C). Il y a forcément eu une (ou plusieurs) erreur de transmission. Le récepteur corrige (1.) ou demande une retransmission (2.). Soit S est valide (appartient au code C). La séquence S est « considérée » comme correcte et acceptée par le récepteur. Remarque : « considérée » seulement, car… si lémetteur envoie 011 et le récepteur reçoit 101, aucun moyen de détecter quil y a eu des erreurs (2 ici)… car 101 est valide !
ASR4 - Mars 2006Notions de codes7 Distance de Hamming dun code Cest le critère qui permet dévaluer le pouvoir détecteur dun code ainsi que son pouvoir correcteur. Distance de Hamming entre 2 mots (noté d h ) = nbre de positions qui ont des valeurs distinctes. Ex : d h ( , ) = 3 (Astuce = nbre de 1 du OU exclusif) Distance de Hamming dun code C (noté D H (C)) = le minimum des distances entre 2 mots du code Ex : D H ( {110, 101, 011} ) = 2 D H ( {0011, 0101, 1001, 0110, 1010, 1100 } ) = 2
ASR4 - Mars 2006Notions de codes8 Représentation graphique Sommets : ts les mots de n bits Liens : entre les mots tq d h = 1 D H (C) = longueur du plus court chemin entre 2 mots valides
ASR4 - Mars 2006Notions de codes9 Pouvoir détecteur dun code Déf : On parle derreur dordre k lorsquun mot émis u diffère par k bits du mot reçu v, ie d h (u,v) = k. Pour détecter une erreur dordre 1, quelle doit être la distance de Hamming du code ? Réponse : D H (C) = 2 en effet, dans ce cas, 1 erreur simple ne peut pas changer un mot du code en un autre mot du code. Même question pour une erreur dordre k ? Réponse : D H (C) = k+1
ASR4 - Mars 2006Notions de codes10 Pouvoir correcteur dun code M Code transmis = S un point en M dimensions S (point transmis) S (code reçu avec 1 erreur) mot de code valide point dans lespace Au décodeur: S est toujours le mot de code le plus près du mot reçu S on décode sans erreur … Distance = 1 bit
ASR4 - Mars 2006Notions de codes11 Pouvoir correcteur dun code Pour pouvoir corriger une erreur dordre 1, une distance de Hamming D H (C) = 2 est-elle suffisante ? Réponse : non… il faut D H (C) = 3 en effet, si D H (C) = 2, 1 erreur simple peut nous produire un mot exactement « au milieu » de 2 mots du code, à distance 1 de chacun ! si D H (C) = 3, 1 erreur simple produit un mot qui reste le plus proche du mot transmis : on peut donc le retrouver ! Pour corriger une erreur dordre k, il faut D H (C) = 2k+1.
ASR4 - Mars 2006Notions de codes12 Résumé pouvoir détecteur et correcteur Un code C peut détecter des erreurs dordre D H (C) – 1 corriger des erreurs dordre (D H (C) – 1)/2 (partie entière) Distance de Hamming du code Ordre maximal des erreurs détectables Ordre maximal des erreurs corrigibles
ASR4 - Mars 2006Notions de codes13 Exemples de codes détecteurs
ASR4 - Mars 2006Notions de codes14 Détection des erreurs Permet de vérifier lintégrité dune trame au récepteur Retransmission des trames corrompues Plus efficace que la correction requiert moins de bits de redondance Parité Verticale Parité Horizontale Parité Verticale et Horizontale CRC : Cyclic Redundancy Code codes de détection couramment utilisés
ASR4 - Mars 2006Notions de codes15 Parité Verticale (Exo 2.1) Exemple : envoi de 7 caractères de longueur 3 (m=3). Info utile : Info envoyée : Propriétés : distance de Hamming est 2 : détecte les erreurs simples détecte les erreurs qui sont d'ordre impair ignore les erreurs doubles et toutes celles qui sont d'ordre pair
ASR4 - Mars 2006Notions de codes16 Parité Horizontale (Exo 2.2) Exemple : envoi de 7 caractères de longueur 3 (m=3). Info utile : Info envoyée :
ASR4 - Mars 2006Notions de codes17 Parité Verticale et Horizontale (Exo 2.3) Exemple : envoi de 7 caractères de longueur 3 (m=3). Info utile : Info envoyée : Propriétés : détecte les erreurs dordre 3 et corrige les erreurs simples détecte les erreurs qui sont d'ordre impair
ASR4 - Mars 2006Notions de codes18 Codes Polynomiaux : CRC Codes de blocs particuliers Facilement implémentables de façon matérielle Excellents résultats Principe : Toute séquence de n bits peut être représentée par un polynôme à coefficients binaires. Opérations d'addition et de multiplication modulo 2. G(X) un polynôme de degré r appelé polynôme générateur. Code polynomial C G,n : Ensemble des séquences de longueur n, dont le polynôme associé est multiple de G(X).
ASR4 - Mars 2006Notions de codes19 CRC: Propriétés Peut détecter 1 erreur isolée si G contient au moins 2 termes Peut détecter 2 erreurs (si G ne divise pas x k +1, avec k=fenêtre) Peut détecter tous les patrons derreurs impairs si (x + 1) est un facteur de G(x) Peut détecter r erreurs consécutives sil est dordre r (bursts) Trois polynômes standards : CRC-12: x 12 + x 11 + x 3 + x 2 + x + 1 CRC-16: x 16 + x 15 + x CRC-CCITT: x 16 + x 12 + x 5 + 1
ASR4 - Mars 2006Notions de codes20 Anciennes non utilisées
ASR4 - Mars 2006Notions de codes21 Technique de détection/correction derreur Code de longueur N exemples 2 parmi 3 Distance de Hamming = 2 Parité verticale/horizontale Distance de Hamming = 4 Contrôle de flux Pb: perte à la réception Solution… Sol1:réception bufferisée Sol2:évenement Xon/Xoff
ASR4 - Mars 2006Notions de codes22 CODES : VERSION PF
ASR4 - Mars 2006Notions de codes23 Technique de détection/correction derreur Stratégies : Détection (et demande de retransmission) : code détecteur derreurs Détection + correction : code correcteur derreurs Code de longueur N Ensemble de séquences (mots) binaires de N bits Séquences valides / invalides Exemple: M bits utiles, R bits de redondance 2 M séquences valides (2 N séquences possibles) Distance de Hamming entre 2 mots de code Nombre de différences : si u= et v= , alors d h (u,v)=3 Distance de Hamming dun code C Le minimum des distances entre 2 séquences du code C ( D H (C).
ASR4 - Mars 2006Notions de codes24 Un exemple de code : 2 Parmi 3 Configurations valides : mots de longueur 3 avec exactement 2 bits à 1. Code de longueur 3 Distance de Hamming = 2 Propriétés Pouvoir détecteur : oui (erreur simple) Pouvoir correcteur : non Plus généralement : La distance de Hamming d'un code permet d'évaluer son pouvoir détecteur d'erreur ainsi que son pouvoir correcteur. un code C peut détecter des erreurs d'ordre (D H (C) -1), un code C peut corriger des erreurs d'ordre PartieEntière((D H (C)-1)/2).
ASR4 - Mars 2006Notions de codes25 Code de bloc On découpe l'information utile en tronçon de m bits auquel on rajoute r bits de redondance. Code de longueur n=m+r. Sur 2 n combinaisons possibles, seules 2 m combinaisons sont valides. Exemple 1 : Parité verticale (VRC:Vertical Redundancy Checking) m~8 (caractère) et r=1 (parité paire ou impaire) Exemple : envoi de 4 caractères de longueur 3 (m=3). Information utile : Information envoyée : Propriétés : distance de Hamming est 2 : détecte les erreurs simples détecte les erreurs qui sont d'ordre impair ignore les erreurs doubles et toutes celles qui sont d'ordre pair
ASR4 - Mars 2006Notions de codes26 Code de bloc (suite) Exemple 2 : Parité verticale/horinzontale (LRC/VRC pour Vertical Redundancy Checking / Longitudinal Redundancy Checking) Principe : les caractères munis de leur bit de parité transversale sont regroupés en blocs, et on ajoute à la fin de chaque bloc un caractère supplémentaire pour la parité longitudinale Exemple : envoi dun bloc de 4 caractères de longueur 3 (m=3). Information utile : Information envoyée : Propriétés : distance de Hamming est 4 : détecte les erreurs dordre 3 et corrige les erreurs simples détecte les erreurs qui sont d'ordre impair
ASR4 - Mars 2006Notions de codes27 Codes polynomiaux Codes de blocs particuliers Facilement implémentables de façon matérielle Excellents résultats. Principe: Toute séquence de i bits peut être représentée par un polynôme à coefficients binaires Par exemple, la séquence "001101" peut être représentée par le polynôme x 3 +x opérations d'addition et de multiplication modulo 2 G(X) un polynôme de degré r appelé polynôme générateur Code polynomial C G,n Ensemble des séquences de longueur n, dont le polynôme associé est multiple de G(X).
ASR4 - Mars 2006Notions de codes28 Codes polynomiaux (suite) Exemple n=4, G(X)=X 2. Les multiples de G(X) de degré au plus égal à n-1 : 0.G(X)=0, 1.G(X)=X2, X.G(X)=X3, (X+1).G(X)=X3+X2. Les séquences valides du code C G,4 : 0000, 0100, 1000, Application à la détection d'erreur : G(X) (degré r) connu de l'émetteur et du récepteur La taille des informations utiles : m. On utilise le code C G,m+r
ASR4 - Mars 2006Notions de codes29 Codes polynomiaux (suite) Côté émetteur 1 b m-1 b m-2... b 2 b 1 b 0 :l'information utile de longueur m 2 M(X) le polynôme associé à l'information utile. 3 On divise le polynôme M(X).X r par G(X) M(X).X r = G(X).Q(X) + R(X) (R(X) de degré r-1) 4 On envoie la séquence de bits de longueur n=m+r associée au polynôme : N(X)=M(X).Xr + R(X). Remarquons que ce polynôme N(X) est divisible par G(X) : M(X).X r + R(X) = G(X).Q(X) + R(X) + R(X) = G(X).Q(X). Côté récepteur Détection d'erreur : vérifier que le polynôme associé à la séquence binaire reçue, est divisible par G(X). Information utile : supprimer les r derniers bits de la séquence reçue.
ASR4 - Mars 2006Notions de codes30 Contrôle de flux Problème : Un émetteur émet plus de messages que le récepteur peut accepter perte à la réception couches concernées : 2, 3 et 4 Solution : éviter cette situation (prévention). Deux approches : 1. Lémetteur német que sur autorisation du récepteur 2. Le débit est adapté au capacité du récepteur Exemple : Transmission asynchrone Réception bufferisée + évenement Xon/Xoff