Multicasting of video streams has been proposed in order to eliminate duplicate streams flowing through common links in a network. Multiple multicast streams are started for each video—streams for the entire video started some time apart, or one stream for a segment of the video—and are cycled over time. Multicasting streams this way scales with the number of individual streams started and is independent of the number of individual users. Multicasting, while effective for streaming live content, comes with complications in the Video on Demand (VOD) arena. Users may request content at times other than when a multicast stream starts, or may attempt to rewind or fast-forward the video. Thus, multicasting has to be augmented with other approaches before it can be applied to VOD. One popular approach is to unicast streams from the server until the point when the user can be transitioned off to a multicast stream. This approach may unduly stress the network infrastructure.
Content distribution networks (CDNs) have also been proposed as viable approaches for facilitating distribution of videos on-demand. Because CDNs are normally located at the edge of the network close to the user, starting unicast streams from these CDNs distributes the load among the servers and bypasses the points of congestion in the core of the network. The CDN can cache content the first time it is requested and can then use this cached data to serve any future requests. Further, CDNs can be arranged as hierarchies such that they do not have to store all possible content; instead they can cooperatively cache the content and use other mechanisms to locate and share necessary content.
Recently, techniques that leverage the existence of data on the end-hosts (peers) have also been recently suggested for VOD. End hosts participate actively in the system by storing video and by streaming video to other users, thereby alleviating load off the servers. Using these peers for streaming allows for many different combinations of approaches to be applied to address the scalability issues of Internet-based VOD. P2Cast constructs application level multicast trees rooted at the central video servers and comprised of the clients. Video is streamed over the multicast tree to the clients, and clients that arrive late also join the multicast tree. However, the initial part of the stream that was missed may need to be patched, and this can be done by contacting the server or by using the other clients that have cached the initial part of the video. The use of application layer multicast naturally degenerates into a unicast when there is only one viewer watching a particular video (as can be expected with unpopular videos) and no special handling for unpopular videos is necessary. This approach can also be adopted to native IP multicast-based VoD streams.
Alternately, a swarming-based approach is possible where the system relies entirely on peers for the video and utilizes the central server as a directory that maps the data to the peer storing the data. Such an approach has been proposed that arranges the peers in a mesh topology and utilizes a central server that acts as a directory. At least one such proposal employs network coding to obviate the need to schedule fetching of blocks from peers.
The use of the same reference symbols in different drawings indicates similar or identical items.