Überblick 11 Wahlalgorithmen 11.1 Motivation 11.2 Wahl auf Ringen 11.3 Wahl auf Bäumen 11.4 Wahl auf beliebigen Topologien c Kapitza VS (SS 2015) 11 Wahlalgorithmen 11–1 Motivation Problem: Wahl eines Anführerknotens Beispielszenarien Koordinierung verteilter Aktionen Erzeugung systemweit eindeutiger Token Passive Replikation Anlässe Initialisierung im Rahmen des Systemstarts Neukonfigurierung als Reaktion auf Fehler Anforderungen Eindeutigkeit: Zu jedem Zeitpunkt ist maximal ein Knoten der Anführer Terminierung: Bestimmung des Anführers erfolgt in endlicher Zeit Beispiele für zusätzliche Kriterien Deterministischer Wahlalgorithmus Benachrichtigung aller Knoten über das Ende bzw. Ergebnis der Wahl c Kapitza VS (SS 2015) 11 Wahlalgorithmen | 11.1 Motivation 11–2 Motivation Systemmodell Verteiltes System mit potenziell sehr vielen Knoten Knoten Gesamtzahl aller Knoten ist unbekannt Nicht alle Knoten sind kontinuierlich Teil des Systems Bedingung für deterministische Wahl: Jeder Knoten hat eindeutige ID Unterschiedliche Netztopologien Ring Baum Beliebige Strukturierung → Nicht jeder Knoten ist notwendigerweise mit jedem anderen verbunden Herausforderungen Wahlalgorithmen für nicht vollvermaschte Netzwerke Effizienzsteigerung durch Ausnutzen von Wissen über die Netztopologie Anführerwahl in Systemen mit komplexer Netztopologie c Kapitza VS (SS 2015) 11 Wahlalgorithmen | 11.1 Motivation 11–3 Literatur Wahl auf Ringen Nancy Lynch Distributed Algorithms Morgan Kaufmann Publishers Inc., 1996. Gérard Le Lann Distributed Systems – Towards a Formal Approach Proceedings of the IFIP Congress 77, 7:155–160, 1977. Ernest Chang and Rosemary Roberts An Improved Algorithm for Decentralized Extrema-Finding in Circular Configurations of Processes Communications of the ACM, 22(5):281–283, 1979. Gary L. Peterson An O(n log n) Unidirectional Distributed Algorithm for the Circular Extrema Problem ACM Transactions on Programming Languages and Systems, 4(4):758–762, 1982. Wahl auf Bäumen und beliebigen Graphen Friedemann Mattern Verteilte Basisalgorithmen Springer-Verlag, 1989. c Kapitza VS (SS 2015) 11 Wahlalgorithmen | 11.1 Motivation 11–4 Chang-Roberts-Algorithmus Übersicht Voraussetzungen Jeder potenziell im System befindliche Knoten besitzt eine eindeutige ID Auf den IDs ist eine totale Ordnung definiert (z. B. ID ∈ [1,...,n]) Ziel: Bestimmung des aktiven Knotens mit der höchsten ID Ablauf Start des Wahlalgorithmus Annahme: Alle Knoten starten Algorithmus zur selben Zeit Jeder Knoten sendet eigene Knoten-ID im Ring weiter Jeder Knoten wird wählbar Empfang einer ID i Falls i > eigene ID Falls i < eigene ID Falls i = eigene ID c Kapitza VS (SS 2015) Knoten sendet i weiter Knoten ist nicht mehr wählbar Nachricht ignorieren Falls Knoten wählbar, dann ist er als Anführer gewählt Sonst: Nachricht ignorieren 11 Wahlalgorithmen | 11.2 Wahl auf Ringen 11–5 Chang-Roberts-Algorithmus Beispiel 3 2 5 4 c Kapitza VS (SS 2015) 1 11 Wahlalgorithmen | 11.2 Wahl auf Ringen 11–6 Chang-Roberts-Algorithmus Beispiel 3 2 3 2 5 4 5 4 1 1 c Kapitza VS (SS 2015) 11 Wahlalgorithmen | 11.2 Wahl auf Ringen 11–6 Chang-Roberts-Algorithmus Beispiel 3 2 5 4 5 4 c Kapitza VS (SS 2015) 1 11 Wahlalgorithmen | 11.2 Wahl auf Ringen 11–6 Chang-Roberts-Algorithmus Beispiel 3 4 2 5 4 1 5 c Kapitza VS (SS 2015) 11 Wahlalgorithmen | 11.2 Wahl auf Ringen 11–6 Chang-Roberts-Algorithmus Beispiel 3 4 2 5 4 1 5 c Kapitza VS (SS 2015) 11 Wahlalgorithmen | 11.2 Wahl auf Ringen 11–6 Chang-Roberts-Algorithmus Beispiel 3 4 2 5 5 4 c Kapitza VS (SS 2015) 1 11 Wahlalgorithmen | 11.2 Wahl auf Ringen 11–6 Chang-Roberts-Algorithmus Beispiel 3 5 5 2 5 4 c Kapitza VS (SS 2015) 1 11 Wahlalgorithmen | 11.2 Wahl auf Ringen 11–6 Chang-Roberts-Algorithmus Analyse Bemerkungen Einfacher Algorithmus auf Basis eines einfachen Systemmodells Teilnehmer müssen die Gesamtzahl aller Knoten n nicht kennen Mögliche Erweiterung Anführer sendet nach seiner Wahl eine Benachrichtigung durch den Ring Sauberes Beenden des Wahlalgorithmus auf allen Knoten möglich 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 Terminierung 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 c Kapitza VS (SS 2015) 11 Wahlalgorithmen | 11.2 Wahl auf Ringen 11–7 Chang-Roberts-Algorithmus Komplexität Annahmen bei der Analyse der Zeitkomplexität Bearbeitungsdauer von Nachrichten ist vernachlässigbar Nachrichten kommen innerhalb einer maximalen Nachrichtenlaufzeit an Bester Fall: Knoten sind den IDs nach aufsteigend angeordnet n Nachrichtenlaufzeiten n + (n − 1) · 1 = 2n − 1 Nachrichten → O(n) Schlimmster Fall: Knoten sind den IDs nach absteigend angeordnet n PNachrichtenlaufzeiten n n·(n+1) Nachrichten → O(n2 ) i=1 i = 2 Durchschnittlicher Fall Annahme: Alle (n − 1)! möglichen ID-Verteilungen gleichwahrscheinlich n Nachrichtenlaufzeiten Nachrichtenaufwand: O(n log n) (siehe [Chang et al.]) c Kapitza VS (SS 2015) 11 Wahlalgorithmen | 11.2 Wahl auf Ringen 11–8 Chang-Roberts-Algorithmus Initiierung Veränderte Startbedingung 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 Zeitkomplexität Bester Fall Knoten mit höchster ID initiiert Wahl n Nachrichtenlaufzeiten Schlechtester Fall Knoten mit höchster ID wacht als Letzter auf (n − 1) + n = 2n − 1 Nachrichtenlaufzeiten Optimierung Unterdrückung der eigenen Nachricht, falls Aufwecken durch größere ID Reduzierung der im besten Fall erforderlichen Nachrichten auf n c Kapitza VS (SS 2015) 11 Wahlalgorithmen | 11.2 Wahl auf Ringen 11–9 Chang-Roberts-Algorithmus Variante Veränderte Architektur: Bidirektionaler Ring 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 5 Geringere Anzahl erforderlicher Nachrichten im Durchschnittsfall Schlimmster Fall Geringere Auftrittswahrscheinlickeit Nachrichtenaufwand weiterhin O(n2 ) 5 4 1 4 c Kapitza VS (SS 2015) 11 Wahlalgorithmen | 11.2 Wahl auf Ringen 11–10 Wahl auf Bäumen Übersicht Baumstruktur Ungerichtete Kanten Keine Zyklen Vergleich zur Wahl auf Ringen Wahl auf mit Bäumen Kommunikation unterschiedlich vielen Nachbarknoten Potenzial für Divide-and-Conquer-Ansätze 09 16 18 14 02 15 06 03 11 07 10 12 17 05 04 13 01 c Kapitza VS (SS 2015) 08 11 Wahlalgorithmen | 11.3 Wahl auf Bäumen 11–11 Wahl auf Bäumen Traversieren Sequentielles Traversieren – Beispiel: Tiefensuche public class VSNode { private final int id = [ID des lokalen Knotens]; private final List<VSNode> children = [Liste der Kindknoten]; public int findMaxID() { int maxID = id; for(VSNode child: children) { int childMaxID = child.findMaxID(); if(maxID < childMaxID) maxID = childMaxID; } return maxID; } } Paralleles Traversieren – Beispiel: 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 c Kapitza VS (SS 2015) 11 Wahlalgorithmen | 11.3 Wahl auf Bäumen 11–12 ■ Genauere Beschreibung des Wahlal ● Einauf Starter sendet Explosionsna Wahl auf Bäumen Algorithmus Wahl Bäumen ● Ein Starter sendet Explosionsnach Dedizierte Initiatorknoten senden ExplorerEininnerer Blattknoten, Explosd ●●Ein Knotender miteine k Kanten, nachrichten an alle ihre Nachbarknoten eine Echonachricht mit erstmals seiner nachrichten erhalten der hat, sendet ID a ● Ein innerer Knoten, Blattknoten senden bei Echonachricht Empfang einer Explorermit dem Maximum i ● Ein innerer Knoten, der erstmals sendet Expe nachricht die eigene ID empfängt, als Echonachricht zurück wiederum i Wahl.fm: 07.11.05 09:03 a empfängt, sendet wiederum Explo anderen Richtungen aus max(a,b, c Innere Knoten mit k Kanten Wahl auf Bäumen anderen Richtungen aus b Weiterleitung der ersten Explorernachricht Algorithmen für Verteilte●Systeme (AVS), WS mit 2005/06 Ein innerer Knoten k Kanten, der au in alle übrigen Richtungen nachrichten erhalten hat, sendet auf de (C) 2005 Hans P. Reiser, Franz J. Hauck, Abteilung Verteilte Systeme, Universität ● Erhält ein Knoten nach Versenden Echonachricht mit dem Maximum aller I Nach Erhalt von Echonachrichten auf k − 1 Kanten: a max(a,b,c) Echonachricht eine Echon c Senden einer Echonachricht e mit dem Maximum allerweitere ● Ein Blattknoten, der eine Explosi b bisher bekannten IDs über die verbleibende Kante IDs die höchste I Maximum beider ● Erhält ein Knoten nach seiner Versenden sein eine Echonachricht mit ID Ein Blattknoten, der eine Explosio x ● Echonachricht eine weitere Echonachri Falls Empfang einer weiteren Echonachricht e0: 10 Maximum beider die höchste ID ID-Nuz Echonachricht mit Höchste ID im Netz eine ist Maximum der IDs von e und e 0 IDsiseiner y i i – Muss lediglich ein beliebiger Anfüh c Kapitza i lediglich ein beliebiger Anführer VS (SS 2015) 11 Wahlalgorithmen | 11.3 Wahl –aufMuss Bäumen 11–13 be x 05 09:03 10 y Wahl auf Bäumen 09 Beispiel 16 18 14 02 15 06 03 11 07 10 12 17 05 04 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.3 Wahl auf Bäumen 11–14 Wahl auf Bäumen 09 Beispiel 16 18 14 02 15 06 03 11 07 10 12 17 05 04 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.3 Wahl auf Bäumen 11–14 Wahl auf Bäumen 09 Beispiel 16 18 16 9 14 02 15 06 03 11 07 10 12 17 05 04 8 1 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.3 Wahl auf Bäumen 11–14 Wahl auf Bäumen 09 Beispiel 16 18 16 9 14 02 15 06 03 11 07 10 12 17 05 04 8 1 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.3 Wahl auf Bäumen 11–14 Wahl auf Bäumen 09 Beispiel 16 18 16 9 14 02 15 16 06 3 03 11 07 10 12 17 8 05 04 8 1 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.3 Wahl auf Bäumen 11–14 Wahl auf Bäumen 09 Beispiel 16 18 16 9 14 02 15 16 06 3 16 03 11 07 10 12 17 8 05 04 8 1 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.3 Wahl auf Bäumen 11–14 Wahl auf Bäumen 09 Beispiel 16 18 18 16 9 14 14 02 15 16 06 6 3 16 16 03 11 07 10 12 17 8 05 04 8 1 4 13 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.3 Wahl auf Bäumen 11–14 Wahl auf Bäumen 09 Beispiel 16 18 18 16 9 14 14 02 15 18 16 06 6 3 16 16 03 11 07 10 12 17 17 8 05 04 8 1 4 13 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.3 Wahl auf Bäumen 11–15 Wahl auf Bäumen 09 Beispiel 16 18 14 02 15 18 06 16 03 11 07 10 12 17 17 05 04 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.3 Wahl auf Bäumen 11–15 Wahl auf Bäumen 09 Beispiel 16 18 14 02 15 18 06 16 03 11 07 16 10 12 17 18 17 05 04 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.3 Wahl auf Bäumen 11–15 Wahl auf Bäumen 09 Beispiel 16 18 14 02 15 06 18! 16 03 11 07 18! 10 18! 12 18 18! 17 05 04 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.3 Wahl auf Bäumen 11–15 Wahl auf beliebigen Topologien Überblick Annahmen über Netzstruktur Zusammenhängender Netzwerkgraph Bidirektionale Verbindungen zwischen Knoten Netzwerkgraph kann Zyklen aufweisen Sequentielles Traversieren – Beispiel: Tiefensuche Initiatorknoten erstellt Token und sendet es über eine Kante kinit Empfang des Tokens über eine Kante krecv Weitergabe des Tokens an einen Nachbarn, der das Token noch nicht hatte Falls kein solcher Nachbar bekannt: Senden des Tokens über Kante krecv Zyklenerkennung anhand der Kante, über die Token empfangen wurde Terminierung, sobald Initiator das Token über die Kante kinit empfängt Alternativer Ansatz: Konstruktion eines virtuellen Baums Initial beim Systemstart oder Im Nachhinein mittels Adoptionsverfahren c Kapitza VS (SS 2015) 11 Wahlalgorithmen | 11.4 Wahl auf beliebigen Topologien 11–16 Erzeugung eines virtuellen Baums beim Systemstart Anmeldung bei einer globalen Registry Registry kennt die Adressen aller bereits im System befindlicher Knoten Bereitstellung von Knotenadressen für Verbindungsaufbau Verbindungsaufbau Verwaltung eines lokalen Levels Wurzelknoten des Baums hat Level 0 Elternknoten: Nachbar mit kürzester Distanz zum Wurzelknoten Wiederholung der Auswahl bei Abbruch der Elternverbindung c Kapitza VS (SS 2015) private int level = -1; private VSNode parent = null; public void connect(List<VSNode> nodes) { for(VSNode node: nodes) { // Verbindungsaufbau boolean connected = [Aufbau der Verbindung]; if(!connected) continue; // Bestimmung des Elternknotens if((level < 0) || (level > node.level)) { level = node.level + 1; parent = node; } } } 11 Wahlalgorithmen | 11.4 Wahl auf beliebigen Topologien 11–17 Adoptionsverfahren Algorithmus Grundprinzip wie bei Wahl auf Bäumen: Explorations- und Echowelle Nachrichten Explorernachrichten beinhalten ID des korrespondierenden Initiators Echonachrichten tragen Initiator-ID der zugehörigen Explorernachricht Verwaltung von IDs an Knoten und Kanten 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 Empfang einer Explorernachricht x über Kante k mit Markierung m Falls Falls Falls Falls c Kapitza IDx = IDm IDx < IDm IDm < IDx ≤ IDi IDm ≤ IDi < IDx VS (SS 2015) 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 11 Wahlalgorithmen | 11.4 Wahl auf beliebigen Topologien 11–18 ispielAdoptionsverfahren 09 Beispiel 16 18 14 02 15 06 03 11 07 10 12 17 05 04 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.4 Wahl auf beliebigen Topologien 11–19 ispielAdoptionsverfahren 09 Beispiel 16 18 14 02 15 06 03 11 07 10 12 17 05 04 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.4 Wahl auf beliebigen Topologien 11–19 ispielAdoptionsverfahren 09 Beispiel 16 18 14 * 02* * * 15 06 03 11 07 10 12 17 05 04 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.4 Wahl auf beliebigen Topologien 11–19 ispielAdoptionsverfahren 09 Beispiel 16 18 14 * 02* * * 15 06 03 11 07 10 12 17 05 04 * 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.4 Wahl auf beliebigen Topologien 11–19 ispielAdoptionsverfahren 09 Beispiel 16 18 14 * 02* * * 15 06 03 11 07 10 12 17 05 04 * 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.4 Wahl auf beliebigen Topologien 11–19 ispielAdoptionsverfahren 09 Beispiel 16 18 14 * 02* * * 15 06 03 11 07 10 12 17 05 04 * 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.4 Wahl auf beliebigen Topologien 11–19 ispielAdoptionsverfahren 09 Beispiel 16 18 14 * 02* * * 15 06 03 * 11 07 10 12 17 05 04 * 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.4 Wahl auf beliebigen Topologien 11–19 ispielAdoptionsverfahren 09 Beispiel 16 18 14 * 02* * * 15 06 03 * 11 07 10 12 17 05 04 * 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.4 Wahl auf beliebigen Topologien 11–20 ispielAdoptionsverfahren 09 Beispiel 16 18 14 * 02* * * 15 06 03 * 11 07 10 12 17 05 04 * 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.4 Wahl auf beliebigen Topologien 11–20 ispielAdoptionsverfahren 09 Beispiel 16 18 14 * 02* * * 15 06 03 * 11 07 10 12 17 05 04 * 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.4 Wahl auf beliebigen Topologien 11–20 ispielAdoptionsverfahren 09 Beispiel 16 18 14 * 02* * * 15 06 * * 11 03 * 07 10 12 17 05 04 * 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.4 Wahl auf beliebigen Topologien 11–20 ispielAdoptionsverfahren 09 Beispiel 16 18 14 * 02* * * 15 * 06 * * 11 03 * 07 10 12 17 * 05 04 * 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.4 Wahl auf beliebigen Topologien 11–21 ispielAdoptionsverfahren 09 Beispiel 16 18 14 * 02* * * 15 * 06 * * 11 03 * 07 10 12 17 * 05 04 * 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.4 Wahl auf beliebigen Topologien 11–21 ispielAdoptionsverfahren 09 Beispiel 16 18 14 * 02* * * 15 * 06 * * 11 03 * 07 10 12 17 * 05 04 * 13 01 c Kapitza 08 VS (SS 2015) 11 Wahlalgorithmen | 11.4 Wahl auf beliebigen Topologien 11–21 ispielAdoptionsverfahren 09 Beispiel 16 18 14 * 02* * * 15 * 06 * * * 11 03 07 10 12 17 * 05 04 * 13 * 01 c Kapitza VS (SS 2015) 08 11 Wahlalgorithmen | 11.4 Wahl auf beliebigen Topologien 11–21