Vergleich aktueller Peer-to-Peer-Netzwerke

Transcription

Vergleich aktueller Peer-to-Peer-Netzwerke
Vergleich aktueller
Peer-to-Peer-Netzwerke
Hauptseminar Sommersemester 2008
Fachgebiet Kommunikationsnetze
Name:
René Golembewski
Matrikel-Nr.:
Studiengang: Ingenieurinformatik
Betreuer:
Prof. Dr. Jochen Seitz
DI M. Hasan
Inhalt
Inhalt
1 Vorwort
2
2 Das Overlay-Netzwerk
3
3 Kommunikationsprotokolle und -verfahren
3.1 Network Address Translation (NAT) . . .
3.2 Firewalls . . . . . . . . . . . . . . . . . . .
3.3 NAT Traversal . . . . . . . . . . . . . . .
3.4 Late-Join Algorithmen . . . . . . . . . . .
3.4.1 Feste Adresse im Programmcode .
3.4.2 Dynamic DNS . . . . . . . . . . . .
3.4.3 Kontrolliertes Fluten . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
4
5
5
9
9
10
10
4 Sicherheit und Stabilität in P2P-Netzwerken
11
5 Einsatzmöglichkeiten
5.1 File-Sharing . . . . . . . .
5.2 Voice-over-IP . . . . . . .
5.3 Informationsaustausch . .
5.4 Peer-to-Peer in MMORPG
.
.
.
.
13
13
13
14
14
6 Technische Realisierungen
6.1 JXTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.2 Gnutella . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.3 Pastry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
15
16
17
7 Fazit
19
8 Erklärung
20
.
.
.
.
.
.
.
.
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1 Vorwort
1
Vorwort
Peer-to-Peer-Netzwerke spielen in der modernen Telekommunikation eine
große Rolle. Trotz ihres schlechten Rufes, welcher sie oft nur als Werkzeug der
Urheberrechtsverletzungen darstellt, sind sie die Grundlage vieler bedeutender Anwedungen. In diesem Hauptseminarbeitrag sollen aktuelle Technologien vorgestellt und in Bezug auf verschiedene Gesichtspunkte verglichen
werden. Dabei wird besonders auf P2P-Systeme ohne zentrale Instanz Wert
gelegt, die einer vollständigen Selbstorganisation unterliegen. Im Gegensatz
zu einigen zentralisierten Ansätzen, werden solche Netzwerke auch als “reine
Peer-to-Peer-Systeme” betitelt. Folgende Fragen sollen unter anderem in
dieser Arbeit kritisch analysiert und beantwortet werden:
• Wie wird die Kommunikation der Peers geregelt?
• Sind NAT und Firewalls ein Hindernis?
• Welche Late-Join Algorithmen gibt es?
• Wie wird Sicherheit gewährleistet?
• Sind die Systeme stabil?
• Wie wird die Anwendungsentwicklung unterstützt?
Um diese Ausarbeitung zu verstehen sollte der Leser über Grundkenntnisse
der Telematik verfügen. Insbesondere die Kommunikation im Internet über
Protokolle wie IP, UDP und TCP1 sollte bekannt sein, da P2P-Netzwerke
auf Anwedungsebene diesen Protokollstapel verwenden. Sie setzen als ein
sogenanntes “Overlay-Netzwerk” das Vorhandensein einer Kommunikationsinfrastruktur voraus.
1
Internet Protocol, User Datagram Protocol, Transmission Control Protocol
2
2 Das Overlay-Netzwerk
2
Das Overlay-Netzwerk
Overlay-Netze definieren eine logische Topologie auf der zugrunde liegenden
physikalischen Topologie. Knoten, die sich im Overlay-Netz befinden, werden
Peers genannt. Sie stellen in einem Peer-to-Peer Netz gleichberechtigte und
autonome Einheiten dar. Wenn im Overlay eine direkte logische Verbindung
zwischen zwei Peers besteht, dann entspricht diese im zugrunde liegenden
physikalischen Netzwerk auch mindestens einem Hop, im Normalfall aber
mehreren Hops. Es wird angenommen, dass sich ein Overlay-Netz über das
ganze Internet erstrecken kann, und nicht auf feste Bereiche begrenzt wird.
Ein Overlay-Netz kann nur einen Peer bis beliebig viele Peers enthalten.
Einzelne Peers können sich selbstständig in Gruppen organisieren, um gemeinsam Arbeit zu verrichten oder eingschränkte Dienste (Services) zu nutzen
oder zur Verfügung zu stellen. Peer-Gruppen werden durch eine GruppenID
identifiziert, ein Peer kann also Mitglied in mehreren Gruppen sein.
3
3 Kommunikationsprotokolle und -verfahren
3
Kommunikationsprotokolle und -verfahren
Das eigentliche Kernproblem von P2P-Netzwerken ist eine möglichst optimale und effiziente Kommunikation der beteiligten Peers zu erreichen. Obwohl die Internet-Service-Provider (ISPs) stetig mit höheren Verbindungsgeschwindigkeiten aufwarten, sind die derzeitigen Breitbandanschlüsse immernoch ein Flaschenhals im Vergleich zum Internet Backbone. Weiterhin ist
das Verhältnis von Upstream zu Downstream meistens asynchron und so steht zum Versenden von Daten nur eine viel kleinere Datenrate zur Verfügung
als zum Empfangen.
3.1
Network Address Translation (NAT)
Der aktuelle IPv4-Adressraum im Internet ist nahezu komplett vergeben oder
reserviert. Meistens macht es auch gar keinen Sinn, jedem Rechner in einem
Netzwerk eine globale IP Adresse zuzuweisen und somit ein direktes Routing
zu diesem zu ermöglichen. Zumal dieses System dann auch einem höheren
Sicherheitsrisiko ausgesetzt ist. Daher gibt es die Möglichkeit eine Networkbzw. Port-Address-Translation (NAPT)2 einzurichten. Aktuelle DSL-Router
Abbildung 1: NAPT Szenario
2
Network Address Port Translation, auch Hiding NAT oder Masquerading genannt
4
3 Kommunikationsprotokolle und -verfahren
arbeiten nach genau diesem Prinzip. Dabei wird ein lokales Intranet mit
einem reservierten Subnetz3 aufgebaut. Der Router nimmt dabei meistens
auch diverse andere Funktionen wie DHCP Server, Firewall oder DNS Proxy
wahr. Wenn nun beispielsweise ein Rechner aus dem lokalen Intranet eine Anfrage an einen Webserver stellt, so wird für diese Verbindung ein Eintrag in
der NAPT Tabelle des Routers gespeichert und die Antworten des Webservers
können so wieder an den Rechner geleitet werden, der diese Verbindung initiiert hat. Aus diesem Grund ist es nicht möglich eine Verbindung zu einem
lokalen Rechner von einer globalen Adresse, ohne vorherigen Verbindungskontext aufzubauen. Um dies zu ermöglichen gibt es die Funktion des Port Forwarding, wobei eingehende Pakete von einem bestimmten externen Port an
einen festgelegten Rechner des Intranets weitergeleitet werden. Externe und
interne Ports müssen nicht zwingend gleich sein. Dieses Szenario ist jedoch
für den Aufbau eines Peer-to-Peer Netzwerkes nicht optimal, da eingehende
Verbindungsanfragen schon am Router verworfen werden, sofern kein PortForwarding eingerichtet ist. Ein Algorithmus zur Kommunikation zwischen
Peers muss also mit diesem Problem umzugehen wissen.
3.2
Firewalls
Wenn im Zusammenhang mit Peer-to-Peer Netzwerken von Firewalls die
Rede ist, dann sind vorallem die Firewalls zu überwinden, die im Netzwerk4 auf der Route zum globalen Internet passiert werden. Diese Systeme
sind meistens Stateful-Inspection-Firewalls, welche für jede Verbindung einen
gewissen Kontext abspeichern. Ähnlich der NAPT, wird ein eingehendes
Paket nur an den Zielrechner weitergeleitet, wenn dieser vorher eine Datenübertragung initiiert hat und die Firewall eine Übertragung zu diesen Ports
zulässt. Der Teilnehmer in einem P2P-Netzwerk soll jedoch in seiner Funktion
sowohl einem Client als auch einem Server ähneln und auf Anfrage bestimmte
Daten ausliefern.
3.3
NAT Traversal
Unter dem Begriff NAT Traversal versteht man die Überbrückung einer
Verbindung durch ein NAT- bzw. Firewall-System. Es muss dem Client eines
Peer-to-Peer Systems folglich möglich sein, einen Verbindungskontext aus
einer NAT-Domäne heraus aufrecht zu erhalten, um jederzeit von außen
ansprechbar zu sein und Verbindungen annehmen zu können. Als Beispiel soll
3
4
Beispiel: 10.0.0.0/8 oder 192.168.0.0/16 (oder Teile dieser Netze)
Netzwerk-Firewalls im Gegensatz zu Host-Firewalls
5
3 Kommunikationsprotokolle und -verfahren
hier das STUN-Protokoll näher erläutert werden. Die Abkürzung STUN steht
dabei für “Simple Traversal of User Datagram Protocol through Network Address Translators”. Dieses Protokoll wird momentan von vielen Voice-over-IP
(VoIP) Providern verwendet, um eine ständige Erreichbarkeit der Teilnehmer
zu gewährleisten. Eine STUN-Sitzung wird zwischen zwei Kommunikationspartnern aufgebaut, wobei es einen STUN-Server und einen STUN-Client
gibt. Der Server soll ein erreichbarer Rechner im Internet sein, welcher dem
Client bekannt ist. Es werden sechs Fälle unterschieden, wie ein NAT oder
eine Firewall konfiguriert sind. Die Anwedung muss nun feststellen, welcher
Fall zutreffend ist.
1. Offenes Internet, kein NAT, eventuell unsymmetrische Stateful-Inspection
Firewall (Wenn ein Paket vom Client mit einem bestimmten Port gesendet
wurde, werden die Antwort-Pakete aller Quelladressen und Quellports
auf diesen Port als zulässig angesehen und passieren die Firewall)
2. Keine UDP-Konnektivität (Dies ist der schlechteste Fall, hier ist
kein NAT Traversal möglich)
3. Symmetrische UDP Firewall (Firewall blockt alle UDP Pakete,
die nicht vom Empfänger (Adresse:Port) des ausgehenden UDP Pakets
stammen)
4. Full-Cone-NAT (Wenn ein Paket vom Client gesendet wurde, werden
die Antwort-Pakete aller Quelladressen und Quellports auf diesen Port
als zulässig angesehen und werden angenommen)
5. Symmetrisches NAT (Anfragen an verschiedene Rechner werden
nach außen auf verschiedene IP Adressen gemappt)
6. Restriktives NAT (Anfragen an verschiedene Rechner werden auf
die gleich IP gemappt, nur Antwort-Pakete des Kontaktierten Rechners
werden angenommen)
7. Port-Restriktives NAT (wie Restriktives NAT, zusätzlich müssen
auch die Antwortpakete des Servers den gleichen Quellport aufweisen,
wie die Pakete des Clients bei der Anfrage an den Server)
Um eine genaue Auskunft darüber zu bekommen wurden drei Tests definiert,
die in einer bestimmten Reihenfolge nacheinander durchgeführt werden. Der
genaue Testablauf wird in der schematischen Grafik dargestellt.
6
3 Kommunikationsprotokolle und -verfahren
Test I Der Client sendet ein STUN Binding Request an den Server ohne
gesetzte Flags im CHANGE REQUEST Attribut und ohne das RESPONSE ADDRESS Attribut (Dies veranlasst den Server dazu, eine
Antwort an den Socket zu senden, woher das Paket ursprünglich kam)
Test II Der Client sendet ein STUN Binding Request mit den beiden gesetzten Flags “change IP” und “change port” des CHANGE REQUEST
Attributes
Test III Der Client sendet ein STUN Binding Request, bei dem nur das “change
port” Flag gesetzt ist
Der Client beginnt nun also mit dem ersten Test. Wenn bei diesem Test
keine Antwort zurück kommt, weiß der Client, dass keine UDP Konnektivität besteht. Die Prozedur kann somit abgebrochen werden. Wenn eine
Antwort generiert wird, dann muss das Attribut MAPPED ADDRESS5 untersucht werden. Wenn die gemappte Adresse der lokalen IP Adresse des
Clients entspricht, dann befindet sich dieser nicht in einer NAT-Domäne.
Nun wird Test II gestartet. Liefert dieser Test eine Antwort, dann weiß der
Client, das er sich im Szenario “offenes Internet” befindet. Falls nicht, gibt
es eine “Symmetrische UDP Firewall“ in seinem Netzwerk. Befindet sich der
Client nun aber in einer NAT-Umgebung (andere IP nach Test I), so wird
ebenfalls Test II ausgeführt. Liefert dieser Test eine Antwort, dann weiß der
Client, dass er sich in einem ”Full-Cone-NAT“ Netzwerk aufhält. Wenn jedoch keine Antwort erhalten wurde, wird Test I erneut ausgeführt, jedoch
mit der zweiten Zieladresse des STUN-Servers6 , die er dem Client in seiner
ersten Antwort im Attribut CHANGED ADDRESS mitgeliefert hat. Wenn
nun in der folgenden Antwort das Attribut MAPPED ADDRESS eine andere IP Adresse liefert als beim ersten Durchlauf des Test I, dann ist es
ein ”Symmetric NAT“ Szenario. Andernfalls kann es sich nur noch um ein
”Restriktives NAT“ oder ein ”Port-Restriktives NAT“ handeln. Aufschluss
darüber gibt Test III, wobei lediglich ein anderer Port am STUN Server benutzt wird um das Paket zu senden.
5
enthält den Quellsocket des Client-Pakets
Der STUN Server muss aufgrund dieser Tests über 2 Netzwerkinterfaces verfügen
und 2 verschiedene Portnummern verwenden, um unterschiedliche Kombinationen von IP
Adressen und Portnummern zu erzeugen
6
7
3 Kommunikationsprotokolle und -verfahren
Abbildung 2: “Discovery Process” beim STUN-Protokoll [4]
8
3 Kommunikationsprotokolle und -verfahren
Da der Client nach dieser Prozedur weiß in welcher Umgebung er sich
befindet, kann dies in die Konfiguration des P2P-Clients einfließen und es
wird eine ständige Erreichbarkeit gewährleistet. Um auch über einen längeren
Zeitraum konsistent zu bleiben wird diese Prozedur nach einiger Zeit wiederholt. Das hier vorgestellte Verfahren beruht auf dem STUN-Protokoll, welches in RFC3489 dokumentiert ist und auch als “UDP-Hole-Punching7 “ bezeichnet wird. In abgewandelten Implementierungen wird diese Lösung auch bei
vielen Peer-to-Peer Applikationen verwendet. Man erweitert jedoch meistens
die Funktionen und testet bei erfolgloser UDP-Kommunikation anschließend
auf TCP im Allgemeinen und bei sehr restriktiven Netzen auf TCP Verbindungen zu HTTP beziehungsweise HTTPS8 Ports. Dabei können dann beliebige
Systeme des Peer-to-Peer Netzes (meistens Supernodes) die Funktionalität
des STUN-Servers einnehmen und dem neuen Client den Zugang zum Netzwerk ermöglichen. Der Peer-to-Peer Traffic, welcher hier generiert wird,
sieht also von außen betrachtet wie ganz normales Websurfen aus. Die hier
beschriebene Methode des NAT Traversal ist eine nicht mehr wegzudenkende Methode in aktuellen Peer-to-Peer Implementierungen und deswegen
für das grundlegende Verständnis der Funktionsweise dieser Anwendungen
unerlässlich.
3.4
Late-Join Algorithmen
Um einem bestehenden Peer-to-Peer Netzwerk beizutreten gibt es verschiedene
Ansätze. In den meisten Fällen ist die Grundvoraussetzung das Finden eines
Peers, welcher bereits in diesem Netzwerk aktiv ist (”Bootstrapping“). Einige
Lösungen dieses Problems sollen im Folgenden dargestellt werden.
3.4.1
Feste Adresse im Programmcode
Hierbei werden eine IP Adresse und ein Port im Quelltext der Applikation
gespeichert und sind somit dauerhaft festgelegt und im ausführbaren Programm nicht mehr zu ändern. Der voreingestellte Server muss dann jedoch
immer erreichbar sein um ein Bootstrapping zu machen. Gleichzeitig stellt
diese Variante auch einen ”Single Point of Failure” dar und macht das ganze
System somit für “Denial-of-Service9 “ Attacken angreifbar.
7
Ausgehende UDP Pakete “schlagen” Löcher in die Firewalls um diese für eingehende
Verbindungen offen zu halten
8
TCP Ports 80 (HTTP) und 443 (HTTPS) sind die Standardports für Webserver
9
Ein Server wird mit Anfragen überlastet und bricht zusammen
9
3 Kommunikationsprotokolle und -verfahren
3.4.2
Dynamic DNS
Das Dynamische DNS10 bildet wie auch das klassische DNS, Domainnamen
auf IP Adressen ab. Dabei können beim DDNS auch die Einträge des Nameservers durch eine Web-Schnittstelle geändert werden. Wird nun ein Peer-toPeer Netzwerk initial aufgebaut, so tragen die ersten teilnehmenden Rechner
ihre eigene IP Adresse im DDNS System ein. Kontaktiert nun ein neuer Client
den DNS Server, so bekommt er damit die IP Adresse eines teilnehmenden
Peers und kann diesen kontaktieren. Stellt ein aktiver Peer fest, dass eine Anfrage an den Server keine gültige IP Adresse liefert trägt er sich selbst ein, um
die Funktion eines Zugangspunktes zum P2P-Netz zu übernehmen. Wurde
nun vom Client durch eine DNS Anfrage ein aktiver Peer gefunden, so kann
dieser für weitere Zugangsinformationen11 kontaktiert werden. Problematisch
ist dieser Ansatz aber offensichtlich, da DDNS Adressen auch geändert werden können, auch wenn sie noch gültig und erreichbar sind. Deswegen müssen
für dieses Verfahren mehrere DDNS Server zur Verfügung stehen um eine
Ausreichende Sicherheit zu gewährleisten.
3.4.3
Kontrolliertes Fluten
Existiert ein großes Overlay Netzwerk kann durch kontrolliertes Fluten ein
Peer gefunden werden. Da jedes Paket ein TTL-Feld12 im IP Header besitzt,
wird es nach einer gewissen Zeit im Netz an einem Router verworfen. Wird
dabei zufällig ein Peer angesprochen, der auf einem bestimmten Port lauscht,
dann wird dieser eine Antwort senden und die Suche war erfolgreich. Diese
gefluteten Pakete können jedoch an NAT und Firewalls scheitern und führen
bei üblichen Overlay Größen13 selten zum Erfolg. Eine weitere Möglichkeit
wäre IP-Multicasting mit steigender TTL zu verwenden. Da aber im Internet die Anzahl multicastfähiger Provider unter fünf Prozent liegt, ist diese
Lösung in IPv4-Netzwerken nicht erfolgversprechend.
10
Dynamisches Domain Name System
zum Beispiel aktuelle Liste aktiver Peers/Superpeers
12
Das Time-to-live Feld gibt an, wieviele IP Router das Paket passieren darf bevor es
verworfen wird
13
ca. 9,2 Millionen Peers bei Skype
11
10
4 Sicherheit und Stabilität in P2P-Netzwerken
4
Sicherheit und Stabilität in P2P-Netzwerken
Wenn man von Sicherheit in Peer-to-Peer Netzen spricht, dann muss man
dabei immer zwischen Netzsicherheit und Nutzersicherheit differenzieren. Die
Sicherheit und die Robustheit eines Netzes hängt maßgeblich von der Architektur und den Kommunikationsprotokollen ab. So ist zum Beispiel ein
Gnutella Netzwerk viel Resistenter gegen den Ausfall von Peers als andere
Netze mit festgelegten Topologien. Fallen bei einer linearen Datenstruktur
zu viele Peers aus, kann es sein dass das Netzwerk in einen inkonsistenten
Zustand gerät und nur durch einen hohen Aufwand wieder stabilisiert werden
kann. Ebenso können aber auch gezielte Angriffe gegen Peers oder gegen das
gesamte Netzwerk stattfinden. Eine Denial-of-Service Attacke wäre gegen
zentrale Authentifizierungsinstanzen denkbar, oder das gesamte Netzwerk
könnte durch ein dauerhaftes Fluten von Suchanfragen lahmgelegt werden.
Bei Problem dieser Art geht man folgendermaßen vor, um ein Peer-to-Peer
Netzwerk zu schützen:
• Suchtiefe und Menge der Suchanfragen begrenzen
• Vollständige Vermeidung zentraler Instanzen oder
• Peers mit Sonderfunktionen redundant konzipieren
• intelligente Überwachungssysteme, die Angreifer ausschließen
Da ein Peer-to-Peer Netzwerk meist als Overlay auf dem Internet aufsetzt,
bewegt man sich als Teilnehmer grundsätzlich in einem gefährlichen Umfeld,
welches für jedermann zugänglich ist und standardmäßig keine Sicherheiten bietet. Um eine gewisse Sicherheit des Benutzers eines P2P Netzes zu
gewährleisten müssen vorallem folgende Kriterien erfüllt sein:
• Vollständige Anonymität
• Verschlüsselte Datenübertragung
• Datenauthentizität
• Zugangskontrolle
• ständige Verfügbarkeit
Dem Teilnehmer muss jedoch immer bewusst sein, dass er sich in einem offenen Netz bewegt und unter Umständen auch Services oder Dateien zur
Verfügung stellt, die nicht immer genau zu dem vorgesehenen Zweck genutzt
11
4 Sicherheit und Stabilität in P2P-Netzwerken
werden. Aus diesem Grund ist es vorteilhaft nur einer bestimmten Menge vertrauenswürdiger Peers den Zugriff auf erweiterte Funktionalitäten zu ermöglichen.
Durch den Zusammenschluss zu einer Peergruppe ist es möglich, innerhalb
dieser Gruppe ein anderes Rechtemanagement zu benutzen und auch den
Zugang zur Gruppe selbst einzuschränken und zu kontrollieren. [3]
12
5 Einsatzmöglichkeiten
5
Einsatzmöglichkeiten
Wie auch das Internet, stellt ein Peer-to-Peer Netzwerk eine vollständige
Kommunikationsinfrastruktur auf Anwendungsebene zur Verfügung und kann
somit für verschiedenste Dienste und Aufgaben genutzt werden. Die flexiblen
Protokolle und Datenstrukturen machen die Overlay Netze robust gegen Angriffe und schaffen Dezentralisierung.
5.1
File-Sharing
Über kaum eine Sache wird mehr in den Medien diskutiert als die illegale
Nutzung der Filesharing-Funktionalität in Peer-to-Peer Netzen. Dabei muss
jedoch erwähnt werden, dass viele Projekte überhaupt erst durch Filesharing einer großen Nutzergemeinde zugänglich gemacht werden können. Als
Beispiel sollen hier einige Formen genannt werden:
• Verbreitung von kleinen Linux Distributionen
• Softwareprojekte ohne große Serverkapazitäten
• Publikation lizenzfreier Medien (Musik, Video)
Aufgrund hoher Kosten für Internet Traffic können sich vorallem kleine Projekte kaum etablieren, wenn sie zur Bereitstellung eines Downloads einen
eigenen Webserver mit beschränktem monatlichem Transfervolumen hätten.
Eine Publikation eines Links auf eine Datei in einem Peer-to-Peer Netzwerk
ist hingegen einfach und bringt einen guten Nebeneffekt mit sich. Je mehr
eine Datei im Netzwerk nachgefragt wird, umso größer ist die Zahl jener, die
diese Datei anbieten.
5.2
Voice-over-IP
Mit dem Aufkommen von Skype erlebte die VoIP-Telefonie eine starke Erhöhung
der Teilnehmerzahlen auf mittlerweile über 10 Millionen Nutzer weltweit,
allein im Skype-Netzwerk. Der dabei erzeugte Traffic ist viel zu groß um ihn
dauerhaft über feste Server zu schicken. Deshalb kommt für die großflächige
Abdeckung von VoIP Diensten auch ein Peer-to-Peer Ansatz zum tragen, bei
dem nur noch einzelne Kernfunktionen auf zentralen Servern laufen. Diese
Kernfunktionen sind zum Beispiel: Sicherheitsfunktionen, Zugangskontrolle,
Accounting und Messaging. Aktuell gibt es schon diverse Anbieter, die komplett auf Festnetztelefonie verzichten und ihren Kunden über gewisse QoS14
14
Quality of Service Funktionen, Priorisierung, Traffic Shaping
13
5 Einsatzmöglichkeiten
Funktionen im DSL-Zugangsrouter eine stabile VoIP-Umgebung anbieten.[2]
5.3
Informationsaustausch
Da es in der heutigen Zeit leider immernoch Länder auf dieser Welt gibt,
die sehr starke Restriktionen in Bezug auf freie Meinungsäußerung und Verbreitung von Informationen vorgeben, gibt es Bestrebungen einen Informationsaustausch auf der Basis von Peer-to-Peer Systemen aufzubauen. Einer
der bekanntesten Vertreter hierfür ist Freenet, entwickelt von Ian Clarke und
aktuell in Version 0.7 auch als Derivat ”Freenet-China“ im Einsatz. Dieses
Netzwerk ermöglicht die Bereitstellung von Inhalten ähnlich dem WWW,
wobei jeder Peer einen kleinen Speicherbereich seiner Festplatte für Freenet
reserviert und somit eine Serverfunktion wahrnimmt. Das beliebteste Mittel
der Kommunikation stellen sogenannte Freenet-Blogs ”Flogs“ dar.
5.4
Peer-to-Peer in MMORPG
Ähnlich erfolgreich wie die Telefonie über Skype ist beispielsweise das MMORPG15 Spiel ”World of Warcraft“. Nie zuvor gab es gleichzeitig mehr aktive Accounts
als bei diesem Spiel. Mit aktuell fast 11 Millionen Spielern16 erzeugt es ein
Höchstmaß an Serverkapazitäten und Verwaltungsaufwand. Dabei hat ein
einzelner Server zu Spitzenzeiten bis zu 2300 Clients zu verwalten. Um das
Prinzip der riesigen Serverfarmen zu optimieren soll auf der Basis von Peerto-Peer Kommunikation ein Ansatz entwickelt werden, um einen Großteil der
aufzuwendenden Ressourcen einzusparen. Spieler, die online direkt miteinander kommunizieren und agieren, sollen in einer Peergruppe zusammengefasst
werden und so eine direkte Kommunikation untereinander aufbauen können.
Die Server würden somit nur noch administrative Aufgaben übernehmen und
die Kosten sowie die Latenzzeiten können optimiert werden.
15
16
Massive Multiplayer Online Role Playing Game
10.7 Millionen, Tendenz steigend
14
6 Technische Realisierungen
6
Technische Realisierungen
6.1
JXTA
JXTA ist ein Framework zur Entwicklung von Peer-to-Peer basierten Anwendungen. Ziel ist es, eine Standardisierung zukünftiger Projekte in Bezug auf
einen Open Source Protokollstapel zu erreichen. Dabei muss der Programmierer sich nicht mehr mit grundlegenden Problemen von Peer-to-Peer Netzwerken auseinandersetzen, sondern bekommt eine festgelgte Schnittstelle17
zu den Funktionen einer verteilten Anwedung. Das JXTA Projekt obliegt seit
der Veröffentlichung im Jahre 2001 der Administration von SUN Microsystems und wird mittlerweile von einer großen industriellen und akademischen
Gemeinschaft weiterentwickelt. Die JXTA Protokolle sind der eigentliche
Kern des Frameworks. Dabei spielt es keine Rolle welche Infrastruktur werwendet wird.[1]
Abbildung 3: JXTA Architektur [1]
17
IETF Standardisierung wird angestrebt
15
6 Technische Realisierungen
6.2
Gnutella
Gnutella wurde im März 2000 von Justin Frankel als erste Beta Version
veröffentlicht und ist seitdem zu einem der populärsten Vertreter von Peerto-Peer Netzen aufgestiegen. Das Overlay Netzwerk unterliegt in keiner Weise
einer geordneten Struktur. Alle Peers sind gleichwertig und unterhalten einige
wenige Verbindungen zu Nachbarpeers. Eine Suche im Netzwerk wird über
kontrolliertes Fluten der Suchanfragen an die Nachbarknoten erreicht, wobei
es ein Time-to-live Attribut verhindert, dass das Netz mit Anfragen überlastet
wird. Ein Schnappschuss eines Gnutella Netzwerks ist in der folgenden Grafik
zu sehen. Ab November 2002 wurde dann eine Weiterentwicklung des Pro-
Abbildung 4: Snapshot Gnutella Netzwerk
tokolls unter dem Namen Gnutella2 von Michael Stokes bekannt gegeben. Die
gravierendste Änderung an der Architektur war die Einteilung aller Knoten
in Leaves (Blätter) und Hubs. Leaves unterhalten dabei nur eine oder wenige
Verbindungen zu Hubs und richten auch ihre Suchanfragen an diese. Hubs
haben Verbindungen zu Hunderten von Leaves und auch zu vielen anderen
Hubs. Wird nun eine Suchanfrage von einem Peer (Leaf) gemacht, so schaut
16
6 Technische Realisierungen
der Hub zuerst nach ob einer seiner eigenen Leaves das gesuchte Datum besitzt. Ist dies nicht der Fall reicht er die Suchanfrage weiter an andere Hubs.
Ein Hub verwaltet somit eine große Datenbank der Dateien, die seine Leaves
bereithalten. Dieses Prinzip der Netzwerkstruktur erhöht die Performanz des
Netzes und vermindert das aufkommende Datenvolumen um ein vielfaches,
da nicht mehr im Netzwerk geflutet werden muss.
6.3
Pastry
Pastry wurde von Antony Rowstron und Peter Druschel vom Microsoft Research Lab entwickelt. Im Vordergrund standen vorallem:
• Dezentralität
• Fehlertoleranz
• Skalierbarkeit
• Anpassung an das Underlay Netzwerk
Pastry nutzt wie auch einige andere Netzwerke die Datenstruktur der ”Verteilten Hash Tabellen18 ” zum Finden von Dateien. Dabei wird jeder Datei, sowie
jedem Peer ein eindeutiger Hashwert von 0 bis 2128 −1 zugeordnet. Es existiert
somit eine lineare Datenstruktur (ein Ring), der zu durchsuchen ist. Ein
Peer ist genau für die Dateien verantwortlich die zwischen ihm und seinem
Vorgänger auf dem Ring liegen. Bei einer Suche bildet ein Peer einfach den
Hashwert seiner zu suchenden Datei. Zuerst wird überprüft ob dieser Peer
selbst für diese Datei verantwortlich ist. Falls nicht reicht er seine Anfrage an
seine Nachbarn weiter, die näher am gesuchten Hashwert liegen. Eine Suchanfrage wird so automatisch durch das Netz propagiert, bis man einen Peer erreicht, dessen Hashwert größer ist als der, der gesuchten Datei. Wurde dieser
verantwortliche Peer gefunden kann er sich beim suchenden Peer melden
und ihm die Informationen zukommen lassen. Um einem Zerfall des Ringes
in zwei Teile vorzubeugen, kennt jeder Peer nicht nur seine Nachbarn, sondern besitzt auch noch sogenannte ”Finger-Zeiger“. Fallen nun unerwartet
mehrere Peers aus, so kann immernoch eine konsistente Suche auf dem Ring
gewährleistet werden. Um schnellere Suchanfragen zu erreichen, werden die
Finger-Zeiger auch verwendet um mit einer Anfrage näher an die gesuchte
Datei zu springen und nicht sequenziell auf dem Ring zu suchen. Betritt ein
neuer Peer das Netzwerk, so wird er in den Ring aufgenommen und anhand
seines Hashwertes positioniert. Verlässt ein Peer das Netz, übernimmt sein
18
Distributed Hash Tables (DHTs)
17
6 Technische Realisierungen
Abbildung 5: Suchanfrage in einer DHT Datenstruktur
direkter Nachfolger auf dem Ring die Aufgaben. Aufgrund dieser besonderen
Datenstruktur ist es möglich jede Datei in einem Netzwerk zu finden, auch
wenn sie nur ein einziges Mal vorhanden ist.[5]
18
7 Fazit
7
Fazit
Peer-to-Peer Netzwerke spielen auch in der heutigen Kommunikationswelt
eine große Rolle und sind im Hinblick auf ein stetig wachsendes Datenaufkommen im Internet eine gute Alternative zur klassischen Client-Server-Architektur.
Ob für Dateitransfer, Videostreaming oder Voice-over-IP-Telefonie - Die verschiedensten Formen und Protokollvarianten für den Aufbau eines Overlay Netzes ermöglichen eine freie Auswahl der optimalen zu Grunde liegenden Technologie. Für die Entwicklung verteilter Anwendungen stehen offene
Protokolle und Frameworks zur Verfügung, die es ermöglichen ohne großen
Aufwand eine Applikation auf einem Peer-to-Peer Protokollstapel zu entwickeln. Auch im Bereich der verteilten Datenhaltung (verteilte Dateisysteme)
kommen heutzutage Protokolle wie Pastry zum Einsatz, die sich aufgrund
von effizienten und stabilen Algorithmen als sehr gut skalierbar und performant erwiesen haben. So lässt sich also vermuten, dass in nächster Zeit
noch viel Forschungsarbeit in diesem Bereich geleistet wird, denn nicht nur
die Forschung, sondern auch die Wirtschaft zeigt großes Interesse an den
Ergebnissen dieser Arbeit.
19
8 Erklärung
8
Erklärung
Die vorliegende Arbeit habe ich selbstständig ohne Benutzung anderer als der
angegebenen Quellen angefertigt. Alle Stellen, die wörtlich oder sinngemäß
aus veröffentlichten Quellen entnommen wurden, sind als solche kenntlich
gemacht. Die Arbeit ist in gleicher oder ähnlicher Form oder auszugsweise
im Rahmen einer oder anderer Prüfungen noch nicht vorgelegt worden.
Ilmenau, den 10. 07. 2008
Rene Golembewski
20
Literaturverzeichnis
Literaturverzeichnis
[1] Wikipedia: http://de.wikipedia.org/wiki/jxta.
[2] Salman A. Baset and Henning G. Schulzrinne. An Analysis of the Skype
Peer-to-Peer Internet Telephony Protocol. IEEE Magazine, Columbia
University, 2006.
[3] Peter Mahlmann. Peer-to-Peer Netzwerke. Springer, eXamen.press, 2007.
[4] RFC3489. STUN - Simple Traversal of User Datagram Protocol (UDP)
Through Network Address Translators (NATs). IETF, 2003.
[5] Antony Rowstron and Peter Druschel. Pastry: Scalable, decentralized
object location and routing for large-scale peer-to-peer systems. Microsoft
Research, 2001.
21