• Keine Ergebnisse gefunden

In unstrukturierten P2P-Systemen wie z.B. Gnutella [GNUTE] verbleiben alle Daten zun¨achst auf dem publizierenden Knoten; es existieren keine Regeln, welche die Vertei-lung und Positionierung der Daten innerhalb des Netzwerks festlegen. Dadurch entsteht kein Verwaltungsaufwand, wenn Knoten hinzukommen (Join) oder ausfallen (Leave), d.h.

das Netzwerk ist h¨ochst effizient skalierbar. Verl¨asst ein Knoten das Netz, gehen die bei ihm gespeicherten Daten allerdings f¨ur andere Nutzer verloren.

Beliebte Datens¨atze werden in der Regel auf den Knoten, welche sie anfragen, repliziert (Pufferung, Caching2). Somit stehen sie auch nach Ausfall des Knotens, welcher sie initial publiziert hat, weiter zur Verf¨ugung. Zudem verringert das Caching den Aufwand f¨ur die Suche nach Datens¨atzen und verteilt die Last der Bereitstellung auf multiple Knoten.

Durch das Fehlen eines Regelwerks f¨ur die Zuordnung von Datens¨atzen zu Peers kann eine gesuchte Information theoretisch auf jedem Knoten des Netzes - oder aber auf gar keinem - existieren. A priori verf¨ugt also ein Teilnehmer, der einen bestimmten Datensatz anfragt, ¨uber keinerlei Informationen hinsichtlich dessen Speicherknoten.

Die Suche ist daher ein ungerichteter Prozess, bei dem jeder Knoten, der eine Suchanfra-ge erh¨alt, diese - wenn er sie nicht selbst beantworten kann - an alle ihm bekannten Peers weiterleitet (siehe Abbildung 2.1). Dieser Vorgang wird als Flooding bezeichnet, da das Netzwerk mit Anfragen ”geflutet“ wird.

Abbildung 2.1: Weiterleitung von Suchanfragen in einem unstrukturierten Netzwerk f¨ur TTL t= 3

Die Anzahl und Beschaffenheit der Kontakte3unterliegt ebenfalls keinen Regeln. So kann es leicht passieren, dass dadurch ganze Teilnetze von einer Suchanfrage gar nicht erreicht werden, daf¨ur aber andere Knoten die gleiche Anfrage mehrfach erhalten.

Die maximale Lebensdauer, d.h. die maximale Anzahl t an Weiterleitungsschritten f¨ur eine Suchanfrage (Time To Live, TTL), muss zudem eingeschr¨ankt werden. Ansonsten

2In Version 2 von Gnutella wird das Caching so weit vorangetrieben, dass nur festgelegte

Super Peers“

die gepufferten Daten bereitstellen und den einzigen Zugang zu ihren Subnetzen repr¨asentieren. Dies widerspricht allerdings der Forderung der Gleichberechtigung zwischen Knoten und der Dezentralisierung, ist aber vor allem ein Risiko, da ein Super Peer die Verbreitung von Datens¨atzen, die aus seinem Subnetz kommen, unterbinden kann.

3Gnutella: jeder Knoten verf¨ugt ¨uber ungef¨ahr 5 Kontakte

w¨urde nicht nur die Netzlast durch das Flooding zu hoch, sondern es w¨urden auch unzu-mutbare R¨ucklaufzeiten auftreten. Im schlimmsten Fall w¨urde sogar die Suche gar nicht terminieren.

Die Suche bricht nun also ab, sobald die Anfrage t-mal weitergeleitet wurde4. Die Suche bleibt damit stets l¨uckenhaft, insbesondere in Netzwerken mit vielen Teilnehmern.

F¨ur zuverl¨assige Datenspeicherung ist es aber unbedingt notwendig, dass alle im Netz vorhandenen Daten schnell und effizient gefunden werden k¨onnen. Außerdem muss auch die Nichtexistenz von gesuchten Datens¨atzen zweifelsfrei feststellbar sein.

Dies leisten nur strukturierte Peer-to-Peer-Systeme wie z.B. Chord [SML01], Pastry [RoD01a] oder Kademlia [MaM02]. Sie verf¨ugen ¨uber ein Regelwerk, nach dem jeder Datensatz einem oder mehreren Peers zugeordnet wird.

Daf¨ur wird jedem Datensatz zu Beginn seiner Existenz ein Bezeichner zugewiesen, welcher in einem systemweit festgelegten Bezeichnerbereich (Adressraum) liegt. Dieser Adress-raum ist unter den Peers aufgeteilt, so dass jeder Knoten f¨ur ein bestimmtes Segment zust¨andig ist. Dieses ist in der Regel variabel, d.h. es ¨andert sich bei Reorganisation des Netzwerks.

Ein Datensatz mit Bezeichner (FileID)bverbleibt nicht auf dem ihn publizierenden Kno-ten. Stattdessen wird unter Zuhilfenahme eines rekursiven Suchalgorithmus die Menge Nb der zust¨andigen Knoten ermittelt (|Nb| ≥1) und der Datensatz dorthin ¨ubertragen.

Strukturierte Peer-to-Peer-Systeme werden auch als DHTs (Distributed Hash Table, verteilte Hashtabelle) bezeichnet: Jedes Bezeichner-Datensatz-Paar ist Element einer uber alle Knoten verteilt gespeicherten Hashtabelle, ebenso jede Zuordnung von Peer-¨ Bezeichner zur Netzwerkadresse (IP-Adresse) eines Knotens. Jeder Peer speichert in ei-ner sogenannten Routing-Tabelle Verweise auf einen Teil der existierenden Knoten, um Nachrichten weiterleiten zu k¨onnen.

Diese regelbasierte Umschichtung von Datens¨atzen hat den Vorteil, dass jeder Knoten des Netzwerks mit Hilfe des gleichen Zuordnungsalgorithmus sowohl ermitteln kann, wo ein Datensatz gespeichert werden muss, als auch, welche Knoten derzeit f¨ur einen gesuchten Datensatz zust¨andig sind, und eine Anfrage nach dessen Bereitstellung direkt an diese stellen kann.

Definition 2.4 Overlay-Netzwerk und Overlay-Topologie:

Ein Overlay-Netzwerk bzw. Overlay im Sinne des Paradigmas strukturierter Peer-to-Peer-Systeme5 ist ein logisches Netzwerk, welches auf ein anderes aufsetzt. Es imple-mentiert ein Regelwerk und eine Struktur f¨ur die Anordnung und Interaktion von Peers.

Die Methoden, Strukturen und Protokolle des darunter liegenden Netzwerks werden f¨ur die Kommunikation zwischen Knoten genutzt. Die Routenwahl im Overlay h¨angt nicht von den Routingregeln des zugrunde liegenden Netzwerks ab.

Die Topologie des Overlay-Netzwerks bezeichnet die Struktur, in welcher die Entit¨aten logisch untereinander verbunden sind.

Teil des Regelwerks sind bespielsweise die Kriterien f¨ur die bei jedem Knoten vorge-haltenen Informationen ¨uber andere Peers und die Protokolle f¨ur die Kontaktaufnahme

4Gnutella:t= 7, d.h. maximal P7

i=1(5i) = 97655 Knoten k¨onnten theoretisch erreicht werden, wenn kein Knoten mehrfach kontaktiert w¨urde; dieses Maximum ist allerdings wegen des fehlenden Regelwerks f¨ur die Weiterleitung von Suchanfragen praktisch nicht erreichbar.

5Es existieren auch Nicht-P2P-Overlays, beispielsweise VPNs (Virtual Private Networks).

zwischen Knoten. Die darunter liegende Transportschicht implementiert in der Regel TCP oder UDP. Damit wird die konkrete Kommunikation zwischen Teilnehmern des Overlay-Netzwerks realisiert.

Verschiedene Overlay-Topologien sind in Abbildung 2.2 dargestellt: die Ringtopologie wie in Chord, die baumf¨ormige Topologie wie in Kademlia und die multidimensionale Torustopologie wie in CAN (Content-Addressable Network, [RFH01]).

Abbildung 2.2: Overlay-Topologien: Ring, Bin¨arbaum, dreidimensionaler Torus Zur Realisierung von Kommunikationsverbindungen zwischen Knoten, insbesondere mit dem Ziel der Weiterleitung (Routing) von Nachrichten, h¨alt jeder Knoten Informationen uber andere Teilnehmer im Netzwerk und deren Zust¨andigkeitsbereiche in einer Tabel-¨ le vor. Jede deckt dabei nur einen kleinen Ausschnitt des gesamten Netzwerks ab: der Netzzustand ist an keiner Stelle vollst¨andig erfasst, sondern findet sich verteilt in der Gesamtheit der Routing-Tabellen aller Knoten.

Es existieren systemweite Regeln, welche die in einer Routing-Tabelle zu speichernden Referenzen auf andere Knoten determinieren und damit sicherstellen, dass eine Nachricht durch schrittweise Weiterleitung an jeden beliebigen Knoten auch außerhalb der Menge der eigenen Kontakte ¨ubermittelt werden kann.

Die Zuteilung des Zust¨andigkeitsbereichs f¨ur jeden Knoten wird in der Regel dynamisch realisiert um die Fluktuation durch Joins und Leaves auszugleichen.

Replikation, also die kontrollierte Erzeugung verschiedener identischer Exemplare eines Datensatzes auf verschiedenen Knoten ist ein wichtiges Mittel zur Verf¨ugbarkeitssiche-rung bei unangek¨undigten Leaves oder in Protokollen, die beim Leave keinen Transfer der gespeicherten Daten an neue zust¨andige Knoten unterst¨utzen. Weiterhin wirken Re-plikationstechniken auch gegen b¨oswillig, d.h. bewusst nicht protokollkonform handelnde Teilnehmer.

Jeder Knoten kann - wie bereits erw¨ahnt - eine Suche nach Bezeichnern durchf¨uhren. Ein Bezeichnerbkann einen gesuchten Datensatz spezifizieren (FileID) oder aber einen Kno-ten (bheißt dann NodeID). F¨ur die Suche wird eine Anfrage nach dem bzw. den zust¨andi-gen Knoten f¨ur einen solchen Bezeichner ¨uber ein rekursives Routing-Verfahren in Rich-tung Nb weitergeleitet. In jedem Schritt n¨ahert sich der Lookup dabei den zust¨andigen Knoten.

Bezieht sich die Suche auf einen Datensatz, fordert der Initiator der Anfrage diesen von einem Knoten aus Nb an. Stellt sich nach sukzessiver Kontaktierung aller Knoten aus Nb heraus, dass keiner davon den entsprechenden Datensatz gespeichert hat, so wird die Suche erfolglos beendet. F¨ur den Initiator ist dann sicher, dass das gesuchte Datum nicht im Netz existiert.

Zur Realisierung eines Dienstes zur effizienten und zuverl¨assigen Datenspeicherung und -bereitstellung kommt dahernur einstrukturiertes Peer-to-Peer-System in Frage, da nur ein solches die l¨uckenlose Suche in der Datenbasis und damit die entsprechende Sicherheit hinsichtlich der Richtigkeit und Vollst¨andigkeit der Suchergebnisse leisten kann.

Die Begriffe P2P-Protokoll, -Regelwerk, -System und -Netzwerk werden in der Literatur h¨aufig synonym verwendet. Im Folgenden wird aber eine deutliche Abgrenzung zwischen diesen Bezeichnungen vorgenommen.

Definition 2.5 Strukturiertes Peer-to-Peer-Protokoll:

Ein strukturiertes Peer-to-Peer-Protokoll regelt auf Basis einer Distanzmetrik die Zuord-nung von Bezeichnern zu NodeIDs und darauf aufbauend die Suche nach Bezeichnern sowie den Join und Leave von Knoten.

Definition 2.6 Strukturiertes Peer-to-Peer-Regelwerk:

Ein strukturiertes Peer-to-Peer-Regelwerk ist die Kombination eines P2P-Protokolls mit zus¨atzlichen Methoden und Anforderungen. Das Regelwerk umfasst beispielsweise Metho-den f¨ur die Speicherung und Replikation von Datens¨atzen, wobei f¨ur Suche und Zuordnung das zugrunde liegende Protokoll verwendet wird.

Definition 2.7 Strukturiertes Peer-to-Peer-System:

Ein strukturiertes Peer-to-Peer-System (auch als strukturiertes P2P-Netzwerk bezeich-net) ist ein real existierendes Netzwerk von multiplen Knoten, welches auf einem P2P-Regelwerk basiert. Die teilnehmenden Peers handeln dabei im Idealfall6 regelkonform.

Da von nun an nur noch vonstrukturierten Peer-to-Peer-Protokollen, -Regelwerken usw.

die Rede ist, kann der Zusatz

”strukturiert“ im Folgenden weggelassen werden.