What happens when two children decide to share a teddy bear, but then one of them changes his mind? The children will likely tear the stuffed toy in two, leaving only bear parts and crying children.
A peer-to-peer streaming system can be like that bear. If you have a group of peers who are sharing the bandwidth load, and then someone decides to withdraw their share, the content stream can break up and cause a less than perfect experience for the remaining users.
That's just one of the problems that Venkat Padmanabhan, Helen Wang, and Philip Chou set out to solve when they began researching streaming peer-to-peer (P2P) systems. They call their project CoopNet, for cooperative network.
Traditional streaming media systems have a central server that distributes content directly to multiple clients. The clients don't interact with each other; they only receive content from a central server.
In a P2P system, the content may be hosted either by a server or by a client. Even if a server hosts it, most clients would not receive the content directly from the server; instead, they would depend on other interested clients to distribute it. It's more like a community that shares a common soup pot among the neighbors.
Each approach has its strengths and drawbacks. The traditional server-based approach provides high reliability, but tends to be expensive. In addition, the server may melt down during load surges, also called flash crowds, which may be triggered by a popular media event. The P2P approach is less expensive and better able to adjust to dynamic surges in load because there are multiple peers, or nodes to access for content. However, it's less reliable then the traditional systems because the peers tend to drop in and out. Reliability is one of the key issues that the CoopNet team wanted to solve.
The CoopNet team wanted to develop a system that would work for networks of all sizes, and would combine the best of P2P systems and traditional infrastructure-based systems.
An example of a small network application that would benefit from the CoopNet system would be a live webcast of a birthday party or holiday event to friends and family members. The family's connection and usage would be intermittent as they tuned in, watched the cake cutting or present opening, and then tuned out again to pick up the latest headlines on MSNBC or post a blog entry.
The CoopNet team decided to develop a content distribution plan that was more robust than the average P2P network against the interruptions caused by frequent joining and leaving of individual peers, as in the birthday party example.
To address this challenge the CoopNet team simply hedged their bets. Rather than have each client depend on a single stream of packets from one of its peers, the system creates multiple sub-streams and delivers them via different peers. The sub-streams are created using multiple description coding (MDC). "With MDC you don't have to depend on just one guy. You get a little bit from one person here and a little bit from another person over there," said Padmanabhan.
In both the traditional and P2P systems, clients are served by a connection to one other client or a server. In both cases, there's just one node between you and a lost connection. With CoopNet, clients are connected to multiple peers. Each sub-stream is delivered to the client through a different peer.
That way, if one of the peers or sub-streams drops out, you can still get data because you're still connected to several other sub-streams or peers. Your media stream isn't broken up or frozen while the system repairs itself.
How to Handle Flash Crowds
When large scale networks offer popular programs through streaming media, they may experience flash crowds. Flash crowds occur when larger than expected numbers of people access streaming content at the same time. The CoopNet team thought that their system could prevent the choppy stream that users experienced during these events.
To test their theories, they simulated the traffic flow from the 9/11 reporting on MSNBC. In this situation, the system had to handle large spikes in traffic. Users were getting 'access denied' or receiving erratic streams.
When the researchers employed CoopNet using the same traffic pattern, the resulting stream was smooth and uninterrupted.
Another possible application for this system is game spectating. Game spectating is becoming a big trend, especially in countries such as Japan. Tens of thousands of fans go online to watch the tournaments between professional video game players. A modified version of CoopNet could provide a smooth view of the online fun.
Philip Chou feels that they still have more to learn about CoopNet. "The next step is to get it working in a real-world system. We'll be working on that this summer, as well as exploring some variations such as file distribution. We also want to explore some ideas for better broadcast within ad hoc mesh networks."
CoopNet might be a way for everyone to share their resources and have a much better experience as a result.