R2: Designing live P2P streaming protocols with network coding

Recent real-world success of peer-to-peer live streaming, such as UUSee and PPLive, has led to the question of what further improvements one can make to existing streaming protocol design. It is well known that Peer-to-Peer (P2P) streaming conserves server bandwidth by shifting the load to peers and their ISPs, and as such scales well to a larger population of subscribers, and offers better resilience to flash crowds, when server bandwidth supply is temporarily insufficient to meet demand. However, when pushed too far, it may be hard to monitor and control the quality of streaming playback, as routine peer departures are detrimental to streaming performance in a transient fashion. The delay in delivering a live event to all peers is much higher with relaying, and the initial buffering delay can be higher.

Previous research in the literature has focused on constructing high-quality peer-level topologies. Tree-based per-slice push, such as Chunkyspread [ICNP 2006], may shorten the delays between live events and their playback time, but they suffer overhead of maintaining trees and unavoidable implementation complexity. Mesh-based per-segment pull, such as CoolStreaming [INFOCOM 2005], may be simple to implement and offer better resilience to frequent peer departures, but the overhead of requests and buffer availability exchanges is quite significant, and the delays between live events and their playback time may be much longer.

With the recent surge of interest in practical network coding, it is interesting to see if network coding would be helpful in delivering performance gains in P2P streaming, with respect to three important performance metrics: (1) resilience to peer dynamics; (2) the utilization of scarce server bandwidth; and (3) the time required for initial buffering delays when switching to new channels.

In the R2 project, our objective is to design, analyze, and implement a new peer-to-peer live streaming protocol, that hopefully combines the benefits of tree-based per-slice push and mesh-based per-segment pull, but without much complexity in its implementation. In the first phase, we are interested in weather network coding can offer any tangible benefits in P2P streaming, without revising the traditional mesh-based per-segment pull protocol. We have performed an experimental evaluation of the benefits of network coding over a vanilla pull-based streaming protocol, with the conclusion that there exist some benefits offered by network coding, but they are nothing to write home about. Our papers summarizing results in this step have been published in IEEE Transactions on Multimedia (PDF), and IEEE INFOCOM 2007 (PDF).

In the second phase, we are naturally curious about the possibility of designing a much improved protocol that is tailored to take full advantage of network coding. Towards this objective, we have designed R2 (Random push with Random network coding), and believed that R2 enjoys the advantages of both push-based and pull-based streaming protocols. To show its practicality and effectiveness, our experimental results are based on a complete implementation of R2 with emulated peers on a server cluster, coupled with an optimized library of random network coding tuned for performance. Our paper on R2 has been published in the December 2007 issue of the IEEE Journal on Selected Areas in Communications, Special Issue on Advances in P2P Streaming.

If you are still reading, you may also be interested in our presentation slides dedicated to the R2 project, available as an Adobe PDF document.