• Keine Ergebnisse gefunden

Peer-to-Peer Netzwerke

N/A
N/A
Protected

Academic year: 2022

Aktie "Peer-to-Peer Netzwerke "

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Prof. Dr. Thomas Schmidt

HAW Hamburg, Dept. Informatik Raum 780, Tel.: 42875 - 8452

Email: schmidt@informatik.haw-hamburg.de Website:

www.informatik.haw-hamburg.de/~schmidt/p2p

Peer-to-Peer Netzwerke

Praktikumsteil 1 (1. - 4. Termin):

Zielstellung des ersten Praktikumsteils ist die Implementierung einer DHT-Middleware auf der Basis des Chord Protokolls, welche dann von einer darüber liegenden Applikation benutzt werden kann.

Die Kernkomponenten der Chord Middleware bestehen aus:

Î einem Interface als Zugriffsschnittstelle für Applikationen Î einer gemeinsamen Hash-Funktion: SHA-1 (160 bit)

Î dem Kernsystem bestehend aus den DHT Datenstrukturen (Predecessor- Successors, Fingertable, Keytable) nebst Routingfunktionalität

Î einem Chord Protokoll-Stack

Î den Chord Selbstorganisationsprozeduren für die eigene An- bzw. Abmeldung sowie Routing-Tabellenpflege (stabilize, fix_fingers)

Î dem Bootstrapping.

Implementierungsplan:

Workpackage 1 - Grundsystem:

Konzipieren und implementieren Sie die Grundstruktur eines DHT-Knotens, also das Interface zur Applikationsschicht, das Hashing, die DHT Datenstrukturen und ihre Verwaltung.

Testen Sie Ihre Implementierungen mit statischen Werten.

Meilenstein 1: Ein isolierter DHT-Knoten kann lokale Schlüssel- und Knoteninformationen speichern und verwalten.

Workpackage 2 - Chord Protokoll:

Implementieren und testen Sie folgenden Protokollstack. Jeder Chord Knoten kann Messages der folgenden Form empfangen und versenden:

1 5 9 17 byte T sourceIP sourcePort TID Data

(2)

Protokollelemente:

T Type of message (byte[1] int)

sourceIP die IP-Adresse des Absenders (byte[4] InetAddress) sourcePort die Port-Adresse des Absenders (byte[4] String) TID TransaktionsID - zufällig durch Sender (byte[8] random) Data Message-Type abhängig

Message Types:

Code Wert Data

1 status OK / ERROR (8 byte String)

2 put Hash (byte[20]), corresp. IP (byte[4])+ Port (byte[4]) 3 get Hash (byte[20])

4 join (my) Hash (byte[20])

5 leave (predecessor's) Hash (byte[20]), corresp. IP (byte[4])+ Port (byte[4]) 6 reply IP (byte[4])+ Port (byte[4])

7 successor -

Die Knoten-IDs im Chord-Ring werden einheitlich in folgender Weise ermittelt:

Die jeweils vier Bytes aus IP-Adresse und Port werden unmittelbar konkateniert und mittels der o.g. Hash-Funktion abgebildet. (Hinweis: Indem Sie 16 bit Port-Nummern < 10.000 als 4- byte Strings kodieren, lassen sich in Java bequem Bytearrays erzeugen).

Protokollverhalten:

Die initiierenden Protokollmessages put/get/join/leave erhalten synchron (in derselben TCP-Session) eine Statusmeldung über die erfolgreiche Message-Bearbeitung zurück, alle anderen Antworten geschehen durch reply und sind asynchron (in aufeinander folgenden, verschiedenen TCP-Sessions).

Die Messages put und leave erhalten kein reply, während die Message get im reply die Adresswerte des Datenhalters (also die zum gesuchten Key korrespondierende IP-Adresse + Port) von dem Besitzer des Keys erhält bzw. ein leeres Antwortpaket, wenn der Schlüssel nicht vorhanden ist. Auf ein join (mykey) hin wird vom bisherigen Zuständigen für mykey, mykey's neuer Nachfolger, der bisherige Vorgänger mitgeteilt (also mykey's neuer

Vorgänger).

Die Message successor wird für Chord's stabilize Prozedur benötig. Sie wird ohne Argumente an den gegenwärtigen successor (aus dem leave set) gesandt und mit reply (predecessor) beantwortet.

Einen Protokollsimulator (Reflektor auf Port 8888) mit Verarbeitungsprotokollierung, den

"SimpleServer" finden Sie hier.

(3)

Meilenstein 2: DHT Knoten kann protokollgerecht kommunizieren.

Workpackage 3 - Bootstrapping, Routing & Forwarding, Tabellenaufbau

Implementieren und testen Sie ein einfaches Bootstrapping, welches auf einem

gelegentlichen Multicast Advertising jedes Knotens in der Gruppe 239.238.237.17 und dem Port 9017 basiert. Hierzu kann die reply message mit den eigenen

Netzwerkadressen verwendet werden.

Implementieren Sie weiterhin ein Routing und Paket-Forwarding, welches der Chord Algorithmik gehorcht. Füllen Sie dabei auch die Routing-und Schlüsseltabellen.

Ergänzen Sie Ihr Routing durch eine Vervollständigung der Join Operationen.

Meilenstein 3: Die DHT ist nun voll funktionsfähig, aber noch nicht selbstheilend.

Workpackage 4 - DHT Maintenance

Implementieren Sie die Pflegeprozeduren fix_fingers und stabelize gem. Chord-

Publikation. Erhöhen Sie die Robustheit durch ein 'freundliches' leave. Testen Sie die DHT gemeinsam unter wachsender Last.

Meilenstein 4: Die DHT Middleware ist fertig und bereit zum Einsatz in einer Anwendung.

Referenzen

ÄHNLICHE DOKUMENTE

Wenn eine Anfrage an einem Knoten vorliegt, so kann dieser genau bestimmen, zu welchem Knoten er die Anfrage weiterleiten muss, so dass sie ohne Umwege am für den

– Impact of node failures on lookup failure rate. – lookup failure rate roughly equivalent to node failure

– Impact of node failures on lookup failure rate. – lookup failure rate roughly equivalent to node failure

Jeder Knoten leitet ein Broadcast-Paket mit RangeHash X an alle ihm bekannten Knoten (mit aktualisiertem Range) zwischen seiner ID und X weiter.. Der Startknoten sendet

Basics of peer-to-peer systems: motivation, characteristics, and examples Distributed object location and routing in peer-to-peer systems3. Unstructured

Napster provided a service where they indexed and stored file information that users of Napster made available on their computers for others to download, and the files

ƒ Peer-to-Peer: Anwendungen, die Ressourcen am Rand des Internets ohne feste IP-Adressen ausnutzen Ressourcen: Speicherkapazität, CPU-Zeit, Inhalte, menschliche Präsenz.. Î

PathFinder is based on a random graph which gives it short average path length, large number of alternative paths for fault tolerable, highly robust and reliable overlay topology..