# An Adaptive Buffering Scheme for P2P Live and Time-Shifted Streaming
## 2 Related Work  
So far, traditional client-server-based architectures have provided good performance and high availability. However, they usually require high deployment and maintenance costs. Therefore, various P2P technologies that can provide fully-distributed and cooperative applications at low cost have emerged as an alternative, thereby reducing the burdens placed on the servers [20; 21]. A novel interactive broadcasting infrastructure based on a decentralized architecture has been proposed [22]. Based on a prototype digital video broadcasting-terrestrial (DVB-T) regenerative platform, this exploits P2P technology to optimize resource utilization during user-generated services' provision. A P2P Home-Box overlay structure that has enhanced home-gateways has also been proposed [23]. This structure provides means for an efficient content sharing and exchange among users based in P2P overlay. In addition, with recent advances in wireless networks and computing power, various mobile devices have been developed. Due to the heterogeneous capabilities of those mobile devices, it is essential to adapt multimedia content to enable processing with their available resources [24]. In particular, a peer-to-peer architecture for content adaptation using the MPEG-21 framework has been proposed [25]. This uses MPEG-21 digital item (DI) and digital item dd (DIA) for media adaptation, and is implemented on a P2P network with super peers. On the other hand, P2P streaming systems have been broadly classified into tree and mesh structures. In a tree-based structure, a peer receives video data from its parent peer in a push manner [26; 27; 28]. Once the tree structure is constructed, peers can transmit data at a fast rate, because they can keep transmitting data without any specific requests from their child peers. However, this structure incurs a considerable amount of overhead to rebuild tree structures whenever peers join or leave. To address this problem, many mesh structures have been proposed [4; 5; 6; 7; 8]. In the mesh structures, even though a peer's neighbor leaves the network, it can still receive data from its remaining neighbors, since it receives data from several neighbor peers simultaneously. Thus, the mesh structures can provide a robust structure against peers' churn. However, since data are transmitted in a pull manner (i.e., peers receive data after explicitly requesting each chunk), transmission delays are long. As a result, the mesh structure suffers from long startup delay and playback lag. In addition, note that almost all areas of each peer's buffer are used for prefetching data that will be played back later, as mentioned above. On the other hand, many buffering schemes have been proposed to improve the system performance in P2P VOD systems. In P2 VOD, a cooperative caching scheme using a mesh-based buffermap structure has been proposed to reduce delay when a peer joins or leaves the VOD multicast tree [9]. In order to support VCR functionality efficiently in P2P VOD systems, BulletMedia reduces the load on the media server by creating replicas of the video and distributing them among several peers [10]. Unlike existing FIFO cooperative caching that determine the data to cache according to the order of requests, a video popularity-based caching scheme has also been proposed [16]. Note that, since peers store the entire part of each video on their storage devices in P2P VOD systems, the data required to playback a desired video are always available. Thus, the buffering schemes in P2P VOD systems have focused on predicting access patterns accurately and prefetching the necessary data efficiently. Unlike in P2P VOD systems, however, only a limited amount of data broadcast in real time can be buffered in the main memory in P2P live streaming systems. Therefore, existing buffering schemes for P2P VOD systems cannot be applied directly to P2P live streaming systems. A number of buffering schemes have been thus proposed for P2P live streaming systems.