Traitement de l’information
Codes correcteurs et détecteurs d’erreurs Codes utilisés dans les protocoles réseaux
Michel Salomon
IUT de Belfort-Montbéliard Département d’informatique
Plan du cours
1 Codes utilisant des bits de parité
Contrôle de parité ; Double parité ; Code de Hamming
2 Somme de contrôle
Utilisé dans les protocoles TCP, UDP et IP
3 Code de Redondance Cyclique Utilisé dans le protocole Ethernet
Somme de contrôle (Checksum) - 1
Principe
Une somme de contrôle sur s bits est obtenue en additionnant des blocs de b bits modulo 2s
Généralement b = 8 bits
Exemple : somme de contrôle sur 1 octet Séquence à transmettre = 6A37D316
0110101000110111110100112
Séquence transmise = 6A37D37416
Séquence découpée en 3 octets→conversion en décimal de chaque octet puis Somme des 3 nombres
Calcul de Somme mod 2s sur 1 octet→s= 8 d’où 28= 256 Somme mod 256 = (106 + 55 + 211) mod 256
= 372 mod 256 = 116 =7416
Somme de contrôle (Checksum) - 2
Remarque
Ne permet pas de détecter certains types d’erreurs, car la somme de contrôle n’est pas sensible à : la réorganisation des octets (changement de position) ; ajout ou suppression d’octets à zéro ;
erreurs se compensant
Utilisation dans le protocole IP
L’en-tête des paquets IP contient une Checksum qui Occupe 2 octets, soit 16 bits : octets 11 et 12 Contrôle les octets précédents duHeader
Somme de contrôle (Checksum) - 3
Utilisation dans le protocole IP
Calcul de la somme de contrôle
1 Découpage des 10 octets duHeader en 5 entiers sur 16 bits
2 Addition des 5 entiers
Si la somme fait plus de 16 bits, on coupe en 2 séquences : les 16 bits de poids faibles et les autres que l’on additionne on continue tant que l’addition produit plus 16 bits
3 On prend le complément à 1 (logique) de la séquence de 16 bits
Vérification de l’en-tête
Validité de l’en-tête contrôlée en refaisant le calcul avec la somme de contrôle incluse
Si on obtient une séquence de 16 bits à 1 il n’y a pas d’erreur
Code de Redondance Cyclique (CRC) - 1
Cyclic Redundancy Check ou méthode des codes polynomiaux Méthode la plus utilisée pour détecter des erreurs groupées Calcule des bits de contrôle en effectuant différentes opérations avec un polynôme à coefficients binaires Un polynôme binaire de degré n−1 est défini par une séquence de n bits qui sont les coefficients du polynôme Exemple : 1101 définit le polynôme x3+x2+ 1 de degré 3 Toutes les opérations se fontmodulo 2
Pas de retenues lors des additions et les soustractions Ces deux opérations sont identiques à un ou-exclusif (xor)
Code de Redondance Cyclique (CRC) - 2
Principe
L’émetteur et le récepteur se mettent d’accord un polynôme G(x) dit générateur (utilisé pour générer les bits de contrôle) Calcul de la séquence à envoyer
1 CalculerS(x)·xd, avec S(x) le polynôme correspondant à la séquence initiale à envoyer etd le degré de G(x)
2 Calculer la division suivante modulo 2 S(x)·xd
G(x) →S(x)·xd =Q(x)·G(x) +R(x) Le resteR(x) est une séquence de d bits
3 Calculer la soustraction suivante modulo 2 S(x)·xd−R(x) =T(x)
T(x) est le polynôme cyclique, c’est la séquence à envoyer.
C’est un multiple du générateur :T(x) =Q(x)·G(x)
Code de Redondance Cyclique (CRC) - 3
Principe
Vérification de la séquence reçue
1 Calculer la division suivante modulo 2 T(x) G(x)
2 Si la valeur du reste de la division est
= 0→pas d’erreur 6= 0→erreur
Remarques
Suivant le choix deG(x) il est possible de détecter des erreurs sur 1 bit, 2 bit, etc.
Un CRC de d bits permet de repérer avec une probabilité de 1 des erreurs de longueur≤d une probabilité de (1−21d) des erreurs de longueur>d Proba. de détecter des erreurs avec le CRC-16 de 99,985%
Code de Redondance Cyclique (CRC) - 4
Quelques polynômes générateurs utilisés
CRC-12 = x12+x11+x3+x2+ 1 CRC-16 = x16+x15+x2+ 1 CRC-CCITT = x16+x12+x5+ 1
CRC-32 (Ethernet) = x32+x26+x23+x22+x16+x12+x11 +x10+x8+x7+x5+x4+x2+x+ 1 De manière générale
un CRC-d est défini par une séquence ded + 1 bits
Code de Redondance Cyclique (CRC) - 5
Exemple
Séquence à envoyer 101101→S(x) =x5+x3+x2+ 1 Polynôme générateur défini par 1011 →G(x) =x3+x+ 1
1 S(x)·x3= 101101000 (ajout de 3 zéros àS(x))
2 Calcul de la division modulo 2 →R(x) = 011
3 Calcul de la soustraction modulo 2 du reste R(x) deS(x)·x3 Il suffit d’ajouter les d bits deR(x) à la fin deS(x), d’où
T(x) = 101101011
Code de Redondance Cyclique (CRC) - 6
Calcul de la division modulo 2
0
1 1101000 1011 1011
000001000
100001 1011
0 0 11 X
8+ X + X + X
6 5 3X
8+ X
6+ X
50 0 0 X
3X
3+
X + 1 X + 1
X
3+ X + 1 X
5+ 1 0
+
Comparaison des codes
Critères de comparaison et résultat Simplicité→ rapidité d’exécution
Redondance → nombre de bits de redondance utilisés Détection → probabilité de détecter une erreur Correction → possibilité de corriger les erreurs
Code Simplicité Redondance Détection Correction VRC, LRC Très simple Moyenne Faible Non
VRC+LRC Très simple Moyenne Faible Oui
Hamming Simple Élevé Moyenne Oui
CRC Compliqué Faible Excellente Non