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 dominic.battre@tu-berlin.de • 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