interprozess kommunikation effizienz und schwächen

49
IPC SCHWÄCHEN UND OPTIMIERUNG INTERPROZESS KOMMUNIKATION Effizienz und Schwächen verfasst von Eyad Alkassar Seminar Ausgewählte Komponenten von Betriebssystemen

Upload: jersey

Post on 06-Jan-2016

18 views

Category:

Documents


0 download

DESCRIPTION

verfasst von Eyad Alkassar. Seminar Ausgewählte Komponenten von Betriebssystemen. INTERPROZESS KOMMUNIKATION Effizienz und Schwächen. INHALT. 1. IPC - Überblick. 2. Effiziente Implementierung. 3. Schwächen von IPC. 4. Zusammenfassung. IPC - ÜBERBLICK. Das Modell. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

INTERPROZESS KOMMUNIKATIONEffizienz und Schwächen

verfasst von Eyad Alkassar

Seminar Ausgewählte Komponenten von Betriebssystemen

Page 2: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

INHALT

1. IPC - Überblick

2. Effiziente Implementierung3. Schwächen von IPC4. Zusammenfassung

Page 3: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

IPC - ÜBERBLICK

Das Modell

Adressräume als Mapping

Threads und Prozesse

IPC als Kommunikationmechanismus

Page 4: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

PAGING

Prozesse können Virtual Memory anderen “zumappen” oder ganz überlassen

IPC - ÜBERBLICK

Prozesse die anderen Adressräume mappen heißen Pager

Pager dienen gleichzeitig als Page Fault Handler

Physical Memory

Memory Manager

Pager 1

Pager 2

Page 5: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

IPC IMPLEMENTIERUNGVorüberlegungen

Nach der 1. Kernel Generation Behauptung:

IPC ist prinzipiell zu langsam

Als Beispiel für eine schnelle Implementierung L3.3 bzw. L4

Dabei darf der Kernelansatz und die Sicherheit nicht verletzt werden

Geschwindigkeit wichtigstes Kriterium

Verwenden INTEL 486 Architektur als Grundlage

Page 6: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Obere Grenze für Geschwindigkeit

IPC IMPLEMENTIERUNG

Wo liegt tatsächlich die prinzipielle Geschwindigkeitsgrenze für IPC?

Dafür betrachten wir den einfachsten Aufruf

lade id von Bmsg length:= 0

THREAD A(user mode)

KERNELTHREAD B

(user mode)

Access thread B

Switch adress spaceLoad id of A

Inspect received message

71 Zyklen

36 Zyklen

call Kernel

return user

172 Zyklen -> 3.5 mikros

Page 7: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Kombinierte Systemaufrufe

Eintreten und Verlassen des Kernels offensichtlich die teuersten Instruktionen

IPC IMPLEMENTIERUNG

Daher nach möglich vermeiden bei IPC-Aufruf

Einführung kombinierter Primitive

Call entspricht einem send und closed receive von Client Seite

Reply & wait entspricht einem Antworten und open wait von Server Seite

Optimierung

Page 8: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Kombinierte Systemaufrufe

IPC IMPLEMENTIERUNG

Call entspricht einem send und closed receive von Client Seite

Reply & wait entspricht einem Antworten und open wait von Server Seite

THREAD A SERVER

Sende Anfrage

Call

Nur noch zwei Kernelaufrufe benötigt

Antworte

Reply and Wait

Optimierung

Page 9: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Kopieren von großen Daten

Prozess 1 und Prozess 2 mappen beide einen Kernelbereich

IPC IMPLEMENTIERUNGnaive Implementierung

Prozess 1 kopiert aus seinem Adressraum in gemeinsamen Bereich

Prozess 2 kopiert aus gemeinsamen Bereich in seinen Adressraum

Prozess1 AR

Prozess2 AR

Kernel Space

Page 10: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Kopieren von großen Daten

Benötigt zwei Kopieroperationen: zu teuer

IPC IMPLEMENTIERUNG

Temporäres Mapping der Daten in den Kernel (Öffnet Fenster)

Kernel kopiert dann die Daten nach B

Optimierung

Page 11: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Thread Control Blocks (TCB)

Thread Control Blöcke zum Speichern des Zustandes des Threads

IPC IMPLEMENTIERUNG

Kernel Stack Register Status

Bei Aktivierung Wiederherstellung des Threads aus TCB

Speicherung im Kernel

Page 12: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

IPC - Timeouts

IPC IMPLEMENTIERUNG

Jeder IPC – Aufruf kann einen Timeoutwert t spezifizieren

d.h. wenn nach t ms noch keine Nachrichtenübermittlung, dann weckt Kernel Thread wieder auf und Übertragung ist gescheitert

Meistens werden die Werte 0 und unendlich benutzt deren Implementierung einfach ist

Page 13: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

IPC IMPLEMENTIERUNGnaive Implementierung

Andere Werte benötigen offensichtlich eine Wakeupqueue

Meistens laufen die Timeouts nicht ab, daher Datenstruktur optimiert auf Einfügen und Löschen von Elementen

naive Implementierung: großes Array von timeout values addressiert mit Thread ID

bei jedem Zeitintervall muss komplettes Array durchsucht werden

Das führt zu einer Belegung von Cache, etc. extrem schlechte Laufzeit

IPC - Timeouts

Page 14: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

IPC IMPLEMENTIERUNG

Neue Datenstruktur n unsortierte Wakeuplisten (doppelt verkettete Listen)

Füge neuen Eintrag mit Aufweckwert x in Liste x mod n ein

Scheduler überprüft zu Zeitpunkt T nur Liste T mod n

Definiere Aufweckwert x = aktuelle Zeit + Timeout

Wenn x >> T wird der betreffende Thread in eine Winterschlafqueue gelegt

IPC - Timeouts Optimierung

Page 15: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Beispiel n = 3

IPC IMPLEMENTIERUNG

THREAD AT = 535

THREAD AT = 12

THREAD AT = 24

THREAD AT = 9

THREAD AT = 535

THREAD AT = 31

THREAD AT = 13

THREAD AT = 535

THREAD AT = 14

THREAD AT = 11

THREAD AT = 5

THREAD AT = 26

Optimierung

2 Queue

1 Queue

0 Queue

Page 16: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Beispiel n = 3

IPC IMPLEMENTIERUNG

THREAD AT = 535

THREAD AT = 31

THREAD AT = 13

THREAD AT = 535

THREAD AT = 14

THREAD AT = 11

THREAD AT = 5

THREAD AT = 26

Optimierung

2 Queue

1 Queue

THREAD AT = 535

THREAD AT = 12

THREAD AT = 24

THREAD AT = 9

0 Queue

T = 9

Page 17: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Analyse der Queues

IPC IMPLEMENTIERUNGOptimierung

Gesamtzahl aller Threads sei k

Erwartete Länge einer Liste k/n

Sonst überprüft Scheduler nur k/n viele Einträge pro Zyklus

Einfügen und Löschen beliebiger Threads in konstanter Zeit

Worst case: Genausoschlecht wie erster Vorschlag

Page 18: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Verwaltung der Threads

Der Kernel führt Buch über den Status der Threads

IPC IMPLEMENTIERUNG

und muss den Status zu bestimmten Zeiten ändern

einfachste Implementierung Verwendung von Queues

1. Busy-Queue

2. ready-Queue

3. polling-me Queue für jeden Thread

Page 19: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Scheduling von IPC-Befehlen

Die IPC-Primitive call und reply & wait erfordern offensichtlich Arbeit durch den Scheduler:

IPC IMPLEMENTIERUNG

1. Lösche den Sender-Thread von der Ready-Queue

2. Füge ihn ein in die Waiting-Queue

3. Löschen des empfangenden Threads von der Waiting Queue

4. Und Einfügen in die Readyqueue

naive Implementierung

Page 20: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Scheduling von IPC-Befehlen

Die IPC-Primitive call und reply & wait erfordern offensichtlich Arbeit durch den Scheduler:

IPC IMPLEMENTIERUNGnaive Implementierung

Sender ThreadEmpfänger

Thread

Readyqueue Waitingqueue

Page 21: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Lazy Scheduling

Es gelten jeweils nur noch folgende beide Invarianten:

IPC IMPLEMENTIERUNG

1. Mindestens alle Ready-Threads bis auf den aktuellen müssen in der Readyqueue sein

2. Mindestens alle wartenden Threads müssen in der Waitingqueue sein

Optimierung

Nur noch alle Zeitabstände wird die Queue von falsche Einträgen gesäubert

Ändere möglichst nur die Statuseintragung im TCB von wait nach ready

Page 22: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Lazy Scheduling

IPC IMPLEMENTIERUNG

Nachteil: Threads können in mehreren Queues auftreten Theoretisch: Interferenz mit der k/n Optimierung von Warteschlagen

Vorteil: Keine Löschoperationen mehr bei IPC Einfügen bei call und receive&wait wird nicht durchgeführt Nur das IPC Primitiv send führt zu Einfügeoperation.

Optimierung

Page 23: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Effizienz dieser Implementierung

IPC IMPLEMENTIERUNG

Entfernte Optimierung

Prozentuale Verschlechterung bei N-byte IPCs

8 12 128 512 4096

Kurze Nachrichten über Register

49% - - - -

Lazy Scheduling 23% 16% 12% 7% 1%

Reply & Wait 18% 13% 10% 5% 1%

Unter einem Intel 486 mit 50 MHZ Taktung erreicht Liedke einen Wert von 5 Mikrosekunden im Vergleich zu 100 bei Mach bei Short Message IPC-Aufrufen

Ergebnisse beziehen sich auf eine bestimmte Rechnerarchitektur

Page 24: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Asymmetrisches Vertrauen

Client kann vertrauen, dass Server Dienst nach Spezifikation ausführt

IPC SCHWÄCHEN

Server vertraut keinem Client, muss aber allen korrekt arbeitenden Clients seine Dienste anbieten

Server verfügt nur über beschränkte Ressourcen

Sender Prozess

Client Prozess1

Client Prozess2

Böser Client

Page 25: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

IPC SCHWÄCHENEinfacher DOS-Angriff

CLIENT: Anfrage -> SERVER (open wait)

Page 26: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

IPC SCHWÄCHENEinfacher DOS-Angriff

CLIENT: Anfrage -> SERVER (open wait)

SERVER: Antwort -> CLIENT (nicht in Wartezustand)

Page 27: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

IPC SCHWÄCHEN

CLIENT: Anfrage -> SERVER (open wait)

SERVER: Antwort -> CLIENT (nicht in Wartezustand)

SERVER blockiert, keine Annahme weiterer Anfragen

Einfacher DOS-Angriff

Hauptschwäche ist der synchrone Austausch

Page 28: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Lösungsvorschläge

Buffering

IPC SCHWÄCHEN

Multithreading

Abbruch des IPC

Verwendung von Timeouts

Page 29: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Buffering

Einrichtung von Buffern im Kernel

IPC SCHWÄCHEN

Dadurch im Grunde asynchrone Übertragung

Verlagerung eines lokalen Diensteproblem auf ein globales Platzproblem

Damit ist zwar nicht mehr der Server angreifbar dafür aber der Kernel

Page 30: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Multithreading

IPC SCHWÄCHEN

Anfrage von Prozessen wird durch je einen Thread des Servers behandelt

Keine wirkliche Lösung: Angriff durch mehr bösartige Prozesse

Dadurch sogar Angriff auf den Kernel möglich (siehe TCB)

Multithreading von Servern führt zu einer erhöhten Komplexität und zu langsameren Ausführungen

Page 31: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Weiteres Vorgehen

IPC SCHWÄCHEN

Buffering

Multithreading

Komplexität auf Serverseite muss vermieden werden

Keine Transformation von lokalem DOS zu globalen DOR

Nicht der Server trägt Kosten zur Erkennung bösartiger Aktionen, sondern Client

Page 32: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Weiteres Vorgehen

IPC SCHWÄCHEN

2. Komplexität auf Serverseite muss vermieden werden

1. Keine Transformation von lokalem DOS zu globalen DOR

3. Nicht der Server trägt Kosten zur Erkennung bösartiger Aktionen, sondern Client

Page 33: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Abbruch der Nachrichtenübertragung

Implementiert in Kernel EROS (J. S. Shapiro)

IPC SCHWÄCHEN

IPC send von Server geschieht prompt, oder Abbruch

Client muss also direkt in der Lage sein zu empfangen

Page 34: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

ZUSAMMENFASSUNGDOS-Angriff durch Blockieren

Prompt Receive EROS

EROSL4

Page 35: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Verwendung von Timeouts

Die Verwendung von Timeouts hat Nachteile• Die Simulation eines solchen Systems ist sehr schwierig• Debugging wird wesentlich komplizierter

IPC SCHWÄCHEN

Server setzt IPC-send Timeout auf 0, oder einen kleinen Wert

Page 36: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

ZUSAMMENFASSUNGDOS-Angriff durch Blockieren

Timeout Prompt Receive EROS

Debugging & Testprobleme

EROSL4

Page 37: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Pager Angriffe

IPC SCHWÄCHEN

Prompt/ Timeout läßt weitere Schwäche zu falls Pager von Client bösartig

CLIENT: Adressen nicht in seinem AS -> SERVER

Page 38: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Pager Angriffe

IPC SCHWÄCHEN

Prompt/ Timeout läßt weitere Schwäche zu falls Pager von Client bösartig

CLIENT: Adressen nicht in seinem AS -> SERVER

SERVER reagiert auf IPC -> in Warteschlange

Page 39: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Pager Angriffe

IPC SCHWÄCHEN

Prompt/ Timeout läßt weitere Schwäche zu falls Pager von Client bösartig

CLIENT: Adressen nicht in seinem AS -> SERVER

SERVER reagiert auf IPC -> in Warteschlange

KERNEL versucht Daten zu Kopieren -> Page Fault

Page 40: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Pager Angriffe

IPC SCHWÄCHEN

Prompt/ Timeout läßt weitere Schwäche zu falls Pager von Client bösartig

CLIENT: Adressen nicht in seinem AS -> SERVER

SERVER reagiert auf IPC -> in Warteschlange

KERNEL versucht Daten zu Kopieren -> Page Fault

IPC an bösen PAGER, der nicht reagiert

Page 41: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Pager Angriffe

IPC SCHWÄCHEN

Prompt/ Timeout läßt weitere Schwäche zu falls Pager von Client bösartig

CLIENT: Adressen nicht in seinem AS -> SERVER

SERVER reagiert auf IPC -> in Warteschlange

KERNEL versucht Daten zu Kopieren -> Page Fault

IPC an bösen PAGER, der nicht reagiert

SERVER & CLIENT blockiert

Page 42: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

ZUSAMMENFASSUNGDOS-Angriff durch Blockieren

Timeout Prompt Receive EROS

Page fault Attackenaufrufen

Page fault Attackenaufgerufen

Debugging & Testprobleme

Page fault Attacken

EROSL4

Page 43: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Lösung für Pager Angriff

IPC SCHWÄCHEN

In L4 können Pager Timeoutwerte zu Beginn der IPC festgelegt werden (erwartete Zeit um Pagefault zu handeln)

EROS Lösung: IPC zwingt Client zu einem Probelauf über Adressen bevor Receive oder Send Primitiv ausgeführt wird.

Treten danach während des IPC Pagefaults auf wird dieser abgebrochen

Problem: Mehrere bösartige Clients können Server blockieren

Page 44: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

ZUSAMMENFASSUNGDOS-Angriff durch Blockieren

Timeout Prompt Receive EROS

Page fault Attackenaufrufen

Page fault Attackenaufgerufen

-Probelauf-IPC-Abbruch

-Probelauf-IPC-Abbruch

Debugging & Testprobleme

Page fault Attacken

Pagerfault Timeout

EROSL4

Angriff durch viele bösartige Clients

Page 45: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

Dynamisch große Nachrichten empfangen

IPC SCHWÄCHEN

EROS Ansatz birgt neues Problem

Wenn Client Daten empfangen soll, aber nicht weiß wie groß diese sind, kann er keinen Probelauf durchführen

Lösung in EROS: Einführung eines vertraunswürdigen Buffer TBO (trusted object buffer), der mit Server kommuniziert

Client trägt Kosten für TBO

Page 46: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

ZUSAMMENFASSUNGDOS-Angriff durch Blockieren

Timeout Prompt Receive EROS

Page fault Attackenaufrufen

Page fault Attackenaufgerufen

-Probelauf-IPC-Abbruch

-Probelauf-IPC-Abbruch

Problem NachrichtenDynamischer Größe

Debugging & Testprobleme

Page fault Attacken

Pagerfault Timeout

EROSL4

Einführung von trusted buffer objects

Angriff durch viele bösartige Clients

Page 47: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

ZUSAMMENFASSUNG

Kurz: Mikrokernels können schnell & sicher geschrieben werden

Page 48: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

LiteraturVULNERABILITIES IN SYNCHRONOUS IPC DESIGNS Jonathan S. Shapiro, Department of Computer Science John Hopkins University, Oakland, California USA 2003

IMPROVING IPC BY KERNEL DESIGN Jochen Liedke German National Research Center for Computer Science (GMD) 1993

Page 49: INTERPROZESS KOMMUNIKATION Effizienz und Schwächen

IPC SCHWÄCHEN UND OPTIMIERUNG

THE END

DANKE!