Verteilte Hash Tabelle

Werbung
Technische Universität Ilmenau
Fakultät für Elektrotechnik und Informationstechnik
Hauptseminararbeit
Verteilte Hash Tabelle (VHT)
vorgelegt von:
eingereicht am:
Mikhail Tarasov
15. 01. 2008
geboren am:
Studiengang:
Studienrichtung:
Ingenieurinformatik
Multimediale Informations- und
Kommunikationssysteme
Anfertigung im Fachgebiet:
Kommunikationsnetze
Fakultät für Elektrotechnik und Informationstechnik
Verantwortlicher Professor:
Wissenschaftlicher Betreuer:
Prof. Dr. rer. nat. habil. Jochen Seitz
Dipl.-Ing. Mais Hasan
Inhaltsverzeichnis
i
Inhaltsverzeichnis
1 Einleitung
1.1 Problembeschreibung . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1
2 P2P-Technologien
2.1 Definition . . . . . . . . . . . . .
2.2 Generationen von P2P-Netzen . .
2.2.1 Erste Generation . . . . .
2.2.2 Zweite Generation . . . .
2.2.3 Dritte Generation . . . . .
2.3 P2P-Netze in kooperativer Arbeit
.
.
.
.
.
.
3
3
3
3
5
5
7
3 Strukturierte P2P-Netze
3.1 Hashtabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Verteilte Hashtabellen (VHT) . . . . . . . . . . . . . . . . . . . . . . .
8
9
10
4 Beispiele von VHT
4.1 CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Pastry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.3 Kademlia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
12
17
20
5 Zusammenfassung und Ausblick
23
Literaturverzeichnis
24
Abbildungsverzeichnis
27
Abkürzungsverzeichnis
28
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Hauptseminararbeit Mikhail Tarasov
1 Einleitung
1
1 Einleitung
In der letzten Zeit werden Internettechnologien sehr populär. Täglich steigt die Zahl
der Internetnutzer. Das Internet nimmt mehr und mehr Plätze in unserem Leben ein.
Man nutzt das globale Netz zur Entspannung und Geselligkeit, zum Einkauf und sogar
für große Finanztransaktionen. Immer erhöhen sich die Bandbreite und der Datenumfang. Heute ist ganz normal, wenn man einen abendfüllenden Film oder noch größere
Datenmengen durch das Internet überträgt.
Je mehr werden die übertragenden Datenvolumen, desto mehr leistungsfähige Mechanismen werden gebraucht und entwickelt. Dazu gehört auch die Netztopologie, dadurch eine effizientste Nutzung der physikalischen Ressourcen des Netzes möglich wird.
Um die Belastung der einzelnen Knoten eines Netzes zu reduzieren und die Datenmengen relativ gleichmäßig zwischen mehrere Kanäle zu verteilen, werden dezentralisierte
Netzstrukturen verwenden.
In Rahmen dieser Arbeit werden die folgenden Aspekten von P2P-Netzen dargestellt:
• grundlegendes Konzept der P2P-Kommunikationen,
• die Generationen der P2P-Netzen und Technologien,
• strukturierte P2P-Netze
• verteilte Hash Tabellen (VHT)
Als den Hauptanteil der Arbeit werden die verteilten Hash Tabellen auf Basis einer
Reihe von Beispielen untersucht.
1.1 Problembeschreibung
Es existiert im Prinzip zwei grundlegende Modelle der Organisation der logischen Netzstruktur. Eine von diesen ist das Client-Server-Modell, bei der ein Knoten (Server) die
meisten Dienstleistung an sich nimmt und die anderen Knoten (Clients) nutzen die
Ressourcen des Servers. Bei diesem Modell zieht ein Ausfall des Servers ein unmittelbares Versagen des gesamten Systems nach sich.
Hauptseminararbeit Mikhail Tarasov
1 Einleitung
2
Andere Modelle besteht darin, dass alle Knoten des Netzes gleichbedeutend sind. In
diesem Fall werden die Dienstleistungen zwischen mehrere Knoten relativ gleichmäßig
verteilt. Der Ausfall eines Knotens führt nicht automatisch zum Versagen des gesamten
Systems, und seine Dienstleistungen können gleich zwischen anderen Knoten verteilt
werden. Diese Modell ist als Peer-to-peer (P2P) Kommunikationsmodell bekannt.
Es existiert auch ein gemischtes Modell, bei der das gesamte Netz auch die Knoten,
die eine besondere Bedeutung für die Funktionalität des Netzes haben, beinhaltet. Z.B.
so genannte Tracker - ein Server, der die Verwaltungsfunktionen des gesamten P2PSystems realisiert. Der Tracker besitzt in diesem Fall die Steuerinformationen über die
verfügbaren Knoten des Netzes wie einen Bezeichner und möglicherweise die Liste der
Dienstleistungen und der Ressourcen, die jeder Knoten zur Verfügung stellt. Dieses
Modell wird Hybridmodell genannt.
Hauptseminararbeit Mikhail Tarasov
2 P2P-Technologien
3
2 P2P-Technologien
In diesem Kapitel werden die grundlegenden Ideen und Konzeptionen von P2P-Kommunikationen erläutert und die Hauptschritte der Technologieentwicklung gezeigt.
2.1 Definition
Peer-to-Peer (oder P2P) ist eine Kommunikationsmodell, bei der jeder Knoten des
Netzes die gleiche Funktionalität hat und jeder von diesen selbst die Kommunikationsprozesse initiieren kann. Im Unterschied zum Client-Server-Modell lässt eine solche
Organisation zu, die Arbeitsfähigkeit des Netzes bei einer beliebigen Zahl und einer beliebigen Kombination der zugänglichen Knoten zu unterstützen. Auf die logische Ebene
kann jeder Knoten dieses Netzes mit jedem andern Knoten direkt kommunizieren. Die
logische Struktur einer solcher Netz wird auf die Abb. 2.1 dargestellt.
2.2 Generationen von P2P-Netzen
In der Entwicklung der P2P-Technologien können drei Generationen betrachtet werden. [Peer]
2.2.1 Erste Generation
Die ersten P2P-Netzen hatten eine zentralisierte Struktur, dass bedeutet, dass es zwei
verschiedenen Typen der Knoten ins Netz gibt. Ein Netz solcher Struktur wird auf der
Abb. 2.2 gezeigt. Zum ersten Typ der Knoten gehören die Server, welche die indexierten
Listen aller verfügbaren Ressourcen und die Steuerinformationen über das gesamte
Netz beinhalten. Zum zweiten Typ gehören Nutzerknoten.
Als ein Beispiel solches Netzes kann Napster genannt werden. Napster war eine
Musiktauschbörse, die 1998 von Shawn Fanning programmiert wurde. Sie sollte dem
Zwecke dienen, leichter MP3-Musikdateien über das Internet austauschen zu können.
[Wiki09b].
Hauptseminararbeit Mikhail Tarasov
2 P2P-Technologien
4
Abbildung 2.1: Beispiel eines P2P-Netzes
Abbildung 2.2: P2P-Netz mit voll zentralisierter Struktur
Hauptseminararbeit Mikhail Tarasov
2 P2P-Technologien
5
Am Anfang initiiert ein Nutzerknoten (Client) die Verbindung mit einem zentralen
Server wie bei Client-Server-Architektur. Der Client meldet sich mit der Liste eigener verfügbarer Ressourcen beim Server an. Alle Suchverfahren werden auf dem Server
durchgeführt und als Ergebnis bekommt der Client die Liste der IP-Adressen der anderen Client-Knoten, die die gesuchten Ressourcen zur Verfügung stellen. Weiter werden
die Clients direkt mit einander kommunizieren, um die Daten zu übertragen. Die Funktionalität eines solchen Netzes ist völlig von dem Server abhängig: fällt der Server aus,
funktioniert das gesamte Netz nicht mehr.
2.2.2 Zweite Generation
Die P2P-Netze der 2. Generation sind die Netze mit vollständig dezentraler Struktur,
wie es auf der Abb. 2.1 gezeigt. Bei dieser Struktur sind alle Knoten gleichwertig
und es gibt keine zentralen Server, welche die Suchanfragen bearbeiten. Damit das
gesamte System funktioniert, muss ein Knoten mindestens einen anderen finden. Dafür
existieren die verschiedenen Methoden:
• vordefinierte Serverlisten,
• Gwebcache-Seiten im Internet (z.B. bei Gnutella [link02]),
• der Austausch von Host-Listen über IRC.
Nachdem die Verbindung mit einem Knoten aufgebaut wurde, bekommt der neue
Knoten eine Liste der anderen Knoten, mit denen er kommunizieren kann. Die Anzahl
der Verbindungen wird in den Knoteneinstellungen definiert.
Die Suchanfrage sendet der Knoten zunächst nur an benachbarte Knoten, die benachbarten Knoten leiten dann ihrerseits die Anfrage an ihre Nachbarn weiter, bis die
angeforderte Information gefunden wird. Anschließend kann eine direkte Verbindung
zwischen suchendem und anbietendem Knoten hergestellt werden.
Als Vorteil vor den Netzen erster Generation haben die Netze zweiter Generation
hohe Ausfallsicherheit durch die selbst weitergeleiteten Suchanfragen. Sind einige Knoten unerreichbar, ist es möglich, eine andere Datenquelle zu finden. Aber da es keine
zentralen Server gibt, können die Suchanfragen lange dauern, und eine hohe Netzwerkbelastung verursachen.
2.2.3 Dritte Generation
Die P2P-Netze der 3. Generation vereinigen in sich die meisten Vorteile der vorhergehenden Generationen. Solche Netze haben entweder vollständig dezentrale (Abb. 2.1)
Hauptseminararbeit Mikhail Tarasov
2 P2P-Technologien
6
oder gemischte Struktur. Bei gemischter Struktur existieren mehrere Gruppen von
Knoten: einige Knoten, die mehr Ressourcen zur Verfügung haben, können auch die
zusätzlichen Funktionen ausführen, z.B. die Indexierung von Daten, um Suchverfahren zu optimieren. Solche Knoten werden aber nicht festgelegt, sondern dynamisch
organisiert. In dem Netz kann auch ein zentraler Server existieren, der aber nur begrenzte Funktionen hat, z.B. Benutzeridentifizierung. Ein Beispiel eines Netzes der 3.
Generation mit gemischter Struktur wird auf der Abb. 2.3 dargestellt.
Abbildung 2.3: Ein P2P-Netz mit einer gemischten Struktur
In den Netzen der 3. Generation werden auch Algorithmen, wie z.B. Verteilte Hash
Tabellen als eines Suchverfahren, verwendet, um die Hauptprobleme von P2P-Netzen
zu beseitigen. Zu solchen Problemen gehört folgendes:
• Suche nach den verfügbaren Daten;
• Selbstorganisation beim Ausfall, Ein- und Ausschalten den einzelnen Knoten;
• Sicherheit;
• Kommunikationsdienstgüte (Quality of Service, QoS).
Die P2P-Netze der 3. Generation finden die breite Anwendung in folgenden Gebieten:
Hauptseminararbeit Mikhail Tarasov
2 P2P-Technologien
7
• Dateiverteilung (z.B. Musikaustauschbörsen);
• kooperativer Arbeit zwischen weltweiten Forschungsgruppen;
• sprach- und videobasierte Kommunikationen (z.B. Skype [Skyp]);
• Internet Radio und Fernsehen.
2.3 P2P-Netze in kooperativer Arbeit
Eine wichtige Rolle spielen die P2P-Technologien in kooperativer Arbeit oder CSCW
(computer supported cooperative work). Durch die Anwendung von P2P-Architekture
werden die allgemeinen Probleme von Client-Server-Architekturen gelöst. Das verteilte System ermöglicht, die Belastung des Netzes relativ gleichmäßig zu verteilen, was
besonders aktuell beim Austausch von großen Mengen an Daten ist. [BQXFSX07]
Durch die Anwendung von P2P-Tchnologien ist es möglich, verteilte Rechnungen
durchzuführen. Zum Beispiel nutzt ein amerikanisches Projekt von United Devices die
freie Prozessorszeit einzelner Rechner für die biologische Forschung. [UNIV08]
Möchtet eine z.B. pharmazeutische Firma eine Forschung, die die verteilten Berechnungen braucht, durchführen, musste sie früher ihre eigenen Protokolle und Methoden
entwickeln, aber heute gibt es Plattformen, die die nötige Funktionalität automatisch
realisieren.
Ein Beispiel solcher Plattform ist die JXTA-Technologie von SUN Microsystems. Die
JXTA-Plattform basiert auf einer Reihe von öffentlichen Protokollen, durch die verschiedene Geräte von Handys und PDA’s bis zu PC’s und Server über P2P-Technologie
miteinander kommunizieren können. Durch die Benutzung von XML-basierten Protokollen ist es möglich, die spezielle Software für mehrere Plattformen zu entwickeln (z.B.
Java und .NET).
Es wird ein virtuelles Netz aus verschiedenen Geräten aufgebaut, wo jeder Knoten mit jedem anderem kommunizieren kann, unabhängig davon, welche physikalische
Struktur das Netz hat, sogar auch über Firewall und NAT. [Sun 08]
Hauptseminararbeit Mikhail Tarasov
3 Strukturierte P2P-Netze
8
3 Strukturierte P2P-Netze
Ein P2P-Netz wird auf Basis von einem existierenden IP- oder anderen Netz aufgebaut
und oft als Overlay-Netz gezeigt (s. Abb. 3.1). Es gibt zwei prinzipielle Moglichkeiten
zum Aufbau eines solchen P2P-Netzes:
• unstrukturierte (ad hoc) - das Netz wird sich undeterministisch bei dem
Hinzufugen der neuen Knoten oder Daten ändern;
• strukturierte - die Struktur von Netz wird sich laut einigen bestimmten Regeln
ändern.
Abbildung 3.1: Ein Overlay-Netz auf Basis eines IP-Netzes
Hauptseminararbeit Mikhail Tarasov
3 Strukturierte P2P-Netze
9
In unstrukturierten P2P-Netzen entstehen beliebige Overlay-Verbindungen zwischen
den teilnehmenden Knoten. Dies führt zu einer vermaschten Overlay-Topologie, die
eine hohe Zahl an redundanten Pfaden und Schleifen aufweist. Um in einem unstrukturierten P2P-Netz Inhalte zu finden, muss eine Suchanfrage durch das Netz geflutet
werden, damit möglichst viele Knoten mit den gesuchten Inhalten gefunden werden.
Dieses Suchprinzip hat neben einem hohen Signalisierungsverkehr den Nachteil, dass
eine Suchanfrage nicht immer vollständig aufgelöst werden kann, d.h. nicht alle zur
Suchanfrage passenden Inhalte gefunden werden können.
Um dieses Problem zu lösen, werden die strukturierten P2P-Netze verwendet. Durch
das Zuweisen von Hash-Werten zu den teilnehmenden Knoten und zu allen zur Verfügung gestellten Inhalten, ist es möglich, Inhalte auf Zuständigkeitsbereiche von Knoten
so abzubilden, dass damit eine eindeutige Zuordnung von Inhalten zu Peers erreicht
wird. Dadurch müssen die Suchanfragen nicht mehr durch das Overlay-Netz geflutet
werden, sondern direkt an den zuständigen Knoten geroutet werden können.
In einem strukturierten P2P-Netz besitzt jeder Knoten Informationen über seine
direkten Nachbarn in der Overlay-Topologie. Außerdem kennt er weitere Knoten in
anderen Overlay-Regionen, die verwendet werden, um Suchen möglichst schnell an
den zuständigen Knoten weiter zu leiten. [HHKS+ 08]
Als ein Suchverfahren in strukturierten P2P-Netzen wird die Methode von verteilten
Hash Tabellen genutzt.
3.1 Hashtabellen
In Informatik ist eine Hashtabelle eine Datenstruktur, die aus den Paaren SchlüsselWert besteht. Die Hauptaufgabe einer solchen Struktur ist ein möglichst schnelles
Suchverfahren, um bei einem gegebenen Schlüsselwert die entsprechenden Daten zu
finden. Diese Struktur wird auf Grund der Transformation von Schlüsselwert mit Hilfe
einer Hash-Funktion aufgebaut. Der entsprechende Hash-Wert von Schlüssel wird als
ein Index in der Tabelle benutzt. Ein Beispiel von Hashtabelle wird auf der Abb. 3.2
gezeigt.
Hashtabellen unterstützen das effiziente Einfügen eines neuen Elements in O(1)Zeit. Die Suchzeit kann aber mehr sein und hängt von der Hash-Funktion und der
Überbelegung der Tabellengröße ab. In optimalem Fall wird die Suchzeit auch O(1)
entsprechen.
Typische Operationen auf den Hashtabellen sind Einfügen, Suchen und Löschen eines
Eintrags. Diese Operationen brauchen eine bestimmte relativ konstante Zeit, wodurch
Hauptseminararbeit Mikhail Tarasov
3 Strukturierte P2P-Netze
10
Abbildung 3.2: Eine Hashtabelle. Nach [Wiki09a]
die Hashtabellen sehr effizient sind.
Ein Problem dabei ist die Möglichkeit der Kollisionen. Die Hash-Funktionen sind
nicht injektive Funktionen, das bedeutet, dass es für mehrere Schlüsselwerte ein gleicher
Hashwert existiert. Daraus folgt, dass mehrere Einträge in der Tabelle an derselben
Stelle stehen können. Falls die Hash-Funktion einen existierenden Hashwert produziert,
muss eine alternative Stelle in der Tabelle für den neuen Eintrag gefunden werden.
Als Hauptvorteil dieser Methode kann der sofortige Zugriff durch den Hash-Wert auf
die Inhalte in einer Tabelle im Vergleich zu der Suche nach dem Schlüssel genannt werden. Ein wesentlicher Nachteil ist die Notwendigkeit von Restrukturierung des Indexes,
falls die Tabelle einen gewissen Füllgrad überschritten hat. [Wiki09a]
3.2 Verteilte Hashtabellen (VHT)
Eine Einsatzmöglichkeit für die Hashtabellen ist die Verteilung der Tabelle über die
mehreren Knoten. Mittels einer Hash-Funktion werden den Datenobjekten Schlüssel
in einem linearen Wertebereich vergeben. Dieser Schlüsselraum muss möglich gleichmäßig zwischen den Knoten verteilt werden. Daraus folgt, dass jeder Knoten für einen
(oder mehrere) Schlüsselbereich zuständig ist. Die Verteilung der Hashtabelle erfordert
ständige Anpassungen durch Ausfall, Beitritt und Austritt von Knoten.
Eigenschaften von VHT sind:
• Selbstorganisation: das gesamte Netz wird automatisch auf grund der bestimmten Regeln aufgebaut.
• Skalierbarkeit: das Netz sollte die Möglichkeit zu Erweiterungen auf große Anzahl der Knoten erlauben.
Hauptseminararbeit Mikhail Tarasov
3 Strukturierte P2P-Netze
11
• Lastenverteilung: Die Daten werden möglichst gleichmäßig auf alle Knoten
verteilt.
• Fehlertoleranz: Das System sollte zuverlässig sein, falls einige Knoten ausfallen
oder das System verlassen.
• Robustheit: Das Netz sollte richtig funktionieren können, falls ein Teil der Knoten versuchen, das System zu stören.
Verteilte Hashtabellen finden breite Anwendung in modernen P2P-Netzen für den
Datenaustausch (z.B. CAN, Pastry, Kademlia) und für die Datenspeicherung (z.B.
OpenDHT [SRYu05]). [Wiki09c]
Hauptseminararbeit Mikhail Tarasov
4 Beispiele von VHT
12
4 Beispiele von VHT
In diesem Kapitel werden die konkreten Realisierungen der verteilten Hashtabellen
anhand der folgenden Beispiele untersucht:
• CAN (Content-Addressable Network)
• Pastry
• Kademlia
Für jeden Vertreter werden die Grundstruktur des Netzes, Selbstorganisation, Wegewahl und aktuelle Einsatzszenarien und Anwendungen beschrieben.
4.1 CAN
Content-Addressable Network (oder CAN) ist eine Realisierung des Konzepts von verteilten Hashtabellen. Für CAN werden die folgenden Anforderungen aufgestellt:
• Skalierbarkeit,
• Fehlertoleranz,
• volle Selbstorganisation.
Ein skalierbares P2P-System fordert als erstes einen skalierbaren Indexierungsmechanismus. Einer dieser Mechanismen wird im CAN realisiert. Trotzdem ist das CAN
nicht nur für P2P-Systeme, sondern auch für umfangreiche Datenbankmanagementsysteme (z.B. OceanStore [JKZh]) geeignet. Alle diese Systeme brauchen eine effiziente
Methode zum Datenspeichern und -Zugreifen in einer großen verteilten Datenbankinfrastruktur und skalierbare Indexierung als einen der wichtigsten Mechanismen.
CAN stellt eine Hashtabelle mit bestimmten schnellen Operationen dar:
• Hinzufügen,
• Suchen,
Hauptseminararbeit Mikhail Tarasov
4 Beispiele von VHT
13
• Löschen
eines Schlüssel-Wert Paars. Das CAN wird aus mehreren einzelnen Knoten, die einer
Untermenge von Tabelleneinträgen (eine Zone) entsprechen, gebaut. Zusätzlich besitzt jeder Knoten die Informationen über eine kleine Anzahl der benachbarten Zonen.
Die Anfrage eines bestimmten Schlüssels wird vom Zwischenknoten zum Knoten einer
CAN-Zone, die den gesuchten Schlüssel besitzt, weitergeleitet.
Dar Basis des CANs ist ein virtuelles d-dimensionales kartesisches Koordinatensystem auf einem d-Torus. Dieser Koordinatenraum ist rein logisch und verbindet mit
keinem physikalischen Koordinatenraum. Zu jedem Zeitpunkt wird der Koordinatenraum dynamisch zwischen allen Knoten des CANs so verteilt, dass jeder Knoten eine
eigene Zone des vollen Raums, die nur zu diesem Knoten gehört, besitzt. Ein Beispiel
eines 2-dimensionalen CAN-Koordinatenraum wird auf der Abb. 4.1 gezeigt.
Abbildung 4.1: Beispiel des CANs mit 5 Knoten im 2-dimensionalen Raum.
Nach [Sylv00]
Der virtuelle Koordinatenraum wird, um Paare (Schlüssel, Wert) zu platzieren, auf
folgende Weise benutzt: um ein Paar (Si , Wi ) zu platzieren, wird den Schlüssel in
einen Punkt P des Koordinatenraums mittels einer uniformen Hash-Funktion abgebildet. Das Paar (Si , Wi ) wird beim Knoten, der zur Zone, wo Punkt P liegt, gehört, in
der Hashtabelle gespeichert. Um einen Wert Wi , der dem Schlüssel Si entspricht, anzufordern, wird den Schlüssel mittels derselbe Hash-Funktion in den Punkt P abgebildet
und der Wert Wi wird aus dem Punkt P zurückgeliefert.
Die Knoten organisieren sich in einem Overlay-Netz selbst, das dem virtuellen Koordinatenraum entspricht. Die Knoten kennen und erneuern regelmäßig eine Liste der
IP-Adressen und der Koordinaten der Zone von Knoten, die die benachbarten Zonen
in diesem Koordinatenraum besitzen. Diese Liste dient als eine Routingtabelle, um das
Routing zwischen den Punkten des Koordinatenraums zu ermöglichen.
Hauptseminararbeit Mikhail Tarasov
4 Beispiele von VHT
14
In einem d-dimensionalen Koordinatenraum sind zwei Knoten benachbart, wenn ihre
(d−1) Koordinaten gleich sind und eine Koordinate der beiden sich auf 1 unterscheidet.
Eine CAN-Nachricht beinhaltet die Zielkoordinaten. Durch die Liste der Koordinaten und der IP-Adressen der benachbarten Knoten leitet ein Knoten die Nachricht
einem der Knoten, der die näheren Koordinaten zum Ziel hat, weiter. Für einen ddimensionalen auf n Zonen geteilten Raum hat ein durchschnittlicher Routingpfad die
Länge (d/4) · n1/d und jeder einzelne Knoten hat 2d Nachbarn. Falls ein oder mehrere
benachbarten Knoten ausfallen, wird ein neuer Pfad automatisch aufgebaut.
Um das Wachstum des CANs zu ermöglichen, muss ein Teil des Koordinatenraums
jedem neuen Knoten zugewiesen werden. Es wird durch die Teilung einer existierenden
Zone in zwei Hälbzonen realisiert. Dieser Prozess besteht aus drei Schritten:
1. Zuerst muss der neue Knoten einen existierenden Knoten des CANs finden.
2. Weiter muss ein Knoten gefunden werden, deren Zone geteilt wird.
3. Abschließend müssen die Nachbarn der geteilten Zone informiert werden, um den
neuen Knoten zum Routing hinzuzufügen.
Ein neuer CAN-Knoten findet zuerst die IP-Adresse eines existierenden Knotens
im System. Das Funktionieren des CANs ist unabhängig davon, durch welche Bootstraping-Methode dieser Knoten gefunden wird.
Um eine Zone zu finden, wählt der neuen Knoten einen zufälliger Punkt P im Koordinatenraum und sendet eine JOIN-Anfrage mit Zielkoordinaten des Punktes P . Der
aktueller Besitzer dieser Zone teilt die Zone und weist eine Halbzone dem neuen Knoten zu. Danach werden die Schlüssel-Wert Paaren dieser Halbzone dem neuen Knoten
übergegeben.
Der neue Knoten weiß die Koordinaten der benachbarten Zonen vom vorherigen
Besitzer und alle benachbarten Knoten werden über die neue Verteilung des Raums
informiert. Das Hinzufügen eines neuen Knotens führt nur zu Änderungen in einem
kleinen lokalen Gebiet im Raum. Die Anzahl der benachbarten Knoten hängt nur von
der Dimension des Raums und nicht von der gesamten Anzahl der Knoten im CAN
ab.
Das CAN muss auch fehlertolerant bei einem Ausfall eines oder mehrerer Knoten
sein. Dazu wird ein Takeover -Algorithmus verwendet. Normalerweise sendet jeder Knoten periodisch eine UPDATE-Nachricht mit den Koordinaten eigener Zone und der
Liste aller Nachbarn allen benachbarten Knoten. Falls ein Knoten entscheidet, dass
ein Nachbar ausfällt, initiiert er einen Takeover -Mechanismus und startet einen Timer. Jeder Nachbar des ausgefallenen Knotens muss diese Operation unabhängig von
Hauptseminararbeit Mikhail Tarasov
4 Beispiele von VHT
15
Anderen machen und den Timer proportional der Größe eigener Zone initiieren. Nach
dem Timeout sendet der Knoten den allen Nachbarn des ausgefallenen Knotens eine TAKEOVER-Nachricht mit Größe eigener Zone. Dadurch wird ein benachbarter
Knoten, der noch verfügbar ist und die kleinste Zone besitzt, effizient ausgewählt.
Trotzdem ist es möglich, dass das CAN zu einem inkonsistenten Zustand kommt.
In diesem Fall wird ein Reparaturmechanismus gestartet. Die Knoten initiieren eine
expansive Ringsuche nach den Knoten außer dem ausgefallenen Gebiet, danach werden
die Nachbarschaften rekonstruiert und das Takeover-Mechanismus wieder gestartet. Es
kann passieren, dass nach diesem Verfahren einige Knoten mehr als eine Zone besitzen.
Mögliche Erweiterungen
Die Effizienz eines CAN-Systems kann durch die folgenden Maßnahmen erhöht werden:
• die Erhöhung der Anzahl der Dimensionen des CAN-Koordinatenraums;
• die Einführung der Realitäten - mehrerer Koordinatenräume;
• die Verbesserung des CAN-Routings;
• die Überbelastung der Koordinatenzonen;
• mehrere Hash-Funktionen;
• die topologieabhängige Bildung des CAN-Overlay-Netzes;
• die gleichmäßigere Verteilung der Zonen;
• Caching;
• Replikation.
Für ein CAN-System mit n Knoten und d Dimensionen wird die Pfadlänge als
O(dn1/d ) skaliert. Also die Erhöhung der Dimension des CAN-Koordinatenraums reduziert die Routingpfadlängen und die entsprechenden Verzögerungen durch das kleine
Wachstum der Routingtabelle.
Das CAN kann aus mehreren unabhängigen Koordinatenräumen, so genannten Realitäten, bestehen. Jeder Knoten solches Systems besitzt eine Zone jeder Realität. Für
CAN mit r Realitäten hält jeder Knoten r Zonen (eine Zone je Realität) und speichert r unabhängigen Liste der Nachbarschaft. Der Inhalt der Hashtabelle wird in
jeder Realität dupliziert, wodurch wird die Erreichbarkeit der Daten erhöht. Für die 3
Hauptseminararbeit Mikhail Tarasov
4 Beispiele von VHT
16
Realitäten zum Beispiel werden die Daten nur dann unverfügbar, wenn alle 3 Knoten
in den Realitäten unerreichbar sind.
Der CAN-Routing kann durch die Berücksichtigung der darunterliegenden IP-Topologie verbessert werden. In diesem Fall werden die Verzögerungen für jeden benachbarten Knoten gemessen und die Nachrichten werden entsprechend der Zielkoordinate zu
dem Nachbarn mit kleinster Verzögerung weitergeleitet.
Bis jetzt wurde jede Zone mit einem einzigen Knoten assoziiert. Aber es ist möglich,
es so machen, dass zu jeder Zone mehrere Knoten gehören. In diesem Fall speichert
jeder Knoten nicht nur die Listen der benachbarten Knoten, sondern auch der Knoten,
die auch zu dieser Zone gehören. Die Überbelastung der Zonen erhöht durch die Replikation die Verfügbarkeit der Daten, aber die Datenmenge einzelnen Knoten steigt
proportional der maximalen Anzahl der Knoten in der Zone. Die Pfadlängen werden
reduziert und die Fehlertoleranz wird erhöht (Die Zone fällt aus, nur wenn alle Knoten
der Zone gleichzeitig ausfallen).
Um die Verfügbarkeit der Daten zu erhöhen, können k verschiedene Hash-Funktionen
benutzt werden. Diese Funktionen bilden einen Schlüsselwert auf k Punkten. Die Daten
werden unverfügbar, nur wenn alle k Knoten simultan ausgefallen sind.
Normalerweise werden die Knoten zu einer Zone zufällig eingeordnet, es ist aber
möglich die physikalische Netzwerktopologie zu berücksichtigen, um die geographisch
extrem langen Pfaden zwischen den benachbarten Knoten zu vermeiden.
Beim Hinzufügen eines neuen Knotens wird eine Zone zufällig gewählt und geteilt.
Stattdessen kann der aktuelle Besitzer dieser Zone die Größe dieser Zone mit den
Größen der benachbarten Zonen vergleichen und die größte Zone kann danach verteilt
werden. Dadurch entsteht die gleichmäßigere Verteilung von Zonen und Belastungen.
Beim Caching kann jeder Knoten zusätzlich zu eigenen Daten auch den Cache besitzen, wo die zusätzlichen Daten, die oft gebraucht werden, gespeichert werden. Der
Knoten prüft zuerst, ob die angeforderten Daten im Cache sind, und leitet die Anfrage,
nur wenn die Daten im Cache nicht vorhanden sind, weiter.
Bei der Replikation können die Daten bei der Anfrage bei den benachbarten Knoten
dupliziert werden. Dadurch werden gesamte Regionen mit gebräuchlichen Daten entstehen. Als Folge erhöht sich die Verfügbarkeit dieser Daten durch die Redundanz der
Datenquellen und Pfade.[Sylv00]
Hauptseminararbeit Mikhail Tarasov
4 Beispiele von VHT
17
4.2 Pastry
Ein weiteres Beispiel von strukturierten Netzen, die Technologie der verteilten Hashtabellen benutzen, ist Pastry. Pastry ist ein Grundkonzept zur Bildung verschiedener
P2P-Internetanwendungen, wie die Dateivermittlung und -Speicherung, Gruppenkommunikationen und die Namensysteme.
Pastry hat die folgenden Eigenschaften: jeder Knoten im Pastry-Netz hat seinen
eigenen numerischen Bezeichner (NodeID). Eine Pastry-Nachricht mit einem numerischen Schlüssel wird effizient einem Knoten, deren NodeID numerisch nächst zu dem
Schlüssel ist, weitergeleitet. Die gesamte maximale Anzahl der Hops wird auf O(log N )
abgeschätzt, wo N die Anzahl der Knoten im Pastry-Netz ist.
Jeder Pastry-Knoten beachtet die unmittelbar benachbarten im NodeID-Raum Knoten und registriert alle Ereignisse wie Hinkommen, Ausfall und Wiederherstellen. Da
die NodeIDs zufällig verteilt werden, gibt es die hohe Wahrscheinlichkeit, dass die
Knoten mit benachbarten NodeIDs in geographisch verschiedenen Plätzen liegen.
Die Anwendungen können diese Eigenschaften unterschiedlich nutzen. Z.B. PAST
[RoDr01] nutzt die FileID, die durch die Hash-Funktion des Dateinamens und des
Besitzers berechnet wird, als Pastry-Schlüssel. Die Kopien dieser Datei werden in k
Knoten, deren NodeIDs nächst zu dem Schlüssel sind, platziert. Die Datei kann über
die FileID als Schlüssel erreicht werden. In diesem Fall ist die Datei erreichbar, solange
mindestens einer der k Knoten verfügbar ist.
In SCRIBE [RKCD01], einem System zur Publikationen und Subskriptionen, wird
die Liste der Abonnenten im Knoten, deren NodeID nächst zu dem Hash von Namen
des Themas ist, gespeichert.
Ein Pastry-System ist ein selbst organisierendes Netz, in welchem jeder Knoten einen
128-Bit Bezeichner oder NodeID hat. Die NodeID wird zum Identifizieren des Knotens
im NodeID-Raum, dessen Grenzen von 0 bis (2128 − 1) liegen, benutzt. Die NodeID
wirddem Knoten zufällig gegeben, wenn der zum System hinzugefügt wird, wodurch
die NodeIDs werden relativ gleichmäßig im 128-Bit Raum verteilt sind. Um die NodeID
eines Knotens zu berechnen, kann eine Hash-Funktion von der IP-Adresse oder dem
öffentlichen Schlüssel benutzt werden.
Falls ein Pastry-Netz aus den N Knoten besteht, kann eine Nachricht in weniger
als log 2b N Schritten zum Zielknoten zugestellt werden. Die Zustellung ist garantiert,
solange weniger als |L|/2 Knoten mit benachbarten NodeIDs ausgefallen sind. Die b
und |L| sind die Konfigurationsparameter mit dementsprechenden typischen Werten 4
und 16 oder 32.
Hauptseminararbeit Mikhail Tarasov
4 Beispiele von VHT
18
Jedem Pastry-Knoten entspricht einem Zustand, der über eine Routingtabelle, eine
Nachbarschaftsmenge (neighborgood set) und eine Menge der Blätter (leaf set) bestimmbar ist. Die Routingtabelle besteht aus log 2b N Spalten und (2b − 1) Einträgen
je Spalte. (2b − 1) Einträge der Spalte n zeigen auf die Knoten, deren NodeIDs mit
der eigenen NodeID in den n ersten Ziffern übereinstimmen und deren (n + 1). Ziffer
beliebig von 0 bis (2b − 1) außer eigenen (n + 1). Ziffer ist. Jeder Eintrag beinhaltet
die IP-Adresse eines der Knoten, dessen NodeID ein dementsprechendes Präfix hat.
Falls kein Knoten des Gebiets bekannt ist, bleibt der Eintrag leer. Ein Beispiel einer
Pastry-Routingtabelle eines Knotens wird auf der Abb. 4.2 gezeigt.
Die Nachbarschaftsmenge beinhaltet die NodeIDs und die IP-Adressen der |M |
Nächsten zu diesem Knoten. Die Nachbarschaftsmenge wird typischerweise beim Routing nicht benutzt. Das Ziel der Nachbarschaftsmenge ist die bessere Möglichkeit zur
Abschätzung von Lokalitätseigenschaften. Unter der Lokalität versteht man die Abstände zwischen den Knoten im Sinne von der Anzahl der IP Hops oder den geographischen Abständen. Der Eintrag der Routingtabelle wird mit der Berücksichtigung
besseren Lokalitätseigenschaften auf Grund der Nachbarschaftsmengen der Knoten gewählt. Die Blättermenge besteht aus |L|/2 Knoten mit numerisch nächsten größeren
NodeIDs und |L|/2 Knoten mit numerisch nächsten kleineren NodeIDs relativ dem
eigenen NodeID. Die Blättermenge wird während des Routings benutzt, um die Wegewahlverfahren zu optimieren. Die typischen Werte von |L| und |M | sind 2b oder 2 · 2b
(16 oder 32).
Routing
Nachdem ein Knoten eine Nachricht bekommt, prüft er zuerst, ob der Schlüssel der
Nachricht von der Blättermenge abgedeckt wird. Falls es so ist, leitet der Knoten die
Nachricht direkt dem Zielknoten, genauer gesagt, dem Knoten von der Blättermenge,
dessen NodeId nächst zu dem Schlüssel der Nachricht liegt, weiter.
Falls der Schlüssel durch die Blättermenge nicht abgedeckt wird, wird die Routingtabelle so benutzt, dass die Nachricht an den Knoten, dessen Präfix mit dem Schlüssel
auf mindest ein Ziffer mehr übereinstimmt, weitergeleitet wird. Es ist möglich, dass der
Eintrag in der Routingtabelle leer oder der Knoten aus der Tabelle unverfügbar ist. In
diesem Fall wird die Nachricht einem Knoten aus Blättermenge mit geeignetem Präfix
weitergeleitet, solange ein Knoten mit nächstem zum Schlüssel NodeID gefunden wird.
Ein Beispiel des Routingsverfahren wird auf der Abb. 4.3 dargestellt.
Hauptseminararbeit Mikhail Tarasov
4 Beispiele von VHT
Abbildung 4.2: Routingtabelle einer Pastry-Knoten mit dem NodeID 65a1x, b=4. Die entsprechenden IP-Adressen werden nicht gezeigt. Nach [CDHR02]
19
Abbildung 4.3: Routing
einer
Nachricht mit dem Schlüssel
d46a1c von Knoten 65a1fc.
Nach [CDHR02]
Selbstorganisation
Wenn ein neuer Knoten zum Pastry-System hinzugefügt werden will, muss er die eigenen Zustandstabellen initialisieren und die anderen Knoten über sich informieren.
Zuerst ist die Information über einen der existierenden im System Pastry-Knoten mit
NodeID A nötig. Dieser Knoten A kann durch verschiedene Methoden gefunden, oder
direkt eingesetzt werden. Hat der neue Knoten die NodeID X, sendet er über den
Knoten A eine JOIN-Nachricht mit dem Schlüssel gleich X. Das Pastry-System leitet die Nachricht zu einem Knoten Z, dessen NodeID nächst zu X ist, weiter. Als
eine Bestätigung senden die Knoten A, Z und alle dazwischen dem Knoten X ihre
Zustandstabellen zurück. Auf Grund dieser und zusätzlich angeforderten Tabellen einiger anderen Knoten bildet der neue Knoten X seine eigene Zustandstabellen und
informiert die Anderen, dass er jetzt verfügbar ist.
Beim Hinzufügen oder Verlassen eines Knoten des Systems müssen nur wenige Knoten ihre Zustände (Routingtabelle und Blätter- und Nachbarschaftsmengen) ändern.
Ein Problem, das wegen des fehlerhaften IP-Routing (z.B. ein Host kann von manchen Hosts unerreichbar und von Anderen erreichbar sein) entstanden werden kann, ist
die Segmentierung des Overlay-Netzes. Um das Problem zu beseitigen und das Netz
wieder zu rekonstruieren, wird eine expandierende Ringsuche nach anderen existierenden Pastry-Knoten in der Umgebung durch IP-Multicast verwendet.[RoDr]
Hauptseminararbeit Mikhail Tarasov
4 Beispiele von VHT
20
4.3 Kademlia
Ein weiteres System von verteilten Hashtabellen ist Kademlia. Das System basiert auf
einer Topologie mit einer XOR-Metrik. Durch jede Nachricht dieses Systems werden die
Verbindungsinformationen ständig aktualisiert. Das System nutzt diese Informationen,
um die parallelen asynchronen Anfragenachrichten ohne großen Verzögerungen, falls
einer Knoten ausgefallen ist, zu vermitteln.
Kademlia fasst in sich die Eigenschaften von P2P-Systemen vorheriger Generationen
zusammen, wodurch die Menge von Konfigurationsverkehr zwischen den benachbarten
Knoten reduziert wird. Die Konfigurationsinformation ensteht automatisch als Nebenprodukt der Anfragenabarbeitung. Die Knoten besitzen genug Erkenntnisse und
Flexibilität, um die Anfragen einen optimalen Pfads entlang weiterzuleiten. Kademlia nutzt auch die parallelen asynchronen Anfragen, um die Verzögerungen, die durch
ausgefallene Knoten entstanden werden, zu vermindern.
Jeder Knoten im System bekommt einen 160-Bit Bezeichner. Der Schlüssel eines
Eintrags der Hashtabelle ist auch eine 160-Bit Zahl. Bei Suche und Platzieren eines Schlüssel-Wert Paars nutzt Kademlia eine Distanznotation zwischen zwei Bezeichnern (Knotenbezeichner und Schlüssel). Seien x und y zwei 160-Bit Bezeichner, bestimmt Kademlia eine Distanz als exklusive Oderverknüpfung der beide Zahlen x und
y: d(x, y) = x ⊕ y. Diese XOR-Metrik hat folgenden Eigenschaften:
1. d(x, x) = 0 - der Abstand von einem Knoten zu ihm selbst ist gleich Null;
2. d(x, y) > 0 unter der Bedingung x 6= y;
3. ∀x, y: d(x, y) = d(y, x) - die XOR-Metrik ist symmetrisch;
4. Für die Knoten x, y und z: d(x, y) + d(y, z) > d(x, z).
Die XOR-Metrik ist unidirektional, das bedeutet, dass alle Anfragen mit einem gleichen Schlüssel zum selben Pfad konvergiert werden. Durch Caching der Daten entlang
dieses Pfads kann die Verfügbarkeit dieser Daten wesentlich erhöht werden.
Kademlia-Knoten speichern Informationen übereinander, um das Routing zu ermöglichen. Für jedes beliebige 0 ≤ i < 160 speichert jeder Knoten eine Liste der Informationen (IP-Adresse, UDP-Port und Knotenbezeichner) der Knoten mit Distanz zwischen
2i und 2i+1 von sich selbst. Es wird k-Bucket genannt. Jeder k-Bucket wird so sortiert,
dass die zuletzt gemerkten Knoten am Ende der Listen stehen. Für kleine Werte von
i sind generell die k-Buckets leer, für die großen i können die Liste bis zu k Einträge
Hauptseminararbeit Mikhail Tarasov
4 Beispiele von VHT
21
wachsen, wo k ein systemweiter Replikationsparameter ist, der so gewählt wird, dass
die k Knoten mit sehr niedrige Wahrscheinlichkeit in einer Stunde ausfallen.
Wenn ein Kademlia-Knoten eine Nachricht (eine Anfrage oder eine Antwort) von
einem anderen Knoten des Systems bekommt, aktualisiert dieser Knoten seinen kBucket mit dem Bezeichner des Senders laut folgenden Regeln:
• Wenn der Senderknoten im k-Bucket bereits existiert ist, wird er zum Ende der
Liste verschoben.
• Wenn der Senderknoten im k-Bucket nicht existiert und die Liste noch nicht voll
ist (weniger als k Einträger beinhaltet), wird er zum Ende der Liste hinzugefügt.
• Falls k-Bucket voll ist, wird ein Ping des ältesten Knoten der Liste durchgeführt,
um eine Entscheidung zu treffen:
wenn der Knoten nicht antwortet, wird er gelöscht und der Senderknoten
zum Ende der Liste hinzugefügt;
wenn der Knoten antwortet, wird er zum Ende der Liste verschoben und
Senderknoten vergessen“.
”
Also wird ein neuer Knoten zum k-Bucket hinzugefügt nur dann, wenn ein alter
Knoten das System verlässt. Dadurch ist das System zum DoS-Attacke resistent.
Das Kademlia-Protokoll besteht aus vier Befehlen: PING, STORE, FIND NODE
und FIND VALUE. Der PING-Befehl dient dazu, die Verfügbarkeit des gegebenen
Knotens zu prüfen. Der STORE-Befehl wird für das Speichern eines Schlüssel-Wert
Paars in einem Knoten benutzt.
Der FIND NODE-Befehl nimmt einen 160-Bit Bezeichner als Parameter an. Der
Empfänger dieses Befehls gibt das Triplett IP-Adresse, UDP-Port und Knotenbezeich”
ner“ der k ihm bekannten Knoten, deren Bezeichner nächst zum Ziel liegen, zurück.
Diese Knoten können von einem k-Bucket und auch von mehreren k-Buckets, falls der
nächste k-Bucket nicht voll ist, sein. Auf jedem Fall muss die Antwort genau k Einträger beinhalten (es kann nur dann weniger sein, wenn in allen k-Buckets eines Knoten
weniger als k Einträger existieren).
Der FIND VALUE-Befehl funktioniert ähnlich wie FIND NODE mit nur einer Ausnahme: falls der Empfänger einen STORE-Befehl mit gleichem Schlüssel bekommen
hat, gibt er nur den gespeicherten Wert zurück.
Jeder Befehl muss ein Echo eines zufälligen 160-Bit Befehlsschlüssels in der Antwortnachricht zurückgeben, wodurch ein bisschen Resistenz gegen Verfälschung der
IP-Adresse besteht.
Hauptseminararbeit Mikhail Tarasov
4 Beispiele von VHT
22
Die Hauptprozedur, die jeder Kademlia-Teilnehmer realisieren muss, ist die Suche
einer Menge von k Knoten mit den Bezeichnern, die nächst zu einem Schlüssel sind.
Dafür wird ein rekursiver Algorithmus verwendet. Ein Initiator fängt mit der Auswahl der α Knoten aus dem nächsten nicht leeren k-Bucket an. Der Initiator sendet
den α gewählten Knoten einen FIND NODE-Befehl parallel und asynchron. α ist ein
Konkurrenzparameter des Systems, z.B. 3.
In dem rekursiven Schritt sendet der Initiator dem Knoten aus den Antworten auf
den vorherigen Befehl wieder einen neuen FIND NODE-Befehl. Aus k Knoten aus jeder
Antwort wählt der Initiator α den nächsten Knoten zum Ziel, der noch nicht abgefragt
wurden, aus. Die Knoten, die nicht geantwortet haben, werden aus der Behandlung
entnommen. Die Suche wird dann beendet, wenn der Initiator die Antworten von k
nächsten Knoten bekommen hat. Durch die Auswahl eines der k Knoten kann Kademlia
flexibel für eine Nachricht einen optimalen Pfad finden.
Wegen der Unidirektionalität der Topologie ist der Cache-Mechanismus effizient.
Um over-caching“ zu vermindern, wird die Lebenszeit eines Schlüssel-Wert Paars in
”
der Datenbank exponential umgekehrt proportional der Anzahl der Knoten zwischen
aktuellem und nächstem zum Ziel Knoten begrenzt.
Die k-Buckets werden durch die weitergeleiteten Nachrichten ständig aktualisiert.
Um die fehlerhaften Situationen, wenn kein Verkehr existiert, zu verhindern, aktualisiert der Knoten die k-Buckets, in welchen Gebieten keine Suchprozedur stattgefunden
hat, ein Mal pro Stunde durch die Suche eines zufälligen Schlüssels des entsprechenden
Bereichs.
Wenn ein neuer Knoten A zum System hinzugefügt werden will, muss er mit einem
bereits existierenden Knoten B kommunizieren. Der Knoten A fügt den Knoten B zum
entsprechenden k-Bucket hinzu und initiiert die Suchprozedur mit eigenem Bezeichner.
Zuletzt aktualisiert der neue Knoten alle eigenen k-Buckets.[MaMa02]
Hauptseminararbeit Mikhail Tarasov
5 Zusammenfassung und Ausblick
23
5 Zusammenfassung und Ausblick
In Rahmen dieser Arbeit wurden die Grundprinzipien der P2P-Systemen untersucht.
Die P2P-Systeme können über mehrere Wege klassifiziert werden. Einmal können die
P2P-Netze auf drei Typen der Topologie: zentralisierte, voll dezentralisierte und gemischte oder hybride aufgeteilt werden. In der Entwicklung der P2P-Netze können die
3 Generationen unterschieden werden. Eine andere Klassifikationsmöglichkeit ist die
Unterscheidung von strukturierten und unstrukturierten Netzen.
Das Hauptziel dieser Arbeit war die Untersuchung der Technologie von verteilten
Hashtabellen (VHT). Diese Untersuchung wurde auf Basis der 3 verschiedenen Netzen: CAN, Pastry und Kademlia durchgeführt. Durch das Verwenden von verteilten
Hashtabellen können die Hauptprobleme der vorhergehenden P2P-Generationen gelöst
werden. Die Netze, die diese Technologie benutzen, sind selbstorganisierenden, skalierbaren und robusten Systemen, die eine breite Anwendung in verschiedenen Bereichen
von Vergnügen bis zu großen wissenschaftlichen Projekten finden können.
Hauptseminararbeit Mikhail Tarasov
Literaturverzeichnis
24
Literaturverzeichnis
[BQXFSX07] Gao Bao-Qing, Fu Xiu-Fen und Xu Su-Xia. P2P Distributed Cooperative
Work Model Based on JXTA Platform. Lecture Notes in Computer
Science. Springer Berlin / Heidelberg. 2007.
[CDHR02]
M. Castro, P. Druschel, Y. Hu und A. Rowstron. Topologyaware routing
in structured peer-to-peer overlay networks. 2002. Letzte Abfrage dem
05.01.2009.
[HHKS+ 08]
Oliver Hanka, Quirin Hofstätter, Gerald Kunzmann, Christoph Spleiß
und Stefan Zöls. TUM LKN Forschungsgruppe (P2PG). Technische Universität München, Lehrstuhl fur Kommunikationsnetze, http://www.
lkn.ei.tum.de/forschung/gruppen/p2pg/?lang=de, Mai 2008. Projektseite einer P2P-Forschungsgruppe an der TU München, letzte Abfrage dem 05.01.2009.
[JKZh]
Yan Chen Steven Czerwinski Patrick Eaton Dennis Geels Ramakrishna
Gummadi Sean Rhea Hakim Weatherspoon Westley Weimer Chris Wells
John Kubiatowicz, David Bindel und Ben Zhao.
[link02]
Gnutella 0.6. http://rfc-gnutella.sourceforge.net/src/rfc-0_
6-draft.html, 2002. Request for Comments: NNNN (draft).
[MaMa02]
Petar Maymounkov und David Mazieres.
Kademlia: A Peer-toPeer Information System Based on the XOR Metric. 2002. http:
//www.cs.rice.edu/Conferences/IPTPS02/109.pdf, letzte Abfrage
dem 05.01.2009.
[Peer]
Peer to Peer File Sharing Networks Arollo, http://www.peer-to-peer.
arollo.com/p2pgens.html. Three Generations of P2P. Die Internet
seite des Arollo Peer-to-Peer-Projekts. Drei Generationen von P2P, letzte Abfrage dem 05.01.2009.
Hauptseminararbeit Mikhail Tarasov
Literaturverzeichnis
25
[RKCD01]
Antony Rowstron, Anne marie Kermarrec, Miguel Castro und Peter
Druschel. Scribe: The design of a large-scale event notification infrastructure. In In Networked Group Communication, 2001, S. 30–43.
[RoDr]
Antony Rowstron und Peter Druschel. Pastry: Scalable, decentralized object location and routing for large-scale peer-to-peer systems. Microsoft
Research Ltd, http://research.microsoft.com/en-us/um/people/
antr/past/pastry.pdf. Letzte Abfrage dem 05.01.2009.
[RoDr01]
Antony Rowstron und Peter Druschel. Storage management and caching
in PAST, a large-scale, persistent peer-to-peer storage utility. SIGOPS
Oper. Syst. Rev. 35(5), 2001, S. 188–201.
[Skyp]
Skype Technologies, http://www.skype.com. Skype. Internetseite von
Skype Technologies.
[SRYu05]
Brad Karp John Kubiatowicz Sylvia Ratnasamy Scott Shenker Ion Stoica Sean Rhea, Brighten Godfrey und Harlan Yu. OpenDHT: A Public
DHT Service and Its Uses. http://www.opendht.org/f230-rhea.pdf,
2005. Proceedings of ACM SIGCOMM 2005, letzte Abfrage dem
05.01.2009.
[Sun 08]
Sun Microsystems, https://jxta.dev.java.net/. jxta: JXTA(TM)
Community Projects, Dezember 2008. Projektseite des JXTA(TM) Community Projekts.
[Sylv00]
Mark Handley Richard Karp Scott Shenker Sylvia Ratnasamy,
Paul Francis. A Scalable Content Addressable Network. International Computer Science Institute, http://www.icsi.berkeley.edu/
cgi-bin/pubs/publication.pl?ID=001185, Oktober 2000. Letzte Abfrage dem 05.01.2009.
[UNIV08]
UNIVA United Devices, http://www.univaud.com/. Project: Univa
UD: The Leaders in High Performance Computing (HPC) and Data
Center Automation and Virtualization Software, Dezember 2008. Projektseite der UNIVA United Devices.
[Wiki09a]
Wikipedia, the free encyclopedia, http://en.wikipedia.org/wiki/
Hash_table. Hash table, Januar 2009. Wikipedia-Artikel, letzte Abfrage dem 05.01.2009.
Hauptseminararbeit Mikhail Tarasov
Literaturverzeichnis
26
[Wiki09b]
Wikipedia, the free encyclopedia, http://en.wikipedia.org/wiki/
Napster. Napster, Januar 2009. Wikipedia-Artikel, letzte Abfrage dem
05.01.2009.
[Wiki09c]
Wikipedia, the free encyclopedia, http://de.wikipedia.org/wiki/
Verteilte_Hashtabelle.
Verteilte Hashtabelle, Januar 2009.
Wikipedia-Artikel, letzte Abfrage dem 05.01.2009.
Hauptseminararbeit Mikhail Tarasov
Abbildungsverzeichnis
27
Abbildungsverzeichnis
2.1
2.2
2.3
Beispiel eines P2P-Netzes . . . . . . . . . . . . . . . . . . . . . . . . .
P2P-Netz mit voll zentralisierter Struktur . . . . . . . . . . . . . . . .
Ein P2P-Netz mit einer gemischten Struktur . . . . . . . . . . . . . . .
4
4
6
3.1
3.2
Ein Overlay-Netz auf Basis eines IP-Netzes . . . . . . . . . . . . . . . .
Eine Hashtabelle. Nach [Wiki09a] . . . . . . . . . . . . . . . . . . . . .
8
10
4.1
4.2
Beispiel des CANs mit 5 Knoten im 2-dimensionalen Raum. Nach [Sylv00] 13
Routingtabelle einer Pastry-Knoten mit dem NodeID 65a1x, b=4. Die
entsprechenden IP-Adressen werden nicht gezeigt. Nach [CDHR02] . . . 19
Routing einer Nachricht mit dem Schlüssel d46a1c von Knoten 65a1fc.
Nach [CDHR02] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
4.3
Hauptseminararbeit Mikhail Tarasov
Abkürzungsverzeichnis
28
Abkürzungsverzeichnis
CAN . . . . . . . . . . . . . . .
CSCW . . . . . . . . . . . . .
DoS . . . . . . . . . . . . . . . .
IRC . . . . . . . . . . . . . . . .
P2P . . . . . . . . . . . . . . . .
PDA . . . . . . . . . . . . . . .
QoS . . . . . . . . . . . . . . . .
UDP . . . . . . . . . . . . . . .
VHT . . . . . . . . . . . . . . .
XML . . . . . . . . . . . . . . .
Content-Addressable Network
Computer Supported Cooperativer Work
Denial-of-Service
Internet Relay Chat
Peer-to-Peer
Personal Digital Asistant
Quality of Service
User Datagram Protocol
Verteilte Hash Tabelle
Extensible Markup Language
Hauptseminararbeit Mikhail Tarasov
Herunterladen