Peer-to-Peer-Netzwerke



Ähnliche Dokumente
Definition. Gnutella. Gnutella. Kriterien für P2P-Netzwerke. Gnutella = +

Algorithmen für Peer-to-Peer-Netzwerke Sommersemester Vorlesung

Software ubiquitärer Systeme

Chord. Zusätzliche Quelle: Christian Schindelhauer, Vorlesung: Algorithmen für Peer-to-Peer-Netzwerke

Peer-to-peer Netzwerke Peer-to-peer Netzwerke sind verteilte Systeme: Chord. Chord als DHT. Chord

Organic Computing. Rolf Wanka Sommersemester Juni Organic Computing: Peer-to-Peer-Netzwerke

Peer-to-Peer- Netzwerke

Peer-to-Peer- Netzwerke

Rolf Wanka Sommersemester Vorlesung

Peer-to-Peer- Netzwerke

Organic Computing: Peer-to-Peer-Netzwerke

Rolf Wanka Sommersemester Vorlesung

Kapiteltests zum Leitprogramm Binäre Suchbäume

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

1 topologisches Sortieren

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Folge 19 - Bäume Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Tauschbörsen File Sharing Netze

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Organic Computing. Rolf Wanka Sommersemester Organic Computing: Peer-to-Peer-Netzwerke

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Diagnostisches Interview zur Bruchrechnung

Konzepte der Informatik

geben. Die Wahrscheinlichkeit von 100% ist hier demnach nur der Gehen wir einmal davon aus, dass die von uns angenommenen

Installation und Inbetriebnahme von SolidWorks

Datensicherung. Beschreibung der Datensicherung

Lizenzen auschecken. Was ist zu tun?

Woher kommt die Idee Internet?

Step by Step Remotedesktopfreigabe unter Windows Server von Christian Bartl

Primzahlen und RSA-Verschlüsselung

Step by Step Webserver unter Windows Server von Christian Bartl

Professionelle Seminare im Bereich MS-Office

Hilfe Bearbeitung von Rahmenleistungsverzeichnissen

icloud nicht neu, aber doch irgendwie anders

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

Leichte-Sprache-Bilder

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Anleitung über den Umgang mit Schildern

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

Die Dateiablage Der Weg zur Dateiablage

GEVITAS Farben-Reaktionstest


SICHERN DER FAVORITEN

Zeichen bei Zahlen entschlüsseln

WS 2009/10. Diskrete Strukturen

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Guide DynDNS und Portforwarding

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Vorkurs Informatik WiSe 15/16

FlowFact Alle Versionen

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Grundlagen der Theoretischen Informatik, SoSe 2008

Algorithmen und Datenstrukturen

UserManual. Handbuch zur Konfiguration einer FRITZ!Box. Autor: Version: Hansruedi Steiner 2.0, November 2014

Welche Bereiche gibt es auf der Internetseite vom Bundes-Aufsichtsamt für Flugsicherung?

DELFI. Benutzeranleitung Dateiversand für unsere Kunden. Grontmij GmbH. Postfach Bremen. Friedrich-Mißler-Straße Bremen

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook ( ) Zentrum für Datenverarbeitung der Universität Tübingen

Beheben von verlorenen Verknüpfungen

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Erklärung zum Internet-Bestellschein

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Steganos Secure Schritt für Schritt-Anleitung für den Gastzugang SCHRITT 1: AKTIVIERUNG IHRES GASTZUGANGS

INSTALLATION VON INSTANTRAILS 1.7

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Anleitung zur Einrichtung eines Netzwerkes für den Gebrauch von GVService unter Windows 7

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

FTP-Leitfaden RZ. Benutzerleitfaden

EasyWk DAS Schwimmwettkampfprogramm

Digitale Magazine ohne eigenen Speicher

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

10. Public-Key Kryptographie

Nutzung von GiS BasePac 8 im Netzwerk

Anhand des bereits hergeleiteten Models erstellen wir nun mit der Formel

Gefahren aus dem Internet 1 Grundwissen April 2010

Datenstrukturen & Algorithmen

TeamSpeak3 Einrichten

Thema: Microsoft Project online Welche Version benötigen Sie?

Thunderbird herunterladen, Installieren und einrichten Version (portable)

How to do? Projekte - Zeiterfassung

Rekursionen. Georg Anegg 25. November Methoden und Techniken an Beispielen erklärt

Einfügen von Bildern innerhalb eines Beitrages

Urlaubsregel in David

Netzwerk einrichten unter Windows

PTV VISWALK TIPPS UND TRICKS PTV VISWALK TIPPS UND TRICKS: VERWENDUNG DICHTEBASIERTER TEILROUTEN

Sie werden sehen, dass Sie für uns nur noch den direkten PDF-Export benötigen. Warum?

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer.

Anleitung zur Konfiguration eines NO-IP DynDNS-Accounts mit der TOOLBOXflex-3.2

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Teil 1: IT- und Medientechnik

Ihr Weg in die Suchmaschinen

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Speicher in der Cloud

Root-Server für anspruchsvolle Lösungen

Transkript:

Kapitel 13 Peer-to-Peer-Netzwerke Nach der Bedeutung des Wortes peer (engl. Gleichrangig ) bezeichnet ein Peer-to-Peer-Netzwerk ein Netzwerk, das Gleichrangige mit anderen Gleichrangigen verbindet. Diese Umschreibung würde auch allgemein für Rechner des Internets gelten. Schließlich unterscheiden die Internet Protocol (IP) Adressen nicht zwischen bevorzugten und weniger bevorzugten Adressen. Trotzdem haben sich im Internet zentralisierte Client-Server-Strukturen entwickelt, wie zum Beispiel Web- und Mail-Server. Bei einer Client-Server-Netzwerk-Struktur kontrolliert ein besonders bevorrechtigter Knoten (= Server) die anderen Teilnehmer (= Clients). So speichert zum Beispiel ein Web-Server Web- Seiten, die von Web-Clients abgerufen werden können. Hierzu melden sie sich beim Web-Server, welcher dann die angeforderten Web-Seiten an den Web-Client überträgt. Verweigert der Web- Server einem Client den Zugriff, so ist dieser machtlos. Des Weiteren sind keine Web-Seiten mehr abrufbar, wenn der Web-Server ausfällt. Wenn man also die funktionale Beschreibung eines Netzwerks betrachtet, so gilt die folgende Definition: 11. Vorlesung 27.06.2005 Holger Mense (hmense(at)upb.de) Ein Peer-to-Peer-Netzwerk ist ein Kommunikationsnetzwerk zwischen Rechnern, in dem jeder Teilnehmer sowohl Client als auch Server-Aufgaben durchführt. Das bedeutet, es findet ein direkter Datenaustausch statt, der nicht auf Server angewiesen ist. Allerdings existieren Peer-to-Peer-Netzwerke wie zum Beispiel Napster, die diese Definition nicht erfüllen. Eine allgemeinere Definition von Peer-to-Peer-Netzwerken hat die Peer-to-Peer-Workinggroup formuliert: In einem Peer-to-Peer-Netzwerk werden verteilte Rechenressourcen durch direkte Kommunikation gemeinsam genutzt. Diese Definition ist allerdings schon wieder zu allgemein. Die einzige Aussage, die man sicher Peer-to-Peer-Netzwerke aufstellen kann, ist, dass Peer-to-Peer-Netzwerke nicht dem Client-Server- Modell unterliegen. Durch die verteilte Struktur in einem Peer-to-Peer-Netzwerk unterliegt es einer großen Dynamik. Teilnehmer des Netzwerks (auch bezeichnet als Peers oder Knoten) erscheinen und verschwinden während dessen gesamten Existenz. Dabei hat jeder Knoten nur wenig Informationen über das Netzwerk. Ein Knoten weiß zum Beispiel nichts über die unterliegende Struktur, mit der alle Knoten untereinander verbunden sind. Insgesamt kommt das Netzwerk ohne zentrale Kontrolle oder anderen hierarchischen Strukturen aus. Jeder Knoten verwendet die gleiche Software, um sich in das Netzwerk einzugliedern und um dann über es zu kommunizieren. 87

88 KAPITEL 13. PEER-TO-PEER-NETZWERKE 13.1 Peer-to-Peer-Netzwerke 2005 Heute sind Peer-to-Peer-Netzwerke sehr populär. Statistisch werden ungefähr 50% des gesamten Internetdatenverkehrs von Peer-to-Peer-Netzwerken erzeugt. Etwa 30 Millionen Europäer haben schon mal ein Peer-to-Peer-Netzwerk benutzt. Trotz dieser Popularität leben Peer-to-Peer-Netzwerke in einer feindlichen Umgebung. In den Medien treten Peer-to-Peer-Netwerke oft nur mit der Verbreitung illegalen Materials, zum Beispiel Musik- oder Videodateien, in Erscheinung. Dieser Umstand (und auch der des hohen Anteils am gesamten Datenverkehr) führt dazu, das Internet Service Provider (ISP) Peer-to-Peer-Netzwerk Verkehr filtern und so für ihre Kunden unbenutzbar machen. Auch Systemadministratoren kleinerer Netzwerke versuchen ihrer Benutzer an der Verwendung von Peer-to-Peer-Software zu hindern, um so möglichen Verstoßen gegen das Urheberrecht zu entgehen. Ein weiteres Problem für Peer-to-Peer-Netzwerke sind egoistische Benutzer, die Daten herunterladen ohne selbst welche zur Verfügung zu stellen. Sobald dieses Verhalten von (fast) allen Benutzern umgesetzt wird, sind nicht mehr viele Dateien vorhanden, die im Netzwerk getauscht werden können. Einige Netzwerke sind daher auch dazu übergangen, dass jeder Benutzer, der Daten herunterladen möchte, auch welche anbieten muss. Auch algorithmisch sind Peer-to-Peer-Netzwerke eine Herausforderung. Daten sollen in einem solchen Netzwerk nicht schwer aufzufinden sein, dennoch nimmt gerade die Suche die meiste Zeit in Anspruch. Ein anderer Aspekt ist die Netzwerkstruktur, mit der die einzelnen Knoten verbunden sind. Sie darf zum einen nicht zuviel Anforderungen an jeden Client stellen (der Grad eines jeden Knotens sollte aus Verwaltungsgründen möglichst gering sein), gleichzeitig muss die Struktur aber einen Zusammenhang garantieren und eine möglichst effiziente Kommunikation erlauben. 13.2 Generationen der Entwicklung von Peer-to-Peer-Netzwerken Die Entwicklung von Peer-to-Peer-Netzwerken kann in Generationen eingeteilt werden. 1. Generation: Die Entwicklung von Peer-to-Peer-Netzwerke der ersten Generation hat mit Napster ihren Anfang genommen. Trotz des Peer-to-Peer Ansatzes verfügen sie über eine Client-Server-Struktur, in der ein Server die Vermittlung zwischen den einzelnen Clients vornimmt. 2. Generation: In einer zweiten Generation von Peer-to-Peer-Netzwerken sind diese unkoordiniert, aber vollständig dezentral organisiert. Es existiert keine zentrale Komponente mehr, die für die korrekte Funtkionsweise des Netzwerks erforderlich ist. Dadurch sind sie auch vollständig unkontrolliert. Keine Instanz kann den Verbindungsaufbau eines bestimmten Benutzers unterbinden. Beispiele für Peer-to-Peer-Netzwerke der zweiten Generation sind unter anderem Gnutella, edonkey und Kazaa. 3. Generation: Die dritte Generation von Peer-to-Peer-Netzwerken erweitert Netzwerke der zweiten Generation um weitere Eigenschaften. Zur Verwaltung von Peers und Daten im Netzwerk werden effiziente Datenstrukturen eingeführt. Solche Ideen finden sich zum Beispiel in den Peer-to-Peer-Netzwerken CAN, Chord, Pastry oder Tapestry. Eine weitere neue Eigenschaft ist die Gewährleistung von Anonymität innerhalb des Netzwerks. Ziel ist es, Daten auszutauschen ohne das ermittelt werden kann, wer Daten anbietet oder abruft. Für die Gewährleistung der Anonymität sind ebenfalls komplexe Datenstrukturen erforderlich. Beispiele für solche Peer-to-Peer-Netzwerke sind Freenet, I2P, GNUnet und Entropy.

13.3. PEER-TO-PEER-NETZWERKE DER ERSTEN GENERATION 89 Abbildung 13.1: Netzwerkstruktur von Napster 13.3 Peer-to-Peer-Netzwerke der ersten Generation 13.3.1 Napster Napster ist ein geschichtlich wichtiges Netzwerk [Röt03]. Geschichte Shawn (Napster) Fanning veröffentlichte im Juni 1999 eine Beta-Version seines Peer-to-Peer- Netzwerks Napster. Die Aufgabe dieser Software war ein Tauschbörsen-System, mit dem man Dateien auf Rechnern, die ebenfalls diese Software einsetzten, lokalisieren und auf den eigenen Computer herunterladen konnte. Durch das Engagement eines Freundes erweiterte Fanning das System zu einem Musik-Portal, das zur Verbreitung von Musikdateien diente. Bereits im Herbst 1999 war die Zugangssoftware für Napster Download des Jahres. Aufgrund der systembedingten Missachtung von Urheberrechten der Autoren, reichte die Musikindustrie im Juni 2000 eine Klage gegen Fanning ein, mit dem Ziel der Stilllegung des Systems. Durch die gesteigerte Publizität nahm die Anzahl der Teilnehmer zunächst sogar zu. Schließlich schloß Fanning Ende 2000 einen Kooperationsvertrag mit Bertelsmann Ecommerce, was die Umwandlung des bisher kostenlosen Sytems in eine kommerzielle File-Sharing-Plattform zur Folge hatte. Funktionsweise Napster folgt im Wesentlichen einem Client-Server-Modell (siehe Abbildung 13.1) mit Tendenzen zu einem Peer-to-Peer-Netzwerk. Ein Server unterhält einen Index mit Meta-Daten über den Dateinamen, das Dateidatum und ähnliche Informationen. Des Weiteren verwaltet der Server eine Tabelle aller Verbindungen der teilnehmenden Clients. Zusätzlich hat er eine Tabelle mit allen Dateien, die ein Client anbietet. Bei einer Anfrage sendet nun ein Client diese an den Server. Dieser durchsucht alle Tabellen, welche die Namen aller von den Clients veröffentlichten Dateien enthalten, und liefert als Ergebnis den Client, der die gesuchte Datei anbietet. Der anfragende Client stellt dann eine direkte Verbindung mit dem anbietenden Client her und lädt die Datei herunter. Dieser letzter Schritt ist das einzige, was der eingangs formulierten Definition eines Peer-to-Peer-Netzwerks entspricht. Bewertung Die Vorteile von Napster sind dessen Einfachheit und die Möglichkeit schnell und effizient Dateiverweise zu finden.

90 KAPITEL 13. PEER-TO-PEER-NETZWERKE Die Nachteile sind vor allem in der Client-Server-Struktur begründet. Die zentrale Struktur ermöglicht feindliche Eingriffe in das System. Dies muss nicht unbedingt eine richterliche Verfügung im Auftrag eines Musikverlags sein, sondern kann auch durch Zensur von Seiten staatlicher Behördern erfolgen. Zusätzlich ist die zentrale Struktur anfällig für Denial-of-Service Angriffe. Durch einen gezielten Angriff des Servers wird das gesamte Netzwerk ausgehebelt. Ebenso kann dies aber auch durch technische Pannen, zum Beispiel Ausfälle der Hardware, eintreten. Ein weiterer Nachteil ist, dass Napster nicht skaliert, d.h. mit zunehmender Teilnehmerzahl verschlechtert sich die Performanz des gesamten Netzwerks, da der Server immer mehr Daten verwalten muss und nur über einen endlichen Speicher verfügt. Abschließend ist festzuhalten, das Napster keine akzeptable Peer-to-Peer-Netzwerklösung darstellt. Abgesehenvom Download-Aspekt erfüllt es auch keine Definition für Peer-to-Peer-Netzwerke und ist daher kein Peer-to-Peer-Netzwerk im eigentlichen Sinne. Skalierbarkeit von Napster Napsters Client-Server-Struktur entspricht einer Stern-Topologie. Diese hat den Nachteil, dass ein Server die Anfragen aller Clients bedienen muss. Bei einer steigenden Anzahl an Clients wird schließlich der Server zum Flaschenhals für die Kommunikation. Graphentheoretisch entspricht Napster einem Stern-Graph. Der Server steht mit dem Grad n 1 im Mittelpunkt und ist im Hinblick auf den Zusammenhang des Graphens ein Schwachpunkt, da der Sterngraph nur 1-zusammenhängend ist. Definition 1 Ein Graph ist k-zusammenhängend, wenn nach Entfernen von k 1 beliebigen Knoten der Graph noch zusammenhängend ist und wenn nach dem Entfernen von k Knoten der Graph nicht mehr zusammenhängend ist. Neben dem hohen Grad des Netzwerkgraphs von Napster ist der Zusammenhang des Graphs schwach, da bereits der Ausfall eines Knotens (nämlich der des Servers) zu einem Ausfall des gesamten Netzwerks führt. 13.3.2 Gnutella Gnutella ist gemäß der Definitionen aus der Einleitung ein richtiges Peer-to-Peer-Netzwerk, entstanden aus der Fortführung von Napster. Geschichte Gnutella wurde im März 2000 von der Firma Nullsoft, die bereits seit 1999 eine Tochter von AOL ist, veröffentlicht. Entwickelt wurde das Netzwerk von Justin Frankel und Tom Pepper. Wie bei Napster handelt es sich bei Gnutella um ein File-Sharing-System. Anders als Napster arbeitet Gnutella jedoch völlig ohne zentrale Strukturen und zentrale Kontrolle. Funktionsweise Damit der Gnutella-Client sich beim ersten Start auch mit dem Gnutella-Netzwerk verbinden kann, sind einige Adressen voreingestellt. Diese werden beim Programmstart durchprobiert. Wird ein aktiver Peer gefunden, übernimmt der Client dessen k-hop-nachbarschaft, d.h. alle Peers, die nicht weiter als k Hops vom aktuellen Peer entfernt sind, in die eigene Nachbarschaftsliste. Diese wird bei einem erneuten Verbindungsversuch mit dem Gnutella-Netzwerk verwendet, um aktive Peers zu finden. Innerhalb des Gnutella-Netzwerks hält jeder Peer direkte Verbindungen zu anderen Knoten. Dabei ist die maximale Anzahl aktiver Nachbarn auf fünf beschränkt. Die Netzwerkstruktur von Gnutella ist in Abbildung 13.2 schematisch dargestellt. Die Kommunikation zwischen den Teilnehmern erfolgt mittels Nachrichten[Gnu]. Eine Übersicht aller Nachrichtentypen gibt Tabelle 13.1. Hat ein Peer eine Nachricht vom Typ Ping oder

13.3. PEER-TO-PEER-NETZWERKE DER ERSTEN GENERATION 91 Abbildung 13.2: Netzwerkstruktur von Gnutella Abbildung 13.3: Gnutella Schnappschuss im Jahr 2000 Typ Beschreibung Inhalt Ping Anfrage an Peer, sich anzukündigen - Pong Antwort auf Ping IP und Port-Adresse des angefragten Teilnehmers; Anzahl und Größe zur Verfügung gestellter Dateien Query Suchanfrage Suchstring Query-Hit Antwort auf Query Anzahl passender Dateien und indizierte Ergebnismenge zur Suchanfrage Tabelle 13.1: Gnutella: Nachrichtentypen Query empfangen, leitet er sie an seine aktiven Nachbarn weiter. Der Informationsprozess im Gnutella-Netzwerk ist somit ein beschränkter Broadcast, da jeder Nachricht auch ein TTL (Timeto-live) Wert mitgeben wird, welcher bei jedem Sprung von einem Peer zum nächsten um eins verringert wird. Hat der TTL den Wert null erreicht, wird die Nachricht vom Netzwerk entfernt. Dadurch wird sichergestellt, dass Nachrichten nicht das Netzwerk verstopfen. Antworten auf Anfragen werden auf dem gleichen Pfad durch das Netz zurückgeschickt, den auch die Anfrage genommen hat. Es wird also nicht zwingend der kürzeste Weg für eine Nachricht gewählt. Die Graphenstruktur des Gnutella-Netzwerks entsteht somit durch einen zufälligen Prozess, da diese allein durch die Menge der zufällig aktiven Peers und deren aktiven Nachbarn bestimmt wird. Abbildung zeigt 13.3 einen Schnappschuss des Gnutella-Netzwerks aus dem Jahr 2000[MFK01]. Bei einer Dateianfrage sendet der Anfragende Client eine Query-Nachricht an alle seine Nachbarn. Diese leiten die Nachricht wiederum an alle ihre Nachbarn weiter, bis schließlich der TTL- Wert bei null angekommen ist. Alle Peers, die die Dateianfrage erhalten haben durchsuchen ihren Datenbestand und senden bei einem positiven Fund eine Query-Hit-Nachricht an den Anfragenden Client zurück. Diese Nachricht wird wiederum auf den gleichen Pfad wie die Anfrage durch das Netzwerk geleitet. Der Benutzer kann nun aus den Suchergebnissen eine passende Datei auswählen. Der Peer nimmt dann direkten Kontakt mit dem anbietenden Knoten auf, um die Datei herunterzuladen.

92 KAPITEL 13. PEER-TO-PEER-NETZWERKE Bewertung Der Vorteil von Gnutella ist die Sicherheit, begründet durch die verteilte Netzwerkstruktur. Dadurch ist das Netzwerk robust und praktisch unangreifbar, da keine unverzichtbare zentrale Stelle existiert. Des Weiteren skaliert die Netzwerkstruktur gut. Es können beliebig viele Knoten ohne Performanzverlust aufgenommen werden. Dennoch hat Gnutella auch Nachteile. Durch die Begrenzung der Reichweite einer Nachricht mittels eines TTL-Werts findet für Anfragen eine implizite Partitionierung des Netzwerks statt. Somit erfolgt die Suche unkoordiniert, damit einer Anfrage nicht das gesamte Netzwerk, sondern immer nur ein Teilbereich durchsucht wird. Selten vorhandene Dateien können damit nur schwer gefunden werden. Je niedriger der TTL-Wert ist, desto geringer wird der Anfrageerfolg ausfallen. Eine simple Erhöhung des TTL-Werts trägt allerdings nicht zur Verbesserung der Situation bei, da dadurch auch der Datenverkehr durch das Nachrichtenaufkommen weiter verstärkt wird. Da der Netzwerkdurchmesser eines Gnutella-Netzwerks verglichen mit einer Baumstruktur sehr hoch ist, entstehen für Nachrichten lange Wege. Diese führen wiederum zu großen Latenzzeiten. Insgesamt ist die Netzwerkstruktur nicht gut für das Suchen nach Dateien geeignet. Es existieren mehrere Verbesserungsvorschläge um das Nachrichtenaufkommen im Gnutella- Netzwerk zu verringern. So könnten Nachrichten anstatt wie bei einem Broadcast als sogenannter Random Walk verteilt werden. Bei einem Random Walk wird eine Nachricht nicht an alle Nachbarn, sondern nur einen zufällig ausgewählten Peer weitergereicht. Auf diese Weise kann die Dateianfrage weiter in das Netzwerk hineingereicht werden, ohne das Nachrichtenaufkommen dabei stark zu erhöhen. Eine weitere Möglichkeit ist die passive Replikation von Informationen entlang des Pfads. Hierbei werden Ergebnislisten gespeichert und neue Anfragen nach den selben Dokumenten können dann sehr schnell beantwortet werden, ohne dass die Dateianfrage weit in das Netzwerk gereicht werden muss. Letztendlich hat sich jedoch keine der Verbesserungen durchgesetzt. Skalierbarkeit von Gnutella Die Graphstruktur des Gnutella-Netzwerks ist ein zufälliger Verbindungsgraph (siehe Abbildung 13.4). Der Grad des Graphen ist klein und der Durchmesser gering. Dies läßt sich anhand statistischer Untersuchungen nachweisen. Trotzdem ist die Suche nach Dateien im Netzwerk aufwändig. Um eine Datei sicher in einem Netzwerk zu finden, muss das gesamte Netzwerk durchsucht werden. Dies ist allerdings bei Gnutella auf Grund des TTL-Felds in den Nachrichten nicht möglich. Somit wird immer nur ein Teilnetzwerk durchsucht, weiter entfernte Informationen werden dagegen nicht berücksichtigt. 13.3.3 Gnutella 2, Kazaa, Morpheus Um die Schwächen von Gnutella auszumerzen, wurde die Struktur zu einem sogenannten hybriden Netzwerk umgewandelt und als Peer-to-Peer-Netzwerk Gnutella 2 veröffentlicht. Eine ähnliche Struktur liegt auch den Peer-to-Peer-Netzwerken Kazaa und Morpheus zu Grunde. Funktionsweise Knoten mit großer Bandbreite werden zu sogennanten Super-Nodes ernannt. Diese unterhalten ein Peer-to-Peer-Netzwerk im Stil von Gnutella. Normale Knoten werden als Client-Node an die Super-Nodes gebunden. Dabei kann ein Client-Node mit mehreren Super-Nodes verbunden sein, siehe Abbildung 13.5. Die Super-Nodes verwalten die Listen mit den an ihnen angebundenen Client-Nodes. Dateianfragen von einem Client-Node werden dann nur durch das Netzwerk der Super-Nodes gereicht [Zie05]. Diese Verfahrensweise entspricht nicht mehr dem Prinzip eines Peer-to-Peer-Netzwerks, da in einem hybriden Netzwerk nicht mehr alle Knoten gleichrangig sind.

13.4. DATENSTRUKTUREN FÜR EIN PEER-TO-PEER-NETZWERK 93 Abbildung 13.4: Zufälliger Verbindungsgraph Abbildung 13.5: Eine hybride Netzwerkstruktur Bewertung Die Vorteile der hybriden Netzwerkstruktur sind die verbesserte Skalierbarkeit und die Verringerung der Latenzzeiten. Durch die Einführung der Super-Nodes kann wesentlich besser nach Dateien gesucht werden, da es einen bekannten Kreis an Peers gibt, die Indexlisten verwalten. Jedoch geht dies einher mit der Abkehr eigentlichem Prinzip eines Peer-to-Peer-Netzwerks, in dem alle Teilnehmer gleichberechtigt sind. Ein Nachteil des Netzwerks ist, dass es unzuverlässig ist. Es ist nicht sichergestellt, ob das TTL-Feld einer Nachricht ausreicht, das gesamte Netzwerk der Super-Nodes zu durchsuchen. Da hier letztendlich wieder die Gnutella-Netzwerkstruktur verwendet wird, kann auch dieses Teilnetz groß und nicht mehr mit einer Nachricht durchdringbar sein. Des Weiteren verringert sich die Nachrichtenlast nur bei den Client-Nodes, nicht aber bei den Super-Nodes. Ein weiterer Nachteil ist, das sich Peers der Funktion als Super-Node verweigern können. Skalierbarkeit von hybriden Netzwerken Auch bei der hybriden Netzwerkstruktur hat der unterliegenden Graph einen geringen Durchmesser (da die Verbindung der Super-Nodes untereinander einem Gnutella-Netzwerk entspricht). Auch der Zusammenhang ist groß, aufgrund der Anzahl an Super-Nodes an die sich an Client gleichzeitig binden kann. Hybride Netzwerkstrukturen verbessern die Anfragebearbeitung. Trotzdem muss eine Anfrage immer noch von allen Super-Nodes bearbeitet werden. Durch die hybride Struktur skalieren solche Netzwerke nicht so schlecht wie Gnutella oder Napster, müssen unter Umständen aber immer noch viele Millionen Anfragen pro Node verarbeiten. 13.4 Datenstrukturen für ein Peer-to-Peer-Netzwerk Die Skalierbarkeit eines Netzwerks hängt von der schnellen Beantwortung zweier Fragen ab: Wo ist die Information gespeichert? Napster kann durch seinen zentralen Server die gewünschten Informationen sehr schnell finden. Im Gnutella-Netzwerk muss dagegen eine langwierige Suche auf allen Knoten durch-

94 KAPITEL 13. PEER-TO-PEER-NETZWERKE Abbildung 13.6: Eine Hash-Table ist nur bedingt als Peer-to-Peer-Netzwerk einsetzbar geführt werden. Dabei ist durch das Protokoll nicht sichergestellt, dass alle Knoten nach der Information durchsucht werden. Wie kann man auf die Information zugreifen? Durch die zentrale Struktur von Napster und einer hohen Teilnehmerzahl kann der Zugang zum Server blockiert werden, wenn viele Anfragen in kurzen Intervallen erzeugt werden. Das Gnutella-Netzwerk kann ebenfalls blockiert werden, wenn sehr viele Nachrichten erzeugt und von den einzelnen Knoten weitergereicht werden müssen. Das Netzwerk wird dann mit Nachrichten überflutet. Für die Verwaltung von Daten in einem Peer-to-Peer-Netzwerk sind also effiziente Datenstrukturen erforderlich. 13.4.1 Hash-Table Eine Hash-Table ist eine Datenstruktur, in der man anhand eines Schlüssels den passenden Eintrag in logarithmischer Zeit wiederfinden kann. Für die Erzeugung der Schlüssel wird eine sogenannte Hash-Funktion verwendet, welche aus den ursprünglichen Datum einen Schlüssel erzeugt. Eine einfache Hash-Funktion ist zum Beispiel die Modulo-Funktion a mod p, welche als Ergebnis immer den Rest der Zahl a nach der Division durch p hat. Dabei kann es natürlich zu Kollisionen kommen und für zwei unterschiedlichen Daten der gleiche Schlüssel berechnet werden. Es gibt verschiedene Möglichkeiten, um in einer Hash-Table Kollisionen zu behandeln. Eine Möglichkeit ist die Verwaltung von Daten mit gleichen Schlüsseln in einer verketten Liste. Die Übertragung einer Hash-Table in ein Peer-to-Peer-Netzwerk ist in Abbildung 13.6 dargestellt. Jeder Peer ist ein Speicherplatz in der Hash-Table. Alle Peers sind in einer verketteten Liste angeordnet. Um nach einem Datum x zu suchen, kann man nun den Schlüssel mit der bekannten Hash-Funktion f(x) berechnen. Anhand des Ergebnisses weiß man nun, welcher Peer die Information gespeichert hat. Dadurch entsteht intelligentes Routing. Wenn der aktuelle Peer weit vom Zielknoten entfernt ist, weiß er, welcher seiner Nachbarn näher am Ziel ist. Und irgendein Nachbar des Nachbars wird dann den Zielknoten kennen (ähnlich dem Small-World-Phänomen [Sta67]). Problematisch an diesem Ansatz sind jedoch die langen Wege, die durch eine große Anzahl an teilnehmenden Peers entstehen können. Ein weiteres Problem ist, dass bei Eintritt eines neuen Peers eine neue Hash-Funktion erforderlich ist, da nun mehr Speicherplätze zur Verfügung stehen. Dies kann dazu verführen, dass alle gespeicherten Einträge neu zugeordnet werden müssen. Der gleiche Fall tritt ein, wenn ein Teilnehmer das Netzwerk verlässt. 13.4.2 Distributed-Hash-Table Die Problematik bezüglich des Einfügens und Entfernen von Peers in einer Hash-Table kann durch Verwendung einer Distributed-Hash-Table gelöst werden. Ein Peer erhält ein Teil des Wertebereichs, auf den die Hash-Funktion abbildet. Die Daten werden wiederum gehasht und den Peers zugeordnet, die den Wertebereich des jeweiligen Datum Schlüssels verwalten, siehe Abbildung 13.7.

13.5. CONTENT ADDRESSABLE NETWORK (CAN) 95 Abbildung 13.7: Zuordnung von Peers und Daten bei einer Distributed-Hash-Table Wenn ein neuer Knoten im Netzwerk aufgenommen wird, erfolgt eine Aufteilung des Wertebereichs zweier benachbaarter Peers. In Abbildung 13.8 erhält einen neuer Peer (dargestellt als schwarzer Kreis) einen Teilbereich der benachbarten Peers. Durch die Neuordnung des Wertebereichs müssen noch einige Datenelemente reorganisiert werden. Da die Umstrukturierung des Wertebereichs aber nur einen kleinen Teil des gesamten Wertebereichs der Hash-Funktion betrifft, muss auch nur ein kleiner Teil der gesamten Datenmenge neu organisiert werden. Dies ist der Vorteil gegenüber einer Hash-Table, da nun nur noch die direkten Nachbarn von solchen Operationen betroffen sind, der Rest bleibt unberührt. Wenn ein Peer das Netzwerk verlässt (siehe Abbildung 13.9), übergibt er seinen Wertebereich an seine direkten Nachbarn. Wieder müssen nur wenige Datenelemente umorganisiert werden. 13.4.3 Fazit Während sich Hash-Tables nicht optimal als Peer-to-Peer-Netzwerk einsetzen lassen, ist dieses mit einer Distributed-Hash-Table einfach möglich. Jedes Datum kann einem bestimmten Peer zugewiesen werden, und das Einfügen und Entfernen von Knoten erzeugt nur Veränderungen der benachbarten Peers. In der Tat werden von vielen Peer-to-Peer-Netzwerken Distributed-Hash- Tables verwendet. Allerdings fehlt noch eine Datenstruktur, die die einzelnen Knoten in einem Netzwerk organisiert, so dass eine Kommunikation untereinander möglich ist. 13.5 Content Addressable Network (CAN) Das Peer-to-Peer-Netzwerk CAN, vorgestellt in [RFH + 01], baut auf dem Konzept von Hash-Tables auf. Zusätzlich verwendet es Random Trees und ein Gitter als Datenstruktur. Abbildung 13.8: Ein neuer Peer (schwarzer Kreis) wird in das Netzwerk aufgenommen Abbildung 13.9: Ein Peer (grüner Kreis) verlässt das Netzwerk; rot und blau übernehmen jeweils einen Teil des Wertebereichs

96 KAPITEL 13. PEER-TO-PEER-NETZWERKE Abbildung 13.10: Peers werden in das CAN-Netzwerk aufgenommen 13.5.1 Aufbau CAN verwendet eine Hash-Funktion, deren Bildbereich der zwei-dimensionale Raum [0, 1] 2 ist. Ist am Anfang nur ein Peer im Netzwerk vorhanden, erhält er die Verwaltung des kompletten Bildbereichs. Kommt ein neuer Peer hinzu, muss er die Verwaltung eines Teilraums übernehmen. Dazu wird der Bildbereich quer zur x-achse in zwei Teile geteilt. Kommt ein weiterer Peer hinzu, wählt dieser zunächst einen zufälligen Punkt (x, y) [0, 1] 2 aus. Der für diesen Punkt zuständige Peer wird kontaktiert und dessen Zone geteilt. Die Teilung erfolgt entweder entlang der x- oder der y-achse, je nachdem wie zuletzt die Zone geteilt wurde (erst y, dann x, dann wieder y, etc.). Dieser Vorgang ist in Abbildung 13.10 grafisch veranschaulicht. Zwischen den Peers benachbarter Rechtecke wird dann eine Netzwerkverbindung hergestellt. Die erwartete Fläche eines Peers in CAN Im Folgenden sei R(p) das Rechteck eines Peers p im CAN-Netzwerk. A(p) bezeichne die Fläche, die das Rechteck des Peers p einnimmt. Zu Anfang hat das Quadrat, in den die Hash-Funktion abbildet die Größe 1. Nach dem Einfügen von n Peers kann folgendes nachgewiesen werden: Lemma 1 Die erwartete Fläche, die ein Peer p verwalten muss, beträgt 1 n : E[A(p)] = 1 n. Beweis: Seien 1,..., n die Peers. Für die Summer aller Teilflächen gilt: n A(i) = 1. i=1 Da alle Peers in einer unbestimmten Reihenfolge eintreffen, gilt wegen Symmetrie für zwei beliebige Peers i, j: Daraus folgt 1 = n i=1 E[A(i)] = E[A(j)]. [ n ] A(i) = E A(i) = n E [A(i)] = n E [A(1)]. i=1 i=1 Dies gilt, da der Erwartungswert der Summe von Zufallsvariablen gleich der Summe der Erwartungswerte der einzelnen Zufallsvariablen ist, also E[A(a) + A(b) + A(c)... A(n)] = E[A(a)] + E[A(b) + E[A(c)] + + E[A(n)]. Da alle Erwartungswerte in diesem Fall gleich (= A(1)) sind, kann das auch als Produkt ausgedrückt werden: n E[A(1)]. Der Erwartungswert für die zu verwaltene Fläche ist jedoch nicht sonderlich aussagekräftig. Lemma 2 Für Wahrscheinlichkeit P R,n, dass ein Rechteck R von keinem der n Peers geteilt wird, gilt: P R,n e nv (R).

13.5. CONTENT ADDRESSABLE NETWORK (CAN) 97 Beweis: Betrachte ein Rechteck R der Fläche x = V (R). Die Wahrscheinlichkeit, dass ein Peer nicht in diese Fläche fällt, ist 1 x. Die Wahrscheinlichkeit, dass n Peers nicht in R fallen, ist (1 x) n da die Wahl des Punktes zufällig gleichverteilt erfolgt. Nun gilt für alle m > 0: Damit folgt für diese Wahrscheinlichkeit ( ) 1 1 m m 1 e. (1 x) n = ((1 x) 1 x ) nx e nx und damit das Lemma. Wenn also einem Peer ein großes Rechteck zur Verwaltung erhält, ist die Wahrscheinlichkeit expontentiell klein, dass dieses Rechteck nicht geteilt wird. Aber wie groß kann ein Rechteck sein, das nicht geteilt wird? Lemma 3 Mit Wahrscheinlichkeit (log n)n c wird ein Rechteck der Größe Wahrscheinlichkeit nicht geteilt. Beweis: Aus P R,n e nv (R) folgt für ein Rechteck R i und der Fläche 2 i P Ri,c2 i ln n e c2i ln nv (R i) = n c. 2c(ln n) n mit hoher Es genügen also c 2 i ln n Peers um R i mit Wahrscheinlichkeit 1 n c zu teilen. Diese kommen n nun hintereinander und können nach log 2c ln n Einfügeoperationen von Peers mit dieser Wahrscheinlichkeit auch ein Rechteck der Größe 2c ln n n teilen, da log n 2c ln n i=1 c 2 i ln n = c (ln n) log n 2c ln n i=1 2 i c (ln n) 2 log n c ln n = n. 2c(ln n)m Wenn m Elemente insgesamt gespeichert werden, erhält jeder Peer also maximal n Elemente, während ein durchschnittlicher Peer m n Elemente speichert. Also speichert jeder Peer mit hoher Wahrscheinlichkeit höchstens 2c(lnn) mal mehr als ein durchschnittlicher Peer. Damit ist die Aufteilung im CAN-Netzwerk im Durchschnitt einigermaßen gerecht. 13.5.2 Funktionsweise Lookup Für eine Suchanfrage wird zunächst der Ort durch Berechnung der Hash-Funktion bestimmt. Danach kann mit dem Speicherort (= Ergebnis der Hash-Funktion) Kontakt aufgenommen werden. Zwischen den Peers benachbarter Rechtecke bestehen Verbindungen (siehe Abbildung 13.11), so dass die Anfrage in Richtung des ermittelten Orts weitergeleitet werden kann. Angenommen, d bezeichne die Dimension des Quadrats, das CAN zu Grunde liegt. d = 1 repräsentiert eine Linie, d = 2 ein Quadrat, d = 3 einen Würfel, etc. Die erwartete Anzahl Sprünge, bis die Anfrage ihr Ziel erreicht hat, beträgt dann n 1 d.

98 KAPITEL 13. PEER-TO-PEER-NETZWERKE Abbildung 13.11: Peers benachbarter Rechtecke haben eine Verbindung Abbildung 13.12: Darstellung der Aufteilung des Bildbereichs der CAN Hash- Funktion als Random Tree Abbildung 13.13: Peer A hat das Netzwerk verlassen, Peer E bemerkt diesen Umstand und übernimmt das Rechteck von Peer A Einfügen eines Peers Wenn man das Einfügen in CAN betrachtet, dann erhält man einen Random Tree (siehe Abbildung 13.12). Zuf llig deswegen, weil bei jeder Einfügeoperation zufällig entschieden wird, wo das Blatt eingefügt wird. Ein Random Tree hat eine erwartete Tiefe von 2log n + O(1) und überschreitet mit hoher Wahrscheinlichkeit, d.h. 1 n c nicht die Tiefe O(log n). Das Einfügen von Peers in CAN funktioniert nun genauso wie das Einfügen in einen Random Tree. Neue Blätter werden zufällig eingefügt. Dies passiert entlang der folgenden Vorgehensweise: Falls die aktuell gewählte Position ein interner Knoten ist (also über zwei Blätter verfügt), gehe zufällig in den linken oder rechten Teilbaum. Falls die aktuelle gewählte Position ein Blatt ist, füge zwei Blatt an dieser Wurzel hinzu. Ein Blatt wird von dem neuen Peer verwaltet, das andere von dem Peer, der bisher den oberen Knoten verwaltet hat. Entfernen eines Peers Wenn ein Peer aus dem CAN-Netzwerk verschwindet, kündigt er das nicht vorher an. Daher testen alle Peers regelmäßig, ob ihre Nachbarn noch im Netzwerk anwesend sind. Falls ein Peer feststellt, dass einer seiner Nachbarn nicht mehr anwesend ist, übernimmt er die Verwaltung seines Rechtecks

13.5. CONTENT ADDRESSABLE NETWORK (CAN) 99 Abbildung 13.14: Fall 1: Peer D startet die Defragmentierung, Peer C übernimmt beide Zonen und vereint sie zu einer Abbildung 13.15: Fall 2: Peer E startet die Defragmentierung, Peer D übernimmt dessen kleinste Zone, Peer C übernimt die Zone von Peer D (siehe Abbildung 13.13). Es ist also für einen Peer möglich, mehr als nur ein Rechteck zu verwalten. Allerdings führt häufiges Einfügen und Entfernen zur Fragmentierung. Mit der Zeit verwaltet ein Peer anstatt eines größeren viele kleine Bildbereiche. Dieses Problem muss dezentral gelöst werden. Defragmentierung Um die Fragmentierung des Bildbereichs durch häufiges Einfügen und Entfernen von Peers zu vermeiden, kann jeder Peer, der mehr als ein Rechteck verwaltet, eine Defragmentierung anstossen, um Gebiete abzugeben. Die Defragmentierung geschieht wie folgt: Der Peer löscht dessen kleinste Zone und sucht nach einem Peer, der dieses Gebiet übernehmen kann. Dabei können zwei Fälle eintreten: 1. Fall: Nachbarzone im Baum ist ungeteilt. Indiesem Fallsind beide Peers Blätter im CAN-Baum. Der Peer überträgt die Zone seinem Nachbarn (siehe Abbildung 13.14). 2. Fall Nachbarzone im Baum ist geteilt. In diesem Fall ist der andere Teilbaum unterhalb der Wurzel weiter untereilt. Der Peer führt eine Tiefensuche im Nachbarbaum durch, bis zwei benachbarte Blätter (= Peers) gefunden wurden. Einem der beiden Peers wird nun die Zone beider Blätter übertragen. Dem zweiten Peer wird dann die ursprüngliche Zone übertragen (siehe Abbildung 13.15). 13.5.3 Bewertung Die Vorteile von CAN sind seine Einfachheit und Robustheit aufgrund des stark zusammenhängenden Netzwerks. Der Zusammenhang kann durch die Anzahl der Dimensionen erhöht werden. Die Datenmenge wird auf allen Peers balanciert. Der geringe Grad von O(d) stellt sicher, das ein Peer nicht zuviele Informationen verwalten muss. Des Weiteren können im CAN-Netzwerk Nachrichten über verschiedene Wege zum Ziel gesendet werden. Hier existieren Ansatzmöglichkeiten zur Optimierung von Routen. Die Nachteile von CAN sind jedoch die zu erwartenden langen Wege, da der Durchmesser bei konstanten Dimensionen des Raums polynomiell groß ist. Des Weiteren ist die Stabilität des

100 KAPITEL 13. PEER-TO-PEER-NETZWERKE Netzwerks bei geringen Nachbarzahlen gefährdet. Hat ein Peer nur sehr wenige Nachbarn, kann der Fall eintreten, dass beide aus dem Netzwerk verschwinden. Dann ist keine Anbindung mehr an das restliche Netzwerk vorhanden. 13.6 Chord Chord ist ein sehr effizientes Peer-to-Peer-Netzwerk welches mit einer komplexen Zeigerstruktur und konsistentem Hashing arbeitet [SMK + 01]. Die grundlegende Idee ist die Aufteilung des Bildbereichs einer Hash-Funktion auf verschiedene Peers über eine Ringstruktur. 13.6.1 Aufbau Im Folgenden bezeichnet V die Knotenmenge (d.h. n = V ) und K die Schlüsselmenge (d.h k = K ). Alle Peers sind im Chord-Netzwerk in einer Ringstruktur miteinander verbunden. Dieser Ring umfasst den vollständigen Bildbereich, den die Hash-Funktion von Chord verwendet. Jeder Peer auf den Ring verwaltet den Bildbereich von sich bis zum nächsten Peer. Zusätzlich verwaltet jeder Peer Zeiger auf weitere Peers im Netzwerk, welche als Abkürzung beim Routing verwendet werden. Der Bildbereich der Distributed-Hash-Table umfasst die Zahlen Z 2 m = {0, 1, 2,..., 2 m 1}. Dafür muss m ausreichend groß gewählt werden, so dass Kollisionen nur mit einer vernachlässigbaren Wahrscheinlichkeit auftreten. m max{2 log n, 2 log k} ist ausreichend. Die Datenstruktur ist in Abbildung 13.16 dargestellt. Chord arbeitet mit zwei Hash-Funktionen r V und r K : r V (b) bildet den Peer b auf das Intervall {0,..., 2 m 1} ab, r K (i) bildet den Index i auf das gleiche Intervall {0,..., 2 m 1} ab. Die Zuordnung eines Schlüssels i auf einen Peer b erfolgt dann mit der Funktion f V (i) = arg min b V (r V (b) r K (i)) mod 2 m. Jeder Knoten im Chord-Netzwerk verfügt nun über mehrere Zeiger. Zum einem hat er - weil alle Peers in einem Ring angeordnet sind - jeweils einen Zeiger auf seinen Vorgänger und Nachfolger. Des Weiteren hat jeder Peer m sogenannte Fingerzeiger, die auf andere Peers im Netzwerk zeigen (siehe Abbildung 13.17). Diese werden mit der Funktion finger[i] := Der Knoten, der dem Wert r V (b + 2 i ) folgt, mit i {0,..., m 1} bestimmt. Jeder dieser Finger ist im Prinzip ein Nachfolgezeiger, mit der die Hälfte, ein Viertel oder ein Achtel, etc. des Rings übersprungen werden kann. Um den Speicherbedarf für die Fingerzeige zu minimieren, werden nur unterschiedliche Zeiger gespeichert, da für kleine i die Ergebnisse der Funktion immer gleich sind. Lemma 4 Die Anzahl der unterschiedlichen Fingerzeiger für einen Knoten beträgt mit hoher Wahrscheinlichkeit O(log n). Theorem 2 Die Datenstruktur von Chord hat folgende Eigenschaften: Mit polynomieller Wahrscheinlichkeit 1 n c werden in jedem Knoten höchsten O( Schlüssel gespeichert. k n log n ) Wenn ein Knoten das Netzwerk verlässt oder ein neuer Knoten eingefügt wird, müssen mit k polynomieller Wahrscheinlichkeit höchstens O( ) Schlüssel bewegt werden. n log n Lemma 5 Der Abstand zwischen einem Knoten und dessen Nachfolger beträgt

13.6. CHORD 101 Abbildung 13.16: Konsistentes Hashing in der Chord-Datenstruktur Abbildung 13.17: Jeder Knoten verwaltet Fingerzeiger im Erwartungswert 2m n, mit hoher Wahrscheinlichkeit höchstens O(( 2m n ) log n), mit hoher Wahrscheinlichkeit mindestens O ( 2 m ) n n = O ( ) 2 m c n für eine Konstante c > 0. c In einem Intervall der Länge w 2m n sind mit hoher Wahrscheinlichkeit höchstens O(w) Knoten, falls w = Ω(log n), höchstens O(w log n) Knoten, falls w = O(log n). Lemma 6 Die Anzahl der Knoten, die einen Fingerzeiger auf den Knoten b besitzen, beträgt im Erwartungswert O(log n), mit polynomieller Wahrscheinlichkeit höchstens O(log n). Lemma 7 Der Ausgrad im Chord-Netzwerk beträgt mit hoher Wahrscheinlichkeit O(log n). Der Eingrad im Chord-Netzwerk beträgt mit hoher Wahrscheinlichkeit O(log 2 n). Beweis: Der minimale Abstand zweier Peers beträgt mit hoher Wahrscheinlichkeit 2m n. Damit c ist der Ausgrad mit hoher Wahrscheinlichkeit beschränkt durch c log n. Der maximale Abstand zweier Peers beträgt O(log n 2m n ). Jeder Peer, der mit einem seiner Finger auf diese Linie zeigt, erhöht den Eingrad des nachstehenden Peers. Die Gesamtlänge der Streckenabschnitte, wo solche Peers liegen, ist O(log 2 n 2m n ). Damit ist w = O(log2 n). Peers, die einen großen Eingrad haben, haben auch einen sehr großen Abstand zum Vorgänger. Des Weiteren gibt es Peers, die einen Eingrad von log 2 n haben, wobei der Ausgrad log n beträgt.

102 KAPITEL 13. PEER-TO-PEER-NETZWERKE Abbildung 13.18: Verwendung der Fingerzeiger für effiziente Suche: p24 sucht nach dem Peer, der Schlüssel k(83) verwaltet 13.6.2 Funktionsweise Lookup Um ein Datum im Chord-Netzwerk zu finden, wird zunächst anhand der Hash-Funktion der Schlüssel berechnet. Nun muß der Knoten gefunden werden, der den Schlüssel verwaltet. Als Ausgangspunkt einer Suchoperation dient der eigene Knoten im Netzwerk. Um die Suche möglichst effizient zu gestalten, wird auf die Fingerzeiger zurückgegriffen, über die jeder Knoten verfügt. Der Suchalgorithmus von Chord lässt sich in Pseudocode wie folgt ausdrücken: Chord-Suche(b,i) begin x r K (i) while x / [r V (b), r V (b.succ)] do for i m 1 downto 0 do if x [r V (b.finger[i]), r V (b.finger[i + 1]))] then b b.finger[i] fi od return(b) end. Zuerst wird versucht, den Sprung zu bestimmen, der dem Ziel am nähesten kommt, aber noch vor ihm endet. Von dort ausgehen wird wieder versucht den Sprung zu bestimmen, der am nächsten zum Zielknoten führt, ohne über ihn hinauszuspringen. Dies wird bis zum Erreichen des Zielknotens fortgesetzt. Dabei wird bei jedem Sprung der Abstand zum Ziel halbiert. Die Suche beginnt immer mit dem größten Fingerzeiger, also m 1. Wenn der gesuchte Schlüssel nicht im verwalteten Intervall des Finger-Knotens und dessen Nachfolger liegt, wird rückwärts durch die Liste mit Fingerzeiger gegangen. Wenn der gesuchte Schlüssel dann in dem Intervall liegt, wird die Suche von dem Finger-Knoten am Anfang des Intervalls nach gleichem Schema erneut gestartet. Theorem 3 Die Suche benötigt mit hoher Wahrscheinlichkeit O(log n) Sprünge. Beweis: Mit jedem Sprung wird die Entfernung zum Ziel mindestens halbiert. Zu Beginn ist der Abstand höchstens 2 m. Der Mindestabstand zwei benachbarter Peers ist mit hoher Wahrscheinlichkeit 2m n. Damit ist die Laufzeit beschränkt durch c log n.

13.6. CHORD 103 Einfügen von Peers Um einen Peer in das Netzwerk einzufügen, wird zunächst ein Zielgebiet gesucht. Die ausgehenden Zeiger werden dann vom Vorgänger und Nachfolger übernommen und angepasst. Insgesamt müssen die Zeiger um bis zu O(log n) Schritte entlang des Chord-Rings angepasst werden. Theorem 4 Es sind mit hoher Wahrscheinlichkeit O(log 2 n) Nachrichten ausreichend, um einen Peer in das Chord-Netzwerk aufzunehmen. Beweis: Um ein Zielgebiet für einen neuen Peer zu finden, sind O(log n) Nachrichten erforderlich. Für das eigentliche Einfügen in den doppelt verketteten Chord-Ring, müssen nun konstant viele Zeiger angepasst werden. Für die Anpassung der i Fingerzeiger sind jeweils O(logn) Nachrichten erforderlich. Das begründet sich darin, dass in jedem Level nur O(log n) Knoten betroffen sind. Diese sind im Ring zusammenhängend. Um den ersten zu finden, sind wieder O(log n) Nachrichten erforderlich. Danach können die Ringnachfolgerzeiger verwendet werden um in O(log n) Schritten jeden weiteren Knoten zu besuchen. Der Aufwand, für die eigentliche Anpassung eines Zeigers ist konstant. Hieraus folgt, das O(log 2 n) Nachrichten erforderlich sind, um einen Peer in das Netzwerk einzufügen. 13.6.3 Bewertung Die Vorteile von Chord begründen sich in der Verwendung einer Distributed-Hash-Table zur Verwaltung der im Netzwerk gespeicherten Daten. Dadurch ist anhand des Schlüssels aus der Hash- Funktion bereits eine Ortsangabe ableitbar. Dies und die Anordnung alle Peers in einer festen Netzwerkstruktur führt zu einer besseren Organisierung des gesamten Netzwerks als beispielsweise Gnutella. Die Ring-Struktur erweist sich jedoch als Nachteil bei der Suche, wenn Peers dicht beieinander liegen.

104 KAPITEL 13. PEER-TO-PEER-NETZWERKE

Literaturverzeichnis [Gnu] Gnutella Development Forum. The annotated gnutella protocol specification v0.4. [MFK01] M. A. Jovanovic, F. S. Annexstein, and K. A. Berman. Scalability Issues in large Peer-to-Peer-Networks a Case Study of Gnutella. Technical report, University of Cincinnati, 2001. [RFH + 01] S. Ratnasamy, P. Francis, M. Handley, R. Karp, and S. Shenker. A scalable contentaddressable network. In Computer Communication Review, volume 31, pages 161 172. Dept. of Elec. Eng. and Comp. Sci., University of California, Berkeley, 2001. [Röt03] Janko Röttgers. Mix, Burn & R.I.P. - Das Ende der Musikindustrie. Heise Verlag, 2003. [SMK + 01] Ion Stoica, Robert Morris, David Karger, Frans Kaashoek, and Hari Balakrishnan. Chord: A scalable Peer-To-Peer lookup service for internet applications. In Roch Guerin, editor, Proceedings of the ACM SIGCOMM 2001 Conference (SIGCOMM-01), volume 31, 4 of Computer Communication Review, pages 149 160, New York, August 27 31 2001. ACM Press. [Sta67] Stanley Milgram. The Small World Problem. Psychology Today, 5:60 67, 1967. [Zie05] Dr. Cai Ziegler. Smarte Schwärme Die Technik hinter modernen Peer-to-Peer-Netzen. c t - Magazin für Computertechnik, 16:160 164, 2005. 105