Datensicherung Bei der digitalen Signalübertragung kann es durch verschiedene Einflüsse, wie induktive und kapazitive Einkopplung oder wechselnde Potentialdifferenzen zwischen Sender und Empfänger zu einer Verfälschung einzelner oder mehrerer Bits der übertragenen Information kommen. In welchem Maße solche Störungen auftreten, ist in erster Linie bestimmt durch das elektrische Umfeld eines Datenübertragungssystems, die zu überbrückende Entfernung sowie die getroffenen Schutzmaßnahmen. Die wichtigsten Schutzmaßnahmen sind das Prinzip der Differenzsignalübertragung, die Verwendung verdrillter und abgeschirmter Leitungen, die potentialfreie Ankopplung von Teilnehmern oder gar der Einsatz von Lichtwellenleitern. Da selbst bei aufwendigen Schutzmaßnahmen Signalverfälschungen nicht gänzlich ausgeschlossen werden können, sind grundsätzlich Maßnahmen erforderlich, welche es dem empfangenden Teilnehmer ermöglichen, zu erkennen, ob eine empfangene Nachricht (n Bits) korrekt oder fehlerhaft ist. Sämtliche hierfür angewandten Verfahren basieren auf der Übertragung einer zusätzlichen Prüfinformation (p Prüfbits), welche es dem Empfänger gestattet, mit einer gewissen Wahrscheinlichkeit Übertragungsfehler zu erkennen. Die Länge der gesendeten Information beträgt: m = n p Sender Empfänger Nutzinformation Prüfbits Außerdem ist erforderlich, dass der Empfänger einer verfälschten Nachricht dem Sender in irgendeiner Form mitteilen kann, wenn er eine Nachricht nicht fehlerfrei empfangen hat, so dass der Sender diese Nachricht nochmals senden kann. Die sendeseitig gebildete Prüfinformation wird nach einer bestimmten, mit dem Empfänger vereinbarten Regel gebildet. Durch die empfangsseitige Anwendung derselben Regel und Vergleich mit der vom Sender gebildeten Prüfinformation kann der Empfänger erkennen, dass ein Übertragungsfehler vorliegt, falls die lokal gebildete Prüfinformation von der vom Sender gebildeten abweicht. Fehlererkennung und ggf. Fehlerkorrektur durch redundante Informationen Längssicherung durch Paritätsbildung (Blockweise) Beispiel: Übertragung der ASCII-Zeichenkette: OK? 1 STX 1 1 1 1 1 O 1 1 1 1 K 1 1 1 1 1? 1 1 ETX 1 1 1 1 BCC Empfänger stellt fest: fehlerhafte Spalte bedingt durch falsche Übertragung des Fragezeichens korrekt ist:? = 11 1111
mit STX = Start of Text (Steuerzeichen) ETX = End of Text (Steuerzeichen) BCC = Block Check Character Quersicherung durch Paritätsbildung (Wortweise) 1 1 1 1 1 1 O 1 1 1 1 K 1 1 1 1 1? Paritätsbits, hier gerade Parität (even parity) Empfänger stellt fest: fehlerhaftes Codewort in der dritten Zeile Kreutzsicherung als Kombination der vorgenannten Verfahren 1 1 STX 1 1 1 1 1 1 O 1 1 1 1 K 1 1 1 1 1? 1 1 ETX 1 1 1 1 BCC Empfänger stellt fest: fehlerhaftes Bit 1-Bit-Fehler sind lokalisierbar und somit korrigierbar Mehr-Bit-Fehler sind in gewissem Umfang erkennbar; sog. 4-Bit-Rechteckfehler sind z.b. nicht erkennbar. Die Beurteilung der Fehlererkennungsfähigkeit eines Datensicherungsverfahren erfolgt üblicherweise durch die sogenannte Hamming-Distanz. Diese gibt an, wie viele Bitfehler in einer Nachricht mindestens erforderlich sind, bis ein nicht erkennbarer Fehler vorkommen kann. Eine Hamming-Distanz von 4 bedeutet z. B., dass bis zu drei Bitfehler pro Nachricht sicher erkannt werden können. Für Feldbusanwendungen wird eine Hamming-Distanz von mindestens 4 gefordert.
Hamming-Distanz Sie ist definiert als die minimale Anzahl unterschiedlicher Bits zweier benachbarter Codewörter (Mindestdistanz). Im folgenden durch einen 3-Bit-Code (m = 3 = n p) veranschaulicht h=1: Die Codewörter sind darstellbar als Eckpunkte eines Würfels 11 Eindeutigkeit des Codes 1 n = 3, p = 1 h=2: 11 1 111 11 Zwischen je zwei gültigen Codewörtern liegt immer ein ungültiges Codewort 1-Bit-Fehlererkennung 11 111 Darstellung entspricht gerader Parität n = 2, p = 1 1 1 11 1 11 h=3: Zwischen je zwei gültigen Codewörtern liegen immer zwei ungütige Codewörter 2-Bit-Fehlererkennung oder 11 111 1-Bit-Fehlerkorrektur 1 11 n = 1, p = 2 1 1 11 Richard Wesley HAMMING (11. Februar 1915-7. Januar 1998) arbeitete 1945 in Los Alamos am Projekt zur Herstellung der Atombombe. Nach dem zweiten Weltkrieg studierte er bei Bell Telephones Codes, welche Irrtümer selber entdecken und korrigieren können. Ab 1956 arbeitete HAMMING bei IBM an der Entwicklung von leistungsfähigen Computern. Ein Satz von ihm zur Fehlerkorrektur: Es ist selten ratsam, nur eine 1-Bit-Fehlerkorrektur anzuwenden, da ein 2-Bit-Fehler das System fehlleitet, wenn es eine Korrektur versucht.
Die Verallgemeinerung des vorhergehenden Beispiels ergibt für h=4: entweder 1-Bit-Fehlerkorrektur (Single Error Correction, SEC) und 2-Bit-Fehlererkennung (Double Error Detection, DED); z.b. DRAM-Module mit SECDED: ein 64-Bit-Speicherwort wird mit 7-Bit-SEC und 1-Bit-DED gesichert oder 3-Bit-Fehlererkennung Letztlich beschreibt die Restfehlerwahrscheinlichkeit die Integrität eines Datenübertragungssystems. Diese besagt, mit welcher Wahrscheinlichkeit ein empfangener Nachrichtenblock auch nach Anwendung eines Fehlererkennungsverfahrens fehlerbehaftet ist. Das für die serielle Datenkommunikation wichtigste Sicherungsverfahren ist das zyklische Blocksicherungsverfahren (CRC, Cyclic Redundancy Check). Bei diesem Verfahren werden die als Nutzinformation zu übertragenden Bits als Koeffizienten eines Polynoms entsprechend hohen Grades betrachtet. Dieses Polynom wird durch ein, mit dem Empfänger vereinbartes Generatorpolynom bestimmten Grades in Modulo-2-Arithmetik dividiert und der aus dieser Division resultierende Rest als Prüfinformation (FCS, Frame Check Sequence) zusammen mit der Nutzinformation übertragen. CRC - Zyklische Blockprüfung (Cyclic Redundancy Check) Datensicherung bei seriellen Bitströmen durch Polynom-Codes (CRC-Codes) Dargestellt am Beispiel für ein Verfahren mit einem 4-Bit-CRC-Code: P(x) = x 4 x 3 1 Verfahren: 1. Die n Bits eines seriellen Datenstroms werden als Koeffizienten eines Polynoms CW(x) der Ordnung n-1 betrachtet. 2. CW(x) wird auf der Senderseite zunächst mit dem Polynom x4 multipliziert CW'(x) um Nullen in der Länge des Restpolynoms R(x) an den seriellen Datenstrom anzuhängen. Dann wird dieses CW'(x) von einem Codierer durch das Generatorpolynom P(x) dividiert, wobei das Restpolynom R(x) 3. Ordnung als Prüfinformation entsteht. 3. R(x) wird an CW(x) angehängt und über den Übertragungskanal zum Empfänger geschickt. 4. Ein Decodierer auf der Empfängerseite dividiert diese Daten durch P(x) und erwartet bei fehlerfreier Übertragung den Rest Null. zu übertragendes Code-Wort: CW(x) = x 7 x 5 x 1 CW = 1111 Generator-Polynom: P(x) = x 4 x 3 1 P = Polynomdivision mit Hilfe der Modulo-2-Subtraktion
CW'(x) / P(x) R(x) 1111 111 1111 111 11 CW(x)R(x) / P(x) ) R(x) = im fehlerfreien Fall 111111 111 11111 Technische Realisierung der Polynomdivision Realisiert wird die Modulo-2-Subtrabtion mit XOR-Gattern und die Merker mit s ATM benutzt mehrere Polynome, z.b. auch CRC-1 = x 1 x 9 x 5 x 4 x 1 Die Realisierung des Polynoms mit XOR-Gattern und s ergibt folgende Schaltung: 1 9 8 7 6 5 4 3 2 1 CW'(x) x 1 1x 9 x 8 x 7 x 6 1x 5 1x 4 x 3 x 2 1x 1 1 oder für das im Beispiel verwendete Generator-Polynom: P(x) = x 4 x 3 1 4 3 2 1 CW'(x)
Die XOR-Verknüpfungen mit dem logischen Wert "" wurden durch eine einfache Verbindung zwischen den s ersetzt! Codierung [Bilden von R(x)] CW'(x) 1 1 1 1-4 -3-2 -1 Decodierung [R(x) =?] CW(x) R(x) 1 1 1 1-4 -3-2 -1 Ethernet benutzt CRC-32, HDLC (ISDN-Sicherungsebene) benutzt CRC-V.41 und ATM benutzt CRC-8, CRC-1 und CRC-32 CRC-8 x 8 x 2 x 1 1 111 CRC-1 x 1 x 9 x 5 x 4 x 1 11 11 11 CRC-12 x 12 x 11 x 3 x 2 x 1 1 1 1111 CRC-16 x 16 x 12 x 1 1 1 11 CRC-V.41 x 16 x 12 x 5 1 1 1 1 1 CRC-32 x 32 x 26 x 22 x 16 x 12 x 11 1 1 1 1 1 111 11 111 x 1 x 8 x 7 x 4 x 2 x 1 siehe auch Patterson / Davie - Computer Networks Beispiele alle Beispiel e verwenden das gleich Generatorpolynom P = CW = 11 1 1111 1 R = 11 CW = 11 11 11 R = 11 CW = 11 111 11 1 R = 1 CW = 11 11 11 1 R =