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