Angewandte Informationstechnik im Bachelorstudiengang Angewandte Medienwissenschaft (AMW) Fehlererkennung und -korrektur Dr.-Ing. Alexander Ihlow Fakultät für Elektrotechnik und Informationstechnik FG Drahtlose Verteilsysteme/Digitaler Rundfunk http://www.tu-ilmenau.de/it dvt Sommersemester 2011 1/ 18
Fehlererkennung und Fehlerkorrektur Wie lassen sich bei der Übertragung und Speicherung von Informationen Fehler erkennen bzw. korrigieren? Fehler können z.b. entstehen durch Rauschen Interferenz Signalverformung... Beispiele für Fehlerursachen sind... gestörte Funkübertragung durch Signalabschattung Störsignale auf der Funkübertragungsstrecke (z.b. Mikrowellenofen) Nebensprechen, Übersprechen (crosstalk oder X-talk) Kratzer auf einem optischen Datenträger (CD, DVD, Blu-ray Disc) 2/ 18
Fehler Technische Systeme lassen sich nicht völlig fehlerfrei realisieren. Eine Datenübertragung bzw. -speicherung kann nicht absolut sicher erfolgen. Jedoch lässt sich die Fehlerwahrscheinlichkeit beeinflussen. Dazu ist es notwendig, die potenziell auftretenden Fehlerarten im Systementwurf zu berücksichtigen, um das Fehlerschutzverfahren geeignet auszulegen. Grundsätzlich ist zu unterscheiden zwischen Einzelfehlern (single errors) Störung einzelner Bits Bündelfehlern (burst errors), auch Blockfehler oder Büschelfehler Störung eines ganzen Blocks von Bits Bündelfehler können in Einzelfehler umgewandelt werden, indem der Datenstrom am Sender verwürfelt wird (interleaving). Am Empfänger wird diese Verwürfelung wieder rückgängig gemacht. 3/ 18
Fehlererkennung Wie kann eine Fehlererkennung am Empfänger (zur Sicherstellung der Datenintegrität) realisiert werden? Man muss zusätzliche Daten (Prüfdaten) übertragen, mittels derer der Empfänger die Integrität der Daten überprüfen kann. Der Nachricht wird dabei bewusst Redundanz hinzugefügt. Beispiele für Methoden der Fehlererkennung: Einfache Prüfsummenverfahren, z.b. Parität, Quersumme Zyklische Redundanzprüfung (cyclic redundancy check, CRC), z.b. CRC32 kryptologische Hashfunktion, z.b. Message-Digest Algorithm 5 (MD5) 4/ 18
Paritätsbit Wert des Paritätsbits bei Bits in einem Datenblock Even-Parity Odd-Parity Gerade Anzahl von 1 -Bits 0 1 Ungerade Anzahl von 1 -Bits 1 0 Beispiele: Datenblock Paritätsbit (Even Parity) 0 0 1 1 0 0 0 0 1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 1 0 1 1 0 1 1 0 1 5/ 18
Hamming-Distanz Die nach Richard Wesley Hamming benannte Hamming-Distanz gibt ein Maß für die Unterschiedlichkeit von Zeichenketten an. Hamming-Distanz einiger Beispiele: d(haus, Maus) = 1 d(haus, Baum) = 2 d(12345, 13344) = 2 d(12345, 54321) = 4 d(00110, 00100) = 1 6/ 18
Hamming-Distanz eines Codes Die Hamming-Distanz eines Codes gibt das Minimum aller Hamming-Distanzen zwischen den Codewörtern an. Sie ist ein wichtiger Parameter, mit der sich die Leistungsfähigkeit von fehlerkorrigierenden Codes beschreiben lässt: Anzahl der erkennbaren Bitfehler: f e = d 1 Anzahl der korrigierbaren Bitfehler: d 1 f k = 2 bedeutet abrunden Je unähnlicher sich die Codewörter sind, desto mehr Fehler lassen sich erkennen bzw. korrigieren. Beispiel: Die Hamming-Distanz eines Codes ist d = 3. Damit lassen sich bis zu 2 Bitfehler erkennen bzw. 1 Bitfehler korrigieren. 7/ 18
Blockcodes Ein (n, k)-blockcode hat folgende Parameter: n : Gesamtanzahl der Zeichen im Block k : Anzahl der Informationszeichen im Block n k : Anzahl der Prüfzeichen im Block Die Coderate ist definiert als R = k n z.b. Paritätsprüfung bei vier Informationsbits: (5,4)-Blockcode Codewort Paritätsbit (Even-Parity) 0000 0 0001 1 0010 1 0011 0 : 1110 1 1111 0 8/ 18
Wiederholungscode Wie entwirft man einen fehlerkorrigierenden Code? Eine Möglichkeit wäre, das Codewort mehrmals zu übertragen (Wiederholung). Symbol Codewort Codewort Codewort (ohne Wdh.) (einfache Wdh.) (doppelte Wdh.) A 00 0000 000000 B 01 0101 010101 C 10 1010 101010 D 11 1111 111111 Hamming-Distanz Hamming-Distanz Hamming-Distanz des Codes des Codes des Codes d = 1 d = 2 d = 3 keine Fehlererkennung 1 Bitfehler erkennbar 2 Bitfehler erkennbar keine Fehlerkorrektur keine Fehlerkorrektur 1 Bitfehler korrigierbar Ein Wiederholungscode ist allerdings eine sehr ineffiziente Möglichkeit zur fehlerkorrigierenden Codierung! 9/ 18
Hamming-Code Entwurf eines Codes mit der Hamming-Distanz d = 3. Erkennung von maximal f e = 3 1 = 2 Bitfehlern Korrektur von maximal f k = 3 1 = 1 Bitfehler 2 10/ 18
Hamming-Code (7,4) Codierung k 1 k 2 i 4 k 3 i 3 i 2 i 1 Raster 1 2 3 4 5 6 7 w 0 0 0 0 0 w 1 0 0 0 1 w 2 0 0 1 0 w 3 0 0 1 1 w 4 0 1 0 0 w 5 0 1 0 1 w 6 0 1 1 0 w 7 0 1 1 1 w 8 1 0 0 0 w 9 1 0 0 1 w 10 1 0 1 0 w 11 1 0 1 1 w 12 1 1 0 0 w 13 1 1 0 1 w 14 1 1 1 0 w 15 1 1 1 1 Informationsbits i 4, i 3, i 2, i 1 in den Rastern 3, 5, 6, 7 Kontrollbits k 1, k 2, k 3 in den Rastern 1, 2, 4 (2 0, 2 1, 2 2 ) Berechnung der Kontrollbits (am Sender): k 3 = i 3 i 2 i 1 k 2 = i 4 i 2 i 1 k 1 = i 4 i 3 i 1 Modulo-2-Addition (XOR-Operation): 0 0 = 0 0 1 = 1 1 0 = 1 1 1 = 0 11/ 18
Hamming-Code (7,4) Codierung k 1 k 2 i 4 k 3 i 3 i 2 i 1 Raster 1 2 3 4 5 6 7 w 0 0 0 0 0 0 0 0 w 1 1 1 0 1 0 0 1 w 2 0 1 0 1 0 1 0 w 3 1 0 0 0 0 1 1 w 4 1 0 0 1 1 0 0 w 5 0 1 0 0 1 0 1 w 6 1 1 0 0 1 1 0 w 7 0 0 0 1 1 1 1 w 8 1 1 1 0 0 0 0 w 9 0 0 1 1 0 0 1 w 10 1 0 1 1 0 1 0 w 11 0 1 1 0 0 1 1 w 12 0 1 1 1 1 0 0 w 13 1 0 1 0 1 0 1 w 14 0 0 1 0 1 1 0 w 15 1 1 1 1 1 1 1 Informationsbits i 4, i 3, i 2, i 1 in den Rastern 3, 5, 6, 7 Kontrollbits k 1, k 2, k 3 in den Rastern 1, 2, 4 (2 0, 2 1, 2 2 ) Berechnung der Kontrollbits (am Sender): k 3 = i 3 i 2 i 1 k 2 = i 4 i 2 i 1 k 1 = i 4 i 3 i 1 Modulo-2-Addition (XOR-Operation): 0 0 = 0 0 1 = 1 1 0 = 1 1 1 = 0 12/ 18
Hamming-Code (7,4) Decodierung Berechnung der Kontrollbits (am Sender): Berechnung des Korrektors (am Empfänger): k 3 = i 3 i 2 i 1 k 2 = i 4 i 2 i 1 k 1 = i 4 i 3 i 1 c 3 = k 3 i 3 i 2 i 1 c 2 = k 2 i 4 i 2 i 1 c 1 = k 1 i 4 i 3 i 1 An welcher Stelle passierte der Bitfehler? Syndrom S = c 3 0 0 0 0 1 1 1 1 c 2 = 0 0 1 1 0 0 1 1 c 1 0 1 0 1 0 1 0 1 verfälschtes Raster: 1 2 3 4 5 6 7 13/ 18
RAID Redundant Array of Independent Disks Zusammenschaltung mehrerer physischer Festplatten zu einem logischen Laufwerk Damit kann folgendes erreicht werden: Erhöhung der Datensicherheit (Redundanz) Erhöhung des Datendurchsatzes (Leistung) Kostengünstiger Aufbau großer logischer Laufwerke wesentlich größer als einzelne Festplatten Erhöhung der Systemverfügbarkeit, da defekte Festplatten während des Systembetriebs ausgetauscht werden können Die Art und Weise der Zusammenschaltung bestimmt die Datensicherheit und den Datendurchsatz. Geöffnete 3.5 Festplatte Christian Jansky http://de.wikipedia.org/wiki/festplatte 14/ 18
RAID 0 Striping Eigenschaften: Zusammenschaltung von n 2 Festplatten, wobei die Daten streifenweise (striping) auf den Festplatten verteilt werden. RAID 0 Vorteil: n-fache Nettokapazität des logischen Laufwerks gegenüber einer einzelnen Festplatte (k = n) Erhöhung des Datendurchsatzes durch parallele Lese- und Schreibzugriffe A1 A3 A5 A7 A2 A4 A6 A8 Nachteil: Der Ausfall einer einzigen Festplatte führt zur Zerstörung der Datenintegrität. Je mehr Festplatten sich in einem Verbund befinden, desto größer wird die Ausfallwahrscheinlichkeit. Disk 0 Disk 1 http://de.wikipedia.org/wiki/raid 15/ 18
RAID 1 Spiegelung (Mirroring) Eigenschaften: Vorteil: Zusammenschaltung von n 2 Festplatten, wobei sich auf jeder Festplatte die selben Daten befinden. Erhöhung der Datensicherheit: Es dürfen n 1 Festplatten ausfallen. Erhöhung des Lese-Datendurchsatzes durch parallele Zugriffe Nachteil: Nettokapazität k = 1 (Kapazität einer einzelnen Festplatte) A1 A2 A3 A4 RAID 1 A1 A2 A3 A4 Disk 0 Disk 1 http://de.wikipedia.org/wiki/raid 16/ 18
RAID 5 Block-Level Striping mit verteilter Paritätsinformation Eigenschaften: Zusammenschaltung von n 3 Festplatten, wobei sowohl die Daten als auch die Paritätsinformation von n 1 Festplatten streifenweise verteilt werden. Nettokapazität k = n 1 A1 B1 C1 Dp A2 B2 Cp D1 RAID 5 A3 Bp C2 D2 Ap B3 C3 D3 Vorteil: RAID 5 gewährleistet Datenintegrität bei Ausfall von maximal einer Festplatte Erhöhung des Lese-Datendurchsatzes durch parallele Zugriffe Disk 0 Disk 1 Disk 2 Disk 3 http://de.wikipedia.org/wiki/raid 17/ 18
RAID 6 Block-Level Striping mit doppelter verteilter Paritätsinf. Eigenschaften: Zusammenschaltung von n 4 Festplatten, wobei sowohl die Daten als auch die Paritätsinformation von n 2 Festplatten streifenweise verteilt werden. Nettokapazität k = n 2 Vorteil: RAID 6 gewährleistet Datenintegrität bei Ausfall von maximal zwei Festplatten Erhöhung des Lese-Datendurchsatzes durch parallele Zugriffe A1 B1 C1 Dp Disk 0 A2 B2 Cp Dq Disk 1 RAID 6 A3 Bp Cq D1 Disk 2 Ap Bq C2 D2 Disk 3 Aq B3 C3 D3 Eq E1 E2 E3 Ep http://de.wikipedia.org/wiki/raid Disk 4 18/ 18