28.02.2013 Aufrufe

Hierarchische P2P-Netze

Hierarchische P2P-Netze

Hierarchische P2P-Netze

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

BTU Cottbus<br />

Wintersemester 2005/06<br />

Seminar <strong>P2P</strong> Networking<br />

<strong>Hierarchische</strong> <strong>P2P</strong>-<strong>Netze</strong><br />

Uwe Mannl<br />

Klassische unstrukturierte und strukturierte Peer-To-Peer-Netzwerke haben jeweils für sich<br />

Vorteile, aber natürlich auch Nachteile. Doch eines zeichnet sie alle aus: sie sind flach. Nur<br />

stellt sich die Frage, warum man sich darauf beschränken soll. Schließlich ist das Internet<br />

selber auch nicht nur flach. In vielen Bereichen kommen schon hierarchische Prinzipien zum<br />

Einsatz, wie zum Beispiel beim Domain Name System.<br />

In diesem Text wird deshalb erläutert, wie man beide bisherigen Systeme um die Möglichkeit<br />

der Hierarchie erweitern kann, um damit zum einen die Skalierbarkeitsprobleme<br />

einzugrenzen, zum anderen aber eine mindestens gleich gute, wenn nicht sogar bessere<br />

Robustheit zu gewährleisten. Dazu wird im ersten Teil erläutert, wie man bisherige<br />

unstrukturierte <strong>P2P</strong>-<strong>Netze</strong> wie Gnutella zu Super-<strong>P2P</strong>-Netzwerken erweitern kann. Diese<br />

<strong>P2P</strong>-<strong>Netze</strong> mit ihrem wichtigstem Vertreter, dem FastTrack-Protokoll, bilden die 3.<br />

Generation der <strong>P2P</strong>-Netzwerke.<br />

Folgend darauf wird eingegangen, wie in diese Super-<strong>P2P</strong>-Netzwerke noch die Vorteile der<br />

strukturierten <strong>Netze</strong> mit ihren Distributed Hash Tables eingearbeitet werden kann.<br />

Inhaltsverzeichnis<br />

1 Einführung............................................................................................................................... 2<br />

2 Netzarchitekturen .................................................................................................................... 2<br />

2.1 Pure <strong>P2P</strong>-Systeme ............................................................................................................ 2<br />

2.2 Hybride <strong>P2P</strong>-Systeme ...................................................................................................... 3<br />

2.3 Super-<strong>P2P</strong>-Systeme.......................................................................................................... 3<br />

3 Suche in Super-<strong>P2P</strong>-Systemen ................................................................................................ 4<br />

4 Hierarchical DHTs .................................................................................................................. 5<br />

5 Topologien .............................................................................................................................. 6<br />

5.1 Chord................................................................................................................................ 6<br />

5.2 Chord als Top-Level-Netzwerk........................................................................................ 8<br />

5.3 Bottom-Level-Netzwerke................................................................................................. 8<br />

6 Vorteile.................................................................................................................................... 9<br />

6.1 Skalierbarkeit ................................................................................................................... 9<br />

6.2 Robustheit....................................................................................................................... 10<br />

6.3 Suchoptimierungen......................................................................................................... 10<br />

7 Beispiele für hierarchische <strong>P2P</strong>-Netzwerke.......................................................................... 11<br />

7.1 FastTrack........................................................................................................................ 11<br />

7.2 Gnutella (3. Generation)................................................................................................. 12<br />

8 Literatur................................................................................................................................. 14<br />

1


1 Einführung<br />

<strong>Hierarchische</strong> Peer-To-Peer-Systeme mit ihrer hierarchischen Struktur bilden das Gegenstück<br />

zu flachen <strong>P2P</strong>-Systemen, wie es z.B. bei Gnutella in der 1. Generation der Fall ist. Statt dass<br />

es wie bei Gnutella keine Unterscheidung der einzelnen Peers gibt, existieren in<br />

hierarchischen <strong>P2P</strong>-Systemen Rollen für die Peers. Neben den normalen Peers werden<br />

manchen Peers, erfüllen sie bestimmte Voraussetzungen, die Aufgabe so genannter Super-<br />

Peers zugewiesen. Aus diesem Grund werden solche Systeme Super-<strong>P2P</strong>-Systeme oder kurz<br />

Super-Peer-Systems genannt.<br />

Gleichzeitig sind hierarchische <strong>P2P</strong>-Systeme eine Mischform aus dem typischen<br />

zentralisierten Client-Server-Modell und dem dezentralisierten Modell, welches auch in<br />

Gnutella zu tragen kommt. Kein Computer übernimmt im dezentralisierten Modell die<br />

Aufgabe eines Servers, sondern alle angeschlossenen Peers sind in ihrem Erscheinen und ihrer<br />

Aufgabe gleich. In der Literatur wird das Super-<strong>P2P</strong>-Netzwerk deswegen auch als eine<br />

Mischform aus dem puren <strong>P2P</strong>-Netzwerk und dem hybriden-<strong>P2P</strong>-Netzwerk bezeichnet. Es<br />

wird im nächsten Abschnitt „Netzarchitekturen“ auf die eben genannten Netzformen<br />

nochmals eingegangen, um eine bessere Erklärung der hierarchischen <strong>P2P</strong>-Systeme zu<br />

ermöglichen.<br />

Als wichtigsten Vertreter der hierarchischen <strong>P2P</strong>-Systeme ist das FastTrack-Netzwerk zu<br />

nennen, welches sich sogar mit Hilfe der Programme KaZaA und deren freien Alternativen<br />

zum größten <strong>P2P</strong>-Netzwerk für allgemeinen Datenaustausch entwickelt hatte [1].<br />

Der Einsatz von hierarchischen <strong>P2P</strong>-<strong>Netze</strong>n beschränkt sich aber nicht nur auf den<br />

Dateiaustausch mittels Tauschbörsen, sondern hat noch weitere Anwendungsgebiete. So wäre<br />

das Overlay Multicast zu nennen, bei dem es darum geht, dass ein Sender Daten an mehrere<br />

Empfänger gleichzeitig schickt. So ist in dem NICE-Protokoll eine hierarchische Topologie<br />

implementiert.<br />

2 Netzarchitekturen<br />

Um den Aufbau eines hierarchischen <strong>P2P</strong>-Netzwerkes besser verstehen zu können ist es<br />

hilfreich, erst einmal die beiden Grundformen von <strong>P2P</strong>-Systemen in ihrem Aufbau und ihrer<br />

Arbeitsweise zu kennen. Der Name Peer-To-Peer-Netzwerke kommt daher, dass zum<br />

eigentlichen Übertragen von Informationen zwischen den beiden Peers eine direkte<br />

Verbindung aufgebaut wird. Dies geschieht natürlich erst nach dem Suchen, und genau hier<br />

liegen die Hauptunterschiede der verschiedenen Peer-To-Peer-Netzwerkarchitekturen.<br />

2.1 Pure <strong>P2P</strong>-Systeme<br />

Wie schon erwähnt kommen pure <strong>P2P</strong>-Systeme wie Gnutella ganz ohne Server aus. Jeder<br />

Peer, der im speziellen Fall von Gnutella auch Servant oder Servent genannt wird [2],<br />

übernimmt dieselben Aufgaben wie das Routing und das Suchen. So funktioniert zum<br />

Beispiel eine Suche nach dem Schneeballprinzip: Ein Peer schickt die Anfrage, im englischen<br />

Query genannt, an alle ihm bekannten anderen Peers. Diese schauen nach ob sie die<br />

entsprechende Information, meist eine Datei, besitzen, und schicken zusätzlich die Anfrage an<br />

alle ihnen bekannten Peers weiter. Zusätzlich bekommt jede Suchanfrage einen TTL-Flag<br />

(Time-To-Live-Flag) mit gesandt, welcher angibt, wann eine Suchanfrage stirbt.<br />

Beispielsweise bedeutet ein TTL-Flag von 1, dass die Suchanfrage vom anfragenden<br />

2


Computer aus nur zu seinen direkten Nachbarn geht, von dort aber nicht weitergeleitet wird.<br />

Erst bei einem höheren TTL-Flag würden diese Nachbarn ihr Suchanfrage wiederum an ihre<br />

Nachbarn übermitteln.<br />

Ergibt eine Suchanfrage einen Erfolg, also wurde die Datei gefunden, so wird zwischen dem<br />

anfragenden Peer und dem Peer mit der Datei eine direkte Verbindung aufgebaut, um darüber<br />

die Datei zu übertragen.<br />

2.2 Hybride <strong>P2P</strong>-Systeme<br />

Hybride <strong>P2P</strong>-Systeme sind ihrerseits eine Mischung aus den puren <strong>P2P</strong>-Systemen<br />

(dezentrales Modell) und dem Client-Server-Modell (zentrales Modell). Alle Suchanfragen<br />

richtet ein Peer an einem ihn bekannten Server, welcher die Suchanfragen bearbeitet und eine<br />

Antwort dem Peer zurücksendet, von wo er die entsprechende Datei bekommen kann. Dies ist<br />

der Client-Server-Teil. Der Peer baut daraufhin die direkte Verbindung zu dem anderen Peer<br />

auf. Dies ist der dezentrale Teil, da die Verbindung dann direkt erfolgt und nicht mehr über<br />

den Server.<br />

Das bekannteste Beispiel für ein Hybrides <strong>P2P</strong>-System ist die erste erfolgreiche und<br />

allgemein bekannte Tauschbörse Napster. Diese lief damals mit 200 Index-Servern [3], auf<br />

welche beim Programmstart eine Liste der zur Verfügung stehenden Dateien übertragen<br />

wurde. Die Server waren jedoch nicht untereinander synchronisiert, was zur Folge hatte, dass<br />

eine Suchanfrage an einen Server nie die Clients bekannt gab, welche zu den anderen Servern<br />

verbunden waren [1].<br />

In einigen Veröffentlichungen wird Napster den Super-<strong>P2P</strong>-Systemen mit nur einer Gruppe<br />

zugeschrieben, welche jetzt vorstellt werden.<br />

2.3 Super-<strong>P2P</strong>-Systeme<br />

In den Super-<strong>P2P</strong>-Systemen wird versucht, den Vorteil der effizienten, zentralisierten Suche<br />

mit dem Vorteil der autonomen, lastverteilten und gegen Angriffe robusten dezentralen Suche<br />

unter einen Hut zu bringen. Zusätzlich schafft man es so, die unterschiedlichen Stärken der<br />

einzelnen Peers wie Bandbreite und Rechenleistung zu nutzen [4].<br />

Abbildungen 1 und 2 zeigen den typischen Aufbau eines Super-Peer-Systems. Jeder Peer,<br />

welcher in einem Graphen als Knoten bezeichnet wird, gehört einer Gruppe an. Es wird in<br />

Abbildung 1 nur der so genannte Top-Level-Overlay gezeigt, welcher die Verbindung<br />

zwischen den Gruppen darstellt.<br />

Abbildung 1: Top-Level-Overlay eines Super-Peer-Systems (entnommen [6])<br />

3


In Abbildung 2 wird dann sichtbar, wie die Kommunikation zwischen den Gruppen erfolgt.<br />

Die grau gefüllten Kreise entsprechen SuperPeers, die weißen, ungefüllten Kreise stehen für<br />

normale Peers. Für die Kommunikation zwischen den Gruppen sind die SuperPeers zuständig,<br />

denn nur diese senden Anfragen der Peers weiter.<br />

Abbildung 2: Aufbau eines Super-Peer-Netzwerkes (entnommen [6])<br />

Dazu muss jeder Peer mit einem SuperPeer aus der Gruppe verbunden sein. Pro Gruppe<br />

existiert mindestens 1 SuperPeer, mehrere sind jedoch genauso möglich und erhöhen die<br />

Robustheit des Netzwerkes. Die Auswahl der SuperPeers erfolgt nach gewissen Kriterien,<br />

wonach bestimmte Peers bevorzugt werden. Zu den Kriterien zählen einerseits die<br />

Rechenleistung sowie die Bandbreite der Anbindung an das Netz, andererseits aber auch, wie<br />

lange ein Peer im Vergleich zu anderen schon im Netz aktiv ist. Verbindet sich beispielsweise<br />

ein neuer Peer mit dem Netzwerk und meldet sich in einer entsprechenden Gruppe an, so<br />

übermittelt er dem zuständigen SuperPeer neben anderen Informationen auch seine<br />

Leistungsdaten. Anhand dieser Daten aller Peers in einer Gruppe kann ein SuperPeer<br />

entscheiden, welcher Peer am ehesten geeignet ist, um die Rolle eines zusätzlichen oder neuen<br />

SuperPeers zu übernehmen. Genauso muss im Falle des Ausfalls eines SuperPeers<br />

entschieden werden, welcher Peer dessen Funktionen übernimmt. Bei der Ernennung eines<br />

neuen SuperPeers werden alle Peers in der Gruppe darüber informiert sowie die SuperPeers in<br />

den benachbarten Gruppen. Damit wird eine gute Stabilität des Top-Levels erreicht.<br />

Sinnvoll bei der Bildung von Gruppen ist es darauf zu achten, dass topologisch nahe liegende<br />

Peers zu einer Gruppe zusammengefasst werden. Diese hätten dann eine höhere Chance für<br />

bessere Übertragungsraten untereinander, was zum dem Vorteil des Content-Cachings führt.<br />

Dieses wird im Abschnitt 6.3 „Suchoptimierungen“ genauer dargelegt. Während man bei der<br />

Kommunikation der SuperPeers untereinander vom Top-Level-Overlay spricht, so wird der<br />

Zusammenschluss der Peers innerhalb einer Gruppe als Bottom-Level oder auch Intra-Group<br />

bezeichnet.<br />

3 Suche in Super-<strong>P2P</strong>-Systemen<br />

Super-<strong>P2P</strong>-Systeme sind im Allgemeinen unstrukturierte <strong>P2P</strong>-Systeme. Von strukturierten<br />

hierarchischen <strong>P2P</strong>-Systemen spricht man erst, wenn zum Beispiel Verteilte Hash-Tabellen<br />

genutzt werden, wie im nächsten Abschnitt „Hierarchical DHTs“ beschrieben wird.<br />

4


Die Suchanfrage in Super-<strong>P2P</strong>-Systemen erfolgt also ähnlich wie in den puren <strong>P2P</strong>-Systemen.<br />

Die SuperPeers haben jedoch noch die zusätzliche Aufgabe, einen Index zu verwalten. In<br />

diesem Index steht, welcher Peer welche Informationen, Daten oder speziell Dateien besitzt.<br />

Der SuperPeer speichert nur die Informationen der an ihm angeschlossenen Peers, also aller<br />

Peers in seiner Gruppe<br />

Abbildung 3 zeigt den Ablauf einer Suche, die von Peer P1 gestartet wird. Er schickt seine<br />

Anfrage nach der Datei k an einen beliebigen SuperPeer seiner Gruppe g1. Dieser behandelt<br />

die Suchanfrage jetzt wie seine eigene, und schaut zuerst nach, ob ein anderer Peer derselben<br />

Gruppe die von P1 erfragte Datei besitzt. Zusätzlich wird die Suchanfrage an alle von g1<br />

bekannten Nachbarn geschickt, in dem Fall an g2 und g4. Die SuperPeers schauen jeweils<br />

wieder in der eigenen Gruppe nach, und senden die Anfrage außerdem an g3 weiter. Die<br />

Suche erfolgt also nur zwischen den SuperPeers auf dem Top-Level-Overlay. Der SuperPeer<br />

der Gruppe g3 hat schließlich in seinem Index stehen, dass Peer P2 die gesuchte Datei besitzt.<br />

Demzufolge kann dieser SuperPeer die Daten über P2, wie seine IP-Adresse, auf dem<br />

gleichen Weg, wie die Suche erfolgt, zurückschicken. P1 kann damit dann eine direkte<br />

Verbindung zu P2 aufbauen und die entsprechende Datei empfangen.<br />

Abbildung 3: Suchablauf in einem Super-Peer-Netzwerk (angelehnt an [6])<br />

Die Suche in unstrukturierten Super-<strong>P2P</strong>-Systemen besitzt dieselben Nachteile wie die in<br />

puren <strong>P2P</strong>-Systemen. So ist zwar bei gleicher Anzahl von Teilnehmern im Netz zwar<br />

ausgeschlossen, dass langsame Peers die Suche beeinträchtigen, aber gleich viele Teilnehmer<br />

bedeuten auch gleich viele Suchanfragen und damit eine nicht geringer gewordene Flut von<br />

Suchanfragen, die die SuperPeers bewältigen müssen. Auch ist die Suche nach seltenen Daten<br />

wenig effizient, da nie sichergestellt ist, dass eine Suchanfrage bis zu der Gruppe mit der<br />

entsprechenden Information angelangt. Der TTL-Flag ist schließlich auch hier nötig, um<br />

Suchen nach gewisser Zeit abzubrechen.<br />

4 Hierarchical DHTs<br />

Verteilte Hash-Tabellen (Distributed Hash Tables, kurz DHTs) ermöglichen in flachen,<br />

strukturierten <strong>Netze</strong>n das schnelle Auffinden von Dateien, indem jeder Datei ein eindeutiger<br />

Key zugewiesen wird. Jeder Peer erhält dann die Zuständigkeit für einen Teil der Hash-<br />

Tabelle, also für bestimmte Keys. Er weiß sozusagen, wo die entsprechenden Dateien liegen.<br />

Erfolgt eine Anfrage nach einer Datei, so sucht der Peer bei sich, ob er zuständig ist. Ist dies<br />

nicht der Fall, wird die Anfrage zu anderen Peers weitergeleitet, wobei zum Peer geroutet<br />

5


wird, welcher für den Key zuständig ist. Dies kann gezielt zum entsprechenden Peer<br />

geschehen, da die Bereiche linear aufgeteilt sind und Anfragen immer an dem zum Key<br />

nahesten Peer weitergeleitet werden. Dabei ist die Datenverteilung an eine entsprechende<br />

Topologie gebunden. Diese bestimmt, welche Peers zu Nachbarn werden.<br />

In hierarchischen DHTs gibt es jetzt den Unterschied, dass die Suchanfragen zuerst die<br />

Gruppe finden, welche für den Key zuständig ist, dann den Peer in dieser Gruppe, welcher<br />

den Key verwaltet. Dies geschieht ähnlich wie bei den unstrukturierten Super-<strong>P2P</strong>-Systemen,<br />

nur dass nicht eine bestimmte Datei gesucht wird sondern der Schlüssel zu der Datei.<br />

Im Speziellen bedeutet das: Die Suchanfrage eines Peers geht direkt an einen SuperPeer<br />

seiner Gruppe. Von dort aus sendet der SuperPeer die Anfrage auf dem so genannten Top-<br />

Level weiter, bis die Gruppe gefunden ist, welche für den Key zuständig ist. Dabei wird auch<br />

nur von SuperPeer zu SuperPeer geroutet, die restlichen Peers spielen in der Top-Level-Suche<br />

keine Rolle. Erreicht die Anfrage den entsprechenden SuperPeer, so leitet dieser dann die<br />

Anfrage weiter zum entsprechenden Peer, welcher den Key verwaltet. Dieser Peer kann dann<br />

eine Antwort an den anfragenden Peer schicken. Das geschieht entweder mittels direkter<br />

Verbindung oder einfach rückwärts den Weg, über welcher die Anfrage kam [5].<br />

Möglichkeiten der Suchstrategien im Top-Level sowie im Bottom-Level werden im nächsten<br />

Abschnitt „Topologien“ angeführt.<br />

Interessant ist noch der Aufbau einer Gruppe in einer hierarchischen DHT. Will ein Peer am<br />

Netz mit teilnehmen, so muss ihm eine Gruppe zugewiesen werden. Dazu benötigt er<br />

Informationen wie seine eigene ID, die ID, zu welcher Gruppe er gehören soll und die IP-<br />

Adresse eines schon im Netz vorhandenen Peers. Eine ID ist ein eindeutige Schlüssel oder<br />

eine eindeutige Nummer, die genau den Peer oder die Gruppe ausweist. Die Wahl der<br />

Gruppen-ID wird auch hier anhand verschiedener Gesichtspunkte getroffen.<br />

Beim Anmelden im Netz wird zuerst der schon im Netz aktive Peer kontaktiert und gefragt,<br />

wo die Gruppe zu finden ist, zu welcher der neue Peer angehören wird. Dazu schickt der neue<br />

Peer eine Suchanfrage nach seiner Gruppen-ID los. Über den schon im Netz aktiven Peer<br />

erhält er dann die IP-Adressen der SuperPeers mit der entsprechenden Gruppen-ID. So kann<br />

sich der neue Peer dann in der Gruppe anmelden. Es kann aber auch vorkommen, dass die als<br />

Antwort erhaltende Gruppen-ID nicht exakt seiner eigenen entspricht. In dem Fall macht der<br />

neue Peer eine neue Gruppe mit seiner Gruppen-ID auf, in der er selber der bis dato einzige<br />

SuperPeer ist.<br />

5 Topologien<br />

Es gibt verschiedene Strategien zum Aufbau des Top-Levels sowie des Bottom-Levels. Hier<br />

können schon vorhandene Strukturen adaptiert werden, um z.B. geringste Suchdauern zu<br />

ermöglichen.<br />

Es wird hier nur auf eine spezielle Top-Level DHT eingegangen, die auch in anderen<br />

strukturierten <strong>P2P</strong>-Systemen zum Einsatz kommt, nämlich Chord. Andere Formen der DHTs<br />

finden sich unter [7], und benötigen ähnlich wie Chord geringfügige Anpassungen, um im<br />

Top-Level-Overlay Verwendung finden zu können<br />

5.1 Chord<br />

Im Chord-System hat jeder Peer und jeder Schlüssel eine m-stellige Bitfolge als ID. Diese IDs<br />

kann man sich auf einem Ring mit dem Umfang von 2 m vorstellen. Jeder Schlüssel ist einem<br />

Peer zugeordnet, dessen ID gleich ist oder der als nächstes in der Reihe folgt. Dieser Peer<br />

6


wird Successor (Nachfolger) vom Key k genannt. Jeder Peer kennt seinen nachfolgenden und<br />

seinen vorgehenden Peer in dem Ring. Zusätzlich kennt jeder Peer noch m andere Peers, die<br />

so genannten Fingers. Diese werden in einer Finger-Table eines Peers zusammengefasst. Wer<br />

ein Finger eines Peers ist bestimmt folgender Algorithmus: Ein Peer mit der ID p kennt alle<br />

Peers mit den IDs p+2 j-1 (für j von 1 bis m). All diese Informationen ergeben die Chord-<br />

Routing-Table [5]. Abbildung 4 zeigt den Aufbau eines solchen Ringes.<br />

Abbildung 4: Aufbau eines Chord-Ringes (entnommen [6])<br />

Abbildung 5 zeigt den Ablauf einer Suche innerhalb eines Chord-Ringes. Bei einer Suche<br />

nach einer bestimmten Datei wird nach dem entsprechenden Schlüssel dieser Datei gesucht.<br />

Sucht Knoten N8 nach dem Schlüssel 54, so wird die Anfrage an den Peer weitergeleitet,<br />

dessen ID am nächsten ist. N8 hat in seiner Finger-Table den Knoten N42 mit der höchsten ID<br />

zu 54 stehen und leitet die Anfrage an den Knoten weiter. Von N42 geht es dann über N51 zu<br />

N56, welcher für den Key 54 zuständig ist.<br />

Abbildung 5: Suche in Chord (entnommen [7])<br />

Um das Prinzip von Chord auf dem Top-Level eines hierarchischen <strong>P2P</strong>-Systems anwenden<br />

zu können bedarf es einiger Modifikationen. Diese werden im folgenden Abschnitt „Chord als<br />

Top-Level-Netzwerk“ beschrieben. Der Einfachheit halber wird diese vorm des<br />

hierarchischen Cords auch als Top-Level-Chord bezeichnet.<br />

7


5.2 Chord als Top-Level-Netzwerk<br />

Wie in Abbildung 4 zu sehen ist, besteht der Ring jetzt nicht mehr aus einzelnen Peers,<br />

sondern aus Gruppen. Dies sind genau die Gruppen des Super-<strong>P2P</strong>-Systems. So sind der<br />

Vorgänger und der Nachfolger nicht mehr einzelne IP-Adressen der Peers, sondern Vektoren,<br />

in denen jeweils die IP-Adressen der SuperPeers in der Nachfolgergruppe bzw. der<br />

Vorgängergruppe stehen. Genauso sind die Fingers jetzt Vektoren mit den IP-Adressen der<br />

entsprechenden SuperPeers in den Gruppen, auf die der Finger zeigt. Die Routing-Tabelle<br />

eines solchen Chords ist in Abbildung 6 gezeigt.<br />

Abbildung 6: Chord in einem Top-Level-Netzwerk (entnommen [6])<br />

Fällt ein einzelner Peer aus (in diesem Fall sind nur die Ausfälle von SuperPeers relevant), so<br />

spielt das aus der Sicht des Chord-Ringes weniger eine Rolle als beim klassischen Chord. Es<br />

tritt in der Gruppe ein anderer Peer an dessen Stelle und wird zum SuperPeer. Dieser neue<br />

SuperPeer aktualisiert die Vektoren der Vorgänger- und Nachfolgergruppen und gewährleistet<br />

somit, dass jede Gruppe einen aktuellen Stand über ihre Vorgänger- und Nachfolgergruppen<br />

hat. Bei den Fingers verhält es sich leicht anders, da Suchanfragen auch ohne Fingers möglich<br />

sind. Die Anfragen können auch nur über Vorgänger und Nachfolger ihr Ziel erreichen, wenn<br />

auch mit höherer Laufzeit. Fingers sind also nicht kritisch für den Zusammenhalt des Rings<br />

und werden deswegen erst aktualisiert, wenn festgestellt wird, dass eine Referenz ungültig<br />

geworden ist.<br />

5.3 Bottom-Level-Netzwerke<br />

<strong>Hierarchische</strong> <strong>P2P</strong>-Netzwerke bieten den Vorteil, dass verschiedene Netzstrukturen<br />

zusammengeschlossen werden können, je nachdem, was an bestimmten Stellen besser zum<br />

Einsatz kommt. So können die Bottom-Level-<strong>Netze</strong> eine andere Topologie als das Top-Level-<br />

Overlay besitzen, und selbst zwischen den Gruppen kann der Aufbau der Bottom-Level-<strong>Netze</strong><br />

unterschiedlich sein. So eignen sich für die Intra-Group-Suche verschiedene Strategien, je<br />

nachdem wie viele Teilnehmer eine Gruppe hat.<br />

8


Für Gruppen mit einer kleinen Anzahl an Peers ist ein komplizierter Aufbau des Bottom-<br />

Levels wie z.B. mit Chord nicht nötig, da jeder Rechner genug Leistung aufbringen kann um<br />

selbst alle nötigen Informationen zu speichern. In dem Fall lässt sich CARP oder Consistent-<br />

Hashing nutzen. [5] Dabei speichert jeder Peer die IDs und IP-Adressen aller anderen Peers<br />

derselben Gruppe in einem eigenen Index. Jeder Peer hat dadurch eine Hash-Tabelle, in der<br />

steht, welcher Peer in der Gruppe für welchen Schlüssel zuständig ist. Im Fall von CARP<br />

bilden alle Peers einen Cluster mit einem Master und mehreren Slaves. Nach außen hin, also<br />

aus der Sicht des Top-Level-Overlays, hat der Cluster nur eine virtuelle IP-Adresse, über die<br />

der Cluster angesprochen werden kann. [8]<br />

Für Gruppen mit mehreren Hundert Peers wäre ein SuperPeer effizient, welcher alle Peers in<br />

der Gruppe verwaltet, und alle Suchanfragen und Routingaufgaben übernimmt. Dies<br />

entspricht dem typisch Client-Server-Prinzip, wobei der Server gleichzeitig der SuperPeer ist,<br />

der die Kommunikation zum Top-Level-Overlay übernimmt.<br />

Gruppen mit noch höherer Teilnehmerzahl sollten auf erprobte Systeme mit DHTs wie Chord,<br />

CAN, Pastry oder Tapestry zurückgreifen, um bestmögliche Stabilität und Effizienz zu<br />

gewährleisten.<br />

6 Vorteile<br />

6.1 Skalierbarkeit<br />

Es besteht die Möglichkeit, ein hierarchisches <strong>P2P</strong>-System nicht nur aus 2, sondern aus 3 oder<br />

mehreren Ebenen aufzubauen. Hierfür eignet es sich, im Bottom-Level das schon angepasste<br />

Top-Level-Chord anzuwenden. Es würden also mehrere Peers zu einer Gruppe<br />

zusammengefasst werden und genug von diesen Gruppen zu Gruppen einer höheren Ebene.<br />

Dies ermöglicht eine gute Skalierbarkeit der hierarchischen <strong>P2P</strong>-<strong>Netze</strong>, denn es liegt nur eine<br />

geringe Geschwindigkeitseinbuße vor. Suchanfragen erfolgen nämlich immer nur noch auf<br />

Top-Level, und müssen somit nur wenige SuperPeers durchlaufen.<br />

In [5] wurde mit statistischen Mitteln untersucht, wie viel Verbesserung durch die<br />

Verwendung einer hierarchischen DHT möglich ist im Vergleich zu einer klassischen flachen<br />

DHT. Es wurde Chord als Vergleich genutzt, und gezählt wurden die Anzahl der Sprünge<br />

innerhalb des Ringes, bis der entsprechende Peer gefunden wurde, welcher den gesuchten<br />

Schlüssel besitzt. Als Erläuterung zur Abbildung 7: P steht für die Anzahl der Peers im<br />

gesamten Netz, I für die Anzahl der Gruppen, was natürlich nur im hierarchischen Fall eine<br />

Rolle spielt, und pr bzw. ps steht für die Ausfallwahrscheinlichkeit eines Peers im Chord-<br />

Ring. Da im Top-Level-Chord ein einzelner Knoten für eine Gruppe steht mit seinen<br />

SuperPeers, kann hier eine Ausfallwahrscheinlichkeit von 0 angenommen werden. Ein<br />

ausfallender SuperPeer würde unverzüglich durch einen anderen SuperPeer ersetzt werden,<br />

wodurch der Knoten im Chord-Ring nicht ausfallen wird. Die Zahlen in der Tabelle stehen für<br />

die Anzahl der Sprünge, um einen Schlüssel zu finden. Wie zu erkennen ist, gibt es eine<br />

deutliche Verminderung der Hops (Sprünge). So wird die durchschnittliche Dauer der<br />

Suchanfrage um den Faktor 7 geteilt [5].<br />

9


Abbildung 7: Vergleich flache und hierarchische DHT (entnommen [5])<br />

Es erfolgt außerdem bei Top-Level-Chord für Anfragen immer eine zufällige Auswahl des<br />

SuperPeers aus den Vektoren, um die entsprechende Anfrage weiterzuleiten. Dies bedeutet<br />

eine bessere Lastverteilung, da nicht ein SuperPeer (sowie dessen Anbindungen) übermäßig<br />

mehr belastet wird als ein anderer. Somit ergibt sich auch hier eine bessere Skalierbarkeit,<br />

denn reicht die Anzahl der SuperPeers pro Gruppe nicht aus kann diese relativ einfach erhöht<br />

werden.<br />

6.2 Robustheit<br />

Die Nutzung von Chord im Top-Level führt nicht nur zu einer besseren Skalierbarkeit des<br />

<strong>P2P</strong>-<strong>Netze</strong>s, sondern auch zu höherer Robustheit gegenüber Ausfällen.<br />

Da kein zentraler Server existiert, welcher alle Clients steuert, bedeutet der Ausfall eines<br />

beliebigen Peers nicht die Möglichkeit des Zusammenbruches des <strong>Netze</strong>s. Im schlimmsten<br />

Fall fällt ein SuperPeer aus, was nur dahingehend tragisch wäre, da er eine bessere Leistung<br />

gebracht hat gegenüber den anderen Peers dieser Gruppe. Es wird jedoch sofort der ab jetzt<br />

bestmögliche Peer zum SuperPeer ernannt. Dies geschieht mittels einer Liste, die jeder<br />

SuperPeer über „seine“ Peers führt. Diese Liste ist so geordnet, dass potentiell gute<br />

Kandidaten zum SuperPeer möglichst oben stehen, während ungeeignete Peers unten stehen.<br />

Ein SuperPeer überwacht sozusagen ständig seine Peers und aktualisiert die Liste anhand<br />

bestimmter Kriterien wie Rechenleistung, Bandbreite und Online-Zeit des Peers.<br />

6.3 Suchoptimierungen<br />

In Abschnitt 2.3 „Super-<strong>P2P</strong>-Systeme“ wurde schon erwähnt, dass es sinnvoll ist, Computer,<br />

die untereinander eine schnelle Anbindung haben, zu einer Gruppe zusammenzufassen.<br />

Dadurch kann den Suchalgorithmus noch verbessern, wie in Abbildung 8 dargestellt. Startet<br />

ein Peer P1 eine Suchanfrage, so wird erst innerhalb der Gruppe geschaut, ob ein Peer P2<br />

verantwortlich für diesen Key ist. In dem Fall holt sich P2 die Datei von dem entsprechenden<br />

Peer P4, cached sie bei sich und leitet sie dann zu Peer P1 weiter. Erfolgt eine weiter<br />

Suchanfrage von Peer P4 nach genau der Datei, so hat sie vielleicht noch P2 im Cache und<br />

kann sie schneller, dank besserer Anbindung, an P4 senden. Die Datei muss nicht noch mal<br />

über die wahrscheinlich langsamere Verbindung von P3 geholt werden.<br />

10


Abbildung 8: Content Caching in einem Super-Peer-Netzwerk (angelehnt an [6])<br />

Natürlich spielt bei dieser Art des Cachens die Größe des Caches eine wichtige Rolle sowie<br />

die Dateien, die gecached werden. Es ist umso effizienter, je häufiger eine Datei angefordert<br />

wird, denn bei den meisten Cache-Algorithmen wie LRU (Last Recently Used) bleiben die<br />

am häufigsten benutzen Dateien im Cache, während seltene Dateien eher gelöscht bzw.<br />

überschrieben werden.<br />

7 Beispiele für hierarchische <strong>P2P</strong>-Netzwerke<br />

7.1 FastTrack<br />

Das FastTrack Protokoll wurde im März 2001 von Niklas Zennström & Janus Friis<br />

veröffentlich und erweiterte das bis dahin verwendete Gnutella Protokoll um Supernodes [9].<br />

Diese Supernodes entsprechen den in diesem Text behandelten SuperPeers.<br />

Kazaa wurde damals gleichzeitig mit dem FastTrack Protokoll entwickelt und ist die<br />

bekannteste Anwendung für dieses Netz. Wie in Abbildung 9 zu erkennen ist, gibt es zum<br />

klassisch unstrukturierten, hierarchischen <strong>P2P</strong>-System nur geringe Unterschiede, welche sich<br />

auf sicherlich darauf begründen, dass Kazaa auch kommerziell vertrieben wird. So wurden die<br />

Übertragungsprotokolle nie offen gelegt, und viele andere Clients sowie die freie<br />

Implementierung des FastTrack-Protokolls „Open FastTrack“ entstanden mittels Reverse-<br />

Engineering. [10]<br />

11


Abbildung 9: Funktionsweise von Kazaa (entnommen [3])<br />

Arbeitsweise: ein Node (Peer) fragt beim Anmelden am System nicht einen schon bekannten<br />

und aktiven Peer ab, sondern meldet sich bei einem Server an, dessen IP-Adresse direkt im<br />

Programm gespeichert ist. Dieser Server übermittelt daraufhin eine aktuelle Liste von<br />

SuperPeers, bei denen sich der Peer anmelden kann. Der Peer testet daraufhin die SuperPeers<br />

auf die Round-Trip-Time ab. Dazu wird gemessen, wie lange ein Paket vom Peer zum<br />

SuperPeer und wieder zurück braucht, also bis es beantwortet wird. Anhand dieser Zeiten<br />

meldet sich der neue Peer in der Gruppe an, dessen SuperPeers die kleinste Round-Trip-Time<br />

hat, und übermittelt dem zuständigen SuperPeer eine Liste mit den auf dem Peer verfügbaren<br />

Dateien. Suchanfragen sowie Dateiübertragungen funktionieren wie in der für hierarchische<br />

<strong>P2P</strong>-<strong>Netze</strong> typischen Art und Weise über die SuperPeers beziehungsweise direkt von Peer zu<br />

Peer.<br />

Ein großer Vorteil in der im FastTrack-Protokoll zugrunde liegenden Technik liegt darin, dass<br />

ein Peer mehrere direkte Verbindungen zu unterschiedlichen Peers aufbauen kann, um von<br />

diesen parallel Daten zu beziehen. Selbst für eine Datei ist ein simultaner Download von<br />

mehreren Peers möglich, indem stets unterschiedliche Teile der Datei herunter geladen<br />

werden. Dies ermöglicht bei geringer Bandbreite zu einzelnen Peers eine höhere<br />

Gesamtdownloadrate.<br />

7.2 Gnutella (3. Generation)<br />

Das Gnutella-Protokoll wurde noch vor dem FastTrack-Protokoll im Jahre 2000 entwickelt<br />

und veröffentlicht. Während die erste wirklich erfolgreiche Tauschbörse namens Napster mit<br />

Klagen überhäuft wurde, konzipierte man Gnutella von vornherein so, dass es ohne jegliche<br />

Server funktioniert. Damit sollte es unmöglich gemacht werden, dass das Netz von Seiten der<br />

Musikindustrie sowie der RIAA (Recording Industry Association of America) geschlossen<br />

werden kann. Dies war bei Napster der Fall mit der Stilllegung derer Server.<br />

Während in der ersten und zweiten Gnutella-Generation schmalbandige Peers entweder von<br />

der Last der Anfragen überwältigt beziehungsweise ihre Anzahl der Verbindungen angepasst<br />

wurden, wurden in der dritten Generation Hierarchien eingeführt. So genannte Ultrapeers<br />

übernehmen die Netzlast für schmalbandige Peers. [11]<br />

Dazu werden alle angeschlossenen Teilnehme in Leaves (Blätter) und Ultrapeers unterteilt.<br />

Ein Leaf entspricht dem in diesem Text behandelten Peers, ein Ultrapeer ist vergleichbar mit<br />

einem SuperPeer. Zusätzlich ist es möglich, dass sich Gnutella-Clients mit dem Netzwerk<br />

12


verbinden können, die noch nicht den Ultrapeer-Modus implementiert haben. Diese werden<br />

Legacy Peers genannt. [12]<br />

Der Aufbau des neuen Gnutella-Netzwerkes unterscheidet sich aber im Vergleich zum<br />

typischen Super-Peer-Netzwerk. Die Ultrapeers bilden zusammen mit den Legacy Peers das<br />

Top-Level-Overlay. Dadurch wird gewährleistet, dass die Clients ohne Ultrapeer-Modus<br />

vollständig im Netz integriert sind. Die Legacy Peers bauen jedoch im Gegensatz zu den<br />

Ultrapeers keine Verbindungen zu den Leaves auf. Ultrapeers haben nämlich die Aufgabe,<br />

Verbindungen von Leaves zu akzeptieren und für sie Such- und Routingaufgaben zu<br />

übernehmen. So übermittelt ein Leaf beim Anmelden an einen Ultrapeer eine Liste seiner<br />

verfügbaren Dateien. Dies erlaubt dem Ultrapeer, Anfragen nur an die Leaves weiterzuleiten,<br />

welche möglicherweise über passende Dateien verfügen. Dies reduziert die Anzahl der<br />

weitergeleiteten Nachrichten zu den Leaves, was zu einer steigenden Skalierbarkeit des<br />

Netzwerkes um einen konstanten Faktor führt [12].<br />

Ein weiterer Unterschied liegt darin, dass ein Ultrapeer mit den an ihm angeschlossenen<br />

Leaves keine in sich geschlossene Gruppe bildet; erkennbar in Abbildung 10. Ein Leaf<br />

verbindet sich im Regelfall zu 3 Ultrapeers, was allerdings im Client geregelt ist. Es wird<br />

empfohlen, die maximale Anzahl dieser Verbindungen auf 10 zu beschränken.<br />

Abbildung 10: Topologie eines modernen Gnutella-Netzwerkes (entnommen [12])<br />

Ob es einem Peer gestattet ist, Ultrapeer zu werden, wird erstens von bestimmten<br />

Bedingungen abhängig gemacht, die unbedingt erfüllt sein müssen. Dazu zählt zum Beispiel<br />

genügend Rechenleistung sowie eine ausreichende Bandbreite von empfohlenen 15 KB/s im<br />

Download und 10 KB/s im Upload. Des Weiteren ist es nötig, dass ein Ultrapeer nicht hinter<br />

einer Firewall sitzt. Auch sind bestimmte Betriebssysteme wie Windows 95 oder 98 nicht<br />

geeignet, um die größere Anzahl von Verbindungen verwalten zu können. Auch ist es wie in<br />

den Super-<strong>P2P</strong>-Systemen wichtig, dass der Client eine hohe Onlinezeit im Netzwerk<br />

vorweisen kann. Sind diese Bedingungen erfüllt, so ist aber noch nicht gesagt, dass ein Client<br />

unbedingt zu einem Ultrapeer wird. Dies ist davon abhängig, ob überhaupt weitere Ultrapeers<br />

benötigt werden. Die Notwendigkeit nach neuen Ultrapeers kann abgeschätzt werden anhand<br />

der Anzahl im Netz vorhanden Ultrapeers. [13]<br />

13


8 Literatur<br />

[1] Markus Zoier: Peer-to-Peer Tauschbörsen; Seminararbeit; Technische Universität Graz;<br />

Österreich; 2002<br />

[2] Servent; http://en.wikipedia.org/wiki/Servent; Dezember 2005<br />

[3] Rolf Domberger, Daniel Fuchs: Peer-to-Peer Netzwerke und Geschäftsmodelle;<br />

Discussion Paper 2004-04; Schweiz; 2004<br />

[4] Beverly Yang, Hector Garcia-Molina: Designing a Super-Peer Network; Stanford<br />

University; 2003<br />

[5] L. Garces-Erice, E.W. Biersack, P.A. Felber, K.W. Ross, G. Urvoy-Keller: Hierarchical<br />

Peer-to-peer Systems; France, USA; 2003<br />

[6] L. Garces-Erice, E.W. Biersack, P.A. Felber, K.W. Ross, G. Urvoy-Keller: Hierarchical<br />

Peer-to-peer Systems (Foliensammlung); France, USA; 2003<br />

[7] Hari Balakrishnan, M. Frans Kaashoek, David Karger, Robert Morris, Ion Stoica: Looking<br />

up data in <strong>P2P</strong> systems; 2003<br />

[8] Common Address Redundancy Protocol; http://de.wikipedia.org/wiki/CARP; Dezember<br />

2005<br />

[9] FastTrack; http://de.wikipedia.org/wiki/FastTrack; Dezember 2005<br />

[10] Christoph Steckelberg: Peer to Peer Netzwerke und ihre Anwendung; 2002<br />

[11] Frank Sowinski: Implementierung eines Gnutella-Clients für IPv6; Dezember 2002<br />

[12] Daniel Stutzbach, Reza Rejaie, Subhabrata Sen: Characterizing Unstructured Overlay<br />

Topologies in Modern <strong>P2P</strong> File-Sharing Systems; University of Oregon; 2005<br />

[13] Ultrapeer Election Principles: http://www.thegdf.org/wiki/index.php?title=Ultrapeer_Election_Principles;<br />

Dezember 2005<br />

14

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!