P2P Streaming Application
Please note: for a more complete and functional P2P streaming software, please refer to LiveShift.
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 (cf. Figure 1). The application was used to broadcast the FIFA World Cup 2006 as live stream to the students participating in the challenge.
Figure 1: P2P Streaming Application
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.
More information about the challenge task can be found at http://www.csg.uzh.ch/teaching/ss06/p2p/challenge (in german).
The application has been implemented in Java.
It requires Java version 1.4.2 (JDK) or higher for compilation*. It
depends on the FreePastry
1.4.4 library which is included in the application source package and
needs to be put on the class path. The application may easily be compiled
using Eclipse or any other
* Package csg.p2p.challenge.group3 requires Java 1.5
Furthermore, the application uses VLC
as streaming server as well as streaming client to display the MPEG stream
locally. VLC is a free media player, which is able to stream and receive
several multimedia formats. The layer model in Figure 2 shows, how the UDP
stream is distributed through the P2P application and received with VLC
locally. In principle, other UDP-enabled streaming engines may be used,
Figure 2: Layer Model
Refer to the README file. Further documentation about
the different solutions can be found in the doc folder of the source
Refer to the LICENSE file.
See AUTHORS for the full list of authors for the different P2P challenge groups.