0% ont trouvé ce document utile (0 vote)
102 vues7 pages

Détection et Correction d'Erreurs Hamming

Le document décrit différentes techniques de détection et correction d'erreurs pour les transmissions de données sur les réseaux, notamment le code de répétition, le code de parité et le checksum. Il explique leur fonctionnement et leurs avantages et inconvénients respectifs.

Transféré par

ikram
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
102 vues7 pages

Détection et Correction d'Erreurs Hamming

Le document décrit différentes techniques de détection et correction d'erreurs pour les transmissions de données sur les réseaux, notamment le code de répétition, le code de parité et le checksum. Il explique leur fonctionnement et leurs avantages et inconvénients respectifs.

Transféré par

ikram
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Le contrôle d’erreur

• La détection d’erreur
• Les données peuvent être modifiées (ou perdues) pendant le – Comment se rendre compte de la modification des données à l’arrivée
transport des trames (problème au niveau physique) ?
– Un service primordial pour de nombreuses applications
• Suppression des erreurs, deux techniques :
– Exemple : le transfert de fichier
– Comment corriger à l’arrivée les données erronées ? :
• Modification au niveau physique :
» la correction d’erreur à l’arrivée du paquet
– déformation de l’onde
– Faire en sorte que l’émetteur, renvoie les trames erronées/perdues:
• Perte complète de paquet :
» la récupération d’erreurs par re-émission
– congestion du réseau, saturation des routeurs ou des switch

© P. Sicard - Cours Réseaux Détections et corrections d’erreurs 1 © P. Sicard - Cours Réseaux Détections et corrections d’erreurs 2

Applications La détection/correction d’erreur


• Transfert de donnée sur un réseaux très peu fiable: • Idée: rajouter de l’information aux données permettant de détecter/
– Exemple: correction d’erreur dans l’ADSL (FEC affichées sur les Box) corriger les erreurs à l’arrivée
• Transfert de donnée sur un réseaux peu fiable: • Exemple de détection: Code de répétition
– Code correcteur coûte cher (en terme quantité d’information rajoutée) – On duplique l’information
– On préfère faire de la récupération d’erreur par re-émission (si il n’y a – Par exemple on rajoute un bit identique pour chacun des bits à
pas de contrainte de temps) transmettre
• Méthodes de détection et correction sont aussi utilisées pour le stockage de – Exemple:
donnée » Données: 1 0 0 0 1 1
– Lecture de fichier sur un disque dur » Code: 1 1 0 0 0 0 0 0 1 1 1 1

» Système de correction intégré aux disques (RAID Redundant Arrays • Coût en taille : élevé
of Inexpensive Disks)
• Coût en calcul faible
– Lecture de CD/DVD (problème de rayure)
» Problème légèrement différent : l’information peut aussi ne pas • Qualité de la détection d’erreur ?
exister (et on le sait) – Est-on capable de détecter 1 seul bit erroné ? 2 bits ?...

© P. Sicard - Cours Réseaux Détections et corrections d’erreurs 3 © P. Sicard - Cours Réseaux Détections et corrections d’erreurs 4
La correction d’erreur La détection d’erreur
• Exemple de correction: Code de répétition • Exemple de détection: Le code de parité
– On triple l’information – On rajoute un bit à 1 ou 0 suivant la parité du nombre de bits à 1 dans les
données Le récepteur vérifie la valeur de ce bit de parité.
– On rajoute deux bits identiques pour chacun des bits à transmettre
– Exemple:
– Exemple:
» Données: 1 0 0 0 1 1 Bit de parité: 1
» Données: 1 0 0 1 1 » Données: 1 0 0 1 1 1 0 1 1 Bit de parité : 0
» Code: 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1
• Très peu couteux en taille
• Coût en taille: très élevé
• Très peu couteux en calcul
• Qualité de la détection d’erreur ? • Qualité de la détection d’erreur ?
– Si il y a une seule erreur on peut la corriger ? – Est-on capable de détecter 1 seul bit erroné ? 2 bits ?...
– Si il y a deux erreurs ?

© P. Sicard - Cours Réseaux Détections et corrections d’erreurs 5 © P. Sicard - Cours Réseaux Détections et corrections d’erreurs 6

Contrôle d’erreur : un modèle d’étude Détection d’erreur


• Propriété:
• Mot de code • Pour détecter (à coup sûr) x erreurs il suffit que la distance minimale
h≥x+1
Si une trame contient m bits de données et r bits de contrôle,
• En effet ainsi s’il y a x erreurs on ne pourra pas “retomber” sur un
on appelle mot du code le mot formé par les m + r bits. code existant (différent forcément de x+1 bits)
On pose n = m + r
• Exemple:

• Distance de Hamming • On suppose que le récepteur possède en mémoire l’ensemble des mots
justes
• Étant donné deux mots de n bits m1 et m2, le nombre de bits dont ils
diffèrent est appelé leur distance de Hamming (notée Disth) • Il compare le mot reçu à chacun de ces mots justes
• m = 2, r =1 : M = {000, 011, 101, 110}
• Distance de Hamming du code complet (ou distance minimale) • h=2
h = { Min Disth(x1, x2) ; x1 et x2 ∈ M et x1≠x2} • Supposons 011 envoyé et 111 reçu (donc une erreur)
• 111 forcément différent des mots justes: encore au moins un bit
M est l’ensemble des 2 m mots de codes possibles si on admet que les r bits de
différent puisque h=2. Le récepteur sait donc qu’il y a une erreur
contrôle sont calculés en fonction des m bits de données.

© P. Sicard - Cours Réseaux Détections et corrections d’erreurs 7 © P. Sicard - Cours Réseaux Détections et corrections d’erreurs 8
Exemple de code détecteur d’erreur Détection d’erreur par
“checksum”
• Les bits de contrôle sont calculés par l’émetteur, le récepteur
fait un calcul analogue après réception • Données considérées comme n mots de k bits
• Bits de contrôle = complément à 1 de la somme des n mots
• Bit de parité
• A la réception la somme des n mots de données plus le checksum ne
• m = 2, r =1 : M = {000, 011, 101, 110 } doit pas contenir de 0
• h = 2 aucune erreur double mais détecte aussi tous les erreurs dont • h=2 mais aussi détection de certaines erreurs doubles (dans les
le nombre est impair colonnes) et des rafales d’erreur de longueur ≤ k
• Utilisé dans UDP, TCP
• Bit de parité par colonne:
k=8
• Trame considérée comme une matrice n*k bits k=8
0 0 0 1 1 1 0 1
• 1 bit de parité par colonne 1 2 3 4 5 6 7 8 n=3
+ 0 0 0 1 0 0 0 1
• h=2 9 10 ... + 0 0 1 1 0 0 0 0
n
• détection des rafales d’erreurs de longueur ≤ k = 0 1 0 1 1 1 1 0
Complément à 1
Bits de parité
Checksum 1 0 1 0 0 0 0 1

© P. Sicard - Cours Réseaux Détections et corrections d’erreurs 9 © P. Sicard - Cours Réseaux Détections et corrections d’erreurs 10

Détection d’erreur par CRC (Cyclic Principe de calcul d’un CRC


redundancy Code) – Basée sur des calculs de division de polynôme à coefficient dans [0, 1]
– Exemple: 1 0 1 0 1 représente x4+x2+1
– Division de x3+x2+1= (x2+1)* (x + 1) + (x) : Reste =x, Quotient = x+1
• Plus performant que les simples Checksums, surtout pour les
paquets/rafales d’erreurs – Arithmétique polynomiale modulo 2 (sans retenue): soustraction et addition
sont équivalentes à un ou-exclusif bit à bit
• Ne dépend pas de la taille des données – On se donne un polynôme générateur G de degré n qui détermine le nombre
de bits de contrôle
• Peu coûteux en taille
n
• Calcul coûteux mais souvent fait par hard : ou exclusif successifs au T: Données G
000...0
fur et à mesure que la trame arrive Quotient
Reste
– Circuit simple et rapide à base de registre à décalage et de portes
– T= Quotient*G + Reste donc (T+Reste)/G = 0
XOR
– La trame envoyée E= (Données, Reste) est divisible par G, il suffit à
l’arrivée de calculer la division de E par G. Si le reste est non nul il y a une
erreur
© P. Sicard - Cours Réseaux Détections et corrections d’erreurs 11 © P. Sicard - Cours Réseaux Détections et corrections d’erreurs 12
Exemple calcul de CRC Correction d’erreur
• Propriété:
• 6 bits de données: 110101 , Polynôme générateur 101 : x2 +1
• Pour corriger x erreurs il suffit que la distance minimale h ≥ 2x + 1
101
• En effet s’ il y a x erreurs, le code erroné reste ainsi «le plus proche» du
11010100
code juste, on peut donc le retrouver. Les autres ont encore au moins x+1
101
0111
111011 différences.
101
0100 • Exemple de code correcteur
101
00110
m = 2, r = 3
101 M = {00111, 01100, 10000, 11011}, h = 3, on corrige une erreur
0110
101 On envoie 01100, il arrive 11100 : une erreur
Reste= 0 1 1 Le récepteur compare le mot arrivé aux 4 mots du code possible:
• On envoie E= 110101 11
00111 et 11100 : 4 différences
• On peut avec n=16 détecter toutes les erreurs simples et doubles, toutes les
erreurs comportant un nombre impair de bits et tous les paquets d'erreur de 01100 et 11100 : 1 différence
longueur ≤ 16 et, avec une très bonne probabilité, les paquets d’erreurs de 10000 et 11100 : 2 différences
longueur supérieure.
11011 et 11100 : 3 différences
• Exemple: Ethernet utilise un champs CRC à 32 bits, Compression ZIP
utilise un CRC à 16 ou 32 bits Seul 01100 possède une seule différence, c’est le mot envoyé, le
récepteur peut corriger
© P. Sicard - Cours Réseaux Détections et corrections d’erreurs 13 © P. Sicard - Cours Réseaux Détections et corrections d’erreurs
14

• Problème :
Le code correcteur de Hamming
• Quelle est la valeur minimale de r permettant de corriger les
erreurs simples dans des trames de m bits de données et r de • Propriété : nécessite le nombre minimal de bit de contrôle pour
contrôle ? corriger une erreur
• On a 2m mots du code possibles (toutes les combinaisons • m=1 , r=2
possibles des données)
• jusqu’à m=4 , r= 3
• 1 mot juste peut aboutir à n=m+r mots différents de 1 bit
(chacun des n bits peut être erroné: n erreurs possibles) • jusqu’à m=11 r=4 ....
• Il faut que nombre de mots possibles sur n bits soit supérieur • Utilisable pour n’importe quelle taille de donnée
au nombre de mots justes plus le nombre de mots faux (avec • Les bits de contrôle sont les bits de numéro égal à une puissance de 2
1 erreur).
• En effet, pour pouvoir corriger une erreur, il faut que chacun des Bits de contrôle
mots justes ou faux puissent être tous différents. Sinon on ne
pourra pas retrouver le mot juste.
• Il faut donc que 2m+n*2m ≤ 2n , soit (n+1)2m ≤ 2(m+r), 1 2 3 4 5 6 7 8 9 10 11 12
• soit (m + r + 1) ≤ 2 r

• Les codes correcteurs d’erreur “coûtent” chers


© P. Sicard - Cours Réseaux Détections et corrections d’erreurs 15 © P. Sicard - Cours Réseaux Détections et corrections d’erreurs 16
Le code correcteur de Hamming Le code correcteur de Hamming
• Les bits de données qui servent au calcul d’un bit de contrôle de • Exemple: Bit de contrôle 1
numéro X sont ceux tel que X apparaît dans la décomposition en – Trame envoyée:
1 2 3 4 5 6 7 8 9 10 11 12
puissance de 2 de leur numéro.
0 0 1 1 0 0 0 1 1
• Exemple: 7 = 1 + 2+ 4 donc 7 apparaît dans le calcul de 1, de 2 et
de 4 Bit de contrôle 2
1 2 3 4 5 6 7 8 9 10 11 12
1 calculé de telle façon que (1, 3, 5, 7, 9, 11, …) parité paire 0 0 0 1 1 0 0 0 1 1
2 calculé de telle façon que (2, 3, 6, 7, 10, 11,…) parité paire
Bit de contrôle 3
4 calculé de telle façon que (4, 5, 6, 7, 12, …) parité paire
... 1 2 3 4 5 6 7 8 9 10 11 12

Calcul de parité 0 0 0 1 1 1 0 0 0 1 1
• Exemple :
Bit de contrôle 4
1 2 3 4 5 6 7 8 9 10 11 12
1 2 3 4 5 6 7 8 9 10 11 12 0 0 0 1 1 1 0 0 0 0 1 1
0 0 1 1 0 0 0 1 1
• A destination on recalcule les bits de contrôle...
© P. Sicard - Cours Réseaux Détections et corrections d’erreurs 17 © P. Sicard - Cours Réseaux Détections et corrections d’erreurs 18

A la réception
Trame reçue Le code correcteur de Hamming
1 2 3 4 5 6 7 8 9 10 11 12
0 0 0 1 1 01 0 0 0 0 1 1

J
F
F
• Quelle est la distance de Hamming de ce code correcteur ?
J
– Si on change un bit de donnée, forcément au moins deux bits de
• Calcul de 1 (1, 3, 5, 7, 9 , 11): 2 bits à 1: pair donc juste contrôle change aussi, donc h=3
• Calcul de 2 (2, 3, 6, 7, 10, 11): 1 bit à 1 : impair donc faux
• Calcul de 4 (4, 5, 6, 7, 12) : 3 bits à 1 : impair donc faux • Que se passe-t il si c’est un bit de contrôle qui est erroné ?
• Calcul de 8 (9,10, 11, 12) : 2 bits à 1: pair donc juste – Seul une erreur apparait pour ce bit de contrôle, cela ne sert à rien
• La somme des numéros des bits de contrôle erronés donne le mais on peut le corriger
numéro du bit qui porte l’erreur

• 2 + 4 = 6 , le 6ème bit est faux, on peut le corriger


© P. Sicard - Cours Réseaux Détections et corrections d’erreurs 19 © P. Sicard - Cours Réseaux Détections et corrections d’erreurs 20
Le code correcteur de Hamming Le code correcteur de Hamming
généralisé
• Que se passe-t il si deux bits sont erronés ?
• Exemple • On rajoute un bit de contrôle supplémentaire
Trame envoyée • Bit de parité sur l’ensemble de la trame
1 2 3 4 5 6 7 8 9 10 11 12 Trame envoyée
1 2 3 4 5 6 7 8 9 10 11 12
0 0 0 1 1 1 0 0 0 0 1 1
0 0 0 1 1 1 0 0 0 0 1 1 1

Trame reçue Trame reçue


1 2 3 4 5 6 7 8 9 10 11 12
1 2 3 4 5 6 7 8 9 10 11 12
0 0 1 1 1 0 0 0 0 0 1 1 1
0 0 1 1 1 0 0 0 0 0 1 1

• On trouve impairs pour un 1et 4,


• On trouve impairs pour un 1et 4, • Le bit de parité supplémentaire est juste, il devrait être faux si le
• On corrige le bit 5, on rajoute une troisième erreur !!! bit 5 seulement était faux
• On ne peut pas corriger mais on a détecté au moins 2 erreurs
© P. Sicard - Cours Réseaux Détections et corrections d’erreurs 21 © P. Sicard - Cours Réseaux Détections et corrections d’erreurs 22

Correction de rafale d’erreur Autres exemple de codes


• On peut utiliser la correction d’erreur de Hamming en calculant les correcteur utilisés
bits de contrôle sur les colonnes des bits de données

• Code de Reed-Salomon: utilisé pour l’ADSL et les DVDs/CDs


Bits de contrôle •Permet de corriger de grosses rafales d’erreur (rayure sur un CD)
si il est de plus lié à des techniques d’entrelacement (dispersion
des erreurs consécutives)

© P. Sicard - Cours Réseaux Détections et corrections d’erreurs 23 © P. Sicard - Cours Réseaux Détections et corrections d’erreurs 24
Exercice

• Pour détecter les erreurs on transmet les données par blocs de n lignes
de k bits. On rajoute un bit de parité par ligne et un par colonne.
• Quelle est la distance de Hamming de ce code ?
• Quels types d’erreur peut on détecter ?
• Peut on corriger des erreurs ? Si oui comment ?

© P. Sicard - Cours Réseaux Détections et corrections d’erreurs 25

Vous aimerez peut-être aussi