Video on Demand (VoD) can be implemented in a mesh-based P2P topology, similar to P2P live streaming. Peers in the network connect to several parents to receive video packets. The protocol overhead in mesh-based VoD systems is small, thus much easier to handle a high rate of transmitted video segments.
P2P mesh based systems are popular for generic file distribution. The difficulties of VoD systems is that video packets have to be received quickly and in order while they are downloading to have a possibility of watching the video. Different clients can watch different parts of the same video at different moments of time, and they can control the watching process using VCR operations such as stop, rewind, etc.
In some P2P VoD systems, peers only share video blocks with their neighbors based on their playing position. In highly skewed viewing patterns, most of the peers are clustered around a particular playing position and very few peers are distributed at different positions throughout the video length. In this case, some peers may have difficulty finding neighbors to satisfy their demand.
One solution is a cooperative cache based technique where each peer contributes a certain amount of storage to the system in return for receiving video blocks. If the cooperative cash is large enough, then it’s more likely that one peer can find another that has it’s requested video segment. It helps if the P2P system maintains an index of live peers and their available video segments. This index could be maintained by a central server, or each peer can maintain its own index. A second approach allows the query load to be spread more uniformly throughout the overlay.