The present invention relates to a method and apparatus for distributing data, and in particular to a method and apparatus for controlling the distribution of data.
Video on demand (VoD) services allow users to select and view video content as and when they choose. VoD systems either stream content, for viewing in real-time, or download content, for viewing at any time, to a device such as a set-top-box (STB), digital video recorder, personal video recorder, portable media player, computer, mobile phone or PDA providing a VoD client. Download and streaming of video on demand allows user to view video content at their convenience but also provides users with functionality traditionally only available when replaying a transmission that was previously recorded using a VCR, DVD recorder or DVR (i.e. pausing, fast forwarding, and rewinding).
VoD content can be distributed to users from some central servers referred to as head end systems. VoD services usually rely on unicast mechanisms (e.g. HTTP) to distribute content as, whilst multicast is very efficient for distributing content to a number of users, multicast distribution does not support user on demand interaction. However, when distributing a large quantity of content to a large number of users simultaneously, these unicast distribution mechanisms are inefficient and therefore can be problematic for the head end systems that have limited CPU power and storage capacity.
In order to overcome these problems, peer-to-peer (P2P) mechanisms can be used to distribute VoD content. In a P2P system, the greater the number of peers in the network, the greater the storage capacity and CPU power there is available. As such, P2P mechanisms can be very efficient once there are a sufficient number of peers in the network. In a P2P VoD system content is either ‘pulled’ or ‘pushed’ from the head end VoD servers to the VoD client devices of a number of users. These VoD clients can then be accessed by other peer VoD client devices to obtain the desired video content.
When employing the pull mechanism, VoD content is captured by those VoD clients accessing the content “live”, during its initial transmission from the head end. These VoD clients can then be accessed and used as a source by other VoD clients as and when this content is viewed by other users, thereby enabling a time shift service.
The push mechanism allows the VoD servers at the head end to distribute content to VoD clients even when the client has not requested that content. The assumption here is that the storage devices are constantly listening to one or more multicast groups such that they receive any content pushed to these groups by the VoD servers at the head end.
According to a first aspect of the present invention there is provided a method of distributing data to peers of a peer-to-peer network to enable those peers to provide data to other peers. The method comprises predefining a minimum number of peers that are required to store a data item, sending the data item to a number of data receiving peers from one or more data servers, determining if the number of data receiving peers that have sufficient storage capacity available to store the data item is less than the predefined minimum number, and, if it is, deleting previously stored data to make sufficient storage capacity available.
The step of determining if the number of data receiving peers that have sufficient storage capacity available to store the data item is less than the predefined minimum number may comprise, at each data receiving peer, if sufficient storage capacity is available, storing the data item and reporting storage of the data item to a tracker and, at the tracker, maintaining a record of the data stored at the peers and determining if the data item is stored at the predefined minimum number of peers.
The step of deleting previously stored data to make sufficient storage capacity available may comprise, at the tracker, using the record of the data stored at the peers to identify those data receiving peers that do not store the data item and to identify previously stored data that can be deleted from those data receiving peers, and sending instructions to those data receiving peers that do not store the data item to delete the identified previously stored data. At those data receiving peers that do not store the data item, upon receipt of instructions from the tracker, deleting the identified previously stored data.
The method may further comprise, at those data receiving peers that do not store the data item, following deletion of the previously stored data reporting the deletion of the previously stored data to the tracker. At the tracker, receiving reports that the previously stored data has been deleted, updating the record of the data stored at the peers, and sending instructions to the data servers to resend the data item to those data receiving peers that do not store the data item. At the data servers, resending the data item to those data receiving peers that do not store the data item.
Alternatively the step of determining if the number of data receiving peers that have sufficient storage capacity available to store the data item is less than the predefined minimum number may comprise, at the data servers, including metadata with the data item sent to the data receiving peers, the metadata at least indicating to the peers whether or not they must store the data item. At the data receiving peers, evaluating the metadata to determine if it is required that the data item be stored at that peer and, if it is, then determining if sufficient storage capacity is available.
The step of deleting previously stored data to make sufficient storage capacity available may then comprise, at the data receiving peers that do not have sufficient capacity available, selecting previously stored data that may be deleted, and deleting the selected data.
The step of deleting previously stored data to make sufficient storage capacity available may then comprise, at the data receiving peers, selecting previously stored data, sending a message to a tracker requesting permission to delete the selected data and receiving a response from the tracker granting or refusing permission.
If the response from the tracker refuses permission, at the data receiving peers, selecting alternative previously stored data that may be deleted, and requesting permission from the tracker to delete the alternative previously stored data and receiving a response from the tracker granting or refusing permission. If the response from the tracker grants permission, at the data receiving peers, deleting the selected data.
Alternatively, if the response from the tracker refuses permission, at the data receiving peers determining if the response identifies alternative previously stored data that can be deleted. If the response from the tracker does not identify alternative previously stored data, selecting alternative previously stored data that may be deleted, and requesting permission from the tracker to delete the alternative previously stored data. If the response from the tracker does identify alternative previously stored data, deleting the alternative previously stored data.
The method may further comprise, at the data receiving peers that have deleted previously stored data, storing the data item, and reporting deletion of the previously stored data and storage of the data item to a tracker.
According to a second aspect of the present invention there is provided a method of operating a peer in a peer-to-peer network. The method comprises receiving a data item from one or more data servers, determining if sufficient storage capacity is available to store the data item. If sufficient storage capacity is available, storing the data item and reporting storage of the data item to a tracker, and, if sufficient storage capacity is not available, and upon receipt of instructions from the tracker, deleting previously stored data. The method may further comprise, following deletion of previously stored data, reporting deletion of previously stored data to the tracker, receiving the data item from the one or more data servers, storing the data item and reporting storage of the data item to the tracker.
According to a third aspect of the present invention there is provided a method of operating a tracker in a peer-to-peer network. The method comprises receiving, from peers, reports of data items stored by those peers, maintaining a record of the data stored by the peers, determining if a data item is stored at a predefined minimum number of peers, and, if it is not, identifying those peers that do not store the data item, identifying previously stored data that can be deleted from those peers that do not store the data item, and instructing one or more peers that do not store the data item to delete the selected data. The method may further comprise, upon receipt of confirmation of deletion of the previously stored data, updating the record of the data stored at the peers, instructing one or more data distribution servers to resend the data item to those peers.
According to a fourth aspect of the present invention there is provided a method of operating a data server in a peer-to-peer network. The method comprises sending a data item to one or more peers, the data item including metadata, the metadata at least indicating to the peers whether or not they must store the data item.
According to a fifth aspect of the present invention there is provided a method of operating a peer in a peer-to-peer network. The method comprises receiving a data item from one or more data servers, the data including metadata, evaluating the metadata to determine if it is required that the new item be stored at the peer, and, if it is, determining if sufficient storage capacity is available to store the data item.
If sufficient storage capacity is available to store the data item, storing the data item and reporting storage of the data item to a tracker. If sufficient storage capacity is not available to store the date item, selecting previously stored data that may be deleted, and deleting the selected data. Alternatively, if sufficient storage capacity is not available to store the data item, selecting previously stored data that may be deleted, sending a message to a tracker requesting permission to delete the selected data and receiving a response from the tracker.
If the response from the tracker grants permission, deleting the previously stored data, storing the data item and reporting storage of the data item to the tracker. If the response from the tracker refuses permission, determining if the response identifies alternative previously stored data that can be deleted. If the response from the tracker does identify alternative previously stored data, deleting the alternative previously stored data, storing the data item and reporting storage of the data item to the tracker. If the response from the tracker does not identify alternative previously stored data, selecting alternative previously stored data that may be deleted, and sending a message to the tracker requesting permission to delete the alternative previously stored data.
The method may further comprise, following the deletion of previously stored data, storing the data item and reporting deletion of the previously stored data and storage of the data item to the tracker.
According to a sixth aspect of the present invention there is provided a method of operating a tracker in a peer-to-peer network. The method comprises receiving, from peers, reports of data stored by the peers, maintaining a record of the data stored by the peers, receiving, from peers, requests for permission to delete some selected data, determining if the selected data can be deleted using the record of stored data, and sending a response to the requesting peers indicating if permission to delete the selected data is granted or refused. If it is determined that the selected data can not be deleted, using the record of stored data to identify alternative data that can be deleted, and sending a response to the requesting peers indicating that permission to delete the selected data is refused and identifying the alternative data.
The data may comprise video and the peers may comprise clients in a Video on Demand system.
According to a seventh aspect of the present invention there is provide an apparatus configured to operate as a peer in a peer-to-peer network. The apparatus comprises a memory unit for storing data, a receiver for receiving a data item from data servers, a transmitter for sending messages to a tracker, a receiver for receiving messages from a tracker, and a processor unit. The processor unit is for determining if sufficient memory is available to store a data item, if sufficient memory is available, implementing storage of the data item and generating a message reporting successful storage of the data item to a tracker, if sufficient memory is not available and upon receipt of a message containing instructions from a tracker, implementing deletion of previously stored data in accordance with the instructions, and generating messages reporting deletion of previously stored data to the tracker.
According to an eighth aspect of the present invention there is provide an apparatus configured to operate as a tracker in a peer-to-peer network. The apparatus comprises a receiver for receiving messages from peers, a transmitter for sending messages to peers, a transmitter for sending messages to data servers, a memory unit for maintaining a record of data stored by the peers, and a processor unit. The processor unit is for determining if the tracker has received a predefined minimum number of messages from peers reporting storage of a data item, if not, selecting previously stored data that may be deleted, generating messages instructing one or more of the peers that do not store the data item to delete the previously stored data and, upon receipt of confirmation of deletion of the previously stored data, generating messages instructing one or more data servers to resend the data item to those peers that have confirmed deletion of the previously stored data.
According to a ninth aspect of the present invention there is provide an apparatus configured to operate as a data server in a peer-to-peer network. The apparatus comprises a memory unit for storing data, a processor unit for generating metadata for inclusion with a data item, the metadata at least indicating to peers whether or not they must store the data item, and a transmitter for sending the data item to one or more peers, the data item including the metadata.
According to a tenth aspect of the present invention there is provide an apparatus configured to operate as a peer in a peer-to-peer network. The apparatus comprises a memory unit for storing data, a receiver for receiving a data item from one or more data servers, the data including metadata, and a processor unit for evaluating the metadata to determine if it is required that the data item be stored at the peer. If it is intended that the data item be stored, the processor unit determines if sufficient storage capacity is available to store the data item.
If sufficient storage capacity is available, the processor unit may implement storage of the data item and generate messages reporting storage of the data item to a tracker. If sufficient memory is not available, the processor unit may select previously stored data that may be deleted, implement deletion of the previously stored data, implement storage of the data item and generate messages reporting deletion of the previously stored data and storage of the data item to the tracker. The apparatus may further comprise a transmitter for sending messages to the tracker.
Alternatively, if sufficient memory is not available, the processor unit may select previously stored data that may be deleted, and generate messages to a tracker requesting permission to delete the previously stored data. The apparatus may further comprise a transmitter for sending messages to a tracker, and a receiver for receiving messages from the tracker.
If the response from the tracker grants permission, the processor unit may implement deletion of the previously stored data, implement storage of the data item and generate messages reporting deletion of the previously stored data and storage of the data item to the tracker. If the response from the tracker does not grant permission, the processor unit may determine if the response identifies alternative previously stored data that can be deleted. If the response from the tracker does identify alternative previously stored data, the processor unit may implement deletion of the alternative previously stored data, implement storage of the data item and generate messages reporting deletion of the alternative previously stored data and storage of the data item to the tracker. If the response from the tracker does not identify alternative previously stored data, the processor unit may select alternative previously stored data that may be deleted, and generate a message to the tracker requesting permission to delete the alternative previously stored data.
According to an eleventh aspect of the present invention there is provided an apparatus configured to operate as a tracker in a peer-to-peer network. The apparatus comprises a receiver for receiving messages from peers, a transmitter for sending messages to peers, a transmitter for sending messages to data servers, a memory unit for maintaining a record of data stored by the peers, and a processor unit for, upon receipt of a request for permission to delete some previously stored data from a peer, using the record of stored data to determine if the previously stored data can be deleted, and generating a message to the requesting peers indicating if permission to delete the selected data is granted or refused.
If it is determined that the previously stored data can not be deleted, the processor unit may use the record of stored data to identify alternative previously stored data that can be deleted, and generate a message to the requesting peer indicating that permission to delete the previously stored data is refused and identifying the alternative previously stored data.
The data may comprise video and the peers may comprise clients in a Video on Demand system.
It is recognised here that the problem with existing peer-to-peer technology is that it does not ensure that a specific item of data is stored by those peers selected by the centralised systems. With regards to the Video on Demand systems described above, the tracker functionality merely keeps track of which peers hold which items of data. For example, any of the selected peers may have insufficient storage capacity available to store any further data. This could lead to a situation in which the number of peers successfully storing the data is insufficient to adequately service the P2P network. In order to overcome this problem it is proposed here to introduce data storage control which ensures that data is stored by a sufficient number of peers, as required by operator policy.
There will now be described a method by which the storage of data at the peers can be controlled. The method involves predefining a minimum number of peers that are required to store an item of data, sending the data item to a number of peers, and then determining the number of peers to which that data has been sent and that also have sufficient storage capacity available to store the data item. If it is then determined that this number is less than the predefined minimum number, previously stored data is deleted in order to make sufficient storage capacity available to store the data item at at least the predefined minimum number of peers.
This method of data storage control may be achieved in a number of ways. For example, one possible solution involves introducing an active tracker to explicitly instruct the peers to store data once they have reported that the data has been received from one or more data distribution servers. The active tracker is responsible for enforcing the storage requirements set by the operator of the data distribution systems.
When making use of an active tracker the operator of the peer-to-peer data distribution system will be able to enforce a set of policies specifying what data must be found in the system. For example, in a Video on Demand system these policies could specify that 10,000 movies must always be available to an end user of the system, or that TV content which has been transmitted in the last 3 weeks must be available to an end user. Furthermore, the operator of a VoD system will require that a minimum number of VoD clients store the content (e.g. a desired replication factor), in order to ensure that there are a sufficient number of sources to provide this content to other VoD clients in the P2P network. As such, if the number of messages from peers reporting storage of a data item received by the active tracker does not meet this requirement the active tracker will then ‘force’ certain VoD clients to store the content, by instructing them to delete other content to free sufficient memory. This could be achieved by the active tracker making use of its knowledge of the content stored at each VoD client to select appropriate content for deletion, and instructing the VoD clients accordingly. These VoD clients would then delete sufficient content and store the new content when re-transmitted from the head end VoD servers.
As an alternative solution to the problems outlined above, content storage control can be performed by the VoD client itself, with the VoD client actively implementing storage instructions that are received from the head end VoD servers 2 when the content is initially distributed into the P2P network.
Alternatively, a VoD client may attempt to store all content received from the VoD servers unless it does not have sufficient memory, in which case it will then determine if it needs to store the content and, if so, which of the previously stored content it can delete.
Once again, as an alternative to this process, a VoD client may attempt to store all content received from the VoD servers unless it does not have sufficient memory, in which case it will then determine if it needs to store the content and, if so, what of the previously stored content it can delete.
The inclusion of metadata with the content makes it possible for the head end VoD servers to indicate to particular VoD clients whether of not the content they receive must be stored. In a typical scenario, this could be implemented by including a priority flag in the content metadata. If content with an enabled priority flag is received by a VoD client, the VoD client must then endeavour to store this content, for example, by deleting existing content if the current storage capacity of the client is full. The decision as to which items of previously stored content should be deleted would be made by the VoD client based on some programmed logic, possibly in combination with other information provided in metadata received with the previously stored content.
As a third alternative solution to the problem, content storage at the VoD client can be controlled by collaboration between the client and an active tracker.
As an alternative to this process, a VoD client may attempt to store all content received from the VoD servers unless it does not have sufficient memory, in which case it will determine if it needs to store the content. If it does need to store the content it will then determine what of the previously stored content the tracker will allow it to delete.
As a further alternative, the metadata provided may not simply indicate that storage is required but may indicate a storage priority. In this case, some logic programmed into the VoD client then determines if the priority of this content requires that it be stored, at the expense of deleting content with a lower priority. In addition, the metadata may include a number of priorities, each with a duration or expiry date, such that the priority of an item of content may vary, for example, depending on the age of the content.
The methods described above provide the operator of a data distribution service with the ability to control the distribution of data throughout the P2P network formed by the clients, and thereby provide an effective service making use of P2P distribution mechanisms and the advantages they provide. Theses methods ensure that data is sufficiently available to meet both the operator's requirements and the demand for data made by users of the service, whilst also providing flexibility in the way that data storage can be controlled stored across a multitude of clients.
The peer 1 is suitable for implementing the methods described above. The peer 1 can be implemented as a combination of computer hardware and software. The peer 1 comprises a memory unit 4 for storing data, a receiver 5 for receiving new data from one or more data servers and receiving messages from a tracker, a transmitter 6 for sending messages to a tracker, and a processor unit 7. The data received from the data servers may also include metadata. The processor unit 7 is suitable for implementing any or all of the solutions described above.
The processor unit 7 may determine if sufficient memory is available to store new data, and if sufficient memory is available, then implement storage of the new data and generate a message reporting successful storage of the new data to a tracker 3. If sufficient memory is not available and upon receipt of a message containing instructions from a tracker, the processor unit 7 may implement deletion of previously stored data in accordance with the instructions from the tracker 3, and generate a message reporting deletion of previously stored data to the tracker 3.
Alternatively, the processor unit 7 may also evaluate any metadata included with any received data, in order to determine if it is intended that this data is stored at the peer 1. Then, if it is intended that the new data be stored, the processor unit 7 may determine if sufficient memory is available to store the new data. If sufficient memory is available, the processor unit 7 may implement storage of the new data and generate a message reporting storage of the new data to a tracker 3.
If sufficient memory is not available, the processor unit 7 may select previously stored data that may be deleted, implement deletion of the selected data, implement storage of the new data and generate a message reporting storage of the new data to the tracker 3. Alternatively, if sufficient memory is not available, the processor unit 7 may select previously stored data that may be deleted, and generate a message to a tracker 3 requesting permission to delete the selected data.
Upon receipt of a response from the tracker 3, if the response from the tracker 3 grants permission, the processor unit 7 may implement deletion of the selected data, implement storage of the new data and generate a message reporting storage of the new data to the tracker 3. If the response from the tracker 3 does not grant permission, the processor unit 7 may determine if the response identifies alternative previously stored data that can be deleted.
If the response from the tracker 3 does identify alternative previously stored data, the processor unit 7 may implement deletion of the alternative previously stored data, implement storage of the new data and generate a message reporting storage of the new data to the tracker 3. If the response from the tracker 3 does not identify alternative previously stored data, the processor unit 7 may select alternative previously stored data that may be deleted, and generate a message to the tracker 3 requesting permission to delete the alternative previously stored data.
The data server 2 is suitable for implementing the methods described above. The data server 2 can be implemented as a combination of computer hardware and software. The data server 2 comprises a memory unit 8 for storing data and a transmitter 9 for sending data to one or more peers, the data including metadata. The data server 2 may also comprise a processor unit 10 for generating metadata for inclusion with data, the metadata being such that it can be evaluated by the peers to determine if it is intended that they store the data. The data server 2 may also comprise a receiver 11 for receiving instructions from a tracker 3.
The tracker 3 is suitable for implementing the methods described above. The tracker 3 can be implemented as a combination of computer hardware and software. The tracker 3 comprises a receiver 12 for receiving messages from peers, a transmitter 13 for sending messages to peers and sending messages to data servers, a memory unit 14 for maintaining a record of all content stored by the peers, and a processor unit 15. The processor unit 15 is suitable for implementing any or all of the solutions described above.
The processor unit 15 may determine if the tracker has received a minimum number of messages from peers 1 reporting successful storage of new data and, if not, select previously stored data that may be deleted from those peers not reporting successful storage, generate messages instructing the relevant peers to delete the selected data and, upon receipt of confirmation of deletion of the selected data, generate messages instructing one or more data servers to resend the new data to the relevant peers.
Alternatively, the processor unit 15 may, upon receipt of requests for permission to delete some selected data from peers 1, use the record of stored data to determine if selected data can be deleted, and generate messages to the requesting peers indicating if permission to delete the selected data is granted or refused. If it is determined that the selected data can not be deleted, the processor unit 15 may use the record of stored data to identify alternative data that can be deleted, and generate a message to the requesting peers indicating that permission to delete the selected data is refused and identifying the alternative data.
It will be appreciated by the person of skill in the art that various modifications may be made to the above-described embodiments without departing from the scope of the present invention. For example, whilst the invention has been described with regards to a Video on Demand service, it could equally be used for the distribution of any data. In addition, as previously described, the tracker functionality can be centralized in the head end systems, located separately or based on a distributed system such as DHT. Furthermore, as opposed to the use of a single tracker, a number of trackers may be used to implement the tracker functionality, forming a single logical tracker, and allowing the tracker functionality to be scaled proportionally to the network.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/EP09/51860 | 2/17/2009 | WO | 00 | 10/19/2011 |