Vous êtes sur la page 1sur 27

s Protection contre les erreurs s

Chapitre 3 : Protection contre les erreurs


/udd/bcousin/Pages-web-Armor/Enseignement/Reseaux-generalites/Cours/3.auto.fm - 1 juin 2001 18:28

Plan -

1. 2. 3. 4. 5. 6. 7. 8. 9.

Introduction Les codes de protection contre les erreurs Exemples simples de codes par bloc Les codes linaires Les codes polynmiaux Les codes cycliques Autres techniques de correction derreurs Techniques de contrle derreur par retransmission Conclusion

p68 p72 p75 p78 p83 p88 p90 p91 p95

Bibliographie - K. Lahche, Les codes en informatique : codes dtecteurs et correcteurs, Herms, 1995. - H. Nussbaumer, Tlinformatique - tome 1, Presses polytechniques romandes, 1983. - C. Macchi, J-F. Guibert, Tlinformatique, Dunod, 1987. - A.Tanenbaum, Rseaux, InterEditions, 1997.
____ B. Cousin et C. Viho - IFSIC -Universit Rennes I 67

s Protection contre les erreurs s

1. Introduction Quelque soit la qualit des supports de communication et les performances des techniques de transmission utilises, des perturbations vont se produire entranant des erreurs sur les donnes transmises. Dans ces conditions, la suite binaire reue ne sera pas identique la suite mise. Mise en oeuvre de techniques de protection contre les erreurs de transmission Stratgies de protection contre les erreurs de transmission : dtection protection correction correction par retransmission (ARQ : Automatic Repeat Request) 1.1. Principe gnral pour la dtection des erreurs de transmission - un metteur veut transmettre un message (suite binaire quelconque) un rcepteur - lmetteur transforme le message initial laide dun procd de calcul spcique qui gnre une certaine redondance des informations au sein du message cod.
____ B. Cousin et C. Viho - IFSIC -Universit Rennes I 68

auto-correction (FEC : Forward Error Correction)

s Protection contre les erreurs s

- le rcepteur vrie laide du mme procd de calcul que le message reu est bien le message envoy grce ces redondances. Exemple : la technique de dtection par rptition . le message cod est un double exemplaire du message initial, le rcepteur sait quil y a eu erreur si les exemplaires ne sont pas identiques. Note : certaines erreurs sont indtectables ! . ex. : une mme erreur sur les deux exemplaires simultanment 1.2. Principe gnral pour la correction des erreurs de transmission - Aprs dtection dune erreur, la redondance est sufsante pour permettre de retrouver le message initial. Exemple : la technique de correction par rptition . le message cod est un triple exemplaire du message initial, le rcepteur suppose que le message initial correspond aux deux exemplaires qui sont identiques. Note : certaines erreurs dtectes ne sont pas corrigibles ! . ex. : une erreur diffrente sur au moins deux exemplaires Note : certaines erreurs sont dtectes et mal corriges ! . ex. : une mme erreur sur deux exemplaires simultanment
____ B. Cousin et C. Viho - IFSIC -Universit Rennes I

69

s Protection contre les erreurs s

1.3. Principe gnral pour la correction par retransmission des erreurs de transmission - Aprs dtection dune erreur, le rcepteur demande lmetteur, implicitement (temporisateur) ou explicitement (nack), de retransmettre une nouvelle fois le message (cod). - Exemple : de trs nombreux protocoles de tlcommunication : HDLC, X25, TCP, TP.
donnes mettre donnes reues (dtection) (correction) (retransmission) dcodage transmission (erreur) donnes transmises

Emetteur

codage

Rcepteur

donnes codes

La correction par retransmission est prfre dans les rseaux o le taux de perte est faible et le dlai de retransmission tolrable, car son surcot est gnralement plus faible que celui induit par les codes auto-correcteurs. Estimation du surcot (message de longueur moyenne = 1000 bits) : - taux derreur typique = 10-9, taux de retransmission => 1000. 10-9 = 10-6 - surcot typique dun code auto-correcteur : qq octets par message => 8/1000 = 10-2

____ B. Cousin et C. Viho - IFSIC -Universit Rennes I

70

s Protection contre les erreurs s

2. Les codes de protection contre les erreurs 2.1. Classication des codes Deux grandes familles de codes : Les codes en bloc (linaires, cycliques ou non) : le codage/dcodage dun bloc dpend uniquement des informations de ce bloc. Les codes en treillis (convolutifs, rcurcifs ou non) : le codage/dcodage dun bloc dpend des informations dautres blocs (gnralement de blocs prcdemment transmis). - Un code convolutif sapplique sur une suite innie de symboles et produit une suite innie. On prfre gnralement le codage par bloc dans les applications tlinformatiques classiques : - le codage/dcodage est plus simple et il y a moins de dlai Par la suite, on ne va prsenter que les codes par bloc : - codes simples - codes linaires, de Hamming - codes polynmiaux - codes cycliques
____ B. Cousin et C. Viho - IFSIC -Universit Rennes I 71

s Protection contre les erreurs s

2.2. Dnitions gnrales Un code (k, n) transforme (code) tout bloc initial de k bits dinformation en un bloc cod de n bits. Le code introduit une redondance puisque n >= k. Le code est systmatique si les k premiers bits du bloc cod sont gaux aux bits du bloc initial. Alors les r (r=n-k) derniers bits forment un champ de contrle derreur. Le rendement dun code (k, n) est : R = k/n
mot initial codage k bits mot cod

n bits

On appelle mot du code, la suite de n bits obtenue aprs un codage (k, n). Le nombre n de bits qui composent un mot du code est appel la longueur du code. La dimension k tant la longueur initiale des mots.

____ B. Cousin et C. Viho - IFSIC -Universit Rennes I

72

s Protection contre les erreurs s

Le poids de Hamming dun mot est le nombre de bits 1 quil contient. La distance de Hamming entre deux mots de mme longueur est dfinie par le nombre de positions binaires qui diffrent entre ces deux mots. On lobtient par le poids de Hamming de la somme binaire des 2 mots. La distance de Hamming dun code est la distance minimum entre tous les mots du code. - Exemple : . poids_de_Hamming(01001100) = 3 . distance_de_Haming(01001100, 01010101) = 3 La capacit de dtection (de correction) dun code est dfinie par les configurations errones quil est capable de dtecter (corriger). Une erreur simple (resp. double, ou dordre p) affecte une seule (resp. 2, ou p) position(s) binaire(s) dun mot. Pour quun code ait une capacit de dtection (resp. correction) des erreurs dordre e, il faut que sa distance de Hamming soit suprieure 1+e (resp. 1 + 2e). - Exemple : . distance =3 ==> capacit de dtection =< 2, capacit de correction =< 1.

____ B. Cousin et C. Viho - IFSIC -Universit Rennes I

73

s Protection contre les erreurs s

3. Exemples simples de codes par bloc 3.1. Le contrle de parit Parit paire (impaire) : le poids de Hamming des mots du code est pair (impair) Cest un code systmatique (k, k+1) dans lequel un bit (le bit de parit) est ajout au mot initial pour assurer la parit. Son rendement est faible lorsque k est petit. Exemple : Transmission de caractres utilisant un code de reprsentation (le code ASCII sur 7 bits). Lettre E : V : A : Code ASCII 1010001 0110101 1000001 ; ; ; ; Mot cod (parit paire) ; 10100011 ; 01101010 ; 10000010 ; Mode cod (parit impaire) 10100010 01101011 10000011

Ce code est capable de dtecter toutes les erreurs en nombre impair. Il ne dtecte pas les erreurs en nombre pair !

____ B. Cousin et C. Viho - IFSIC -Universit Rennes I

74

s Protection contre les erreurs s

3.2. Parit longitudinale et transversale Association dun double codage de la parit : - LRC : Longitudinal Redundancy Check et VRC : Vertical Le bloc de donnes est dispos sous une forme matricielle (k=a.b). On applique la parit (uniquement paire) sur chaque ligne et chaque colonne. On obtient une matrice (a+1, b+1). VRC (parit paire) 10100011 01101010 10000010 ------------------01001011

LRC =

Historique de la dnomination : mots (caractres) bande magntique parit longitudinale

parit transversale
____ B. Cousin et C. Viho - IFSIC -Universit Rennes I

75

s Protection contre les erreurs s

Le rendement est faible : a.b / (a+1).(b+1). Le dlai de codage et dcodage important : il faut recevoir tout le bloc Capacit de dtection et dautocorrection : - Principe : Une erreur simple modie simultanment la parit dun ligne et dune colonne. - Correction : inverser le bit situ lintersection de la ligne et de la colonne ayant une parit incorrecte. Exemple : 10100011 01101010 10001010 01001011 Attention : une erreur triple peut faire croire une erreur simple et sa correction sera inadapte ! Exemple : 10100011 01101010 10001010 01001011
____ B. Cousin et C. Viho - IFSIC -Universit Rennes I 76

s Protection contre les erreurs s

4. Les codes linaires 4.1. Dnitions Les codes linaires sont des codes dont chaque mot du code (not c) est obtenu aprs transformation linaire des bits du mot initial (not i). Ces codes sont caractriss par leur matrice G(k, n) (appele matrice gnratrice) telle que : i.G=c Exemple :
101 1011 0101 1101

0110

La matrice H(n-k, n) (appele matrice de contrle) permet de savoir si un mot reu est un mot du code, en calculant son syndrome. Si le syndrome du mot est nul, ce mot appartient au code. Syndrome du mot reu c : c. HT = 0(n-k) <==> c C(k, n) Lquation G . HT = 0 dfinit la relation entre les deux matrices. Preuve : c. HT = i. G. HT = i. 0

____ B. Cousin et C. Viho - IFSIC -Universit Rennes I

77

s Protection contre les erreurs s

4.2. Proprits La distance de Hamming dun code linaire est gale au plus petit poids de Hamming non nul des mots du code. Si un code linaire est systmatique, sa matrice gnratrice scrit : - G(k, n) = [Id(k), P(k, n-k)] alors sa matrice de contrle scrit : H(n-k, n) = [PT(n-k,k), Id(n-k)] Exemples : . Soit le code C1(4, 6) de matrice G1 =
1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 1

- Le mot de code c associ au mot initial i= est le mot c=i.G1 =


101001

1011

. Le code C2(7, 8) associ la parit paire a pour matrice de contrle H2T =

1 1 1 1 1 1 1 1

____ B. Cousin et C. Viho - IFSIC -Universit Rennes I

78

s Protection contre les erreurs s

4.3. Correction Correction par proximit : le procd de correction transforme un mot reu et dtect comme erron dans le mot de code le plus proche au sens de la distance de Hamming. - Il peut exister plusieurs mots quidistants. On choisit un reprsentant - procd de correction lourd Exemple : Le code rptition C3(1, 4), distance de Hamming de C3 = 4.
0 codage dcodage correction 0000 0001 0010 0100 1000 mot du code 1 2 mot initial

!
0011 0101 0110 1010 1100 4

1 codage correction dcodage 1111 1110 1101 1011 0111 mot du code 1 distances

2 dtection sans correction dtection et correction

____ B. Cousin et C. Viho - IFSIC -Universit Rennes I

79

s Protection contre les erreurs s

4.4. Codes de Hamming Famille de codes linaires auto-correcteurs faciles corriger. Principe de construction dun code de Hamming dense C(2m-m-1, 2m-1) : - Chaque colonne de sa matrice de contrle H(m, 2m-1) est non-nulle et diffrente. - Proprits : . leur distance minimale est gale 3 (au moins) . correction des erreurs simples et dtection des erreurs doubles, au moins. Auto-correction : - le syndrome du mot reu est identique la colonne de la matrice de contrle correspondant au bit corriger. - si lon trie les colonnes de H suivant leur poids binaire croissant et que les poids de ses colonnes couvrent lintervalle [1, 2m-1] alors la valeur binaire du syndrome est gale au numro de bit erron. Un code de Hamming est compact si les 2n-k syndromes diffrents sont utiliss pour identifier les 2n-k-1 erreurs simples (+ syndrome nul !).

____ B. Cousin et C. Viho - IFSIC -Universit Rennes I

80

s Protection contre les erreurs s

Exemple : - Code de Hamming C4(4, 7) tel que sa matrice de contrle H4(3, 7) = Calculez la matrice gnratrice G4 puis les syndromes de c1 = de c2 = 0 0 1 0 1 1 0 et de c3 = 0 0 0 1 1 1 1 .
1 1 1 0 1 0 0 0 1 1 1 0 1 0 1 0 1 1 0 0 1

1110100 0111010 1011001

0010111

Le code est systmatique, la transpose de H4 : H4 = c1. H4T = c2. H4T = c3. H4T = 4.5. Conclusion
000 001 100

donc G4 =

--> i1 =

1 0 0 0

0 1 0 0

0 0 1 0

0 0 0 1

1 1 1 0

0 1 1 1

1 0 1 1

0010

--> erreur sur le dernier bit --> i2 = --> erreur sur le 5me bit --> i3 =

0010 0001

La mthode matricielle impose de travailler sur des mots de taille fixe, ce qui est un inconvnient majeur pour les rseaux informatiques o les messages sont de taille variable.
____ B. Cousin et C. Viho - IFSIC -Universit Rennes I

81

s Protection contre les erreurs s

5. Les codes polynmiaux 5.1. Prsentation Notation : tout vecteur peut tre prsent sous une forme polynmiale : U = <u0,u1,u2,...,un> <==> U(x) = u0+u1.x+u2.x2+...+un.xn
Attention : les oprations sont binaires (construits sur le corps Z/2Z) : 1.x + 1.x = 0.x !

- Somme polynomiale : . somme deux deux de chaque coefcient (somme vectorielle) . exemp[le : <x3+1> + <x4+x2+1> = <x4+x3+x2+1> - Produit polynomiale : . produit vectoriel . exemple : <x3+1> . <x+1> = <x4+x3+x+1> - Division polynomiale . idem . Exemple : <x4+x3+x2+x+1> / <x+1> = <x3+ x2+1> Dfinition : Un code polynmial est un code linaire systmatique dont chacun des mots du code est un multiple du polynme gnrateur (not g(x)).
____ B. Cousin et C. Viho - IFSIC -Universit Rennes I 82

s Protection contre les erreurs s

<==> les lignes de la matrice gnratrice sont engendres par le polynme gnrateur. Le degr du polynme dfinit la longueur du champ de contrle derreur. Exemple : . soit le polynme gnrateur : g(x) = x+1 . on sintresse un code C5(2,3) donc les calculs se feront modulo x3+1 . premre ligne : g(x). 1 = x+1 . deuxime : g(x).(x2+1) mod (x3+1) = (x3+x2+x+1) mod (x3+1) = x2+x . ce qui donne la matrice gnratrice suivante : G5(2,3) =
0 1 1 1 1 0

Exemples de codes polynmiaux : - Lavis V41 du CCITT conseille lutilisation de codes polynmiaux (de longueurs n = 260, 500, 980 ou 3860 bits) avec le polynme gnrateur : . g(x) = x16 + x12 + x5 + 1. - Le polynme CRC-16 est utilis par le protocole HDLC : . g(x) = x16 + x15 + x2+ 1. - Le polynme suivant est utilis par Ethernet : . g(x) = x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+1.
____ B. Cousin et C. Viho - IFSIC -Universit Rennes I 83

s Protection contre les erreurs s

5.2. Capacit de dtection Capacit de dtection des erreurs : Un code polynmial (k, n) dont le polynme gnrateur a plus dun coefficient non-nul (donc il ne divise pas xi, i<n) permet de dtecter toutes les erreurs simples. - ide de preuve : (C(x) + xi ) mod g(x) != 0 Si le polynme gnrateur dun code polynmial (k, n) a un facteur irrductible de trois termes (il ne divise ni xi ni 1 + xj-i, i<j<n), le code permet de dtecter les erreurs doubles. . par exemple : g(x) = x3 + x + 1 Pour quun code polynmial dtecte toutes les erreurs dordre impair, il suffit que son polynme gnrateur ait (x+1) comme facteur. . Par exemple : le code de polynme gnrateur (x+1) qui est quivalent la parit. Capacit de dtection des paquets derreurs: Un code polynmial (k, n) permet de dtecter toutes les erreurs dordre l =< n-k (cest--dire infrieur au degr du polynme gnrateur). Et la probabilit de ne pas dtecter les erreurs dordre l>n-k est trs faible et gale : 2-(n-k)
____ B. Cousin et C. Viho - IFSIC -Universit Rennes I 84

s Protection contre les erreurs s

5.3. Principe du codage Le mot de code m(x) dun code polynmial (k, n) de polynme gnrateur g(x) associ au mot initial i(x) est dfini par : m(x) = i(x). xn-k + r(x), o r(x) est le reste de la division de i(x).xn-k par le polynme gnrateur g(x) (not : r(x) = (i(x).xn-k) mod g(x) ). Remarques : (i) Les r = n-k bits de r(x) (de degr =< n-k-1) forment les bits du champ de contrle. (ii) Les bits de poids fort (de degr > n-k-1) forment le mot initial (--> code systmatique) (iii) Lopration de codage effectue lmission est ramene une division polynmiale, qui peut tre ralise simplement (lectroniquement). 5.4. Principe du dcodage A la rception, chaque mot reu m(x) est divis par le polynme gnrateur g(x). Un reste non-nul indique quil y a eu erreur lors de la transmission. Syndrome de m(x) : m(x) mod g(x) != 0 ==> Erreur ! Attention : la rciproque est fausse ! Si le reste est nul cela ne veut pas dire quil ny a pas eu derreurs --> subsistance derreurs dites rsiduelles.
____ B. Cousin et C. Viho - IFSIC -Universit Rennes I 85

s Protection contre les erreurs s

5.5. Schma lectronique dun diviseur polynmial La multiplication est ralise par un ET logique, laddition par un OU exclusif, plus des registres dcalage. Le diviseur : g(x) = g0+g1.x+g2.x2+...+gn-k.xn-k
g0 g1 ... r0 r1 ... rn-k gn-k

Procd : (i) les registres ri sont mis zros (ii) les bits du mot diviser sont insrs en entre (k tapes), bits de poids fort en tte. (iii) les registres ri contiennent alors le reste, quon extrait (n-k tapes). De nombreuses optimisations sont possibles : - Lorsque gi=0 on supprime simplement la connexion et la porte ET ! - phase spcique dinitialisation, etc.
____ B. Cousin et C. Viho - IFSIC -Universit Rennes I

86

s Protection contre les erreurs s

6. Les codes cycliques 6.1. Dnitions Un code cyclique (k, n) est un code linaire (k, n) tel que toute permutation circulaire dun mot du code est encore un mot du code. Exemple : Un code cyclique (1, 2) possde les mots de code suivants : {01, 10} ou {00, 11}, mais pas {01, 11}. Un code cyclique (1, 3) possde les mots de code suivants : {000, 111}. On appelle priode du polynme H(x) le plus petit entier u tel que H(x) divise xu+1. Un polynme est irrductible sil ne possde aucun diviseur de degr suprieur zro. Si la priode dun polynme irrductible est gale n-k alors le polynme est dit primitif.

____ B. Cousin et C. Viho - IFSIC -Universit Rennes I

87

s Protection contre les erreurs s

6.2. Proprits/autocorrection Un code cyclique (k, n) est un code polynmial dont le polynme gnrateur divise xn + 1. Les dispositifs de codage et de dcodage sont identiques ceux des codes polynmiaux. Les codes cycliques sont principalement utiliss pour leur capacit de correction. Les codes cycliques (k, n) dont le polynme gnrateur est primitif et tel que n=2n-k + 1, sont des codes de Hamming. 6.3. Codes correcteurs performants Les codes BCH (Bose-Chaudhuri-Hocquenghem) sont ceux qui ont la plus grande capacit de correction derreurs indpendantes pour une redondance et une longueur donnes. Leur rendement nest pas trs lev. Ce sont une extension des codes cycliques, ils sont non pas construit sur un alphabet binaire mais un alphabet compos dun grand ensemble de symboles. Les codes RS (Reed-Solomon) sont des codes correcteurs trs puissants. Ils peuvent tre prsents comme des codes BCH dans lequel chaque bit des mots du code est remplac par un entier dfini modulo 2v (avec n=2v-1). La distance dun code RS(m, n) est gale n-m+1.

____ B. Cousin et C. Viho - IFSIC -Universit Rennes I

88

s Protection contre les erreurs s

7. Autres techniques de correction derreurs 7.1. Entrelacement On peut illustrer le principe qui sous-tend lentrelacement par une technique simple. Lide est de rpartir les bits conscutifs des blocs formant le message transmettre dans des paquets diffrents. Ainsi grce cet entrelacement, un groupe derreurs (affectant un paquet) affecte uniquement quelques bits dans plusieurs blocs. La technique de protection contre les erreurs applique aux blocs est mme de corriger indpendamment ces quelques bits errons dans chacun de ces blocs.

Emetteur
12 3 a bc

message blocs paquets


12 3 a bc

donnes du message champ de contrle derreur


1a 1a 2b 3c

segmentation codage

12 3

a bc

transmission dcodage

perte dun paquet

12 3

rassemblage

12 3

a bc

auto-correction par bloc

?
____ B. Cousin et C. Viho - IFSIC -Universit Rennes I

Rcepteur

message

89

s Protection contre les erreurs s

8. Techniques de contrle derreur par retransmission 8.1. Techniques de dtection des erreurs Lcho permet de sassurer que le rcepteur a reu correctement les informations mises. Exemple : technique utilise sur les liaisons (asynchrones) entre les ordinateurs et les priphriques par caractres !
cran alphanumrique cho ordinateur clavier

caractre

Actuellement, peu utilis car trs mauvais rendement et dlai important. 8.2. Technique dautocorrection par rptition Les informations transmettre sont rpts plusieurs fois. Au moins un des exemplaires (redondants) sera correctement reu. Trs mauvais rendement.
____ B. Cousin et C. Viho - IFSIC -Universit Rennes I 90

s Protection contre les erreurs s

8.3. Technique de correction par retransmission 8.3.1 Principe de fonctionnement - Lmetteur conserve une copie des donnes quil envoie. - Le rcepteur dtecte les erreurs grce la prsence dun champ de contrle derreur (code polynmial) dans les paquets de donnes. - Le rcepteur informe lmetteur de la bonne (resp. mauvaise) rception en lui retournant un paquet spcique : . acquittement positif (resp. ngatif) souvent appel ACK (resp. NACK) - Dans le cas dun acquittement ngatif, lmetteur doit rmettre le paquet erron. - Sinon il peut mettre le prochain paquet.

--> Protocole Send and wait Un temporisateur bornant la dure dattente des acquittements est ncessaire pour assurer la correction du mcanisme lors des pertes de paquets de donnes. Lidentification des paquets (de donnes et dacquittement) est ncessaire pour assurer la correction du mcanisme lors des pertes dacquittement : au moins numrotation modulo 2. --> Protocole du bit altern
____ B. Cousin et C. Viho - IFSIC -Universit Rennes I 91

s Protection contre les erreurs s

8.3.2

Exemple de fonctionnement

Fonctionne lalternat : Emetteur --> Rcepteur


Emetteur <donnes, 0> <ack,1> <donnes, 1> <(n)ack,1> retransmission <donnes, 1> <ack,0> temps retransmission <donnes, 1> <ack,0> temps Rcepteur Emetteur <donnes, 0> <ack,1> Rcepteur

erreur !

temporisateur

<donnes, 1> <(n)ack,1>

perte!

Communication bidirectionnelle : x 2 ! Son rendement trs faible : - si le temps de transmission Tt est faible vis--vis du temps de propagation Tp. - car la liaison est inutilise lorsque lmetteur attend lacquittement. - R = Tt/ (2Tp + Tt) --> Optimisation : mcanisme de la fentre coulissante (sliding window) !
____ B. Cousin et C. Viho - IFSIC -Universit Rennes I 92

s Protection contre les erreurs s

9. Conclusion Mcanismes de base de protection contre les erreurs : - dtection, - autocorrection, - retransmission --> Amlioration de la fiabilit de la communication, mais (bien quavec une faible probabilit) : - certaines congurations derreur ne sont pas dtectes ! - certaines congurations derreur ne peuvent pas tre corriges ! - certaines congurations derreur sont mal corriges !!! Ces mcanismes sont prsents au sein de nombreuses couches (protocoles), parmi lesquelles on peut citer : - Liaison de donnes (ex. Ethernet, Token Ring, FDDI, HDLC, etc) - Rseau (ex. IP, etc) - Transport (ex. TP4, TCP, UDP, etc)

____ B. Cousin et C. Viho - IFSIC -Universit Rennes I

93