1-fach - KBS TU

Werbung
Verteilte Systeme
Fluten, Echo und Broadcast
PD Dr.-Ing. Gero Mühl
Kommunikations- und Betriebssysteme
Fakultät für Elektrotechnik u. Informatik
Technische Universität Berlin
Überblick
> Fluten
> Verbreiten von Informationen (z.B. Knoten-ID) ohne oder auch mit
Bestätigung an alle Knoten über alle Kanten
> Broadcast
> Verbreiten von Information an alle Knoten mit oder ohne
Bestätigung bei speziellen Topologien
> Echo
> Verbreiten von Informationen an alle Knoten über alle Kanten mit
selektiver Bestätigung
> Einsammeln von Informationen
> Konstruktion eines Spannbaumes
G. Mühl
VS / Fluten, Echo und Broadcast
2
Fluten
Informationsverteilung mit Fluten
> Voraussetzung: Zusammenhängende Topologie
> Prinzip: Jeder Knoten erzählt neues Gerücht allen
anderen Nachbarn
Initiator
G. Mühl
VS / Fluten, Echo und Broadcast
4
Flutungs-Algorithmus
I: {NOT informiert}
SEND <info> TO alle Nachbarn;
informiert := TRUE;
R: {Eine Nachricht <info> wird empfangen}
IF NOT informiert THEN
SEND <info> TO alle anderen Nachbarn;
informiert := TRUE;
FI
> Initial sei informiert == FALSE bei allen Prozessen
> Aktion I wird vom Initiator spontan ausgeführt
> Darf es mehrere konkurrente Initiatoren geben?
G. Mühl
VS / Fluten, Echo und Broadcast
5
Informationsverteilung mit Fluten
> Wie viele Nachrichten werden versendet?
> Sei n die Anzahl der Knoten und e die Anzahl der Kanten
> Jeder Knoten sendet über alle seine inzidenten Kanten
Æ +2e Nachrichten
> Jedoch nicht über seine Aktivierungskante zurück
Æ −n Nachrichten
> Ausnahme: Initiator (hat keine Aktivierungskante)
Æ +1 Nachricht
⇒ Insgesamt also 2e − n + 1 Nachrichten
> Wie erfährt der Initiator, dass alle Knoten erreicht wurden?
Æ Terminierungserkennung (aber wie?)
G. Mühl
VS / Fluten, Echo und Broadcast
6
Fluten mit Bestätigung
> 2 Nachrichtentypen: Explorer und Quittungen
> Ein Prozess bestätigt einen Explorer mit einer Quittung, sobald
er für alle aufgrund des Empfangs dieses Explorers von ihm
selbst versendeten Explorer eine Quittung erhalten hat
> 1. empfangener Explorer: Quittierung nach Eingang von
#Nachbarn – 1 Quittungen (Æ Blätter quittieren sofort)
> Weitere Explorer: Sofortige Quittierung
> Algorithmus terminiert, wenn der Initiator von jedem Nachbarn
eine Quittung erhalten hat
> Wie viele Nachrichten/Explorer/Quittungen insgesamt?
> 2e – n +1 Explorer und genauso viele Quittungen
> Insgesamt 4e – 2n + 2 Nachrichten
G. Mühl
VS / Fluten, Echo und Broadcast
7
Fluten mit Bestätigung – Beispiel
G. Mühl
VS / Fluten, Echo und Broadcast
8
Fluten mit Bestätigung – Beispiel
1
G. Mühl
VS / Fluten, Echo und Broadcast
9
Fluten mit Bestätigung – Beispiel
1
1
1
G. Mühl
1
1
2
2
2
1
2
VS / Fluten, Echo und Broadcast
10
Broadcast
Broadcast auf speziellen Topologien
> Broadcast: Senden einer Nachricht an alle Knoten,
optional auch mit Bestätigung
> Fluten realisiert einen Broadcast auf beliebigen
zusammenhängen, ungerichteten Topologien
> Besonders fehlertolerant, weil alle Kanten für die Verbreitung
der Information genutzt werden
> Für spezielle Topologien ist ein Broadcast mit weniger
Nachrichten möglich, vorausgesetzt der Algorithmus weiß,
welche Topologie vorliegt
> Weniger fehlertolerant, da im angestrebten Fall jeder Knoten
nur über eine Kante erreicht wird Æ n – 1 Nachrichten
> Exemplarische Topologien: Ringe, Bäume, Hypercubes
G. Mühl
VS / Fluten, Echo und Broadcast
12
Broadcast auf Unidirektionalen Ringen
> Token zirkuliert mit Nachricht
> Alle Knoten sind informiert,
wenn das Token wieder
beim Initiator eintrifft
> n Nachrichten
> Ein Ring kann auch einer
anderen Topologie überlagert
werden Æ logischer Ring
G. Mühl
VS / Fluten, Echo und Broadcast
13
Broadcast auf Bäumen
> Baum hat n − 1 Kanten
> Über jede Kante geht eine Nachricht
> Für die Bestätigung (falls gewünscht) geht zusätzlich jeweils
noch eine Nachricht über jede Kante
> Statische Bäume sind nicht fehlertolerant!
> Baum kann einer anderen Topologie überlagert werden
⇒ Spannbaum
G. Mühl
VS / Fluten, Echo und Broadcast
14
Broadcast auf Hypercubes
> Initiator habe die Nummer 00...00 (binär)
> Analog zum rekursiven Aufbau eines Hypercubes
> Initiator sendet in Dimension 1
> Dann alle Knoten der Dimension 1 in Dimension 2
> ...
G. Mühl
VS / Fluten, Echo und Broadcast
15
Broadcast auf Hypercubes
> Einheitszeitkomplexität
> Nach d Takten sind alle Knoten informiert
> Ist dies optimal?
> Nachrichtenkomplexität
> 1 + 2 + 4 + ... + 2d − 1 = 2d − 1 − 1 + 2d − 1 = 2d - 1 = n - 1
> Ist dies optimal?
G. Mühl
VS / Fluten, Echo und Broadcast
16
Echo
Echo-Algorithmus
> Initial sind alle Knoten weiß
> Der eindeutige Initiator wird rot und schickt rote
Nachrichten (Explorer) an alle seine Nachbarn
G. Mühl
VS / Fluten, Echo und Broadcast
18
Echo-Algorithmus
> Ein weißer Knoten, der einen Explorer empfängt, wird
selber rot, merkt sich diese „erste“ Kante
(Aktivierungskante) und schickt Explorer an alle seine
anderen Nachbarn
> Auf einer Kante, auf der sich zwei Explorer begegnen,
wird der Zyklus aufgebrochen (d.h., die Explorer werden
verschluckt)
G. Mühl
VS / Fluten, Echo und Broadcast
19
Echo-Algorithmus
> Ein roter Knoten, der über alle seine Kanten einen Explorer
oder ein Echo erhalten hat, wird grün und sendet ein
grünes Echo über seine „erste“ Kante, die auch grün wird
> Blätter senden beim Empfang eines Explorers sofort ein
Echo zurück
G. Mühl
VS / Fluten, Echo und Broadcast
20
Echo-Algorithmus
> Nach und nach werden alle Knoten und ein Teil der
Kanten grün
> Der Algorithmus terminiert, wenn der Initiator grün wird
> Dies geschieht, wenn das letzte Echo bzw. der letzte
Explorer bei ihm ankommt
G. Mühl
VS / Fluten, Echo und Broadcast
21
Echo-Algorithmus – Beispiel
1
1
1
G. Mühl
1
1
1
VS / Fluten, Echo und Broadcast
22
Echo-Algorithmus – Beispiel
1
1
G. Mühl
1
1
1
2
1
2
1
2
2
3
1
1
1
1
VS / Fluten, Echo und Broadcast
23
Echo-Algorithmus – Beispiel
2
2
G. Mühl
3
2
3
3
1
1
VS / Fluten, Echo und Broadcast
24
Kompletter Echo-Algorithmus
I: {NOT informiert}: // wird vom Initiator ausgeführt
SEND <Explorer> TO alle Nachbarn;
informiert := TRUE;
R: {eine Nachricht <Explorer> oder <Echo> von Nachbar E wird empfangen}
IF NOT informiert THEN
SEND <Explorer> TO alle anderen Nachbarn;
informiert := TRUE;
N := E;
FI
Anzahl := Anzahl + 1;
IF Anzahl == #Nachbarn THEN
IF NOT Initiator THEN
SEND <Echo> TO Nachbar N;
ELSE
EXIT; // Algorithmus hat terminiert
FI
FI
>
G. Mühl
Initial sei informiert == falsch und Anzahl == 0 bei allen Knoten
VS / Fluten, Echo und Broadcast
25
Echo-Algorithmus – Eigenschaften
> Über jede Kante laufen genau zwei Nachrichten
> Entweder ein Explorer und ein gegenläufiges Echo oder
zwei gegenläufige Explorer
> Paralleles Traversieren eines (zusammenhängenden
ungerichteten) Graphen mit 2e Nachrichten
> Der Echo-Algorithmus ist ein Wellenalgorithmus
> Hinwelle: Rot werden
> Verteilen einer Information
(an alle Knoten über alle Kanten)
> Rückwelle: Grün werden
> Einsammeln von Informationen (von potentiell allen
Knoten über die Aktivierungskanten)
G. Mühl
VS / Fluten, Echo und Broadcast
26
Echo-Algorithmus – Eigenschaften
> Echo-Kanten bilden einen Spannbaum
> Je nach Nachrichtenlaufzeit sieht der Spannbaum anders
aus, weil schnelle gegenüber langsamen Kanten
bevorzugt werden
G. Mühl
VS / Fluten, Echo und Broadcast
27
Verbesserung des Echo-Algorithmus?
> Idee: Vermeide den Besuch von Knoten, von
denen bekannt ist, dass sie von anderen
Explorern besucht werden
> Zusammen mit einem Explorer wird eine Menge
von Tabuknoten z verschickt und empfangen
> Die vom Initiator verschickte Tabumenge ist
z = <Nachbarn vom Initiator> ∪ <Initiator>
> Explorer nur an die Menge von Nachbarn y
schicken, die nicht in z sind. Dabei wird die neue
Tabumenge z‘ = z ∪ y angehängt
> Vorteil: Einsparung von Nachrichten
> Extremfälle: Baum u. vollständiger Graph
> Nachteile: 1. Nachrichtenlänge O(n)
2. Nachbaridentität muss bekannt sein
G. Mühl
1
2
3
4
Z.B. die Nachricht von
2 an 3 enthält die Info,
dass 4 nicht besucht
werden muss.
VS / Fluten, Echo und Broadcast
28
Literatur
>
G. Mühl
E. Chang. Echo algorithms: Depth parallel operations on graphs. IEEE
Transactions on Software Engineering, 8(4):391--400, 1982.
VS / Fluten, Echo und Broadcast
29
Herunterladen