Abstract:
The invention relates to peer-to-peer streaming of media in a network for distribution of data. A handover function is configured to hand over the distribution of sub-streams to a client back and forth between two peers or between a peer and the central server, if at least one predefined condition is fulfilled.

Description:
BACKGROUND OF THE INVENTION 
       [0001]    1. Field of the Invention 
         [0002]    The present invention pertains to a method and system adapted to peer-to-peer streaming of media content in a network for distribution of data. 
         [0003]    2. Description of Related Art 
         [0004]    Today&#39;s solutions for media streaming being based on a client-server model are disadvantageous due to high bandwidth requirements on the server side. A reduction of these requirements would demand a peer-to-peer model for data distribution. However, the existing peer-to-peer systems are unsuitable for streaming for a number of reasons, for instance because data arrives unordered, and, in the typical case, it is not possible to start utilizing the received data packets until the final part of the streaming media has arrived. The media may here represent any kind of digital content, such as music, video, digital films or images. 
         [0005]    Nodes (peers) in a peer-to-peer network may over time experience drastic changes in bandwidth availability, or even disappear completely. Moreover, the nodes may have asymmetric network connections, usually meaning that they have substantially higher downstream bandwidth than upstream bandwidth. 
         [0006]    Hence, there is a need for an improved streaming-media distribution solution, which, on one hand, overcomes the above mentioned bandwidth requirements of the pure client-server model; and on the other hand, avoids the drawbacks of the existing peer-to-peer solutions. 
       BRIEF SUMMARY OF THE INVENTION 
       [0007]    According to one aspect, the present invention relates to the provision of streaming media from a central server and/or peers in a peer-to-peer network without bandwidth guarantees. 
         [0008]    Hence, the invention sets forth a method adapted to peer-to-peer streaming of media content in a network for distribution of data. It is presumed that the network has a central server for streaming media content to clients, and the proposed method comprises:
       encoding streaming media content into sub-streams, and   playing the media at reception in a buffer of its receiving equipment adapted for such purpose.       
 
         [0011]    Every peer has software for retrieval of a media stream from the central server and from other peers. The software is adapted to transmit sub-streams of streaming media to other peers when requested. The method further comprises handing over the distribution of sub-streams to the client back and forth between two peers or between a peer and the central server, if at least one predefined condition is fulfilled. 
         [0012]    In one embodiment of the present invention a constant HIGH is defined regarding the amount of sub-stream data in its buffer. A constant LOW is also defined regarding the amount of sub-stream data in its buffer. 
         [0013]    In another embodiment, the at least one predefined condition is such that the method comprises receiving the sub-streams from peers in the client buffer at least when the constant HIGH is reached for streaming media in the buffer, and all media streams in the buffer are above the constant LOW. 
         [0014]    In still another embodiment, the at least one predefined condition is such that the method comprises receiving the sub-streams from the central server in the client buffer at least when the constant LOW is reached for any streaming media in the buffer. 
         [0015]    According to a further embodiment, played media streams are recoded in such a manner that different peers, having sub-streams of the same media stream in their memory, have randomly chosen sub-streams of that media stream, thus increasing the number of available redundant sub-streams in the network. 
         [0016]    According to yet another embodiment, the method comprises generating a first set of a first number of sub-streams from an original data stream, wherein any combination of a second number of sub-streams selected from the first set may be recombined to yield the original data stream. Each sub-stream in the first set is here encoded in such a manner that a given sub-block from a selected sub-stream can be combined with corresponding sub-blocks from the other selected sub-streams to yield the given block of the original data stream. Moreover, the second number is larger than or equal to two and smaller than or equal to the first number. 
         [0017]    Furthermore, the present invention sets forth a system adapted to peer-to-peer streaming of media content in a network for distribution of data. The system includes:
       a number of clients,   a central server for distribution of streaming media content to the clients, the central server being configured to encode the streaming media into sub-streams, and each of the clients being configured to play the media at retrieval in a buffer of its receiving equipment adapted for such purpose;   software in every peer equipment is configured to retrieve a media stream from the central server and from other peers, the software being adapted to transmit sub-streams of streaming media to other peers when requested; and   a handover switch function configured to hand over the distribution of sub-streams to the client back and forth between two peers or between a peer and the central server, if at least one predefined condition is fulfilled.       
 
         [0022]    Further embodiments of the system of the present invention are set forth through the set of attached dependent system claims. 
     
    
     
       BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWING(S) 
         [0023]    Henceforth reference is made the accompanied drawings and its related text, whereby the present invention is described through given examples and provided embodiments for a better understanding of the invention, wherein: 
           [0024]      FIG. 1  schematically illustrates a prior-art embodiment of distributing streaming media; 
           [0025]      FIG. 2  schematically illustrates how a conventional stream of streaming media in accordance with  FIG. 1  is split length-wise in sub-streams according to the present invention; 
           [0026]      FIG. 3  schematically illustrates distribution sub-streams in accordance with  FIG. 2  from a central server in accordance with the present invention; 
           [0027]      FIG. 4  schematically illustrates a central server connected to a peer-to-peer network; 
           [0028]      FIG. 5  schematically illustrates a buffer in client equipment receiving streaming media in accordance with the present invention; 
           [0029]      FIG. 6  schematically illustrates updating of the streaming media in accordance with  FIG. 5  of the present invention; and 
           [0030]      FIG. 7  schematically illustrates updating of the streaming media in accordance with  FIG. 5  of the present invention. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0031]    The present invention now will be described more fully hereinafter with reference to the accompanying drawings, in which some, but not all embodiments of the inventions are shown. Indeed, these inventions may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will satisfy applicable legal requirements. Like numbers refer to like elements throughout. 
         [0032]    The present invention introduces streaming media by splitting an original data stream length-wise, i.e., given only the first fraction of the parts in a stream of data, it is possible to recreate the first fraction of the original data stream. To achieve this, the invention provides a central server system with guaranteed bandwidth, and further provides a handover process, which allows a client to switch from retrieving data from its peers to the central system when required. By splitting the data length-wise, individual peers from which a given client is streaming media need only serve data as fast as the original bit-rate divided by the number of concurrent streams. 
         [0033]      FIG. 1  schematically illustrates a prior-art embodiment of distributing streaming media  10 . Throughout the present description streaming media is depicted as being divided into blocks denoted  1 ,  2 ,  3  etc. and length-wise split into sub-streams denoted A, B, C and D, each comprising the sub-blocks A 1 , A 2 , A 3  etc., B 1 , B 2 , B 3  etc., C 1 , C 2 , C 3  etc. and D 1 , D 2 , D 3  etc., in order to guide the reader through the teaching of the present invention. It is appreciated that the numbers of sub-streams and sub-blocks of data respectively are not limited to those given as examples herein. 
         [0034]    Hence  FIG. 1  depicts prior art streaming media blocks  10 , labeled  1 ,  2 ,  3  and  4  respectively, being distributed from a server to a client. The blocks  10  are transmitted to a client downloading them in a flow from 1 to 4 until the stream ends. As mentioned above, existing peer-to-peer systems are unsuitable for streaming for a number of reasons, for instance data might arrive unordered, and in the typical case, it is not possible to start utilizing the received data packets until the final part of the streaming media has arrived. 
         [0035]    Nodes (peers) in a peer-to-peer network may experience drastic changes in bandwidth availability or even disappear completely. Moreover, the nodes may have asymmetric network connections, which usually means that they have much higher downstream bandwidth than upstream ditto. 
         [0036]    Hence, to solve existing problems, the present invention provides a method and a system consistent with what is depicted in  FIG. 2  to  FIG. 7 . 
         [0037]      FIG. 2  schematically illustrates how a conventional stream of media content  10  in accordance with  FIG. 1  is regenerated from the four sub-streams A, B, C and D, consisting of sub-blocks A 1 - 4 , B 1 - 4 , C 1 - 4  and D 1 - 4  respectively in this example according to the present invention. The four sub-streams can be seen as constituting a length-wise split of the data stream, depicted as broken lines in  FIG. 2 . 
         [0038]      FIG. 3  schematically illustrates distribution of sub-streams A, B, C and D—labeled  12 ,  14 ,  16  and  18  respectively—made up of interleaved sub-blocks of data A 1 , A 2 , A 3 , A 4 ; B 1 , B 2 , B 3 , B 4 ; C 1 , C 2 , C 3 , C 4 ; and D 1 , D 2 , D 3 , D 4  respectively from a central server in accordance with the present invention. The blocks of data may be individually obtained by a client from the central server, or from its peers. In any case, from the original data stream  10 , a number of different sub-streams are generated by the central server and any client having the data stream in its memory. Any set of a smaller or equal number—in the present example, four—of different sub-streams can be recombined to yield the original data stream  10 . 
         [0039]    Each sub-stream is encoded in such a manner that the corresponding blocks of any combination of a given number—in the present example, four—of different sub-streams can be recombined to obtain the corresponding block of the original data stream. This is accomplished by a suitable algorithm for this purpose such as a Solomon-Reed-type of algorithm, or any other similar algorithm known to a person skilled in the art. The algorithm is thus implemented in software and hardware residing in the peer equipment for downloading media from other peers or from a central server. 
         [0040]      FIG. 4  schematically illustrates a central server  20  storing the sub-streams  12 ,  14 ,  16 ,  18  in a memory area  21  for retrieval by peers  22 ,  24 ,  26 ,  28 ,  30  connected to the peer-to-peer network. Solid double arrows indicate communication between single peers with the central server  20  and vice versa, whereas broken-line double arrows designate communication between peers in the network. Every single peer  22 ,  24 ,  26 ,  28 ,  30  is provided the software mentioned to communicate with peers and the central server  20 . The software also comprises a handover function that enables a peer to switch between receiving data streams from the central server and its peers. 
         [0041]    Moreover,  FIG. 4  schematically depicts the system of the present invention operated by the method described in here. 
         [0042]      FIG. 5  schematically illustrates a buffer in client  30  equipment or in any peer equipment receiving streaming media in accordance with the present invention. 
         [0043]    The number of possible sub-streams is higher than the number of sub-streams required to reconstruct the original data stream, and peers randomly choose among the possible sub-streams, which to generate. This increases the probability of different peers  22 ,  24 ,  26  having different sub-streams of the original streams wanted by the client  30 , meaning that they can be utilized in conjunction by a client  30  retrieving a stream. 
         [0044]    The stream of media played at a client  30  is depicted at the arrow pointing from a currently played block at the block played. It is possible to play a block i of the media if and only if all of the sub-blocks Ai, Bi, Ci and Di from the sub-streams A, B, C, and D are available in the buffer memory. The blocks must be played in order, beginning with 1 and then 2, 3 etc. If there are any sub-blocks missing for the block i, these blocks must be obtained before the block i can be played. In  FIG. 5  it is currently possible to play blocks  1 - 3 , since sub-blocks  1 - 3  of all sub-streams have been downloaded. To play block  4 , however, sub-block D 4  must be obtained. As for now in  FIG. 5  it is seen that there is still enough data available for playback. 
         [0045]    Every single sub-block can be concatenated in the correct order by the algorithm as described above, if they are stored/available in the buffer memory. 
         [0046]    In  FIG. 5  and according to the present invention there are defined two time constants: LOW and HIGH (see  FIG. 5 ) depicted as vertical broken lines, related to the amount of buffered material that is yet un-played by the client  30 . 
         [0047]    When the media streaming is about to start, the client starts streaming a number—in the present example, four—of sub-streams, from the peer-to-peer network and, if necessary in order to ensure low latency at startup, in conjunction with the central server  20 . This is depicted in  FIG. 5 , as one sub-stream A is fetched from the central server  20  memory  21 , marked by a rectangle containing the number  21  in  FIG. 5 . Meanwhile peers  22 ,  24 ,  26  with the appropriate sub-streams B, C, D, marked in an octagon with the peer&#39;s reference numeral from where the stream was fetched, are located via the software residing in participating peer equipment for downloading streaming media according to the present invention in the peer-to-peer network. 
         [0048]      FIG. 6  schematically illustrates updating of the streaming media in accordance with  FIG. 5  of the present invention where it can be seen that the amount of sub-stream data being downloaded from peer  26  in the client buffer has fallen below the LOW constant. Hence, the situation requires faster communication in order to fetch sub-block number  4 , which is now accomplished by, instead of fetching D 4  from peer  26 , fetching sub-block  4  of another sub-stream from the central server memory  21  through a handover to the same. 
         [0049]    Whenever a sub-stream downloaded from the peer-to-peer network, for example sub-stream D, as depicted in  FIG. 6 , has less than LOW constant data buffered, downloading of that sub-stream is halted and replaced by downloading of another sub-stream from the central server  20  memory  21 . 
         [0050]    The sub-blocks A 2 , B 2 , C 2 , D 2  of block  2  being played by the client equipment are now stored in a memory/cache by the client  30  software, as are all the sub-blocks of block  3 . Sub-block D 4  of block  4 , however, has not yet been fetched from peer  26 , causing sub-stream D to fall below the LOW constant. As such is the case, the peer software hands over/switches the fetching of streaming media to the central server  20  memory  21  in order to restore the buffer level of the fourth sub-stream. This replacement sub-stream is depicted in  FIG. 7  as sub-stream D. 
         [0051]      FIG. 7  schematically illustrates updating of the streaming media in accordance with  FIG. 5  of the present invention where it can be seen that the amount of sub-stream data of sub-stream A being downloaded from the central server  20  memory  21  in the client buffer has risen above the HIGH constant. Hence, the situation is here the opposite of the situation illustrated in  FIG. 6 , and download of sub-stream A can seize, being replaced by download of another sub-stream from a peer through a handover to the same. 
         [0052]    Whenever a sub-stream downloaded from the central server  20  has more than HIGH data buffered, downloading of that sub-stream is halted and replaced by downloading of another sub-stream from the peer-to-peer network, which is the case illustrated in  FIG. 7 . This figure shows that buffer memory stored sub-blocks A 5 -A 11  of sub-stream A exceed the high buffer level. As such is the case, the peer software hands over/switches the fetching of streaming media to a suitable peer in order to preserve central server bandwidth. 
         [0053]    The method and system of the present invention ensure to a greater degree than existing peer-to-peer solutions data distribution characteristics suitable for streaming media, and allow for lower server bandwidth consumption than existing client-server based streaming solutions. 
         [0054]    A possible optimization is to make sure that there is never more than one connection to the central server  20 . This is accomplished by blockwise interleaving the streams, see  FIG. 3 , that are concurrently being downloaded from the central server and treating the LOW constant as if it were set to the position of the central server  20  download whenever there is such a download. If there are no peers having sub-streams to provide the client  30 , all sub-streams are of course fetched from the central server  20  memory  21 . 
         [0055]    The collective content of the peer-to-peer network is the content of data caches of the peers. While retrieving sub-streams, the original data is recreated in real-time for playback. Having played back a block, the client recodes the block as the sub-blocks of a number of new randomly chosen sub-streams, which are stored in the client&#39;s data cache. This means that the distribution of sub-streams in the peer-to-peer network is kept optimal. As an example blocks can be arbitrarily recoded for instance, block  1  to A 1 , D 1 , F 1  and T 1 . 
         [0056]    Many modifications and other embodiments of the inventions set forth herein will come to mind to one skilled in the art to which these inventions pertain having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that the inventions are not to be limited to the specific embodiments disclosed and that modifications and other embodiments are intended to be included within the scope of the appended claims. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.