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).

Software Requirements

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 development environment.

* 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, too.

Figure 2: Layer Model


Refer to the README (TXT, 3 KB) file. Further documentation about the different solutions can be found in the doc folder of the source distribution.


Refer to the LICENSE (TXT, 0 KB) file.

See AUTHORS (TXT, 0 KB) for the full list of authors for the different P2P challenge groups.