Personal tools
You are here: Home Teaching SS06 494 - P2P Challenge Aufgabe

Challenge Aufgabe

News

  • 22.09.2006: Die P2P Streaming Applikation ist nun öffentlich verfügbar unter http://www.csg.uzh.ch/publications/software/p2p-streaming/
  • 27.06.2006: Der P2P Challenge Champion 2006 ist nun bestimmt! Herzliche Gratulation an Gruppe 5 mit Nicolas Baumgardt, Andreas Bossard, Somala Mang und Claudio Zenerino! Die detailierten Bewertungen können von innerhalb des Universitätsnetzes eingesehen werden.
  • 04.04.2006: Die Gruppenliste ist nun online. (Nur von innerhalb des Universitätsnetzes zugänglich. Von ausserhalb verwenden Sie bitte einen VPN-Client.) Wer sich noch einer Gruppe anschliessen möchte, melde sich bitte bei David Hausheer.

Aufgabe

Es soll eine P2P Applikation entwickelt und implementiert werden, welche einen MPEG Transport Stream (TS) von einem Streamingserver via UDP Protokoll an mehrere Clients verteilt (vgl. Abbildung 1).


Abbildung 1: P2P Applikation

Es ist geplant, als UDP Stream die Live-Übertragung der Fussball WM 2006 in Deutschland anzubieten. Im Erfolgsfall wird die Applikation später allen Mitarbeitern und Studenten des IFI zur Verfügung gestellt.

Rahmenbedingungen

  • Es darf (pro Gruppe) maximal ein Client den Stream vom Streamingserver beziehen. Alle übrigen Clients dürfen den Stream nur über andere Clients beziehen (d.h. Clients sollen gleichzeitig Server für andere Clients sein).
  • Die Zeitdifferenz des Streams zwischen dem Streamingserver und den Clients soll minimal sein. Der Client, welcher den Stream vom Streamingserver bezieht, soll den Stream jedoch nicht direkt an alle weiteren Clients verteilen, da die Anwendung für viele (z.B. bis zu 10 Millionen) Clients skalieren soll.
  • Der Stream soll rein auf Applikationslevel verteilt werden (Application-level Multicast), d.h. keine Verwendung von IP Multicast oder ähnlichen Technologien unterhalb der Applikationsschicht.
  • Clients sollen dynamisch zu- und weggeschaltet werden können. Dabei soll die Übertragung des Streams jedoch möglichst unterbruchsfrei geschehen.
  • Die Applikation soll vollständig verteilt sein. Es sollen keine (zentralen) Infrastrukturdienste wie z.B. ein DNS Server verwendet werden. Als einzige zentrale Komponente ist ein Client als Bootstrap Knoten zugelassen.
  • Ausser den unten genannten Hilfsmitteln und natürlich der IP Infrastruktur dürfen keine anderweitigen Hardware- oder Software-Komponenten eingesetzt werden.
  • Je nach Verlauf der Aufgabe können durch die Dozenten weitere Regeln definiert oder Hilfsmittel zugelassen werden.

Hilfsmittel

Zur Umsetzung der Aufgabe sollen folgende Hilfsmittel eingesetzt werden:

  • Die Aufgabe soll, soweit vorhanden, auf eigenen Laptops umgesetzt werden. Wer keinen eigenen Laptop besitzt, kann nach vorgängiger Reservation eine feste Arbeitsstation im Raum BIN 1.D.12 benutzen (wird abgeklärt).
  • Als Programmiersprache soll Java (Version 1.4.2) verwendet werden. Das J2SE Software Development Kit (SDK) kann unter http://java.sun.com/j2se/1.4.2/download.html heruntergeladen werden.
  • Als Entwicklungsumgebung soll Eclipse verwendet werden. Der jüngste Release (3.1.2) kann unter http://www.eclipse.org/downloads/ heruntergeladen werden. Eclipse ist für Windows XP, Mac OSX, Linux und weitere Plattformen verfügbar.
  • Als P2P Overlay Technologie wird FreePastry (Version 1.4.4) verwendet. FreePastry ist eine frei verfügbare Implementation von Pastry. Die jüngste Binary (JAR) Version von FreePastry kann unter http://freepastry.org/FreePastry/FreePastry-1.4.4.jar heruntergeladen werden.
  • Als Streamingserver/-client soll VLC eingesetzt werden. VLC ist ein freier Media Player, welcher zahlreiche Multimedia Formate (u.a. MPEG) sowohl streamen als auch empfangen und wiedergeben kann. Das Schichtenmodell in Abbildung 2 stellt dar, wie der UDP Stream durch die P2P Applikation verteilt und mit Hilfe von VLC empfangen werden kann.
  • Schliesslich steht ein Template zur Verfügung, welches als Grundlage zur Implementierung der P2P Applikation basierend auf FreePastry verwendet werden soll. Ausserdem kann die Beispielsapplikation, welche in der Vorlesung vorgeführt wurde heruntergeladen werden: [Source Code] [Binary (JAR)]. Ausführen der Beispielsapplikation:

    java -cp MyApplication.jar;FreePastry-1.4.4.jar test.MyApplicationTest [-nodes n] [-protocol (direct|socket)]


Abbildung 2: Schichtenmodell

Vorgehen

  • Die Gruppen organisieren sich untereinander selbständig (P2P Selbstorganisation). Es wird nahegelegt, dass sich die Gruppen regelmässig treffen (z.B. einmal pro Woche) und dazwischen ein Austausch über Email etc. stattfindet. Zu Beginn ist es sicherlich sinnvoll ein längeres Treffen zu vereinbaren, bis das Vorgehen und die Aufgabenverteilung klar ist. Sowie auch gegen Ende der Aufgabe, wenn z.B. verschiedene Bestandteile der Applikation zu einem Ganzen zusammengefügt und das Funktionieren der Applikation sichergestellt werden sollen.
  • Die technischen Angaben zum Streamingserver werden später hier bekanntgegeben. Bis dahin kann VLC lokal auf einem der Clients als Streamingserver gestartet werden (VLC kann lokal ohne weiteres in mehreren Instanzen ausgeführt werden). Als Quelle eignet sich z.B. der Stopmotion Movie VROOM.
  • Die verwendeten Hilfsmittel sind allgemein gut dokumentiert. Einige wichtige Links im Überblick:
    Java Tutorial, Java API, Eclipse Dokumentation, FreePastry Javadocs, FreePastry Readme, Pastry Overview, VideoLAN Dokumentation.

Folgende Schritte sind für den Setup des Applikations-Templates in Eclipse nötig:

  • Java SDK installieren.
  • Eclipse Installations-ZIP File extrahieren und die eclipse Anwendung starten. Es muss ein Workspace Folder angegeben werden.
  • Neues Java Projekt erzeugen. In den Java Settings auf die Registerkarte Libraries klicken. Add External JARs... auswählen. Die Datei FreePastry-1.4.4.jar öffnen.
  • Das Applikations-Template in den Projekt Folder hineinziehen. Durch Doppelklicken auf das Template kann das Java File im mittleren Rahmen editiert werden.
  • Zum Ausführen der main Methode im Menu Run... auswählen. Java Application auswählen und auf New klicken. Als Main class die Klasse ApplicationTemplate angeben. Danach auf Run klicken. Nun sollte die Anwendung im Konsolenframe ausgeführt werden. Eine weitere Instanz der Applikation lässt sich durch nochmaliges Klicken auf Run erzeugen.

Folgende Punkte sollen als Hinweis für das Design der eigenen Applikation dienen:

  • Gruppen Management
  • Beitritt/Austritt eines Peers
  • Bootstrap Knoten
  • Senden/Empfangen eines UDP Streams
  • Optimaler Verteilungsbaum

Streamingserver

Der Streamingserver kann über die Adresse http://p2p-challenge.csg.uzh.ch/ erreicht werden. Für jede Gruppe wurde ein Username und Passwort erstellt, welches über die Assistenten bezogen werden kann. Über ein Webformular kann der UDP Stream für maximal 25 Minuten an eine beliebige IP Adresse / Portnummer innerhalb des Uni Netzes (130.60.0.0/16) geschickt werden.

Support

Für Fragen und Unterstützung bei der Umsetzung der Aufgabe steht jeder Gruppe ein Assistent (nach Absprache) zur Verfügung:

Jede Gruppe soll mit ihrem Assistenten im Laufe der ersten Woche nach Beginn der Aufgabe ein initiales Treffen vereinbaren, bei dem der Assistent durch die Gruppe über das geplante Vorgehen informiert wird.

Ausserdem steht eine Mailingliste p2p06@ifi.uzh.ch zur Verfügung, an welche Fragen zur Challenge Aufgabe gestellt und beantwortet werden können.

Präsentation und Bewertung

Die Challenge Aufgabe endet am 27.06.2006. Die Resultate der einzelnen Gruppen sollen dann in der Vorlesung demonstriert und von allen bewertet werden.

  • Insgesamt stehen jeder Gruppe 10 Minuten für Setup und Demo zur Verfügung. In der Demo soll die P2P Applikation mit 5 Clients, sowie das Zu- und Abschalten eines weiteren Clients demonstriert werden. Die entsprechende Infrastruktur für die Demos wird zur Verfügung gestellt (siehe unten). Die P2P Applikation soll als Source Code und Binary (JAR) Datei auf einem USB Memory Stick oder CD mitgebracht werden.
  • Weitere 5 Minuten pro Gruppe stehen am Anschluss an jede Demo für die stille Bewertung durch die anderen Gruppen zur Verfügung. In der Bewertung soll die P2P Applikation aufgrund der genannten Rahmenbedingungen (Skalierbarkeit, Zeitdifferenz, Unterbruchsfreiheit, etc.) fair bewertet werden.
  • Jeder Gruppe steht eine Bewertungsstimme (6er Skala) pro anderer Gruppe zu. Die Dozenten und Assistenten haben zusammen ebenfalls eine Stimme pro Gruppe. Die Resultate der Bewertungen werden erst nach Abschluss aller Präsentationen auf Bewertungsblättern eingesammelt und bekanntgegeben. Bei Stimmengleichheit entscheidet die Stimme der Dozenten und Assistenten. Ist diese ebenfalls gleich, entscheidet die Beantwortung einer Quizfrage zu einem Thema der Vorlesung.
  • Der Siegergruppe wird anschliessend ein Preis und der Titel "P2P Challenge Champion 2006" verliehen.

Testbed Infrastruktur

Für die Demos steht folgende Infrastruktur zur Verfügung:

  • 6 PCs im BIN 1.D.12 (Pentium 4, 2.8 GHz, 500 MB RAM)
  • Windows XP, Java 1.4.2, Eclipse 3.1.2, sowie VLC 0.8.5 vorinstalliert. Wer eine andere Java Version verwenden möchte (z.B. 1.5.0), kann diese in installierter Form auf CD oder USB Memory Stick mitbringen.
  • Alle PCs besitzen eine private Adresse im Subnetz 192.168.1.0/24, der Bootstrap PC besitzt die Adresse 192.168.1.1 sowie eine öffentliche Adresse im Subnetz 130.60.157.0/24, an welche der UDP Stream vom Streamingserver gesendet wird und dort auf Port 1234 empfangen werden kann.
  • Auf allen PCs ist ein gemeinsames (jedoch schreibgeschütztes) Verzeichnis (Netzlaufwerk Z:\) verfügbar, welches vom Bootstrap PC exportiert wird. Aus diesem Verzeichnis kann die P2P Applikation (allenfalls mit eigener Java VM) auf allen PCs gestartet werden.
  • Um ein möglichst reibungsloses Starten der P2P Applikation sicherzustellen, wird empfohlen der CD bzw. dem Memory Stick ein Startup-Skript mit den entsprechenden Kommandoaufrufen beizufügen, z.B.

    vlc udp:@:2000
    java -cp MyApplication.jar;FreePastry-1.4.4.jar myPackage.MyApplication --bootstrap-address 192.168.1.1 --bootstrap-port 5009 --listen-port 5009 --udp-listen-port 1234 --vlc-listen-port 2000
Document Actions