Grundlagen über Peer-to-Peer

Werbung
Grundlagen über Peer-to-Peer
Mansur Ahmad
21. Dezember 2004
Inhaltsverzeichnis
1 Systemarten
1.1 Zentrale Systeme . . . . . . . . . . . . .
1.2 Hierarchische Systeme . . . . . . . . . .
1.3 Semizentrale Systeme / Hybride Systeme
1.4 Dezentrale Systeme . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
3
4
4
5
2 Peer-to-Peer-Netzwerke
2.1 Hybride / Semizentrale Netzwerke
2.1.1 Napster . . . . . . . . . .
2.1.2 BitTorrent . . . . . . . . .
2.1.3 Gnutella (2) . . . . . . . .
2.1.4 eDonkey 2000 . . . . . .
2.2 Dezentrale Netzwerke . . . . . . .
2.2.1 Gnutella (1) . . . . . . . .
2.2.2 Freenet . . . . . . . . . .
2.3 Weitere P2P-Netzwerke . . . . . .
2.4 Gesamtvergleich der Netzwerke .
2.5 JXTA . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
8
8
8
9
11
12
12
15
16
16
17
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 Zusammenfassung
19
4 Empfehlung für die Projektgruppe
20
1
Einführung
Peer-to-Peer (engl. «Gleichgestellter» oder «Ebenbürtiger») bezeichnet eine Kommunikation unter
den Gleichen. Der Gegensatz zu Peer-to-Peer (P2P) ist das Client-Server-Prinzip. Hier gibt es den
Server, der einen Dienst anbietet, und einen oder mehrere Clients, die diese Dienste nutzen. Dabei
haben sowohl Server als auch die Clients bestimmte Rollen, z.B. ist ein Webserver nur als ein Server einsetzbar. Dieser kann nur Webdienste, die mit einem Browser (Client) benutzt werden können,
anbieten.
Die Rollenverteilung wird im Peer-to-Peer-Systemen aufgehoben und jeder Host in einem Netzwerk
kann gleichzeitig Server oder Client sein.
Aufbau
Im ersten Kapitel werden einige allgemein bekannten Topologien vorgestellt und diese voneinander
abgegrenzt. Bei dieser Abgrenzung wird deutlich, welche Kommunikationsarten bei welchen Systemen eingesetzt werden.
Das zweite Kapitel beschäftigt sich mit den einzelnen Peer-to-Peer-Netzwerken. Nach einer Einführung und der Definition werden einige konkrete Beispiele für Peer-to-Peer-Netzwerke vorgestellt.
Dabei werden nur einige der bekannten Peer-to-Peer-Netzwerke betrachtet. Am Ende dieses Kapitels werden die einzelnen Netzwerke miteinander tabellarisch verglichen. Außerdem wird in diesem
Kapitel ein Tool (JXTA) vorgestellt, womit eigene P2P-Netzwerke erstellt werden können.
Zum Schluss, in Kapitel drei, folgt eine Zusammenfassung dieser Ausarbeitung und in Kapitel vier
wird eine Empfehlung für die Projektgruppe gegeben.
Abgrenzung
In dieser Arbeit werden nur die Grundlagen über die Peer-to-Peer-Netzwerke geliefert, daher wird hier
nicht auf die, im modernen Peer-to-Peer-Netzwerken, verwendeten «verteilten Hashtabellen» detailliert eingegangen. Um mehr über die «verteilten Hashtabellen» zu erfahren, wird auf die Ausarbeitung
«moderne Peer-to-Peer-Netzwerke» von Henning Haeske verwiesen.
2
1 Systemarten
Ein Netzwerk kann nur dann (weiter) existieren, wenn es in der Lage ist, alle Teilnehmer miteinander
geregelt kommunizieren zu lassen. Dabei werden verschiedene Kommunikationsarten eingesetzt. In
diesem Kapitel werden einige Systemarten beschrieben, entsprechend derer die Beteiligten miteinander kommunizieren.
1.1 Zentrale Systeme
Wenn die Topologie eine 1:n-Beziehung aufweist, spricht man von zentralen Systemen. Dabei greifen
die Clients auf die Dienste der Server zu. Bei den zentralen Systemen kann man von einer Sterntopologie sprechen. Dabei ist jeder Client direkt mit dem zentralen Server verbunden, der nicht nur
seine normalen Serverdienste anbietet, sondern auch für die gesamte Kommunikation zwischen den
Rechnern verantwortlich ist.
Abbildung 1.1: Sterntopologie
Will ein Client-Rechner an einen anderen eine Nachricht schicken, so läuft diese immer über den
zentralen Rechner. Diese Variante wird u.a. auch bei Napster verwendet, wo die Suchanfragen nur
von einem zentralen Server gesteuert beantwortet werden können. Da die Clients von einem Punkt
abhängig sind, kann bei einem Ausfall des Servers keine Kommunikation geführt werden.
Vor- und Nachteile
Bei so einer Netzwerk-Struktur ist die Überwachung der Clients leicht durchführbar und Verstöße
gegen Regeln können schnell festgestellt werden. Außerdem ist es nicht möglich, dass sich falsche
Server einschleichen können.
Neben diesen Vorteilen gibt es auch viele Nachteile für zentrale Systeme:
• Da die Clients von einem Punkt abhängig sind, kann bei einem Ausfall des Servers keine Kommunikation geführt werden.
• Mit steigender Anzahl der Clients nimmt die Performanz des Dienstes ab und kann unter Umständen zum Absturz des Servers führen.
3
1 Systemarten
• Denial-Of-Service-Angriffe, wobei ein Server mit sinnlosen Anfragen überflutet wird, können
dagegen bei nicht geschützen Servern leicht durchgeführt werden und unterbinden damit die
Kommunikation mit diesem Server.
1.2 Hierarchische Systeme
Technisch gesehen sind hierarchische Systeme mehrere verschachtelte zentrale Systeme, die wegen
einer besseren Wartung und Lastverteilung eingesetzt werden. Ein typisches Beispiel für solche Systeme ist die Verwaltung der einzelnen Domains im Internet. Diese Verwaltung wird von einem DNSServer (Domain Name Service) durchführt. Bei einer einfachen Adresse, wie «math.upb.de» sieht
man bereits eine hierarchische Struktur. Die Auflösung solcher Adressen wird von rechts nach links
durchgeführt. Dabei ergibt sich «de» als die Wurzel des gesamten Netzwerk, welches den Bereich
«upb» verwaltet. Wird nun die Wurzel mit der Anfrage «math.upb.de» konfrontiert, leitet diese die
Anfrage an «upb» weiter, das wiederum seinen Verwaltungsbereich «math» anspricht. Neben «math»
werden auch weitere Bereiche, wie «wiwi» oder «winfo» von «upb» verwaltet, diese Struktur ähnelt
einer zentralen Struktur (Sterntopologie). [9]
Abbildung 1.2: Hierarchische Topologie
Vor- und Nachteile
Hierarchische Systeme haben vor allem eine positive Wirkung auf Wartung und Lastverteilung. Bei
Wartungsarbeiten muss so nicht das gesamte Netzwerk kurzzeitig abgeschaltet werden. Um dem Ausfall entgegenzuwirken, ist es notwendig, dass Replikationen von den Servern existieren. So gibt es
auch bei DNS in der Wurzel mehrere Server, die die gleichen Daten haben und so durch Ausfall
gesichert sind. Außerdem müssen laut Spezifikation mindestens zwei DNS-Server für einen Bereich
angegeben werden.
Wenn aber ein Zwischenknoten ausfällt, sind alle unterliegenden Knoten von den restlichen Knoten
getrennt, z.B. wenn die Server für die Verwaltung der internationalen Domains (de, nl, ...) ausfallen,
existieren nur nationale Netzwerke (Internet). Solche stark verbindenden Knoten müssen sehr gut
geschützt werden, auch gegen Denial-of-Service-Angriffe.
1.3 Semizentrale Systeme / Hybride Systeme
Semizentrale bzw. hybride Systeme sind Systeme, die aus einer Mischung von zwei verschiedenen
Systemarten entstehen.
Hybrid ist ...
4
1 Systemarten
Allgemein die Bezeichnung für eine Mischung aus zwei Teilen unterschiedlicher Herkunft oder
Zusammensetzung. [5]
Viele Tauschbörsen, wie Napster und Audiogalaxy haben solche Strukturen. Diese Tauschbörsen
benutzen neben einem zentralen System auch Peer-to-Peer-Verbindungen. Dabei wird ein zentraler
Server für die Verwaltung der verfügbaren Informationen / Daten bzw. für das Ein- und Ausloggen
benutzt. Der Austausch von Daten zwischen den einzelnen Teilnehmern basiert auf Peer-to-Peer. Daneben gibt es auch andere Kombinationen der zentralen und dezentralen Systeme. Eine solche Kombination wird später anhand von Gnutella 2 näher erklärt.
Vor- und Nachteile
Durch die zentrale Speicherung der verfügbaren Daten hat man bei solchen Systemen den Vorteil,
dass die Anfragen schnell und zuverlässig beantwortet werden können. Wenn für die Registrierung
und das Ein- / Ausloggen ein zentrales System verwendet wird, kann auch bei hybriden Systemen
eine Überwachung der Clients leicht durchgeführt und so Verstöße festgestellt werden.
Da eine zentrale Komponente bei solchen Systemen immer verwendet wird, kann das gesamte System
beim Ausfall dieser Komponente nicht funktionieren.
1.4 Dezentrale Systeme
Dezentrale Systeme benötigen keine zentrale Komponente und kommen so nur mit den beteiligten
Knoten aus. Dabei müssen diese beteiligten Knoten sich den übrigen Knoten bekannt machen und bei
Anfragen darauf reagieren können. Später wird das Gnutella-Netzwerk vorgestellt, wobei beispielhaft
die Bekanntgabe und Anfragebearbeitung näher erläutert wird.
Vor- und Nachteile
Der größte Vorteil dieses Systems ist die Unabhängigkeit und damit die verbundene Sicherheit, d.h.
dass bei einem Ausfall eines Knotens das Netzwerk weiterhin bestehen bleibt und für die anderen
Knoten weiterhin funktioniert. Eine Überwachung bei dezentralen Systemen ist sehr schwer realisierbar. Damit hat man den Vorteil (oder Nachteil) unbeobachtet Dateien zu tauschen, und Verstöße
können nicht festgestellt und bestraft werden.
Zu den Nachteil wird die Komplexität solcher Systeme genannt. Damit die Vorteile von zentralen
bzw. hierarchischen Systemen genutzt werden können, müssen komplizierte und intelligente Routingalgorithmen implementiert werden. Netzwerke der Moderne bieten einige solche Ansätze. Hier wird
wieder auf die Arbeit von Henning Haeske verwiesen, da in dieser Ausarbeitung auf die grundlegenden Netzwerken eingegangen wird.
5
2 Peer-to-Peer-Netzwerke
Die Geschichte des Internets hat eigentlich mit Peer-to-Peer (P2P) Netzwerken begonnen. In den 60er
Jahren wurden die ersten vier gleichberechtigten Teilnehmer miteinander verbunden. Dadurch ist das
erste Netzwerk (mit dem Namen ARPANET) entstanden, was ein P2P-Netzwerk war. Ab Mitte der
70er übernahm die U.S. Defense Communication Agency (DCA) die Kontrolle über das ARPANET
und entwickelte das heute weitverbreitete und bekannte TCP/IP, welches Mitte der 80er zum Standart
wurde. Neben dem ARPANET gab es ein weiteres Netzwerk, NSFnet, welches schnelle, preiswerte
und unkomplizierte Infrastrukturen besaß. Das war der Grund, weshalb ARPANET im Jahr 1989
abgeschaltet wurde und das NSFnet sich weiter zum uns heute bekannten Internet entwickelt hat.
Mit den Tauschbörsen, die gerne für das Tauschen von Musik- und Filmdateien genutzt werden, hat
sich der Gedanke von P2P-Netzwerken weiterentwickelt und es entstanden zahlreiche verschiedene
Arten von Systemen, die auf P2P-Konzepte basieren. Eine andere populäre Anwendung, bei dem P2PKonzepte verwendet werden, ist das Instant Messanging. ICQ und der AOL Messenger machen sich
diese Konzepte zu Nutze. Auch das Grid-Computing profitiert von dieser Art der Kommunikation.
Vergleich zu Client/Server-Systemen
Durch die Entwicklung des Internets war jeder in der Lage mit anderen Benutzern zu kommunizieren.
Leider war das ganze sehr umständlich und nicht jeder konnte damit umgehen. Mit der Entwicklung
des World Wide Web (WWW) entstanden Client-Server-Systeme. Damit hatten alle die Möglichkeit
mit entsprechenden Clients die angebotenen Dienste des Servers zu nutzen. Mit einem Client-ServerSystem versteht man im Allgemeinen, dass ein Server (meist in einer Endlosschleife) auf die Anfragen
von Clients wartet und für die einige Dienste zur Verfügung stellt. Eine Definition von Peer-to-Peer
(P2P) kann somit sein: Gleichzeitig Client und Server sein.
Eine weitere Definition wird von «Intel P2P Working Group» geliefert.
«the sharing of computer resources and services by direct exchange between systems» [10]
Laut dieser Definition gehören alle die Netzwerke zu P2P-Netzwerken, die in der Lage sind direkt
Daten untereinander auszutauschen. Eine genaue Definition wird von Clay Shirky[11] geliefert: «P2P
nodes must operate outside the DNS system and have significant or total autonomy from central servers». Bei dieser Definition wird stark auf die Autonomie der einzelnen Knoten in P2P-Netzwerken
eingegangen.
Damit kann man sagen, dass alle Netzwerke, in dem alle Knoten vollkommen autonom funktionieren,
direkten Austausch von Daten anbieten und die einzelne Knoten sowohl Server- und Client-Rollen
annehmen können, als P2P-Netzwerke bezeichnet werden können.
Der Suchende in einem Client-Server-System ist immer der Client, der Anfragen an den Server stellt.
In P2P-Netzwerken müssen die Anfragen der einzelnen Knoten von anderen Knoten beantwortet werden, d.h. die Speicherung und Indizierung spielt dabei eine sehr große Rolle.
Drei Generation von P2P-Netzwerken
P2P-Netzwerke haben sich mit dem Sharing von großen Film- und Musikdateien sehr schnell verbreitet. Anfänglich waren MP3-Tauschbörsen, wie Napster und Audiogalaxy, sehr berühmt. Diese
Tauschbörsen benutzten für einige Aufgaben einen zentralen Server und für andere wieder dezentrale
6
2 Peer-to-Peer-Netzwerke
Systeme (P2P: direct download). Solche hybriden Systeme werden von Vielen als die Netzwerke der
ersten Generation bezeichnet.
Die Netzwerke der zweiten Generation sind solche, die vollkommen unabhängig vom Server weiter
existieren. Das sind dezentrale Netzwerke. Gnutella ist ein Beispiel für ein solches Netzwerk, wobei
das Netzwerk solange existiert bis noch zwei Knoten sich im Netzwerk befinden.
Durch die Weiterentwicklung der ersten und zweiten Generation, wobei stark auf die sichere Verbindung, effiziente Anfragebearbeitung und gute Skalierbarkeit Wert gelegt wurde, entstanden die
Netzwerke der dritten Generation. Für die Realisierung der Netzwerke dieser Generation werden sogenannte «verteilte Hashtabellen» (DHT: distributed hashtables) verwendet.
Eine Einteilung in drei Generation ist nicht eindeutig. Eine andere Abgrenzung besagt, dass die Netzwerke der dritten Generationen «kontrollierte dezentrale Netzwerke»1 sind.
Verteilte Hashtabellen
Die allgemeinen Probleme bei einem Netzwerk sind, dass zum einen entschieden werden muss, wo
die Daten abgelegt werden und zum anderen wie auf diese gespeicherten Daten zugegriffen werden kann. Die einfachste Lösung ist, wenn die gesamten Daten auf einem Server gespeichert sind
und alle Knoten auf diesem Server ihre Anfragen schicken. Eine andere Möglichkeit wurde bei dem
Gnutella-Netzwerk eingesetzt. Dabei sind die Daten nur lokal vorhanden und Anfragen werden mit einer Breitensuche bearbeitet, wobei das gesamte Netzwerk mit Nachrichten geflutet wird. Eine bessere
Lösung ist, die Daten verteilt zu speichern und dementsprechend auf diese Daten zuzugreifen. Für die
verteilte Speicherung werden dementsprechend auch Datenstrukturen benötigt, die bei der Suche eine
akzeptable Laufzeit anbieten.
In der Abbildung 2.1 werden die bereits erwähnten drei Generation miteinander verglichen. Wenn n
als Anzahl der Knoten betrachtet wird, sieht man, dass
1. beim Einsatz eines zentralen Servers die gesamten Daten2 Zentral gespeichert werden und dadurch der Suchaufwand stark minimiert wird
2. wenn alle Daten auf den einzelnen Knoten gelassen werden, muss das Netzwerk mit Suchanfragen geflutet werden. Damit wird versucht das gesamte Netzwerk zu durchsuchen (sehr schwer
realisierbar)
3. bei der Verwendung von «verteilten Hashtabellen» der Such- und der Speicheraufwand ausgeglichen wird.
Die Grundidee der verteilten Hashtabellen ist die Verteilung von Daten über alle Knoten. Hier wird
darauf geachtet, dass eine gleichmäßige Verteilung erreicht wird. Das Ein- bzw. Austreten eines Knoten erfordert eine Umstrukturierung der verteilten Daten. Bei Eintritt eines Knotens wird der Schlüsselraum aufgeteilt und der neue Knoten erhält einen Schlüsselraum. Beim Austritt dagegen wird der
Schlüsselraum auf die benachbarten Knoten aufgeteilt. In vielen neuen Netzwerken, die verteilte Hashtabellen benutzen, wird die SHA-1 Hashfunktion verwendet. In der Arbeit von Henning Haeske wird
näher darauf eingegangen.
Im Weiteren werden anhand einiger praktischen Netzwerke die Verwendung von P2P vorgestellt.
Nach dem Vergleich dieser Netzwerke wird das Tool JXTA betrachtet.
1
dezentrale Struktur, aber einige Knoten agieren als Pseudo-Server, die einen bestimmten Bereich kontrollieren (s. Gnutella
2).
2
das sind nur Verweise auf konkreten Dateien
7
2 Peer-to-Peer-Netzwerke
Abbildung 2.1: Laufzeitvergleich aller drei Generationen [1]
2.1 Hybride / Semizentrale Netzwerke
2.1.1 Napster
Napster wurde als eine MP3-Tauschbörse im Jahre 1998 eingeführt. Napster zählt zu den Netzwerken
der ersten Generation, wobei zur Anmeldung ein Einlog-Server verwendet wird. Dieser Server bietet
auch gleichzeitig die Liste der verfügbaren Dateien an. Für diese beiden Funktionen verwendet Napster Client-Server-Strukturen. Ist nun eine Datei gefunden, welche zu dem entsprechenden Zeitpunkt
erhältlich ist, wird eine direkte Verbindung zu dem Client, welcher diese Datei anbietet, aufgenommen. Jede weitere Kommunikation (Downloaden von Dateien) wird direkt zwischen den einzelnen
Clients durchgeführt.
Vor- und Nachteile
Die Vorteile von Napster sind seine Einfachheit und die Möglichkeit schnell und effizient Dateiverweise zu finden. [4]
Zu den Nachteilen können die gesamten Nachteile von den Client-Server-Strukturen gezählt werden.
Dazu gehören die feindlichen Eingriffe und die schlechte Skalierbarkeit des Netzwerkes. Bei steigender Anzahl von Benutzern nimmt die Kapazität des Servers ab und die Anfragen können nicht schnell
genug bearbeitet werden.
Diskussion
Das Napster-Netzwerk ist ein einfach gestaltetes Netzwerk, welches bei entsprechender Benutzerzahl
sehr gut funktioniert. Wenn zu viele Benutzer in das Netzwerk integriert werden, kann das zu Performanzverlusten beitragen. Außerdem ist es auch festzuhalten, dass bis auf den direkten Download das
Napster-Netzwerk kein P2P-Netzwerk ist.
2.1.2 BitTorrent
BitTorrent ist ein in Python geschriebenes Filesharing-Programm, das besonders für große Dateien
jenseits von 100MB geeignet ist. Mittlerweile steht eine Reihe von alternativen Programmen zur Verfügung, die das BitTorrent-Protokoll implementiert haben. Im Vergleich zum normalen Download
einer Datei per HTTP oder FTP wird der Server des Anbieters weniger belastet und Kosten gespart:
Die Upload-Kapazitäten der Herunterladenden werden mit genutzt.
8
2 Peer-to-Peer-Netzwerke
Bei dem BitTorrent-Protokoll ist eine Kommunikation mit einer zentralen Einheit (genannt: Tracker)
notwendig. Jeder ist in der Lage einen Tracker auszustellen und damit eine Gruppe zu bilden. Das ist
auch der Grund, weshalb kein zentraler Tracker existiert.
Verfahren
BitTorrent besteht aus zwei Teilen: Das Server-Programm, genannt Tracker, verwaltet Informationen
zu einer oder mehreren Dateien. Der herunterladende Client erfährt vom Tracker, wer sonst noch
die Datei herunterlädt und verteilt. Sobald ein Client ein kleines Stück der Datei erhalten und die
Prüfsumme verifiziert hat, meldet er dies dem Tracker und kann dieses Datei-Stück schon an andere
Clients weitergeben. Um eine Datei herunterladen zu können, benötigt der Client eine Torrent-Datei
(Dateiendung .torrent). In dieser befindet sich die Internetadresse des Trackers sowie Dateiname, Größe und Prüfsummen der herunterzuladenden Datei. Eine Torrent-Datei kann auch Informationen über
mehrere Dateien beinhalten. Torrent-Dateien sind wenige Kilobytes groß und liegen üblicherweise
auf der Homepage des Anbieters zum Download bereit. Außerdem können diese Dateien via Mail
oder anderen Medien verbreitet werden. Geht der Kontakt zum Tracker verloren, können die Clients
keinen neuen Kontakt zu anderen Clients mehr aufbauen, der Austausch zwischen schon bekannten
Clients kann aber fortgeführt werden. Im Gegensatz zu anderer Filesharing-Software kann ein Betreiber bei BitTorrent den Inhalt seines Trackers selbst bestimmen. Ein Tracker verwaltet nur die Dateien,
die vom Betreiber freigeschaltet werden. Die einzelnen Tracker stehen nicht in Verbindung zueinander, es existiert daher kein gemeinsames Netz. Anbieter können sich so von fremden, möglicherweise
illegalen Inhalten distanzieren.
Vor- und Nachteile
Der wesentliche Vorteil bei BitTorrent ist, dass hier die gesamte Bandbreite genutzt wird und die
geforderten Dateien schnell heruntergeladen werden.
Da jede herunterzuladene Datei von einer zentralen Komponente geleitet wird, kann durch den Ausfall
dieser Komponente diese Datei nicht mehr bezogen werden. Der Benutzer mit der gesamten Datei
muss eine neue Torrent-Datei erstellen und damit einen Tracker auswählen. Das zeigt, dass man hier
Ausweichmöglichkeiten hat und es zu keinen totalen Ausfall des Netzwerk kommt.
Das Netzwerk an sich ist gut skalierbar, da beliebig viele Tracker online gestellt werden können, die
eine bestimmte Anzahl von Benutzer aufnehmen, aber die Beschränkung (Anzahl Benutzer) für den
Tracker ist dennoch gegeben.
Diskussion
BitTorrent gehört auch zu den hybriden Systemen, da hier die gesamten Vewaltungsarbeiten von einer zentralen Einheit durchgeführt werden, aber die gesamte Downloadarbeit mit dem P2P-Verfahren
realisiert wird. Während des Downloads werden alle Teilnehmer über den Fortschritt der anderen
Teilnehmer informiert und das Protokoll nutzt diese Information aus, indem Teile von mehreren Benutzern gleichzeitig runtergeladen werden. Eine Suchmöglichkeit ist bei BitTorrent nicht gegeben,
deshalb müssen die Benutzer zuerst nach sogenannten Torrents (Torrent-Files) suchen.
2.1.3 Gnutella (2)
Um die Schwächen von Gnutella3 zu beseitigen wurde Gnutella 2 entwickelt. Dabei sind die Knoten
in zwei Gruppen aufgeteilt, in Super-Nodes und Client-Nodes. Super-Nodes sind solche Knoten, die
3
Gnutella-Netzwerk gehört zu den dezentralen Netzwerken. Diese Netzwerke werden im nächsten Abschnitt vorgestellt.
9
2 Peer-to-Peer-Netzwerke
besonders geeignet sind, z.B. können solche Knoten als Super-Nodes ernannt werden, die eine hohe
Bandbreite besitzen.
Verfahren
Die Super-Nodes unterstützen Verbindungen von mehreren Client-Nodes. Alle Knoten im Super-Node
sind miteinander verbunden und bearbeiten die Anfragen von Client-Nodes gemeinsam. Die ClientNodes können dagegen sich nur zu einem oder zwei Super-Nodes verbinden.
Abbildung 2.2: Gnutella 2[4]
Die Kriterien, die ein Knoten zum Super-Node machen sind in der Gnutella2-Spezifikation[12] wie
folgt festgelegt:
• geeignetes Betriebssystem (Unterstützung > 100 Sockets)
• angemessene CPU und RAM Leistung
• lange upload Zeiten (mehrere Stunden, mindestens zwei), historische Zeiten werden betrachtet
• große Bandbreite, primär eingehende Bandbreite
• Unterstützung von eingehenden TCP und UDP-Verbindungen
Vor- und Nachteile
Durch die Aufteilung in diese beiden Gruppen verbessert sich die Skalierbarkeit des Netzwerks und
die Latenzzeiten werden verringert. [4]
Mit dieser Struktur hat man aber immer noch den Nachteil, dass das Nachrichtenaufkommen zwischen den Super-Nodes nicht verringert wird. Außerdem ist es noch unklar, ob das TTL4 -Feld zum
Überqueren des Netzwerkes ausreicht.
Diskussion
4
Bei Gnutella werden die einzelnen Knoten mit einer Breitensuche durchlaufen. Dabei wird das Time-To-Live(TTL)-Feld
für die Einschränkung der Weiterleitung verwendet.
10
2 Peer-to-Peer-Netzwerke
Das Gnutella-Netzwerk hat sich in seiner zweiten Version zu einem hybriden Netzwerk entwickelt.
Dabei agieren die Super-Nodes als Server für die Client-Nodes. Diese Client-Nodes sind zwar abhängig von den Super-Nodes, aber: Praktisch gibt es immer genug Benutzer, die zu der Gruppe der
Super-Nodes zugeordnet werden. Für das Gnutella 2 Netzwerk müssen keine zentralen Server zur
Verfügung gestellt werden, sondern die Benutzer werden automatisch in den verschiedenen Gruppen
eingeordnet.
2.1.4 eDonkey 2000
Bei eDonkey 2000 (ed2K) kommt sowohl das P2P-Prinzip als auch das Client-Server-Prinzip zum
Einsatz. Das Protokoll arbeitet mit Links und verschickt diese genau dann wenn es zu einer Kommunikation zwischen zwei verschiedenen Partnern kommt. Bei einer Suchanfrage kann die Antwort wie
folgt aussehen: ed2k://|file|datei.txt|123|1234567890abcdef1234567890abcdef.
Dabei identifiziert ed2k://, dass es sich hier um einen ed2K-Link handelt. Der erste darauf folgende Parameter beschränkt die Suche auf eine Datei, mit den zweiten wird der Dateiname angegeben. Danach folgt die Größe der Datei in Byte und zum Schluss der Hashwert für diese Datei. Das ed2k-Protokoll benutzt ein MD4-Hashing. Der erstellte Link mit sämtlichen Informationen
wird an alle bekannt gegeben. Dabei spielt der Dateiname keine Rolle, sondern es sind lediglich
die Größe und der Hash-Wert entscheidend. Um sich mit einem Server zu verbinden wird der Link
ed2k://|server|192.245.244.243|4661| verwendet. Der Client versucht dabei eine Verbindung mit dem Server aufzunehmen, was selber ein eigenes Programm ist. Grundsätzlich kann jeder
Internet-Benutzer einen ed2k-Server anbieten, aber wegen dem hohen Datenverkehr ist so ein Dienst
erst bei großer Bandbreite sinnvoll.
Im Wesentlichen findet folgende Kommunikation zwischen dem Server und Client statt:
• Der Client übermittelt die Informationen über seine freigegebenen Dateien an einen Server, der
diese indiziert.
• Der Client möchte eine Datei suchen und übermittelt einen Teil eines Dateinamens (einige
andere Eigenschaften wie Dateigröße sind ebenfalls möglich) an einen oder mehrere Server.
Die angefragten Server durchsuchen ihre Indizes und schicken die ensprechenden ed2k-Links
zurück. Die Suche beschränkt sich auf den Server mit dem der Benutzer verbunden ist, durch
die globale Suche kann aber die Suchanfrage an alle bekannten Server verschickt werden.
• Der Client fragt regelmäßig alle bekannten Server ab, welche Clients die Dateien freigeben, die
er downloaden möchte. Die Server schauen in ihre Indizes nach und senden IP-Adressen und
Ports dieser Clients zurück.
Die Server verwalten also nur einen Index der freigegebenen Dateien und der dazugehörigen ClientAdressen. Ein Server speichert und verschickt keine Dateien, sondern lediglich Metadaten über die
Dateien.
Übertragung
Sobald ein Client vom Server über andere Clients informiert wurde, versucht er sich zu diesem zu
verbinden. Dabei kommt es zu einer P2P-Kommunikation und die geforderten Dateien werden direkt
von anderen Clients heruntergeladen. Jeder Client hat eine bestimmte Upload-Kapazität und wenn
diese Kapazität ausgeschöpft ist, werden die herunterladenden Clients in einer Queue abgelegt und
11
2 Peer-to-Peer-Netzwerke
Abbildung 2.3: ed2k Topologie[6]
nacheinander abgearbeitet. Das ed2k-Protokoll bietet auch die Möglichkeit eine Datei (oder Teile einer Datei) von mehreren Clients gleichzeitig herunterzuladen, wobei die Downloadzeit verkürzt wird.
Natürlich können auch die bereits heruntergeladenen Teile den anderen Benutzer zum Herunterladen
freigestellt werden.
Serverlose Kommunikation
Daneben gab es Versuche das ed2k-Netzwerk auf serverlose Kommunikation umzustellen. Dabei wurde der Kademlia-Algorithmus5 implementiert. Leider haben die Suchanfragen viel Zeit in Anspruch
genommen und das Verfahren hat sich nicht durchgesetzt. In der neuen eMule-Version (Client für
ed2K) wurde eine Verbesserung der Kademlia-Algorithmus implementiert und läuft bereits in einer
beta-version.
Vor- und Nachteile
Das ed2k-Netzwerk skaliert nicht sehr gut, weil es abhängig von der Anzahl der Server ist. Wie schon
oben erläutert kann nicht jeder Teilnehmer einen Server zur Verfügung stellen, d.h. es müssen mit
steigender Anzahl der Teilnehmer weitere Server bereit gestellt werden. Dennoch ist dieses Netzwerk
gegen feindliche Eingriffe geschützt, da die Indizierung auf verschiedenen Server durchgeführt wird
und der Ausfall einiger Server nicht das gesamten Netzwerk lahm legt.
2.2 Dezentrale Netzwerke
2.2.1 Gnutella (1)
Das Gnutella-Protokoll wurde von Justin Frankel entwickelt und im Jahre 2000 zum freien Download
im Internet freigegeben. Frankel musste auf die Anweisung seines Arbeitgebers AOL das GnutellaProjekt kurze Zeit später einstellen. Da das Programm zwischenzeitlich sehr populär wurde und weit
verbreitet war, konnte es nicht vollkommen aufgehalten werden. Nach einiger Zeit gelang einer Gruppe von unabhängigen Entwicklern das Gnutella-Protokoll zu entschlüsseln und ihre Ergebnisse zu
5
benutzt verteilte Hashtabellen und wird in Netzwerken der dritten Generationen verwendet
12
2 Peer-to-Peer-Netzwerke
veröffentlichen. Daraufhin wurden zahlreiche weitere Client-Programme für das Gnutella-Netzwerk
entwickelt, die auch den Leistungsumfang des Netzwerkes deutlich erweiterten. [3]
Der Anreiz für die Entwicklung von Gnutella war die Illegalität von Napster. Mit Gnutella wollte
man ein dezentral funktionierendes Netzwerk haben, wobei keine Komponenten von einem zentralen
Server abhängig sind.
Das entstandene Genutella-Netzwerk war deshalb so konzipiert, dass wenn sogar nur noch zwei Clients vorhanden sind, das Netzwerk weiterarbeitet. Die Clients von Gnutella übernehmen neben den
Clientaufgaben auch die gesamten Serveraufgaben. Daher werden die einzelnen Knoten bei Gnutella nicht Clients, sondern Servents bezeichnet. Dieses Begriff setzt sich zusammen aus SERVer und
cliENT.
Aufbau
Wie kann nun erreicht werden, dass die einzelnen Servents (Knoten) ohne eine zentrale Komponente
miteinander kommunizieren und die Suchanfragen beantworten können? Das Problem beginnt bereits
mit dem Download des Gnutella-Clients. Am Anfang kennt diese Software keine Umgebung und hat
keine bekannten Knoten in ihrer Liste. Aus diesem Grund wird die Client-Software mit einer Liste
von Adressen ausgeliefert, die beim Programmstart durchprobiert wird. Ist eine Adresse (Knoten k)
aus der Liste erreichbar, so wird die Nachbarschaft von diesen Knoten k abgefragt und dadurch eine
eigene Nachbarschaftsliste aufgebaut. Hat der anfragende Knoten eine solche Liste aufgebaut, wird
diese gespeichert. Beim nächsten Start wird das Programm mit dieser Liste gestartet und von den
Knoten, wie oben beschrieben, erweitert. Somit hat jeder Knoten sein eigenes Umfeld aufgebaut.
Das Gnutella-Protokoll baut auf IP (Internet Protocol) auf und benutzt nur vier verschiedene Nachrichtentypen. Der Header jeder dieser Nachrichten ist wie folgt aufgebaut:
• Message identifier: Das ist eine 2-Byte-ID, welche anzeigt, ob diese Nachricht bereits empfangen wurde
• Function identifier: Hier wird der Typ der Nachricht beschrieben (Ping, Pong, ...)
• TTL: Das ist das Time-To-Live-Feld. Hier wird die maximale Anzahl von Übertragungen (Hops)
der Nachricht festgelegt.
• Hops: Anzahl der bereits zurückgelegten Strecke.
• Payload length: Länge der Nachricht
Im Weiteren werden die vier bereits angesprochenen Nachrichtentypen näher betrachtet:
Mit der «Ping»-Nachricht kündigt sich ein Knoten an. Diese Nachricht wird verwendet um neue
Knoten im Netzwerk zu suchen. Die Antwort auf ein «Ping» wird mit der «Pong»-Nachricht auf demselben Pfad zurückgeliefert, und nicht auf dem kürzesten Weg. Mit der «Pong»-Nachricht wird dem
anfragenden Knoten die IP- und Port-Adresse des Antwortgebers geliefert. Weiterhin wird die Anzahl
und Größe veröffentlichter Dateien bekannt gegeben. (Abbildung 2.4 zeigt grafisch die Anbindung
neuer Knoten)
Für die Suchanfragen wird die Nachricht «Query» verwendet, dabei wird als Inhalt die minimale
Geschwindigkeitsanforderung des Antwortgebers und der Suchstring verschickt. Die Antwort auf
«Query» wird auch auf demselben Weg mit der «Query Hit»-Nachricht geliefert. Dabei erhält der
anfragende Knoten die IP-Adresse, Port-Adresse, Geschwindigkeit des Antwortgebers und Anzahl
13
2 Peer-to-Peer-Netzwerke
Abbildung 2.4: Anbindung neuer Knoten in Gnutella[4]
passender Dateien und ihre indizierte Ergebnismenge.[4] (Abbildung 2.5 zeigt eine Darstellung der
Suche im Gnutella-Netzwerk)
Wie oben bereits beschrieben, erstellt ein Knoten seine eigene Umgebung, wobei Ping-Pong-Nachrichten
zwischen den Knoten ausgetauscht werden. Dabei wird eine Breitensuche durchgeführt und die Antworten auf demselben Weg zurückgegeben. Eine Weitergabe der Nachricht wird als ein Hop bezeichnet. Die Anzahl der Hops ist im generellen beschränkt (typischer Wert wäre fünf). Bei jeder Weitergabe der Nachricht wird Hop inkrementiert. Dieses Prinzip wirkt der endlosen Suche entgegen und
leitet die Nachrichten nur solange weiter bis die Werte vom Hops und TTL ungleich sind. Das gleiche
Verfahren wird auch bei der «Query»-Nachricht verwendet. Wird nach diesem Verfahren ein Knoten
gefunden, welcher die geforderte Datei anbietet, kann direkt von diesem Knoten der Downloadprozess
gestartet werden.[4]
Vor- und Nachteile
Gnutella benötigt, durch diese Art der Kommunikation, keine zentrale Komponente. Dadurch resultieren einige wesentliche Vorteile. Zum einen ist das Gnutella-Netzwerk sehr robust gegen praktisch
alle feindlichen Eingriffe und zum anderen kann das Netzwerk leicht erweitert werden.
Durch die Einschränkung der Hops kann es dazu kommen, dass die Suchanfrage nicht beantwortet
werden kann, obwohl die Dateien von einigen anderen Knoten angeboten werden. Dieser Nachteil
ergibt sich, weil die Hops durch die TTL beschränkt sind. Ein weiterer Nachteil von Gnutella ist das
Überfluten vom Netzwerk. Das ergibt sich, weil bei der Weiterleitung der Nachrichten alle bekannten Nachfolger die Nachricht erhalten. Außerdem wird derselbe Weg auch für die Antwortnachrichten
verwendet. Bei der Skalierung muss man mit Performanzverlusten rechnen, da bei mehreren Nachbarknoten mehr Nachrichten verschickt werden. Außerdem können bei einer großen Anzahl von Knoten
die geforderten Dateien sehr schwierig gefunden werden.
Verbesserungsvorschläge
Es gibt eine Reihe von Verbesserungsvorschlägen, um das Nachrichtenaufkommen zu verringen. Einer
sieht zum Beispiel die Verwendung von Random Walks statt Broadcasting vor. In einem Random Walk
14
2 Peer-to-Peer-Netzwerke
Abbildung 2.5: Dateisuche in Gnutella[4]
wird eine Nachricht nicht an alle Nachfolger, sondern nur an einen zufälligen weitergeleitet. Auf diese
Weise wird die Suchanfrage weiter in das Netzwerk hineingereicht ohne das Nachrichtenaufkommen
stark zu erhöhen.[4]
Andere schlagen die passive Replikation von Informationen entlang eines Pfads vor. Hierbei werden
Ergebnislisten gespeichert und neue Anfragen nach dem selben Dokument können sofort ohne weitere
Suchnachrichten beantwortet werden.[4]
2.2.2 Freenet
Zum Schluss wird ein Netzwerk der dritten Generation kurz erläutert. Für Details und weitere Informationen wird auf die Arbeit von Henning Haeske «Moderne P2P Strukturen» verwiesen.
Freenet ist ein zensurresistentes und anonymisiertes Netzwerk, das eine dezentrale Struktur besitzt.
Das Freenet-Netzwerk gehört zu den Netzwerken der dritten Generation und verteilt die Daten auf allen Knoten, die sich im Netz befinden. Die besondere Eigenschaft von Freenet ist, dass Daten anonym
veröffentlicht und ebenso anonym geladen werden können. Ebenso ist es quasi unmöglich, gezielt im
Freenet befindliche Daten zu zensieren.[7] Eine weitere Besonderheit von Freenet ist, dass die Bedienung einfach über einen Browser möglich ist. Dabei muss man leider mit langen Wartezeiten rechnen,
weil sich die Knoten zunächst bekannt machen müssen.
Aufbau
Bei dem Freenet-Netzwerk geben die Benutzer dem Protokoll ihre Bandbreite bekannt und daneben
einen Teil ihrer Festplatte (genannt «Data store»). Auf den Daten, die in diesem Data store gespeichert
oder daraus gelöscht werden, haben die jeweiligen Benutzer keinen Einfluss. Freenet speichert die
häufig angeforderten Daten intelligent in verschiedenen Data stores, von denen ein schneller Zugriff
möglich ist. Werden diese Daten zu unpopulär, wird die Anzahl der Speicherpositionen verringert und
wenn diese nicht mehr angefordert werden, werden diese Daten aus dem Netzwerk genommen.
Das Hochladen von Daten erfolgt mit spezieller Software, die Ähnlichkeit mit üblichen FTP-Programmen
hat. Diese Programme (z.B. Frost und Fuqid) erleichtern insbesondere den Austausch größerer Datei-
15
2 Peer-to-Peer-Netzwerke
en, die intern in kleine Stücke zerlegt werden (Splitfiles) und gegebenenfalls mit redundaten Datenblöcken versehen werden (Fehlerkorrektur).[7]
Die Auswahl wie die einzelnen Daten gespeichert werden, erfolgt durch einen auf verteilten Hashtabellen basierenden Routing-Algorithmus. Dabei werden die Daten verschlüsselt und ohne Wissen
des jeweiligen Benutzers gespeichert. Ein weitere Besonderheit von Freenet ist, dass der Austausch
von Dateien indirekt über weitere Knoten erfolgt, um die Anonymität von Quelle und Empfänger zu
wahren.
Vor- und Nachteile
Der größte Vorteil vom Freenet liegt in der Anonymität und Unmöglichkeit der Zensierung. Desweiteren ist die Nutzung mit einem Browser sehr angenehm. Das Freenet-Projekt ist ein OpenSourceProjekt und steht zum Download auf entsprechenden Seiten zur Verfügung.
Zu den Nachteilen können gezählt werden:
• lange Suchzeiten
• lange Zeiten bei Integration neuer Knoten
• langsam aufgrund der hohen Sicherheit des Routings
• moralische Aspekte (kann für die kriminelle Tätigkeiten genutzt werden, weil gegen Überwachung sehr sicher)
2.3 Weitere P2P-Netzwerke
Neben den bereits oben beschriebenen Netzwerken gibt es eine weitere Vielzahl von Netzwerken,
die nur durch kleinere Veränderungen oder durch Erweiterungen eines bereits existierenden Netzwerk
entstanden sind.
2.4 Gesamtvergleich der Netzwerke
Es wurden in diesem Abschnitt mehrere Netzwerke vorgestellt. Alle haben ihre Vor- und Nachteile
und sind mächtig in einigen Bereichen. So ist das BitTorrent und ed2K-Netzwerk sehr gut für das
Herunterladen von großen Dateien geeignet, dagegen ist das zuletzt vorgestellte Freenet für das sichere
und anonyme Herunterladen von kleinen Dateien optimiert worden.
Das Gnutella-Netzwerk besitzt dezentrale Strukturen, aber durch die Weiterentwicklung zu Gnutella
2 verliert das Protokoll seine dezentrale Struktur und wird zu einem gewissen Teil Serverabhängig. Da
zeigt sich auch, dass vollkommene Dezentralisierung nicht immer von Vorteil ist, sondern gesteuerte
und intelligente Server (die eigentlich auch Peers sind) die Skalierbarkeit erhöhen und zur Verkürzung
der Anfragezeiten beitragen.
Desweiteren wurde noch BitTorrent vorgestellt. Damit sollte nur gezeigt werden, dass auch Netzwerke
existieren, die von den Benutzern selbst gestaltet, verwaltet und geführt werden. Dabei bilden sich
viele verschiedene Interessengruppen, die untereinander Daten austauschen. Der Vorteil ergibt sich
bereits daraus: Daten werden nur mit den vertrauten Teilnehmern getauscht.
Zum Schluss werden, in der Tabelle 2.1, die Unterschiede und Gemeinsamkeiten der vorgestellten
Netzwerken miteinander verglichen.
16
2 Peer-to-Peer-Netzwerke
Struktur
Suchmethode
Stärken
schnelle Suche
(Indexserver)
schnelle
Downloadraten
Napster
hybrid
Indexserver
BitTorrent
hybrid
keine
Gnutella 2
hybrid
an SuperNodes
dezentral, skaliert
eDonkey 2000
hybrid
verteilt
einfache Suche
Gnutella
rein
BFS
Freenet
rein
DFS
dezentral,
erweiterbar
Anonymität,
verteilte
Speicherung
Schwächen
Single-Point-OfFailure
starke zentrale
Kommunikation
falsche Server
können sich
einschleichen
Server für die
Verwaltung
Skalierbarkeit
schlechte
Suchmöglichkeiten
Tabelle 2.1: Gemeinsamkeiten und Unterschiede
2.5 JXTA
Das JXTA-Projekt[8] ist eine offene Plattform für P2P-Netze. Unter Verwendung dieses Protokolls
können eigene P2P-Netzwerke erstellt und verwaltet werden. JXTA liefert Technologien, um bei P2P
zwei der Vorteile der zentralisierten Systeme zu nutzen: Entdeckung von weiteren Teilnehmern und
Überwindung von Firewall und NAT (Network Address Translation6 ).
JXTA standardisiert die Protokolle damit die einzelne Knoten
• sich einander finden
• sich in Gruppen organisieren
• Dienste publizieren bzw. erforschen
• miteinander kommunizieren
• sich gegenseitig überwachen
können.
Die einzelnen Protokolle sind unabhängig von Programmiersprachen und Transportprotokollen.
Architektur
Die Architektur von JXTA ist in drei Schichten aufgeteilt. Abbildung 2.6 verdeutlicht dies. Die untere
Schicht sorgt für die eigentliche Kommunikation mit den einzelnen Knoten. In dieser Schicht werden
Mechanismen zum Herstellen von Verbindungen, Bildung von Gruppen, Sicherheit usw. zur Verfügung gestellt. Die Pipes, die für die Verbindung zu den einzelnen Knoten benötigt werden, gehören
6
NAT bietet die Möglichkeit, mehrere inoffizielle IP-Adressen oder ein ganzes Netz hinter einer oder mehrerer offiziellen
IP-Adressen zu verbergen
17
2 Peer-to-Peer-Netzwerke
auch zum JXTA Core. Ein weiteres Bestandteil davon sind die JXTA Advertisements. Die Advertisements sind spezielle Nachrichten, die vom JXTA beim Verbindungsaufbau, Gruppenbildung u.ä.
verwendet werden.
In der zweiten Schicht stellt JXTA einige Dienste zur Verfügung. Der wichtigste Dienst ist der JXTAEndeckungsdienst (siehe unten).
Die oberste Schicht bildet dann die eigentliche Anwendung unter der Verwendung von beiden anderen
Schichten.
Abbildung 2.6: JXTA Architektur [8]
JXTA Entdeckungsfunktionalitäten
Wenn ein Peer sich mit einer JXTA-Gruppe verbindet, kann er sie nach etwas fragen: einen Service,
eine Datei, ein Peer mit einem bestimmten Namen. Die Anwendung braucht sich nicht um den Detailablauf zu kümmern, weil die JXTA-Plattform das Prozedere abnimmt. Man kann einen zentralen
Server fragen (wie Napster), oder man kann die Gruppe auf eine dezentralisierte Art und Weise fragen
(wie Gnutella). Egal wie, die Anwendung erhält es umsonst von JXTA.
Diskussion
Bei JXTA wird der Kern geliefert und der Benutzer kann sich auf die zu entwickelnde Anwendung
konzentrieren. Das JXTA-Projekt hat sich dies zu Ziel gesetzt und bietet daher sehr viele Mechanismen für die Erstellung und Verwaltung von P2P-Netzwerken. Bei der Verwendung von JXTA können
sowohl zentrale als auch dezentrale Netzwerke erstellt werden. Natürlich ist eine Kombination von
Netzwerksystemen (hybride Systeme) auch möglich.
18
3 Zusammenfassung
In dieser Ausarbeitung wurden als Erstes die verschiedenen Systemarten vorgestellt. Da wurde zwischen zentralen, hierarchischen, semizentralen und dezentralen Systemen unterschieden. In dem darauf folgenden Abschnitt wurden anhand von praktischen Beispielen semizentrale (hybride) und dezentrale Systeme näher erläutert, dabei wurden bei einigen Netzwerkarten die ausführliche Funktionsweise dieser Netzwerke erklärt.
Außerdem war ein Vergleich zwischen Client-Server-Systemen und P2P Bestandteil dieser Ausarbeitung. Desweiteren wurde auch auf die folgenden Bereiche eingegangen:
• Unterscheidung der drei Netzwerk Generationen
• verteilte Hashtabelle
• JXTA
19
4 Empfehlung für die Projektgruppe
Bei den P2P-Systemen gibt es nach meiner Meinung drei Faktoren, die optimiert werden müssen:
1. schnelle und erfolgreiche Suche (zentral)
2. angenehme Download-Rate (zentral, dezentral)
3. Robustheit (dezentral)
Während der Erstellung dieser Ausarbeitung habe ich ein Zitat gelesen, welches meine Meinung zu
den P2P-Netzwerken sehr gut beschreibt:
so dezentral wie möglich, und so zentral wie nötig
In der Projektgruppe ist ein P2P-Netzwerk zu erstellen, welches durch P2P-Suche die einzelnen Knoten nach ihren statischen und dynamischen Werten (Auslastung u.ä.) fragt und die gesammelten Daten
auswertet.
Für die Projektgruppe sind für uns die Punkte 1 und 3 von Bedeutung. Auf schnelle Downloadraten
kann verzichtet werden, weil nur wenige Daten zwischen den einzelnen Knoten ausgetauscht werden
und keine große Filmdateien, was bei den meisten in dieser Ausarbeitung vorgestellten Netzwerken
der Fall ist. Der Austausch von Daten muss dennoch sicher und die Übertragung ohne Unterbrechungen (d.h. eine durchgehende Übertragung garantieren) funktionieren.
Um an dieser Stelle die Anforderung für das P2P-Netzwerk für die Projektgruppe (PG) festzuhalten,
kann gesagt werden:
Wir brauchen ein P2P-Netzwerk, welches robust ist und die Anfrage schnell und zuverlässig
beantworten kann.
Von dem gesamten vorgestellten Netzwerken ist das Genutella2-Netzwerk für mich das passende
Netzwerk für unser P2P-Netzwerk. Dabei muss natürlich eine Veränderung bzw. Verbesserungen vorgenommen werden.
Aufbau
Es können einige Knoten als Superknoten festgelegt werden, welche die gesamten benötigen Informationen haben. Diese sind aber auch in der Lage die einzelnen Knoten auf deren dynamischen Werte
anzufragen. Es darf nicht nur ein Knoten als Superknoten festgelegt werden, da dies die Robustheit
des Netzwerkes gefährdet.
Für die Entwicklung eines solchen Netzwerkes kann JXTA verwendet werden. Das erlaubt uns die
einzelnen Knoten in Gruppen aufzuteilen.
Wenn nun einige Knoten in einer bestimmten Gruppe als Superknoten agieren, können die Anfragen
schnell und zuverlässig beantwortet werden.
Die Einschränkung der Suche (z.B. auf eine bestimmte Software) kann von den Superknoten vorgenommen werden. Diese selbst sind aber in der Lage die einzelnen Knoten nach gesamten Informationen (sowohl statische als auch dynamische Werte) anzufragen und diese zwischenzuspeichern.
20
Literaturverzeichnis
[1] Hans P. Reiser, Rüdiger Kapitza; Universität Erlangen-Nürnberg; Vorlesung «verteilte Hashtabellen»
[2] Alexander Merzky; TU-Chemnitz; http://archiv.tu-chemnitz.de/pub/2002/20047/data/html_sem.html
[3] http://en.wikipedia.org/wiki/P2P
[4] Dr. rer. nat. Christian Schindelhauer; Universität Paderborn; Vorlesung: «Algorithmen für Peerto-Peer-Netzwerke (Sommer 2004)»
[5] Online Lexikon; http://www.xipolis.net
[6] Marcus Lenzner; Universität Jena; Seminararbeit «Neue Technologien in Internet und WWW»;
Februar 2004
[7] http://en.freepedia.org/Freenet.html
[8] www.jxta.org/docs/JxtaProgGuide_v2.pdf
[9] Prof. Dr. Odej Kao; Universität Paderborn; Vorlesung: «Einführung in verteilten Systemen»
Wintersemester 2003/2004
[10] Intel P2P Workinggroup
[11] K. Truelove, C. Shirky, L. Gonze, R. Dornfest; 2001 P2P Networking Overview The Emergent
P2P Platform of Presence, Identity, and Edge Resources ISBN: 0-596-00185-1
[12] http://www.gnutella2.com/tiki-index.php?page=Node%20Types%20and%20Responsibilities
21
Herunterladen