Skip navigation.


This page provides a collection of tools for P2P TV related research. Feel free to use them, but please respect their license and give credit to the authors.

Streamer Incarnations

Below you can find a collection of P2P streamers, each developed for some specific research/experimentation goal. Note that the steamers below are prototypes developed to study specific algorithms. They are NOT fully functional applications, and thus care should be taken when they are used.

At the time of writing, the following streamers are available:

  • DumbStreamer: a (very) simple P2P streamer. See the code here

  • RockStreamer: a simple push based P2P streamer. See the code here

  • OfferStreamer: a P2P streamer based on Offer-Accept signaling mechanism. The Offer-Accept mechanism is the protocol we use in recent versions of PeerStreamer. Look at the master and next branches for the code.


During the initial development of PeerStreamer (in the framework of the EU FP7 NAPA-WINE project), several P2P TV simulators had been developed and used for the validation of PeerStreamer algorithms.


SSSim is the Simple & Scalable Simulator for P2P scheduling algorithms. It has been specifically designed to study scalability properties and performance limits of various scheduling algorithms (chunk selection: Random Blind, Latest Blind, Random Useful, Latest Useful, Deadline Based, etc.; peer selection: Random Blind, Random Useful, Bandwidth Weighted, Earliest Latest, etc. ) You can find sources and some description here.

It has been used in the following papers:

P2PTVSim C version

The first version of the event-based P2PTVsim simulator was written in C.

It has been used in the following papers:

P2PTVSim C++ version

A second version of P2PTVsim had also been developed, changing the language in C++, and adding features like configurable schedulers, etc. Source code is available here.

It has been used in the following papers:


Due to the low CPU utilisation and memory footprint of PeerStreamer, it can easily be used to emulate (run the real application over an artificial network) P2P distribution. To learn about emulation, start by reading our description of testing the code on a single PC.

Emulation can easily be extended to larger environments, such as NetKit Virtual Laboratories or to Planetlab. If you are interested, feel free to contact us for details.