Introduction
Peer-to-peer (or P2P) systems have recently gained a lot of attention in the social, academic, and commercial communities.
One of the early driving forces behind the peer-to-peer concept is that there are many PCs in homes and offices that lie idle for large chunks of time. Why not leverage these idle resources to do something useful, like share computation or share content?
In fact, peer-to-peer systems have become synonymous with file-sharing systems as systems like Napster, Gnutella, Kazaa and BitTorrent have enjoyed explosive popularity over the last few years. In the last years, peer-to-peer networks have become even more important for real-time content delivery: Video-on- Demand and real-time video streaming are largely diffused among Internet users services. Using Peer-to-Peer overlay has become an increasingly popular approach for streaming live media over the Internet due to its potential scalability and ease of deployment. This approach is generally referred to as P2P streaming. In P2P streaming, participating end-systems (or peers) actively contribute their resources (mainly outgoing bandwidth) by forwarding their available content to their
connected peers. Since the aggregate available resources in this approach organically grow with the user population, this approach can potentially scale with the number of participating peers in a session. Working with this kind of applications, overlay network issues and management are different in comparison with peer-to-peer protocols designed for file sharing or large-scale distributing computing. Fundamental goals of a peer-to-peer protocol are reliability, scalability and adaptability over time as users are added or removed and network conditions change. In addition, delivering a real-time content, we must be able to guarantee that the stream is delivered at the rate that it's coming in each node belonging to the overlay network. In this thesis, I will first explain what Peer to Peer systems are and how Peer to Peer solves scalability issues by exploiting its ability to distribute information. Then, I will go into details of Peer to Peer Streaming Systems, describing mesh-based systems and tree-based systems and highlighting differences between this two approaches. The reverse engineering and the analysis of an Operational Peer to Peer Streaming System will be the topic of the Chapter 3 : this work has been the argument of a Workshop Paper, accepted to the ST MicroElectronics Streaming Day 2007. In Chapter 4, I
will report the description of the Implementation on PlanetLab of a tree-based peer to peer live streaming client. The aim of this thesis is to understand the best way and the best topology for a scalable, affordable and legal TV quality-like broadcast of content.