6 Fehlertoleranz vs6 1 Zuverlässigkeit (reliability) Sicherheit vor Fehlern (safety) Sicherheit vor Angriffen (security) WS/SS xy Systemsicherheit SS 04 NetzsicherheitWS 04/05 vs6 2 6.1 Terminologie (ist nicht einheitlich!) Fehler (error): Versagen der Hardware oder Konstruktionsfehler in Hardware oder Software Fehlfunktion (fault): Teil des Systems verhält sich nicht so wie es sollte, bedingt durch Hardware- oder Software-Fehler Fehlverhalten (failure): Gesamtsystem verhält sich nicht so wie es sollte, bedingt durch Fehlfunktion Fehlertoleranz (fault tolerance): Systemeigenschaft, die bedeutet: Fehlfunktion wird so abgefangen, daß das gewünschte Systemverhalten gesichert bleibt: Fehlfunktion führt nicht zu Fehlverhalten Verfügbarkeit (availability) von Systemen oder Daten: Anteil einer Zeitspanne, in dem das System ohne Fehlverhalten benutzbar ist, z.B. „Verfügbarkeit von 99,99%“ vs6 3 Zur Erreichung von Fehlertoleranz kommen verschiedene Arten von Redundanz zum Einsatz: physische Redundanz, z.B. Überschuß an Prozessoren: - 1 Prozessor in Reserve (passive Redundanz, primary + backup) mit hot standby oder cold standby, - 3 Prozessoren tun das Gleiche, praktizieren Abstimmung (aktive Redundanz, active redundancy) Informationsredundanz, z.B. fehlerkorrigierende Codes, n-Versionen-Programmierung, Replikation (beinhaltet physische Redundanz von Speicher) zeitliche Redundanz, z.B. Wiederholungsversuch bei Datenübertragung vs6 4 Klassifikation von Fehlfunktionen, z.B. von Prozessoren („Fehlersemantik“): fail-stop: Prozessor wird funktionsunfähig und signalisiert dies (!) fail-silent: Prozessor „rührt sich nicht mehr“ (evtl. schwer erkennbar) byzantinisch: Prozessor läuft fehlerhaft weiter vs6 5 6.2 Replikation mit Abstimmung (voting) toleriert Stations- und Netzausfälle, erhöht die Verfügbarkeit von Daten Ansatz: Verwendung von Lese- und Schreib-Quorum (vgl. 5.3.1.2b) Nebeneffekt: Lese/Schreib-Ausschluss n Kopien/Server, Kopien tragen Versionsnummer, Lese-Quorum r, Schreib-Quorum w Lesen: r Kopien (statt nur 1) müssen verfügbar sein Schreiben: w Kopien (statt n) müssen verfügbar sein r+wn, 0rn, vs6 n/2 w n 6 Schreiben in 2 Phasen: Schreibmenge finden, d.h. w Server finden, die bereit sind – sie melden sich mit ihrer Versionsnummer; die höchste Nummer ist die tatsächliche aktuelle Versionsnummer – weil wegen 2w > n Überlappung mit letzter Schreibmenge; obsolete Kopien auf aktuellen Stand bringen (aktive Replikation) Schreibnachricht an alle Mitglieder der Schreibmenge schicken (diese schreiben dann – und erhöhen die Versionsnummer); auf Bestätigungen warten und Schreibmenge wieder freigeben; Schreibnachricht an alle anderen schicken. (Ergänzungen notwendig, z.B. für den Fall, daß nicht alle Mitglieder der Schreibmenge eine Bestätigung schicken.) vs6 7 Lesen in 2 Phasen: Lesemenge finden, d.h. r Server finden, die bereit sind – sie melden sich mit ihrer Versionsnummer; die höchste Nummer ist die tatsächliche aktuelle Versionsnummer – weil wegen w + r > n Überlappung mit letzter Schreibmenge. Lesen von einem Mitglied der Lesemenge, das die höchste Versionsnummer hat; Lesemenge wieder freigeben. vs6 8 6.3 Verteilte Übereinkunft (distributed consensus/agreement) z.B. - Aufteilung einer Aufgabe - „gleichzeitige“ Abschaltung von Aggregaten - u.ä. Unzuverlässige Nachrichten: Es kann nicht garantiert werden, daß innerhalb einer vorgegebenen Zeit Einigkeit erzielt wird. Unzuverlässige Prozessoren: vs6 9 Unzuverlässige Prozessoren: Satz für byzantinische Fehler (Lamport 1982): Verteilte Übereinkunft angesichts byzantinischer Fehler ist genau dann möglich, wenn von insgesamt 3m + 1 Prozessoren höchstens m fehlerhaft sind. (M.a.W.: mehr als zwei Drittel der Prozessoren müssen korrekt arbeiten.) Folklore: „Byzantinische Generäle“ vs6 10