P2P Streaming Application ========================= Release 1.0, 22 September 2006 Copyright (c) 2006 P2P Challenge Groups, University of Zurich See AUTHORS for the full list of authors for the different P2P challenge groups. Refer to http://www.csg.unizh.ch/research/software/p2p-streaming for more information about the P2P Streaming Application. Description ----------- This application is the result of a P2P challenge performed by 5 different groups in the scope of a lecture on Peer-to-Peer Systems and Applications during summer term 2006 at the University of Zurich. The goal of this challenge was to build a P2P application, that transports an MPEG Transport Stream (TS) from a streaming server to several clients via the UDP protocol. The application was used to broadcast the FIFA World Cup 2006 as live stream to the students participating in the challenge. The application had to meet the following requirements: - Only one client receives the stream from the streaming server. All other clients receive the stream only via other clients (i.e. clients are servers for other clients at the same time. - The delay of the stream between the streaming server and the clients should be minimal. At the same time, the application should scale for many (e.g. up to 10 billion) clients. - The stream should be distributed on application-level only (Application-Level Multicast), i.e. no use of IP Multicast or similar technologies below the application layer. - The clients should be able to join and leave dynamically. At the same time, the stream should be delivered with as few interrupts as possible. - The application should be fully decentralized. No use of (centralized) infrastructure services such as, e.g., a DNS server. Further information about the challenge task can be found at http://www.csg.unizh.ch/teaching/ss06/p2p/challenge Software Requirements --------------------- - FreePastry (Version 1.4.4) Available at http://freepastry.org/FreePastry/ - Java (Version 1.4.2) Available at http://java.sun.com/ - VLC Media Player Available at http://www.videolan.org/vlc/ Compiling the Application ------------------------- The application source code is located in the src directory and requires Java 1.4.2 (JDK) for compilation*. It depends on the FreePastry 1.4.4 library (lib/FreePastry-1.4.4.jar) which needs to be put on the class path. The application may easily be compiled using Eclipse or any other development environment. * Package csg.p2p.challenge.group3 requires Java 1.5 Running the Application ----------------------- The application basically consists of 4 different solutions from 4 P2P challenge groups. After being compiled, these individual solutions can be started as follows: Group 2: This solution requires the parameters to be given on the commandline. $ vlc udp:@:vlc_listen_port $ java [-cp lib/FreePastry-1.4.4.jar] csg.p2p.challenge.group2.P2PApp bootstrapip \ pastryport udp_listen_port vlc_listen_port udp_paket_size $ vlc udp:@:2000 $ java csg.p2p.challenge.group2.P2PApp 192.168.1.1 5009 1234 2000 4096 Group 3: For this solution the parameters are hard-coded within the application. VLC has to be started separately. Additionally, Java 1.5 is required to run this solution. See doc/group3/README.txt for more information. $ java [-cp lib/FreePastry-1.4.4.jar] csg.p2p.challenge.group3.ApplicationTemplate Group 4: This application requires the parameters to be typed in after it is started. $ java [-cp lib/FreePastry-1.4.4.jar] csg.p2p.challenge.group4.SFApplication Group 5: This solution provides a GUI. VLC can be started from within the GUI. $ java [-cp lib/FreePastry-1.4.4.jar] csg.p2p.challenge.group5.main.Manager Documentation ------------- Further documentation about the different solutions can be found in the doc folder.