Hinweise Aufgabe 1

Transcription

Hinweise Aufgabe 1
VL Peer-2-Peer Netzwerke
SS 2009
Dr. Dominic Battré
Ausgabe 16.4.2009
Abgabe 23.4.2009
Besprechung 24.4.2009
Übungszettel 1
Hinweise
• Übungen können in Gruppen beliebiger Größe bearbeitet werden
• Abgabe per e-Mail an [email protected]
• Alle abgegebenen Zettel werden korrigiert
• Übungen werden nicht benotet – die Bearbeitung wird aber dringend empfohlen!
• Der Stoff der Übungen ist grundsätzlich prüfungsrelevant! Ausnahmen sind mit
Stern gekennzeichnete Aufgaben.
• Homepage der Vorlesung: http://www.cit.tu-berlin.de/?id=51290
Aufgabe 1
Suche im Internet nach drei unterschiedlichen Definitionen von P2P. Schreibe die Definition auf (mit Quellenangabe) und vergleiche sie mit den in der Vorlesung genannten
Punkten. Welche dieser Punkte wurden berücksichtigt?
Lösung:
Von Euch gefundene Aspekte waren:
• Selbstorganisation
• Gleichberechtigung, keine Unterscheidung zw. Client und Server, jeder hat die
gleiche Aufgabe
• Kommen und gehen von Peers
• Keine zentralen Server
• Teilen von verteilten Ressourcen
• Sicherheit muss durch Endpunkte der Kommunikationsteilnehmer gewährleistet
werden
• Teilnehmer müssen einander vertrauen
• Instabile Verbindungen und wechselnde IP-Adressen müssen berücksichtigt werden
• Skalierbar
• Redundant
1
Aufgabe 2
Was ist hole punching und warum benötigt man es? Beschreibe das Prinzip für UDP.
Lösung:
Siehe http://www.brynosaurus.com/pub/net/p2pnat/
Aufgabe 3
Angenommen, 5% aller IP Adressen im Internet werden zu jedem Zeitpunkt genutzt
und 1% aller eingeschalteten Rechner nutzen zu jedem Zeitpunkt ein bestimmtes P2P
Programm, das auf einem fest einprogrammierten Port nach eingehenden Verbindungen
hört. Shawn möchte sich mit diesem P2P Netzwerk verbinden und fragt daher zufällig
ausgewählte IP Adressen, ob sie Teil des P2P Netzwerkes sind. Wie viele Adressen muss
Shawn im Erwartungswert fragen bis er einen Rechner aus dem P2P Netz gefunden hat?
Zur Erinnerung: Der Erwartungswert ist definiert als
EX =
∞
X
i · P (X = i)
i=0
also in diesem Fall als die Summe der Produkte von “Anzahl der Versuche i, bis Shwan
das erste Mitglied des P2P Netzwerks gefunden hat” und “Wahrscheinlichkeit P (X = i),
dass genau im i-ten Versuch ein Mitglied gefunden wird und nicht vorher”.
Tipp: Es gilt
∞
X
x
kxk =
(1 − x)2
k=0
Du kannst die Formel für den Erwartungswert herleiten oder aber auch Nachschlagen,
wenn du den Namen der Verteilung kennst.
Lösung:
Sei P (X = i) die W’keit, dass man i − 1 angefragte IP Adressen nicht Teil des Netzes sind, aber die ite angefragte IP Adresse ein Teil davon ist. Sei weiter p die W’keit,
dass eine zufällige Anfrage bei einem Knoten im P2P Netzwerk landet und die Gegenwahrscheinlichkeit q = 1 − p.
Dann ist P (X = 1) = p, P (X = 2) = qp, P (X = 3) = q 2 p, . . . also P (X = i) = q i−1 p.
Aus der Definition des Erwartungswertes folgt:
EX =
∞
X
i · P (X = i) =
i=0
∞
X
i=0
ipq
i−1
=p·
∞
X
iq i−1
i=0
∞
p X i p
q
p q
1
= ·
iq = ·
= · 2 =
q
q (1 − q)2
q p
q
i=0
5
Im Fall dieser Aufgabe ist p = 0.05 · 0.01 = 10000
. D.h. im Erwartungswert müssen
2000 IP Adressen geprüft werden.
Es handelt sich hierbei um eine geometrische Verteilung.
2
Aufgabe 4
Wie kann man mit dem Gnutella Protokoll die Topologie (den Graphen) des OverlayNetzes bestimmen? Nimm an, dass alle Ping-Anfragen beantwortet werden.
Lösung:
Beginnend bei einem ersten Peer p senden wir diesem eine Ping-Nachricht mit TTL=2.
D.h. diese Nachricht wird genau einmal weitergeleitet (an alle Nachbarn von p) und dort
beantwortet. Daher bekommen wir alle Nachbarn von p mitgeteilt. Mit diesem Wissen
können wir jetzt inkrementell weitere Teile des P2P Netzes erkunden und den Graphen
stück für Stück nachmodellieren.
Aufgabe 5 (*)
Lade den Quellcode von Phex (http://www.phex.org), einer Gnutella Implementierung,
und suche, ob Ping Nachrichten nur bei TTL = 0 oder auch bei TTL > 0 mit Pongs
beantwortet werden. Phex behandelt Ping Nachrichten besonders, bei denen es meint,
dass sie dazu dienen, die Topologie zu analysieren. Wie?
Lösung:
Pongs werden auch bei TTL > 0 verschickt, siehe
• phex.msghandling.MessageDispatcher#handlePing(PingMsg,sourceHost)
• phex.connection.ConnectionEngine#processIncomingData()
Wenn TTL = 1 und hops = 1 geht Phex davon aus, dass es sich um ein “Crawler ping”
handelt. Es beantwortet den Ping dann direkt.
3