Überblick Motivation Problem: Wahl eines Anführerknotens Beispielszenarien Koordinierung verteilter Aktionen Erzeugung systemweit eindeutiger Token Wahlalgorithmen Motivation Grundlagen Chang-Roberts-Algorithmus Wellenverfahren Adoptionsverfahren Anlässe Initialisierung im Rahmen des Systemstarts Neukonfigurierung als Reaktion auf Fehler Verwandtes Problem: Bestimmung einer maximalen Knoten-ID Anforderungen Eindeutigkeit: Zu jedem Zeitpunkt ist maximal ein Knoten der Anführer Terminierung: Bestimmung des Anführers erfolgt in endlicher Zeit Zusätzliche Kriterien (Beispiele) Deterministischer Wahlalgorithmus Benachrichtigung aller Knoten über das Ende bzw. Ergebnis der Wahl c td VS (SS16) Wahlalgorithmen 11 – 1 c td VS (SS16) Wahlalgorithmen – Motivation Motivation Sequentielle Verfahren Systemmodell Tiefensuche auf Bäumen public class VSNode { private final int id = [ID des lokalen Knotens]; private final List<VSNode> children = [Liste der Kindknoten]; Verteiltes System mit potenziell sehr vielen Knoten Knoten Gesamtzahl aller Knoten ist unbekannt Jeder Knoten hat eindeutige ID Nicht alle Knoten sind kontinuierlich Teil des Systems public int findMaxID() { int maxID = id; for(VSNode child: children) { int childMaxID = child.findMaxID(); if(maxID < childMaxID) maxID = childMaxID; } return maxID; } } Unterschiedliche Netztopologien Ring Baum Beliebige Strukturierung Tiefensuche auf beliebigen Topologien (Beispiel) → Nicht jeder Knoten ist notwendigerweise mit jedem anderen verbunden Ein Initiatorknoten empfängt“ ein Token über eine virtuelle Kante kinit Empfang des Tokens” durch Knoten i über eine Kante k Herausforderungen Wie kann eine Wahl in nicht vollvermaschten Systemen realisiert werden? Wie lässt sich die Effizienz durch Wissen über die Netztopologie steigern? Wie wählt man einen Anführer in Systemen mit komplexer Netztopologie? c td VS (SS16) Wahlalgorithmen – Motivation 11 – 2 11 – 3 Erstmaliger Empfang: Eintrag von i ins Token, merken der Kante kfirst := k Weitergabe des Tokens an einen Nachbarn, der das Token noch nicht hatte Falls kein solcher Nachbar existiert: Senden des Tokens über Kante kfirst Terminierung, sobald Initiator das Token über die Kante kinit sendet“ ” c td VS (SS16) Wahlalgorithmen – Grundlagen 11 – 4 Erzeugung eines virtuellen Baums beim Systemstart Chang-Roberts-Algorithmus Vorbereitung Voraussetzungen Anordnung aller Knoten in einem (logischen) unidirektionalen Ring Definition einer totalen Ordnung auf Knoten-IDs (z. B. ID ∈ [1,...,n]) Ermittlung einiger Adressen anderer Knoten für Verbindungsaufbau Beispiel: Nutzung einer Registry Bestimmung des aktiven Knotens mit der höchsten ID Verbindungsaufbau Verwaltung eines lokalen Levels Wurzelknoten des Baums hat Level 0 Elternknoten: Nachbar mit kürzester Distanz zum Wurzelknoten VS (SS16) Start des Wahlalgorithmus public void connect(List<VSNode> nodes) { for(VSNode node: nodes) { // Verbindungsaufbau boolean connected = [Aufbau der Verbindung]; if(!connected) continue; Empfang einer ID i // Bestimmung des Elternknotens if((level < 0) || (level > node.level)) { level = node.level + 1; parent = node; } Wiederholung der Auswahl bei Abbruch der Elternverbindung c td private int level = -1; private VSNode parent = null; Annahme: Alle Knoten starten Algorithmus zur selben Zeit Jeder Knoten sendet eigene Knoten-ID im Ring weiter Jeder Knoten wird wählbar Falls i > eigene ID Falls i < eigene ID Falls i = eigene ID Literatur Ernest Chang, Rosemary Roberts An improved algorithm for decentralized extrema-finding in circular configurations of processes Communications of the ACM, 22(5):281–283, 1979. } } Wahlalgorithmen – Grundlagen 11 – 5 Beispiel Knoten sendet i weiter und ist nicht mehr wählbar Nachricht ignorieren Falls Knoten wählbar, dann ist er als Anführer gewählt Sonst: Nachricht ignorieren c td VS (SS16) Wahlalgorithmen – Chang-Roberts-Algorithmus 11 – 6 Beispiel 3 3 2 2 5 3 2 5 4 4 1 5 4 1 1 c td VS (SS16) Wahlalgorithmen – Chang-Roberts-Algorithmus 11 – 7 c td VS (SS16) Wahlalgorithmen – Chang-Roberts-Algorithmus 11 – 7 Beispiel Beispiel 3 3 4 2 5 4 2 5 5 4 1 4 1 5 c td VS (SS16) Wahlalgorithmen – Chang-Roberts-Algorithmus 11 – 7 Beispiel c td VS (SS16) Wahlalgorithmen – Chang-Roberts-Algorithmus 11 – 7 Beispiel 3 4 3 2 5 4 2 5 5 4 1 4 1 5 c td VS (SS16) Wahlalgorithmen – Chang-Roberts-Algorithmus 11 – 7 c td VS (SS16) Wahlalgorithmen – Chang-Roberts-Algorithmus 11 – 7 Beispiel Analyse Bemerkungen 3 5 Einfacher Algorithmus auf Basis eines einfachen Systemmodells Teilnehmer müssen die Gesamtzahl aller Knoten n nicht kennen 5 Mögliche Erweiterung 2 Anführer sendet nach seiner Wahl eine Benachrichtigung durch den Ring Sauberes Beenden des Wahlalgorithmus auf allen Knoten möglich 5 Korrektheit Eindeutigkeit Nachricht mit einer bestimmten ID wird von genau einem Knoten erzeugt Knoten mit höchster ID leitet nur seine eigene Nachricht weiter Ein Knoten wird nur gewählt, wenn seine ID von allen weitergereicht wurde 4 c td VS (SS16) Terminierung 1 Wahlalgorithmen – Chang-Roberts-Algorithmus Die Nachricht mit der größten ID wird von jedem Knoten weitergereicht Nach n Schritten kommt die größte ID wieder beim Ursprungsknoten an Achtung: Terminierung ist bei Ausfällen von Knoten nicht sichergestellt 11 – 7 c td VS (SS16) Wahlalgorithmen – Chang-Roberts-Algorithmus Komplexität Initiierung Annahmen bei der Analyse der Zeitkomplexität Veränderte Startbedingung Bearbeitungsdauer von Nachrichten ist vernachlässigbar Nachrichten kommen innerhalb einer maximalen Nachrichtenlaufzeit an 11 – 8 Gleichzeitiger Start des Algorithmus auf allen Knoten unrealistisch Ein Knoten startet den Algorithmus durch Senden seiner ID Andere Knoten beteiligen sich erst, nachdem sie eine Nachricht erhalten Bester Fall: Knoten sind den IDs nach aufsteigend angeordnet Zeitkomplexität n Nachrichtenlaufzeiten n + (n − 1) · 1 = 2n − 1 Nachrichten → O(n) Bester Fall Knoten mit höchster ID initiiert Wahl n Nachrichtenlaufzeiten Schlimmster Fall: Knoten sind den IDs nach absteigend angeordnet Schlechtester Fall n PNachrichtenlaufzeiten n n·(n+1) Nachrichten → O(n2 ) i=1 i = 2 Knoten mit höchster ID wacht als Letzter auf (n − 1) + n = 2n − 1 Nachrichtenlaufzeiten Durchschnittlicher Fall Annahme: Alle (n − 1)! möglichen ID-Verteilungen gleichwahrscheinlich n Nachrichtenlaufzeiten Nachrichtenaufwand: O(n log n) (siehe [Chang et al.]) c td VS (SS16) Wahlalgorithmen – Chang-Roberts-Algorithmus 11 – 9 Optimierung Unterdrückung der eigenen Nachricht, falls Aufwecken durch größere ID Reduzierung der im besten Fall erforderlichen Nachrichten auf n c td VS (SS16) Wahlalgorithmen – Chang-Roberts-Algorithmus 11 – 10 Variante Wellenverfahren Veränderte Architektur: Bidirektionaler Ring Baumstruktur Ungerichtete Kanten Keine Zyklen Unterschiede zur Standardvariante Start: Jeder Knoten bestimmt die Senderichtung der eigenen ID zufällig Jeder Knoten speichert die höchste ID imax , die er bisher gesehen hat Unterdrückung einer neu empfangenen ID i, falls i < imax Senderichtung der Weiterleitung abhängig 3 von bisheriger Senderichtung einer ID Bemerkungen 2 Geringere Auftrittswahrscheinlickeit Nachrichtenaufwand weiterhin O(n2 ) 5 4 Kommunikation mit unterschiedlich vielen Nachbarknoten Potenzial für Divide-and-Conquer-Ansätze Wellenverfahren Explorationswelle durchläuft den Baum bis zu den Blättern Echowelle kommt zurück und bestimmt die höchste ID Informationswelle teilt allen Knoten das Ergebnis mit 5 Geringere Anzahl erforderlicher Nachrichten im Durchschnittsfall Schlimmster Fall Vergleich zur Wahl auf Ringen Literatur Friedemann Mattern Verteilte Basisalgorithmen Springer-Verlag, 1989. 1 4 c td VS (SS16) Wahlalgorithmen – Chang-Roberts-Algorithmus 11 – 11 Algorithmus VS (SS16) 9 16 c td VS (SS16) Wahlalgorithmen – Wellenverfahren 18 2 i 15 i 6 3 Weiterleitung der ersten Explorernachricht in alle übrigen Richtungen Falls Empfang einer weiteren Echonachricht e 0 : Höchste ID im Netz ist Maximum der IDs von e und e 0 11 – 12 14 Innere Knoten mit k Kanten Nach Erhalt von Echonachrichten auf k − 1 Kanten: Senden einer Echonachricht e mit dem Maximum aller bisher bekannten IDs über die verbleibende Kante Wahlalgorithmen – Wellenverfahren Beispiel Dedizierte Initiatorknoten senden Explorernachrichten an alle ihre Nachbarknoten Blattknoten senden bei Empfang einer Explorernachricht die eigene ID als Echonachricht zurück c td 11 a b 7 10 12 4 max(a,b,c) 17 c 5 x y 1 11 – 13 c td 8 VS (SS16) Wahlalgorithmen – Wellenverfahren 13 11 – 14 Beispiel Beispiel 9 16 18 9 14 16 9 18 14 16 2 2 15 15 6 3 6 3 11 7 10 12 11 7 10 12 4 4 17 17 5 5 1 1 8 c td VS (SS16) 13 8 1 Wahlalgorithmen – Wellenverfahren 11 – 14 Beispiel c td VS (SS16) 13 Wahlalgorithmen – Wellenverfahren 11 – 14 Beispiel 9 16 9 18 9 14 16 16 9 18 14 16 2 2 15 3 3 11 7 10 15 16 6 6 3 12 11 4 7 10 5 12 4 8 17 17 5 1 1 8 1 c td 8 VS (SS16) 8 Wahlalgorithmen – Wellenverfahren 13 8 1 11 – 14 c td VS (SS16) 8 Wahlalgorithmen – Wellenverfahren 13 11 – 14 Beispiel Beispiel 9 16 9 18 9 14 16 16 9 15 3 16 11 7 10 6 3 16 12 7 10 12 4 4 8 17 5 6 16 11 8 4 17 5 1 1 8 1 VS (SS16) 8 13 13 8 1 Wahlalgorithmen – Wellenverfahren 11 – 14 Beispiel c td VS (SS16) 8 13 Wahlalgorithmen – Wellenverfahren 11 – 14 Beispiel 9 16 9 18 9 18 16 14 16 18 14 14 2 2 18 16 15 6 3 16 11 10 18 6 3 16 7 11 8 4 15 6 16 12 17 7 10 12 17 4 17 4 17 5 5 1 13 8 1 c td 14 15 16 6 3 c td 14 2 16 3 18 16 2 3 18 VS (SS16) 8 Wahlalgorithmen – Wellenverfahren 13 1 11 – 15 c td 8 VS (SS16) Wahlalgorithmen – Wellenverfahren 13 11 – 15 Beispiel Beispiel 9 16 18 9 16 18 14 14 2 2 18 3 16 11 7 15 15 6 3 16 10 18 12 18 11 17 6 18 7 16 10 12 18 18 4 4 17 17 5 5 1 c td 8 VS (SS16) 13 Wahlalgorithmen – Wellenverfahren 1 11 – 15 Adoptionsverfahren für beliebige Topologien c td 8 VS (SS16) 13 Wahlalgorithmen – Wellenverfahren 11 – 15 Beispiel Grundprinzip wie bei Wahl auf Bäumen: Explorations- und Echowelle 9 16 18 Nachrichten 14 Explorernachrichten beinhalten ID des korrespondierenden Initiators Echonachrichten tragen Initiator-ID der zugehörigen Explorernachricht 2 15 Verwaltung von IDs an Knoten und Kanten 6 Speicherung der höchsten einem Knoten bekannten Initiator-ID (IDi ) Elternkante: Kante, über die Explorernachricht mit IDi empfangen wurde Markierung der Sendekante einer Explorernachricht mit Initiator-ID 3 11 7 10 4 Empfang einer Explorernachricht x über Kante k mit Markierung m Falls Falls Falls Falls c td IDx = IDm IDx < IDm IDm < IDx ≤ IDi IDm ≤ IDi < IDx VS (SS16) Kante k ist nicht Teil des virtuellen Baums Ignorieren der eintreffenden Explorernachricht x Aktualisierung von m, Senden von x über k Adoption: k wird neue Elternkante Weiterleitung von x über bisherige Elternkante Wahlalgorithmen – Adoptionsverfahren 11 – 16 12 17 5 1 c td 8 VS (SS16) Wahlalgorithmen – Adoptionsverfahren 13 11 – 17 Beispiel Beispiel 9 16 18 9 16 18 14 14 OK 2 OK 2 OK 15 15 OK 6 3 6 3 11 7 10 12 11 7 10 12 4 4 17 17 5 5 1 c td 8 VS (SS16) 13 1 Wahlalgorithmen – Adoptionsverfahren 11 – 17 Beispiel c td 8 VS (SS16) 13 Wahlalgorithmen – Adoptionsverfahren 11 – 17 Beispiel 9 16 18 9 16 18 14 OK 14 OK 2 OK OK 15 OK 2 OK OK 15 6 3 6 3 11 7 10 12 11 7 10 12 4 4 17 OK 17 5 1 c td OK OK 8 VS (SS16) Wahlalgorithmen – Adoptionsverfahren 13 5 1 11 – 17 c td 8 VS (SS16) Wahlalgorithmen – Adoptionsverfahren 13 11 – 17 Beispiel Beispiel 9 16 18 9 16 18 14 OK 14 OK 2 OK OK 15 OK 2 OK OK 15 OK 6 3 6 3 11 7 10 12 OK 11 7 10 12 4 4 17 5 OK 5 OK 1 c td 17 8 VS (SS16) 13 1 Wahlalgorithmen – Adoptionsverfahren 11 – 17 Beispiel c td 8 VS (SS16) 13 Wahlalgorithmen – Adoptionsverfahren 11 – 17 Beispiel 9 16 18 9 16 18 14 OK 14 OK 2 OK OK 15 OK 2 OK OK 15 6 3 6 3 OK 11 7 10 12 OK 11 7 10 12 4 4 17 OK 17 5 1 c td OK OK 8 VS (SS16) Wahlalgorithmen – Adoptionsverfahren 13 5 1 11 – 18 c td 8 VS (SS16) Wahlalgorithmen – Adoptionsverfahren 13 11 – 18 Beispiel Beispiel 9 16 18 9 16 18 14 OK 14 OK 2 OK OK 15 OK 2 OK OK 15 OK 6 3 6 OK 3 OK 11 7 10 OK 12 OK 11 7 10 12 4 4 17 5 OK 5 OK 1 c td 17 8 VS (SS16) 13 1 Wahlalgorithmen – Adoptionsverfahren 11 – 18 Beispiel c td 8 VS (SS16) 13 Wahlalgorithmen – Adoptionsverfahren 11 – 18 Beispiel 9 16 18 9 16 18 14 OK 14 OK 2 OK OK 15 11 7 10 OK OK 15 6 OK OK 17 11 7 10 12 c td VS (SS16) Wahlalgorithmen – Adoptionsverfahren 17 OK OK 8 13 5 1 11 – 19 6 4 5 1 OK OK 12 4 OK OK OK 3 OK OK 2 OK OK 3 OK c td 8 VS (SS16) Wahlalgorithmen – Adoptionsverfahren 13 11 – 19 Beispiel Beispiel 9 16 18 9 16 18 14 OK 14 OK 2 OK OK 15 OK 15 6 11 7 10 OK OK 11 7 10 12 c td 4 17 OK 8 VS (SS16) Wahlalgorithmen – Adoptionsverfahren 17 OK 5 1 13 5 OK 1 11 – 19 6 OK 12 4 OK OK OK OK 3 OK OK OK OK OK 3 OK 2 c td VS (SS16) 8 Wahlalgorithmen – Adoptionsverfahren 13 11 – 19