Nothing Special   »   [go: up one dir, main page]

WO2008055519A1 - Method of supplying streams of data - Google Patents

Method of supplying streams of data Download PDF

Info

Publication number
WO2008055519A1
WO2008055519A1 PCT/EP2006/010645 EP2006010645W WO2008055519A1 WO 2008055519 A1 WO2008055519 A1 WO 2008055519A1 EP 2006010645 W EP2006010645 W EP 2006010645W WO 2008055519 A1 WO2008055519 A1 WO 2008055519A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
supply
user apparatus
supply nodes
data blocks
Prior art date
Application number
PCT/EP2006/010645
Other languages
French (fr)
Inventor
Martijn Boekhorst
Original Assignee
Joost N.V.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Joost N.V. filed Critical Joost N.V.
Priority to PCT/EP2006/010645 priority Critical patent/WO2008055519A1/en
Priority to TW096139478A priority patent/TW200835270A/en
Publication of WO2008055519A1 publication Critical patent/WO2008055519A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/61Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
    • H04L65/612Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for unicast
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1068Discovery involving direct consultation or announcement among potential requesting and potential source peers

Definitions

  • the present invention relates to methods of supplying streams of data via data communication networks to users, for example to methods of supplying streams of data via the Internet in a peer-to-peer manner to television display apparatus of users.
  • the present invention also concerns software executable on computing hardware for implementing the methods.
  • the present invention also concerns networks and system operable to execute the methods.
  • Contemporary television broadcasting involves transmission of a program content signal on a carrier signal at ultra high frequency (UHF) or via one or more satellites at super high frequencies (SHF). More recently, provision of television services conveyed via optical fiber communication links, also known as "cable television", has become increasingly popular. Yet more recently, television services via mobile telephone, namely cell-phone, have been proposed and demonstrated in prototype form. Moreover, it is known that motion pictures and animated pictures can be provided from Internet web-sites, for example using contemporary software such as "Quick time" executable on users' computing hardware.
  • a technical problem encountered when using data networks such as the Internet for providing real-time video is reliability of supply of video data streams from central servers to users, namely streaming video data from a central server source to users.
  • Such reliability also known as “quality of service” (QoS)
  • QoS quality of service
  • Such reliability also known as “quality of service” (QoS)
  • QoS quality of service
  • features such as data buffers in user apparatus can be used to at least partially compensate for fluctuations or interruptions in data stream supply to users, such user apparatus buffers are not able to cope with unexpected failure or unavailability of the central servers.
  • provision by data streaming of television services from central server sources via data communication networks such as the Internet to user apparatus has not yet been widely possible or found to function totally reliably.
  • a technical problem, which the present invention seeks to address of improving reliability of data stream supply when providing video or similar program content via communication networks such as the Internet which are susceptible to suffering temporal fluctuations in data supply capacity.
  • An object of the present invention is to provide a method of supplying streams of data which is susceptible to providing the data streams more reliably and without requiring the data streams to be directly provided from a central source.
  • a method of supplying one or more streams of data via a data communication network to a user apparatus supplying one or more streams of data via a data communication network to a user apparatus
  • the data communication network including a plurality of data supply nodes distributed therein,
  • the method including steps of:
  • the invention is of advantage in that the supply of data is susceptible to being more reliable because account is taken of data supply capacity of the one or more data supply nodes.
  • the subset includes all the data supply nodes of the network. However, the subset more normally includes a portion of the data supply nodes of the network.
  • the one or more data blocks are widely distributed within the network, a situation will often arise that there are more data supply nodes which are capable of supplying the one or more data blocks than needed to be invoked by the user apparatus.
  • the function relates to supply of the one or more data blocks from the subset of the data supply nodes at least partially in proportion to said distribution.
  • proportional supply is illustrated in following Tables 2 and 3.
  • the method includes a step of including in the quota data an indication of a temporal sequence in which the one or more data blocks are to be supplied, the temporal sequence having the subset of the data supply nodes specified in frequency in response to their ability to supply the one or more data blocks.
  • inclusion of such a temporal sequence assists with ensuring that data blocks are received in an order in which they are required for user-presentation, thereby avoiding having to employ large data buffers and execute considerable data rearrangement and manipulation.
  • the method includes a step of similarly communicating the quota data to each of the subset of the data supply nodes, such that each data supply node in the subset also receives information regarding other of the subset of the data supply nodes requested to supply the one or more data blocks to the user apparatus.
  • Distributing the quota data to all the data supply nodes involved potentially has a benefit in that the information is distributed amongst the supply nodes so that these supply nodes are aware of a timescale in which they are required to supply their one or more specified data blocks.
  • the temporal sequence defines a start time from which the one or more data blocks are to be sent to the user apparatus, wherein the subset of the data supply nodes are operable to synchronize mutually independently to the start time, and the subset of the data supply nodes are operable to supply their one or more data blocks specified in the quota data substantially at times relative to the start time as specified in the quota data.
  • the temporal sequence assists to ensure that the one or more data supply nodes are mutually substantially synchronized regarding their supply of data blocks to the user apparatus.
  • the subset of the data supply nodes comprise in a range of 3 to 10 data supply nodes as specified in the quota data.
  • a range represents an optimal compromise between reliability of data block supply to the user apparatus and keeping data control overheads to a manageable degree within the network.
  • the one or more data packets are encoded with redundancy for at least one or:
  • Such redundancy is of benefit in that it reduces a need to send request for data blocks to be resent in an event of partial loss of data during data transmission to the user apparatus.
  • the one or more data blocks are encoded at the subset of the data supply nodes, and are subsequently decoded at the user apparatus. Encoding at the data supply nodes requires relatively little computing effort but nevertheless spreads computing effort required within the network.
  • the one or more data blocks are Reed-Solomon encoded and the user apparatus is operable to apply Reed-Solomon decoding to the one or more data blocks received at said user apparatus.
  • Such encoding and decoding has been found to be especially appropriate when implementing the present invention in practice.
  • alternative forms of encoding and decoding can optionally be employed.
  • the user apparatus includes a data buffer for at least one of: (a) buffering fluctuations in a rate of supply of the one or more data blocks from the subset of the data supply nodes; and (b) reordering a sequence of received data blocks in an event that the subset of the data supply nodes are operable to deviate from a sequence of data block supply as specified in the quota data.
  • the user apparatus is operable to present: (g) a data supply interruption message to the user; and/or
  • the user apparatus is operable to send a warning message to the data communication network in the event, the warning message being operable to prompt one or more searches in the network for identifying one or more alternative data supply nodes which are capable of providing data blocks corresponding to those not reliably received at the user apparatus.
  • the interruption message and/or said program content corresponding to the substitute data blocks are presented to the user until the alternative data supply nodes are operable to supply the data blocks not hitherto reliably received.
  • the data communication network is at least partially implemented via the Internet
  • the one or more data blocks correspond to television-type program content
  • the user apparatus corresponds to a television-type display apparatus.
  • the one or more data blocks correspond to a request for program content executed by the user via the user apparatus to the data communication network.
  • the one or more data blocks stored in the data supply nodes are previously propagated to the data supply nodes in a peer-to-peer manner. More optionally, in the method, one or more of the data blocks are stored in multiple copies within data supply nodes of the data communication network. Such multiple copies are of benefit when alternative data supply nodes are required in an event of an originally specified data supply node failing to supply its specified data blocks.
  • a user apparatus adapted for operation with a data communication network configured to execute a method pursuant to the first aspect of the invention.
  • a program-content supply system comprising at least one user apparatus and a data communication network operable to supply one or more data blocks to the user apparatus, the one or more data blocks including program content, wherein the system is configured to execute a method pursuant to the first aspect of the invention.
  • a peer-to-peer digital television system comprising at least one television-type user apparatus and a data communication network based at least in part on the Internet, the system being operable to supply one or more data blocks to the user apparatus, the one or more data blocks including program content, wherein the system is configured to execute a method pursuant to the first aspect of the invention.
  • a software product recorded on a data carrier, the software product being executable on computing hardware for implementing a method pursuant to the first aspect of the invention.
  • Figure 1 is an illustration of a peer-to-peer data supply network operable pursuant to the present invention
  • Figure 2 is an illustration of a hierarchy of data streams, data stream groups, data bundles, data packets and data fragments communicated in the network of Figure 1 ;
  • Figure 3 is an illustration of encoding and decoding performed within the network of Figure 1 ;
  • Figure 4 is an illustration of a method of providing a stream of data to a user apparatus of the network of Figure 1 ;
  • Figure 5 is a further illustration of a method of selecting data supply nodes within the network of Figure 1 , for coping with variable node performance, node loss and node substitution.
  • numerals when not underlined are linked by lines which identify features to which the numerals relate. Furthermore, numerals are linked by arrows when they are used to indicate a complete component part or system.
  • the present invention relates to methods of supplying data streams via data communication networks to users' apparatus.
  • the present invention is relevant to a technical problem of providing digital television-type services via the Internet to users' apparatus configured to present such television-type services.
  • data blocks susceptible to form data streams are propagated in an indirect peer-to-peer manner to intermediate supply nodes distributed within the Internet or similar form of data communication network, and the data blocks are subsequently supplied from the supply nodes to users' apparatus to provide aforesaid television-type services.
  • Such a manner of providing the data blocks to users' apparatus addresses a problem encountered in known cable-television systems involving data streaming directly from central servers; the present invention concerns central servers providing the data blocks in the aforesaid peer-to-peer manner to the supply nodes and thereby circumventing a need to stream data in real-time directly to users' apparatus.
  • the aforementioned supply nodes can potentially be of mutually different data capacity and data supply speed which renders organizing supply of data blocks to users' apparatus whilst maintaining quality of service a potentially complex technical problem.
  • the present invention addresses this complex technical problem by performing a sequence of steps as follows:
  • STEP 1 a user identifies program content which the user is desirous to consume and instructs an associated user apparatus to send a first request message for the program content to a reference node of a data communication network such as the Internet; the reference node is conveniently referred to as being "a backend". However, the reference node optionally does not necessarily need to be the backend but can be node appointed specifically to respond to user enquiries for program content.
  • the reference node responds to the first request message by sending a first response message to the user apparatus, wherein the first response message includes information concerning data blocks constituting the program content; the data blocks have beneficially been previously communicated in a peer-to-peer manner within the data communication network.
  • the reference node is not able to control proliferation and storage locations of the data blocks within the communication network; the reference node is thereby not capable of providing the user apparatus in the first response message with information which is indicative of both data blocks required and their corresponding storage locations within the data communication network.
  • STEP 2 on receipt of the first response message including information concerning data blocks constituting the program content, the user apparatus is operable to send to supply nodes of the data communication network a second request message for the data blocks.
  • the supply nodes respond to the second request message by sending second response messages indicating which of the data blocks they are capable of supplying to the user apparatus together with their capacity to supply such data blocks thereto. For example, certain high-speed large-capacity data nodes are capable of providing many of the data blocks whereas other low-speed small-capacity nodes are capable of providing only relatively few of the data blocks.
  • the user apparatus is operable, after sending the second request message, to wait for a defined wait period for receiving responses from the supply nodes.
  • data blocks corresponding thereto are potentially propagated widely in a peer-to-peer manner within the network such that the user apparatus potentially would have to wait a relatively long period to receive responses from all supply nodes of the network which are capable of supplying the data blocks to the user apparatus.
  • the user apparatus in order to provide a responsive service to the user, is configured to wait for the defined wait period which is of sufficient duration for the user apparatus to have normally received responses from enough supply nodes to ensure supply of all the data blocks required for presenting the desired program content to the user.
  • STEP 3 on receipt of the second response messages, for example on expiration of the aforesaid wait period, the user apparatus performs a computation which allocates supply of the data blocks in a manner which takes into consideration capabilities of the supply nodes to provide the data blocks in a timely temporally-sequential manner to the user apparatus which does not involve the user node needing to store large amounts of data within its buffer and to reorganize sequences of such data blocks which are received in jumbled order.
  • Such allocation of supply of data blocks is recorded in quota data which is then sent in a third request message to those supply nodes which the user apparatus chooses to supply the desired data blocks.
  • the quota data defines an absolute time at which data block supply should be commenced, namely a start time t 0 , and times t n relative to the start time t 0 at which corresponding data blocks D n are required to be supplied to the user apparatus; n is an integer defining a position of an n ⁇ data block in a sequence of data blocks D.
  • the supply nodes are all mutually referenced to an overall data communication network time clock t ref .
  • the data supply nodes wait until the network time clock t ref corresponds to the start time t 0 at which data block supply is to be commenced and then transmit data blocks D n which they are instructed to supply in the quota data conveyed in the third request message when the network time clock t ref subsequently corresponds to t 0 + t n .
  • the requested data blocks D n are received at the user apparatus substantially in an order in which they are to be presented to the user; however, occasionally the data blocks D n are received at the user apparatus in a jumbled order and need to be reordered pursuant to a sequence number included in each of the data blocks D n .
  • the data blocks D n are beneficially received a short time period before they are required to be presented to the user for consumption.
  • a need for a large buffer in the user apparatus is thereby avoided and the user is not kept waiting for receipt of all the data blocks before presentation of program content to the user is executed.
  • the user apparatus is operable to present program content of earlier data blocks to the user concurrently whilst later data blocks are being received at the user apparatus.
  • a data communication network denoted generally by 10; the network 10 is optionally implemented at least in part via the contemporary Internet.
  • the network 10 includes several data supply nodes S1 to S8 which are operable to function in a peer-to-peer manner and form a peer-to-peer network denoted by 20.
  • Data blocks D n are propagated from a central source 30, for example from one or more central servers coupled in communication with the peer-to-peer network 20; if required, such central source 30 is itself capable of functioning as a data supply node providing data blocks in a similar manner to the data supply nodes S1 to S8 in an event that a given data block has not yet been propagated within the network 20 and yet has been user-requested.
  • the supply nodes S1 to S6 are operable to provide their respective data blocks, for example as denoted by an arrow 40, to a user apparatus denoted by 50.
  • the data blocks D n supplied to the user apparatus 50 constitute a data stream denoted generally by 60.
  • the data supply nodes S7 and S8 are potentially also capable of supplying data blocks D n but are not selected either because they did not respond within the aforesaid wait period or the data supply nodes S1 to S6 are already sufficient for ensuring a supply of desired data blocks D n to the user.
  • the user apparatus 50 is susceptible to being implemented in several different ways.
  • the user apparatus 50 is susceptible to being implemented as a personal computer including computing hardware and a screen display.
  • the user apparatus 50 is susceptible to being implemented as a "black box" for connection to contemporary television apparatus, for example by way of retrofit or "add-on” device.
  • the data stream 60 will now be elucidated in greater details with reference to Figure 2.
  • the data stream 60 is described in the foregoing to include data blocks, its structure is more complex.
  • the data stream 60 can comprise considerable data, for example several gigabytes in total.
  • the data stream 60 prior to encoding is subdivided into stream groups 100, wherein each stream group beneficially comprises 32 Mbytes of data; for example, the stream 60 includes a "stream group 0" denoted by 110, a "stream group 16" denoted by 120, a "stream group 32" denoted by 130, and a "stream group n" denoted by 140.
  • Each stream group 110, 120, 130, 140 includes several data bundles wherein each data bundle includes 256 kbytes of data; for example, the "stream group 16" denoted by 120 data includes “data bundle 16" denoted by 200 to "data bundle 17 denoted by 210 to "data bundle 31" denoted by 220 as illustrated.
  • Each data bundle 200, 210, 220 is further subdivided into data packets wherein each data packet includes 64 kbytes of data; for example, the "data bundle 17" denoted by 210 includes a "data packet 17.1" denoted by 300, a "data packet 17.2" denoted by 310, and so forth to a "data packet 17.16" denoted by 320.
  • each data packet 300, 310, 320 is further subdivided into data fragments each of 32 kbytes size; for example, the "data packet 17.2" denoted by 310 is subdivided by encoding into three fragments denoted by 400, 410, 420 when included in encoded form in the data stream 60.
  • a Reed-Solomon encoding process is preferably employed.
  • the data fragments for example the data fragments 400, 410, 420, are independently propagated within the network 10, for example stored within the peer-to-peer network 20.
  • whether or not the data fragments are successfully received at the user apparatus 50 is an atomic event: either a fragment arrives completely or it does not arrive at all.
  • each data fragment is an output of ECC encoding, for example Reed-Solomon (RS) decoding, which results in encoding redundancy but allows data omissions to be corrected at the user apparatus 50.
  • ECC encoding for example Reed-Solomon (RS) decoding
  • Other types of encoding are feasible which alternatively, or additionally, allow for data correction.
  • the pre-encoded data packet 17.2 denoted by 310 and comprising 64 kbytes of data expands after encoding to 96 kbytes.
  • a beneficial property of Reed-Solomon encoding is that only two of three encoded fragments of a corresponding data packet are required for reconstructing the data packet at the user apparatus 50; thus, the user apparatus 50 does not need in operation to request a resend of an encoded data packet unless 2 of 3 fragments of the data packet were lost during transmission in the network 10.
  • a problem encountered in practical operation of the network 10 is that, despite a redundancy overhead of 50% provided by aforesaid encoding, a chance of three consecutive encoded data fragments being lost is significant, namely a burst failure in transmission to the user apparatus 50 is more likely to occur than "spotted failure", namely loss of individual isolated encoded fragments.
  • FIG 3 there is a depiction of Reed-Solomon encoding performed in the peer-to-peer network 20 and corresponding decoding performed at the user apparatus 50. Loss of certain parts of the encoded fragments is susceptible to being compensated at the user apparatus 50 as illustrated.
  • a Reed-Solomon encoding function is denoted by 500
  • a corresponding Reed-Solomon erasure correction and decoding function is denoted by 510. Loss of data is noted by crosses "X”.
  • Encoding occurring at the data supply nodes involves cutting the data packets into fragments similar to the aforesaid data fragments. Consequently, a total size of all fragments of a packet equals that of their packet prior to the encoding function 500.
  • After encoding in the encoding function 500 an expansion of data size by 33% by augmentation with an additional 32 kbytes of data as illustrated in Figure 2.
  • the encoded fragments are transmitted via the networks 10, 20 which will occasionally result in data loss as denoted by aforementioned "X" in Figure 3.
  • the networks 10, 20 are implemented in the Internet, the data fragments are transmitted using UDP datagrams.
  • data streaming using conventional data block transmission with acknowledgement/non-acknowledgement (ack/nack) resends is susceptible to resulting in a sub-optimal quality of stream delivery to the user apparatus 50 and hence a sub- optimal quality of program content presentation to the user.
  • Data packets which are lost during transmission to the user apparatus 50 are required to be resent from the data supply nodes, for example from the data supply nodes S1 to S6.
  • a time interval between a data packet being transmitted towards the user apparatus 50 and the user apparatus 50 detecting that the packet was lost during transmission and never received at the user apparatus 50 potentially approaches 2 seconds in a worst case practical scenario in practice. Consequently, a roundtrip request could potentially take 2 seconds of stalling prior to the data packet eventually being successfully received at the user apparatus 50.
  • Such stalling can be mitigated by employing the aforementioned data buffer in the user apparatus 50 for buffering the data stream 60.
  • buffering has a tendency to render the user apparatus 50 seem sluggish to the user, namely exhibit latency, when the user switches between program channels, namely requests an alternative data stream to be supplied from data supply nodes of the data network 20.
  • the present invention seeks to at least partially address this latency.
  • each data supply node S1 to S6 for example implemented as a plurality of servers, delivers a small part, for example 128 kbit/second, of a big data stream, for example 1 Mbit/second suitable for DVD-equivalent quality, to the user apparatus 50.
  • Such definition of use of the data supply nodes S1 to S6 is achieved by the user apparatus 50 performing a computation when generating the quota data which is communicated to the peer-to-peer network 20 in the aforesaid third request message.
  • the user apparatus 50 in cooperation with the network 10 is also operable to seek one or more alternative data supply nodes in the peer-to-peer network 20 in an event of a specified data supply node in the quota data becoming unavailable or not being able to supply its specified data blocks into the stream 60 for receipt at the user apparatus 50.
  • the peer-to-peer network 20 includes the aforementioned data supply nodes S1 to S8, as well as supernodes denoted by 600.
  • the data supply nodes S1 to S8 are also capable of functioning as such supernodes; alternatively, the supernodes 600 are distinct from the data supply nodes S1 to S8.
  • the supernodes 600 are distinct from the data supply nodes S1 to S8.
  • Each supemode 600 is associated with one or more data supply nodes S1 to S8 and is operable to maintain a record of data blocks, for example aforesaid data fragments, stored within its one or more associated data supply nodes S1 to S8.
  • the user apparatus 50 communicates with the supernodes 600 by way of supemode-directed request and subsequent first response messages as denoted by 610.
  • the supemode-directed messages 610 are capable of determining which data blocks, for example data bundles, can be supplied from which data supply nodes S1 to S8.
  • the user apparatus 50 On receipt of responses in the messages 610, the user apparatus 50 then sends capacity request messages denoted by 620 to the data supply nodes S1 to S7 requesting an indication of a capacity of the data supply nodes S1 to S7 to supply data bundles.
  • the data supply nodes S1 to S7 respond with information indicative of their data block supply capacity, for example as depicted in Table 1.
  • Table 1 indicates a total potential supply capacity of 111 fragments/second.
  • Table 1 is by way of example only.
  • the user apparatus 50 then executes an algorithm to generate from the data supply capacity information the aforesaid quota data; conveniently, the quota data is referred to as being a "quota card" denoted by "QCD" in Figure 4.
  • the quota data can include instructions to supply data fragments as depicted in Table 2.
  • S7 is not selected on account of data supply nodes S1 to S6 being sufficient for ensuring data supply to the user apparatus 50.
  • Such selection optionally takes into account previous performance of the data supply nodes S1 to S8 such that a given data supply node indicating high data supply performance but previously not delivering such data supply in practice is deliberately not selected by the user apparatus 50.
  • Data supply performance can be determined by one or more criteria:
  • the given data supply node simply is not operable to supply data blocks as requested by the user apparatus in the aforesaid quota card;
  • each of the data supply nodes S1 to S8 is described by a "quality of service", namely QoS, parameter at the user apparatus 50, such QoS parameters are optionally at least one of: collated by the user nodes 50 from previous experience, communicated as collated performance data from a node of the network 20 designated to provide data supply performance information.
  • QoS quality of service
  • Table 2 corresponds to a total selected supply capacity of 100 fragments/second which is less than the total potential data supply capacity of 111 fragments/second indicated in Table 1.
  • the quota card specifies the data supply node S6 which has a modest capacity of 1 fragment/second and reduces its demand to the data supply node S3 so that lower-capacity data supply nodes such as the node S6 are utilized before consuming data supply capacity from higher-capacity data supply nodes such as the node S3.
  • the quota card also includes an indication of the start time t 0 at which data supply is to commence and information, for example the time t n , regarding when each specified data supply node S1 to S6 should supply its data block, data fragment or similar as appropriate.
  • the time t n is implicit in a sequence in which data fragments are specified, for example as in Table 3 for supply of 100 consecutive data packets.
  • the data supply nodes S1 to S6 all receive Table 3 information in the aforesaid quota card.
  • the frequency of the data supply nodes S1 to S6 in Table 3 is, insofar as discreteness in Table 3 allows, proportional to a capability of the data supply nodes as provided in Table 2 to provide data bundles to the user apparatus 50; for example, the data supply node S6, as described in Table 2, is only capable of providing 1 data fragment/second and is thus specified just once in a middle portion of Table 3, whereas the data supply node S3 is capable of providing circa 30 data bundles/second and therefore is specified regularly with substantially uniform occurrence, namely frequency, in the Table 3;
  • each cell of Table 3 corresponds to its corresponding specified data supply node S1 to S6 being required to supply a data bundle to the user apparatus 50;
  • the cells in the Table 3 correspond to a temporal sequence in which the data supply nodes S1 to S6 are to supply their bundles wherein each cell has a time t n associated therewith and Table 3 is to be temporally interpreted from top left-hand corner to bottom right-hand corner reading across in rows from left to right.
  • the user apparatus 50 communicates the quota card (QCD) to the data supply nodes S1 and S6 as denoted by 640.
  • the data supply nodes S1 to S6 then respond in a timely manner to supply their data bundles as defined by Table 3 information included in the quota card (QCD) as the data stream 60, for example as denoted by 650 in Figure 4, for receipt at the aforesaid buffer of the user apparatus 50.
  • the buffer is implemented as a first-in first-out (FIFO) buffer, for example in data memory associated with computing hardware included in the user apparatus 50.
  • the data stream 60 is decoded in the user apparatus 50 to generate program content denoted by 660 to present to the user denoted by 670.
  • the program content can, for example, include at least one of: audio, moving images, still images, video, animated software objects such as pop-ups, Applets, television-type program content and so forth.
  • the data supply nodes S1 to S6 are operable to encode their data bundles sent in the stream 60, and the user apparatus 50 is operable to correspondingly decode the data bundles when generating the program content 660. Such encoding and decoding is elucidated in greater detail earlier.
  • the load balancing algorithm executed within the user apparatus 50 is operable to implement load balancing between multiple nodes in combination with encoding including redundancy; it achieves such load balancing by implementing a digital differential analysis balancer as elucidated earlier.
  • the data supply nodes S1 to S6 are capable of timing their fragments sent such that a risk of multiple fragments clogging the network 10 by way of instantaneous data overload is greatly reduced, thereby reducing a potential risk of loss of data fragments at the user apparatus 50.
  • FIG 5 there is shown a flow chart of a method of obtaining supply of data from the data supply nodes, for example from the data supply nodes S1 to S6.
  • the user apparatus 50 transmits requests
  • the supemodes 600 respond with information messages 610 providing information relating to data supply nodes of the network 20 which are potentially capable of providing the given data blocks.
  • the user apparatus 50 then sends request messages 620 to the data supply nodes, for example to the data supply nodes S1 to S7, regarding their capacity to provide the given data blocks.
  • the data supply nodes for example the data supply nodes S1 to S7, respond as denoted by 630 with information regarding their capacity to supply data blocks to the user apparatus 50.
  • the user apparatus 50 On receipt of the information within the aforesaid wait period, the user apparatus 50 generates the aforesaid quota data (QCD) including allocations, for example, as shown in Table 3.
  • the user apparatus 50 checks to determine whether or not the data supply nodes, for example the data supply nodes S1 to S7, have sufficient capacity to supply the given data blocks. In an event that the data supply nodes, for example the data supply nodes S1 to S7, are not able to provide sufficient capacity, the method progresses to a step 720 whereat a check is made whether or not all data supply nodes within the peer-to-peer network 20 have been investigated regarding supplying the given data blocks to the user apparatus 50.
  • the method progresses to a failure step 730 (FLR) whereat the user 670 is informed that an associated service is unavailable; alternatively, or additionally, the user apparatus 50 at the step 730 is operable to present advertisements or games to the user 670.
  • FLR failure step 730
  • data bundles can be provided directly from the central source 30 in an event on none of the nodes S1 to S7 being able to provide data bundles propagated thereto in a peer-to-peer manner.
  • the user apparatus 50 can repeat an enquiry as depicted in Figure 5 to determine whether or not more data supply capacity has subsequently become available within the peer-to-peer network 20.
  • step 720 When executing the step 720, if all data supply nodes, for example the data supply nodes S1 to S6, have not been queried or investigated, the method progress to enquire from the supemodes 600 identities of other potential data supply nodes available within the peer-to-peer network 20.
  • the quota data is then communicated to the data supply nodes, for example to the data supply nodes S1 to S6, in a step 740 resulting in the data supply nodes sending their data packets in a timely sequence as, for example, depicted in Table 3.
  • the method progresses to a state P1 indicative that all requested data blocks, for example data bundles, have been successfully received at the user apparatus 50.
  • the method progresses to a decision stage 750 whereat performance of the data supply nodes that have been selected is investigated.
  • the method progresses to a completion state denoted by P2.
  • the method progresses to a further search decision stage 760; alternatively, the method aborts and commences from start.
  • the search stage 760 if the search for data supply nodes has been exhausted, the method generates for presentation to the user 670 a warning indicative of supply of the stream 60 being at risk; the warning is generated at a step denoted by P3.
  • data supply node substitutions are sought as denoted by 770 by enquiring at the supemodes 600.
  • the method is optionally operable to send requests for a supply of specific data blocks, for example data bundles or data fragments, from the peer-to-peer network 20.
  • the request for specific fragments is sent directly to the data supply nodes S1 to S6 without querying at the supernodes 600.
  • the present invention is relevant to digital television services provided to the user 670 via the Internet with data blocks being provided in a peer-to-peer manner.
  • problems of data streaming from centralized data sources as employed in contemporary digital cable television are circumvented.
  • the present invention is also capable of being implemented in other types of digital communication network.
  • the availability of data supply nodes in the peer-to-peer network 20 is susceptible to dynamically changing in response to other users being coupled to the network 10 attempting to access data blocks stored in the peer-to-peer network 20.
  • the method as depicted in Figures 4 and 5 is susceptible to being repeated frequently when the user apparatus 50 is in operation.
  • 3 to 10 data supply nodes are preferably employed to support the data stream 60; for example, Table 3 concerns the use of 6 data supply nodes for such purpose.
  • the user apparatus 50 is capable of being dynamically reconfigured to also function as a data supply node in the peer-to-peer network 20 to supply data blocks received thereat to other users of the network 10; yet more optionally, the user apparatus 50 is also capable of being dynamically reconfigured to function as a supernode akin to the supemodes 600.
  • Software executable in computing hardware of the user apparatus 50 for implementing the present invention is susceptible to being downloaded via the network 10 to the user apparatus 50 thereby enabling the network 10 to be reconfigured or upgraded.
  • the software product is optionally conveyed to the user apparatus 50 on a data carrier, for example on a memory medium such a digital storage disk, on an Internet carrier signal, on a radio signal, on a solid state memory medium or similar.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

There is disclosed a method of supplying streams of data (60) via a data communication network (10) to a user apparatus (50). The data communication network (10 20) includes data supply nodes (S1 to S8) distributed therein. The streams of data (60) correspond to data blocks stored amongst the data supply nodes (S1 to S6). The method includes steps of: (a) sending into the network (10, 20) requests (610) for determining a distribution of the data blocks amongst the data supply nodes (S1 to S6); (b) receiving responses (610) generated in response to receipt of the requests, the responses being operable to convey information indicative of the distribution; (c ) generating quota data (QCD) for a subset of the data supply nodes (S1 to S6) for use in supplying the data blocks, the quota data including instructions to supply to the user apparatus (50) the data blocks from the subset of data supply nodes (S 1 to S6) at least partially in proportion to the distribution; (d) communicating the quota data to the subset of data supply nodes for instructing the subset of data supply nodes to supply their respective data blocks as specified in said quota data; and (e) receiving the requested data blocks at the user apparatus (50) for user (670) consumption thereat.

Description

METHOD OF SUPPLYING STREAMS OF DATA
Field of the invention
The present invention relates to methods of supplying streams of data via data communication networks to users, for example to methods of supplying streams of data via the Internet in a peer-to-peer manner to television display apparatus of users. Moreover, the present invention also concerns software executable on computing hardware for implementing the methods. Furthermore, the present invention also concerns networks and system operable to execute the methods.
Background of the invention
Contemporary television broadcasting is well known and involves transmission of a program content signal on a carrier signal at ultra high frequency (UHF) or via one or more satellites at super high frequencies (SHF). More recently, provision of television services conveyed via optical fiber communication links, also known as "cable television", has become increasingly popular. Yet more recently, television services via mobile telephone, namely cell-phone, have been proposed and demonstrated in prototype form. Moreover, it is known that motion pictures and animated pictures can be provided from Internet web-sites, for example using contemporary software such as "Quick time" executable on users' computing hardware.
A technical problem encountered when using data networks such as the Internet for providing real-time video is reliability of supply of video data streams from central servers to users, namely streaming video data from a central server source to users. Such reliability, also known as "quality of service" (QoS), is often difficult to ensure in networks such as the Internet which are potentially subject to wide fluctuations in available data throughput capacity in response to instantaneous data traffic load therethrough. Although features such as data buffers in user apparatus can be used to at least partially compensate for fluctuations or interruptions in data stream supply to users, such user apparatus buffers are not able to cope with unexpected failure or unavailability of the central servers. In consequence, provision by data streaming of television services from central server sources via data communication networks such as the Internet to user apparatus has not yet been widely possible or found to function totally reliably. There thereby arises a technical problem, which the present invention seeks to address, of improving reliability of data stream supply when providing video or similar program content via communication networks such as the Internet which are susceptible to suffering temporal fluctuations in data supply capacity.
Summary of the invention
An object of the present invention is to provide a method of supplying streams of data which is susceptible to providing the data streams more reliably and without requiring the data streams to be directly provided from a central source.
According to a first aspect of the present invention, there is provided a method of supplying one or more streams of data via a data communication network to a user apparatus,
the data communication network including a plurality of data supply nodes distributed therein,
the one or more streams of data corresponding to one or more data blocks stored amongst the data supply nodes,
the method including steps of:
(a) sending into the network one or more requests for determining a distribution of the one or more data blocks amongst the data supply nodes;
(b) receiving within a time period one or more responses generated in response to receipt of the one or more requests, the one or more responses being operable to convey information indicative of the distribution;
(c) generating quota data for at least a subset of the data supply nodes for use in supplying the one or more data blocks, the quota data (QCD) including instructions to supply to the user apparatus the one or more data blocks from the subset of the data supply nodes as a function of the distribution; (d) communicating the quota data to the subset of the data supply nodes for instructing the data supply nodes to supply their respective one or more data blocks as specified in the quota data (QCD); and
(e) receiving the one or more requested data blocks at the user apparatus for user consumption thereat.
The invention is of advantage in that the supply of data is susceptible to being more reliable because account is taken of data supply capacity of the one or more data supply nodes.
Optionally, in the method, the subset includes all the data supply nodes of the network. However, the subset more normally includes a portion of the data supply nodes of the network. When the one or more data blocks are widely distributed within the network, a situation will often arise that there are more data supply nodes which are capable of supplying the one or more data blocks than needed to be invoked by the user apparatus.
Optionally, in the method, the function relates to supply of the one or more data blocks from the subset of the data supply nodes at least partially in proportion to said distribution. An example of such proportional supply is illustrated in following Tables 2 and 3.
Optionally, the method includes a step of including in the quota data an indication of a temporal sequence in which the one or more data blocks are to be supplied, the temporal sequence having the subset of the data supply nodes specified in frequency in response to their ability to supply the one or more data blocks. Inclusion of such a temporal sequence assists with ensuring that data blocks are received in an order in which they are required for user-presentation, thereby avoiding having to employ large data buffers and execute considerable data rearrangement and manipulation.
Optionally, the method includes a step of similarly communicating the quota data to each of the subset of the data supply nodes, such that each data supply node in the subset also receives information regarding other of the subset of the data supply nodes requested to supply the one or more data blocks to the user apparatus. Distributing the quota data to all the data supply nodes involved potentially has a benefit in that the information is distributed amongst the supply nodes so that these supply nodes are aware of a timescale in which they are required to supply their one or more specified data blocks.
Optionally, in the method, the temporal sequence defines a start time from which the one or more data blocks are to be sent to the user apparatus, wherein the subset of the data supply nodes are operable to synchronize mutually independently to the start time, and the subset of the data supply nodes are operable to supply their one or more data blocks specified in the quota data substantially at times relative to the start time as specified in the quota data. The temporal sequence assists to ensure that the one or more data supply nodes are mutually substantially synchronized regarding their supply of data blocks to the user apparatus.
More optionally, in the method, the subset of the data supply nodes comprise in a range of 3 to 10 data supply nodes as specified in the quota data. Such a range represents an optimal compromise between reliability of data block supply to the user apparatus and keeping data control overheads to a manageable degree within the network.
Optionally, in the method, the one or more data packets are encoded with redundancy for at least one or:
(e) compensating or correcting for data loss and/or erasure errors; and
(T) correcting for data error.
Such redundancy is of benefit in that it reduces a need to send request for data blocks to be resent in an event of partial loss of data during data transmission to the user apparatus.
More optionally, in the method, the one or more data blocks are encoded at the subset of the data supply nodes, and are subsequently decoded at the user apparatus. Encoding at the data supply nodes requires relatively little computing effort but nevertheless spreads computing effort required within the network.
More optionally, in the method, the one or more data blocks are Reed-Solomon encoded and the user apparatus is operable to apply Reed-Solomon decoding to the one or more data blocks received at said user apparatus. Such encoding and decoding has been found to be especially appropriate when implementing the present invention in practice. However, alternative forms of encoding and decoding can optionally be employed. Optionally, in the method, the user apparatus includes a data buffer for at least one of: (a) buffering fluctuations in a rate of supply of the one or more data blocks from the subset of the data supply nodes; and (b) reordering a sequence of received data blocks in an event that the subset of the data supply nodes are operable to deviate from a sequence of data block supply as specified in the quota data.
Optionally, in the method, the user apparatus is operable to present: (g) a data supply interruption message to the user; and/or
(h) program content derived from substitute data blocks to the user, in an event of the supply of the one or more requested data blocks specified in the quota data (QCD) not being received at the user apparatus in a timely manner pursuant to the quota data.
More optionally, in the method, the user apparatus is operable to send a warning message to the data communication network in the event, the warning message being operable to prompt one or more searches in the network for identifying one or more alternative data supply nodes which are capable of providing data blocks corresponding to those not reliably received at the user apparatus.
More optionally, in the method, the interruption message and/or said program content corresponding to the substitute data blocks are presented to the user until the alternative data supply nodes are operable to supply the data blocks not hitherto reliably received.
Optionally, in the method, the data communication network is at least partially implemented via the Internet, the one or more data blocks correspond to television-type program content, and the user apparatus corresponds to a television-type display apparatus.
Optionally, in the method, the one or more data blocks correspond to a request for program content executed by the user via the user apparatus to the data communication network.
Optionally, in the method, the one or more data blocks stored in the data supply nodes are previously propagated to the data supply nodes in a peer-to-peer manner. More optionally, in the method, one or more of the data blocks are stored in multiple copies within data supply nodes of the data communication network. Such multiple copies are of benefit when alternative data supply nodes are required in an event of an originally specified data supply node failing to supply its specified data blocks.
According to a second aspect of the invention there is provided a user apparatus adapted for operation with a data communication network configured to execute a method pursuant to the first aspect of the invention.
According to a third aspect of the invention, there is provided a program-content supply system comprising at least one user apparatus and a data communication network operable to supply one or more data blocks to the user apparatus, the one or more data blocks including program content, wherein the system is configured to execute a method pursuant to the first aspect of the invention.
According to a fourth aspect of the invention, there is provided a peer-to-peer digital television system comprising at least one television-type user apparatus and a data communication network based at least in part on the Internet, the system being operable to supply one or more data blocks to the user apparatus, the one or more data blocks including program content, wherein the system is configured to execute a method pursuant to the first aspect of the invention.
According to a fifth aspect of the invention, there is provided a software product recorded on a data carrier, the software product being executable on computing hardware for implementing a method pursuant to the first aspect of the invention.
It will be appreciated that features of the invention are susceptible to being combined in any combination without departing from the scope of the invention as defined by the accompanying claims.
Description of the diagrams
Embodiments of the invention will now be described, by way of example only, with reference to the following diagrams wherein: Figure 1 is an illustration of a peer-to-peer data supply network operable pursuant to the present invention;
Figure 2 is an illustration of a hierarchy of data streams, data stream groups, data bundles, data packets and data fragments communicated in the network of Figure 1 ;
Figure 3 is an illustration of encoding and decoding performed within the network of Figure 1 ;
Figure 4 is an illustration of a method of providing a stream of data to a user apparatus of the network of Figure 1 ; and
Figure 5 is a further illustration of a method of selecting data supply nodes within the network of Figure 1 , for coping with variable node performance, node loss and node substitution.
In the accompanying Figures, numerals are included to identify features in conjunction with the following description of embodiments of the invention. The numerals are included underlined when spatially positioned within features to which they relate.
Moreover, the numerals when not underlined are linked by lines which identify features to which the numerals relate. Furthermore, numerals are linked by arrows when they are used to indicate a complete component part or system.
Description of embodiments of the invention
In overview, the present invention relates to methods of supplying data streams via data communication networks to users' apparatus. Although not limited thereto, the present invention is relevant to a technical problem of providing digital television-type services via the Internet to users' apparatus configured to present such television-type services. In an embodiment of the invention which is elucidated in greater detail below, data blocks susceptible to form data streams are propagated in an indirect peer-to-peer manner to intermediate supply nodes distributed within the Internet or similar form of data communication network, and the data blocks are subsequently supplied from the supply nodes to users' apparatus to provide aforesaid television-type services. Such a manner of providing the data blocks to users' apparatus addresses a problem encountered in known cable-television systems involving data streaming directly from central servers; the present invention concerns central servers providing the data blocks in the aforesaid peer-to-peer manner to the supply nodes and thereby circumventing a need to stream data in real-time directly to users' apparatus. However, there arises a problem addressed by the present invention in that the aforementioned supply nodes can potentially be of mutually different data capacity and data supply speed which renders organizing supply of data blocks to users' apparatus whilst maintaining quality of service a potentially complex technical problem. The present invention addresses this complex technical problem by performing a sequence of steps as follows:
STEP 1 : a user identifies program content which the user is desirous to consume and instructs an associated user apparatus to send a first request message for the program content to a reference node of a data communication network such as the Internet; the reference node is conveniently referred to as being "a backend". However, the reference node optionally does not necessarily need to be the backend but can be node appointed specifically to respond to user enquiries for program content. The reference node responds to the first request message by sending a first response message to the user apparatus, wherein the first response message includes information concerning data blocks constituting the program content; the data blocks have beneficially been previously communicated in a peer-to-peer manner within the data communication network. By "peer-to-peer manner", the reference node is not able to control proliferation and storage locations of the data blocks within the communication network; the reference node is thereby not capable of providing the user apparatus in the first response message with information which is indicative of both data blocks required and their corresponding storage locations within the data communication network.
STEP 2: on receipt of the first response message including information concerning data blocks constituting the program content, the user apparatus is operable to send to supply nodes of the data communication network a second request message for the data blocks.
The supply nodes respond to the second request message by sending second response messages indicating which of the data blocks they are capable of supplying to the user apparatus together with their capacity to supply such data blocks thereto. For example, certain high-speed large-capacity data nodes are capable of providing many of the data blocks whereas other low-speed small-capacity nodes are capable of providing only relatively few of the data blocks. The user apparatus is operable, after sending the second request message, to wait for a defined wait period for receiving responses from the supply nodes. For certain types of program content of a popular nature, data blocks corresponding thereto are potentially propagated widely in a peer-to-peer manner within the network such that the user apparatus potentially would have to wait a relatively long period to receive responses from all supply nodes of the network which are capable of supplying the data blocks to the user apparatus. In other words, in order to provide a responsive service to the user, the user apparatus is configured to wait for the defined wait period which is of sufficient duration for the user apparatus to have normally received responses from enough supply nodes to ensure supply of all the data blocks required for presenting the desired program content to the user.
STEP 3: on receipt of the second response messages, for example on expiration of the aforesaid wait period, the user apparatus performs a computation which allocates supply of the data blocks in a manner which takes into consideration capabilities of the supply nodes to provide the data blocks in a timely temporally-sequential manner to the user apparatus which does not involve the user node needing to store large amounts of data within its buffer and to reorganize sequences of such data blocks which are received in jumbled order. Such allocation of supply of data blocks is recorded in quota data which is then sent in a third request message to those supply nodes which the user apparatus chooses to supply the desired data blocks. Optionally, the quota data defines an absolute time at which data block supply should be commenced, namely a start time t0, and times tn relative to the start time t0 at which corresponding data blocks Dn are required to be supplied to the user apparatus; n is an integer defining a position of an n^ data block in a sequence of data blocks D. The supply nodes are all mutually referenced to an overall data communication network time clock tref.
STEP 4: on receipt of the third request message, the data supply nodes wait until the network time clock tref corresponds to the start time t0 at which data block supply is to be commenced and then transmit data blocks Dn which they are instructed to supply in the quota data conveyed in the third request message when the network time clock tref subsequently corresponds to t0 + tn. The requested data blocks Dn are received at the user apparatus substantially in an order in which they are to be presented to the user; however, occasionally the data blocks Dn are received at the user apparatus in a jumbled order and need to be reordered pursuant to a sequence number included in each of the data blocks Dn. Moreover, the data blocks Dn are beneficially received a short time period before they are required to be presented to the user for consumption. A need for a large buffer in the user apparatus is thereby avoided and the user is not kept waiting for receipt of all the data blocks before presentation of program content to the user is executed. For example, the user apparatus is operable to present program content of earlier data blocks to the user concurrently whilst later data blocks are being received at the user apparatus.
In the foregoing, the present invention is described in overview. Embodiments of the invention will now be described in greater detail.
Referring to Figure 1 , there is shown a data communication network denoted generally by 10; the network 10 is optionally implemented at least in part via the contemporary Internet. The network 10 includes several data supply nodes S1 to S8 which are operable to function in a peer-to-peer manner and form a peer-to-peer network denoted by 20. Data blocks Dn are propagated from a central source 30, for example from one or more central servers coupled in communication with the peer-to-peer network 20; if required, such central source 30 is itself capable of functioning as a data supply node providing data blocks in a similar manner to the data supply nodes S1 to S8 in an event that a given data block has not yet been propagated within the network 20 and yet has been user-requested. In response to receiving the aforementioned third request message including the quota data, the supply nodes S1 to S6 are operable to provide their respective data blocks, for example as denoted by an arrow 40, to a user apparatus denoted by 50. The data blocks Dn supplied to the user apparatus 50 constitute a data stream denoted generally by 60. The data supply nodes S7 and S8 are potentially also capable of supplying data blocks Dn but are not selected either because they did not respond within the aforesaid wait period or the data supply nodes S1 to S6 are already sufficient for ensuring a supply of desired data blocks Dn to the user.
The user apparatus 50 is susceptible to being implemented in several different ways. For example, the user apparatus 50 is susceptible to being implemented as a personal computer including computing hardware and a screen display. ' Alternatively, the user apparatus 50 is susceptible to being implemented as a "black box" for connection to contemporary television apparatus, for example by way of retrofit or "add-on" device.
The data stream 60 will now be elucidated in greater details with reference to Figure 2. Although the data stream 60 is described in the foregoing to include data blocks, its structure is more complex. The data stream 60 can comprise considerable data, for example several gigabytes in total. Moreover, the data stream 60 prior to encoding is subdivided into stream groups 100, wherein each stream group beneficially comprises 32 Mbytes of data; for example, the stream 60 includes a "stream group 0" denoted by 110, a "stream group 16" denoted by 120, a "stream group 32" denoted by 130, and a "stream group n" denoted by 140. Each stream group 110, 120, 130, 140 includes several data bundles wherein each data bundle includes 256 kbytes of data; for example, the "stream group 16" denoted by 120 data includes "data bundle 16" denoted by 200 to "data bundle 17 denoted by 210 to "data bundle 31" denoted by 220 as illustrated. Each data bundle 200, 210, 220 is further subdivided into data packets wherein each data packet includes 64 kbytes of data; for example, the "data bundle 17" denoted by 210 includes a "data packet 17.1" denoted by 300, a "data packet 17.2" denoted by 310, and so forth to a "data packet 17.16" denoted by 320. Furthermore, each data packet 300, 310, 320 is further subdivided into data fragments each of 32 kbytes size; for example, the "data packet 17.2" denoted by 310 is subdivided by encoding into three fragments denoted by 400, 410, 420 when included in encoded form in the data stream 60. A Reed-Solomon encoding process is preferably employed.
The data fragments, for example the data fragments 400, 410, 420, are independently propagated within the network 10, for example stored within the peer-to-peer network 20. In operation, when supplying the data stream 60 to the user apparatus 50, whether or not the data fragments are successfully received at the user apparatus 50 is an atomic event: either a fragment arrives completely or it does not arrive at all.
As elucidated above, each data fragment is an output of ECC encoding, for example Reed-Solomon (RS) decoding, which results in encoding redundancy but allows data omissions to be corrected at the user apparatus 50. Other types of encoding are feasible which alternatively, or additionally, allow for data correction. The pre-encoded data packet 17.2 denoted by 310 and comprising 64 kbytes of data expands after encoding to 96 kbytes. A beneficial property of Reed-Solomon encoding is that only two of three encoded fragments of a corresponding data packet are required for reconstructing the data packet at the user apparatus 50; thus, the user apparatus 50 does not need in operation to request a resend of an encoded data packet unless 2 of 3 fragments of the data packet were lost during transmission in the network 10.
A problem encountered in practical operation of the network 10 is that, despite a redundancy overhead of 50% provided by aforesaid encoding, a chance of three consecutive encoded data fragments being lost is significant, namely a burst failure in transmission to the user apparatus 50 is more likely to occur than "spotted failure", namely loss of individual isolated encoded fragments.
In Figure 3, there is a depiction of Reed-Solomon encoding performed in the peer-to-peer network 20 and corresponding decoding performed at the user apparatus 50. Loss of certain parts of the encoded fragments is susceptible to being compensated at the user apparatus 50 as illustrated. In Figure 3, a Reed-Solomon encoding function is denoted by 500, and a corresponding Reed-Solomon erasure correction and decoding function is denoted by 510. Loss of data is noted by crosses "X".
Encoding occurring at the data supply nodes, for example data supply nodes S1 to S6 in Figure 1 , involves cutting the data packets into fragments similar to the aforesaid data fragments. Consequently, a total size of all fragments of a packet equals that of their packet prior to the encoding function 500. After encoding in the encoding function 500, an expansion of data size by 33% by augmentation with an additional 32 kbytes of data as illustrated in Figure 2. The encoded fragments are transmitted via the networks 10, 20 which will occasionally result in data loss as denoted by aforementioned "X" in Figure 3. Optionally, when the networks 10, 20 are implemented in the Internet, the data fragments are transmitted using UDP datagrams. Although an expansion of data size by 33% is elucidated in the foregoing, it will be appreciated that other percentages of data expansion are possible depending on a desired tradeoff between quantity of data to be communicated and robustness to data loss and/or data corruption. Such tradeoff has a bearing on communication bandwidth required to implement the invention.
Thus, data streaming using conventional data block transmission with acknowledgement/non-acknowledgement (ack/nack) resends is susceptible to resulting in a sub-optimal quality of stream delivery to the user apparatus 50 and hence a sub- optimal quality of program content presentation to the user. Data packets which are lost during transmission to the user apparatus 50 are required to be resent from the data supply nodes, for example from the data supply nodes S1 to S6. A time interval between a data packet being transmitted towards the user apparatus 50 and the user apparatus 50 detecting that the packet was lost during transmission and never received at the user apparatus 50 potentially approaches 2 seconds in a worst case practical scenario in practice. Consequently, a roundtrip request could potentially take 2 seconds of stalling prior to the data packet eventually being successfully received at the user apparatus 50. Such stalling can be mitigated by employing the aforementioned data buffer in the user apparatus 50 for buffering the data stream 60. However, such buffering has a tendency to render the user apparatus 50 seem sluggish to the user, namely exhibit latency, when the user switches between program channels, namely requests an alternative data stream to be supplied from data supply nodes of the data network 20. The present invention seeks to at least partially address this latency.
Moreover, a further technical problem can arise when the data supply nodes, for example the data supply nodes S1 to S6, do not each possess sufficient data supply bandwidth to support the stream 60 at a rate necessary for delivering video and similar services to the user. In order to address such a lack of data supply bandwidth, several of the data supply nodes, for example the supply nodes S1 to S6 as illustrated in Figure 1 , are employed in cooperation to supply the data stream 60; for example, each data supply node S1 to S6, for example implemented as a plurality of servers, delivers a small part, for example 128 kbit/second, of a big data stream, for example 1 Mbit/second suitable for DVD-equivalent quality, to the user apparatus 50. However, such an approach renders data streaming from the peer-to-peer network 20 more vulnerable to disruption to the user apparatus 50. Moreover, a further problem arises, which the present invention seeks to address, in that if only data supply nodes S1 to S6 of the network 20 are individually selected to supply data to the user apparatus 50 wherein each selected data supply node S1 and S6 has sufficient capacity to service the user apparatus 50 with data, peer-to-peer data supply capacity of the network 20 becomes quickly exhausted, leaving only supply nodes with modest capacity remaining. The network 10 is thus operable to employ supply nodes of the network 20 exhibiting relatively lower data supply capacity in preference to employing capacity of data supply nodes exhibiting relatively larger data supply capacity. Such definition of use of the data supply nodes S1 to S6 is achieved by the user apparatus 50 performing a computation when generating the quota data which is communicated to the peer-to-peer network 20 in the aforesaid third request message. The user apparatus 50 in cooperation with the network 10 is also operable to seek one or more alternative data supply nodes in the peer-to-peer network 20 in an event of a specified data supply node in the quota data becoming unavailable or not being able to supply its specified data blocks into the stream 60 for receipt at the user apparatus 50.
Operation of the network 10 pursuant to the present invention will now be elucidated further with reference to Figure 4. In Figure 4, the peer-to-peer network 20 includes the aforementioned data supply nodes S1 to S8, as well as supernodes denoted by 600. Optionally, one or more of the data supply nodes S1 to S8 are also capable of functioning as such supernodes; alternatively, the supernodes 600 are distinct from the data supply nodes S1 to S8. Although only seven data supply nodes S1 to S7 are shown in Figure 4, it will be appreciated that more than seven data supply nodes, or optionally less than seven data supply nodes, can be active within the peer-to-peer network 20. Each supemode 600 is associated with one or more data supply nodes S1 to S8 and is operable to maintain a record of data blocks, for example aforesaid data fragments, stored within its one or more associated data supply nodes S1 to S8.
In operation, the user apparatus 50 communicates with the supernodes 600 by way of supemode-directed request and subsequent first response messages as denoted by 610. The supemode-directed messages 610 are capable of determining which data blocks, for example data bundles, can be supplied from which data supply nodes S1 to S8. On receipt of responses in the messages 610, the user apparatus 50 then sends capacity request messages denoted by 620 to the data supply nodes S1 to S7 requesting an indication of a capacity of the data supply nodes S1 to S7 to supply data bundles. The data supply nodes S1 to S7 respond with information indicative of their data block supply capacity, for example as depicted in Table 1.
Table 1 Indication of data block supply capacity, 620
Figure imgf000015_0001
Table 1 indicates a total potential supply capacity of 111 fragments/second.
Table 1 is by way of example only. When the user apparatus 50 receives data supply capacity information from the data supply nodes S1 to S7, for example as depicted in
Table 1 , the user apparatus 50 then executes an algorithm to generate from the data supply capacity information the aforesaid quota data; conveniently, the quota data is referred to as being a "quota card" denoted by "QCD" in Figure 4. For example, the quota data can include instructions to supply data fragments as depicted in Table 2. It is to be noted that S7 is not selected on account of data supply nodes S1 to S6 being sufficient for ensuring data supply to the user apparatus 50. Such selection optionally takes into account previous performance of the data supply nodes S1 to S8 such that a given data supply node indicating high data supply performance but previously not delivering such data supply in practice is deliberately not selected by the user apparatus 50. Data supply performance can be determined by one or more criteria:
(a) the given data supply node simply is not operable to supply data blocks as requested by the user apparatus in the aforesaid quota card;
(b) the given data supply node has responded in a temporally unreliable manner such that an due subsequent sorting of data blocks has been necessary in buffers of the user apparatus 50;
(c ) data blocks supplied from the given data supply node have included an increased degree of data loss or error on account of interference or noise occurring within the network 20.
Beneficially, each of the data supply nodes S1 to S8 is described by a "quality of service", namely QoS, parameter at the user apparatus 50, such QoS parameters are optionally at least one of: collated by the user nodes 50 from previous experience, communicated as collated performance data from a node of the network 20 designated to provide data supply performance information.
Table 2 Data supply specified in quota card, QCD
Figure imgf000016_0001
Table 2 corresponds to a total selected supply capacity of 100 fragments/second which is less than the total potential data supply capacity of 111 fragments/second indicated in Table 1.
It is to be noted that the quota card specifies the data supply node S6 which has a modest capacity of 1 fragment/second and reduces its demand to the data supply node S3 so that lower-capacity data supply nodes such as the node S6 are utilized before consuming data supply capacity from higher-capacity data supply nodes such as the node S3. The quota card also includes an indication of the start time t0 at which data supply is to commence and information, for example the time tn, regarding when each specified data supply node S1 to S6 should supply its data block, data fragment or similar as appropriate. Optionally, the time tn is implicit in a sequence in which data fragments are specified, for example as in Table 3 for supply of 100 consecutive data packets.
Table 3
Figure imgf000017_0001
The data supply nodes S1 to S6 all receive Table 3 information in the aforesaid quota card. When inspecting Table 3 representing supply of 100 consecutive data packets pursuant to Table 3 to the user apparatus 50, some features are to be noted:
(a) the frequency of the data supply nodes S1 to S6 in Table 3 is, insofar as discreteness in Table 3 allows, proportional to a capability of the data supply nodes as provided in Table 2 to provide data bundles to the user apparatus 50; for example, the data supply node S6, as described in Table 2, is only capable of providing 1 data fragment/second and is thus specified just once in a middle portion of Table 3, whereas the data supply node S3 is capable of providing circa 30 data bundles/second and therefore is specified regularly with substantially uniform occurrence, namely frequency, in the Table 3;
(b) each cell of Table 3 corresponds to its corresponding specified data supply node S1 to S6 being required to supply a data bundle to the user apparatus 50; and
(c ) the cells in the Table 3 correspond to a temporal sequence in which the data supply nodes S1 to S6 are to supply their bundles wherein each cell has a time tn associated therewith and Table 3 is to be temporally interpreted from top left-hand corner to bottom right-hand corner reading across in rows from left to right.
In Figure 4, the user apparatus 50 communicates the quota card (QCD) to the data supply nodes S1 and S6 as denoted by 640. The data supply nodes S1 to S6 then respond in a timely manner to supply their data bundles as defined by Table 3 information included in the quota card (QCD) as the data stream 60, for example as denoted by 650 in Figure 4, for receipt at the aforesaid buffer of the user apparatus 50. Conveniently, the buffer is implemented as a first-in first-out (FIFO) buffer, for example in data memory associated with computing hardware included in the user apparatus 50. The data stream 60 is decoded in the user apparatus 50 to generate program content denoted by 660 to present to the user denoted by 670. The program content can, for example, include at least one of: audio, moving images, still images, video, animated software objects such as pop-ups, Applets, television-type program content and so forth.
It is to be appreciated in Figure 4 that the data supply nodes S1 to S6 are operable to encode their data bundles sent in the stream 60, and the user apparatus 50 is operable to correspondingly decode the data bundles when generating the program content 660. Such encoding and decoding is elucidated in greater detail earlier.
The load balancing algorithm executed within the user apparatus 50 is operable to implement load balancing between multiple nodes in combination with encoding including redundancy; it achieves such load balancing by implementing a digital differential analysis balancer as elucidated earlier. In the network 10, it is desirable to employ a plurality of data supply nodes to send data fragments that make up data packets and hence data bundles as shown in Figure 2. Benefits of such data supply include:
(a) it circumvents a single point of failure as encountered with centrally streamed data block supply configurations; in an event of one of the data supply nodes S1 to S6 becoming momentarily inactive, the aforesaid Reed-Solomon encoding is capable of correcting up to given degree of data loss; and (b) data supply nodes with limited upstream data supply bandwidth resulting from asymmetrical Internet connections are able to contribute to supplying data in proportion to their capability to supply data.
On account of time scheduling implicit in Table 3 information included in the quota card (QCD), the data supply nodes S1 to S6 are capable of timing their fragments sent such that a risk of multiple fragments clogging the network 10 by way of instantaneous data overload is greatly reduced, thereby reducing a potential risk of loss of data fragments at the user apparatus 50.
The algorithm for load balancing of the data supply nodes will now be further elucidated with reference to Figure 5. In Figure 5, there is shown a flow chart of a method of obtaining supply of data from the data supply nodes, for example from the data supply nodes S1 to S6. In a first step of the method, the user apparatus 50 transmits requests
610 to the supemodes 600 regarding which data supply nodes are capable of providing given data blocks, for example data fragments or data bundles. The supemodes 600 respond with information messages 610 providing information relating to data supply nodes of the network 20 which are potentially capable of providing the given data blocks. The user apparatus 50 then sends request messages 620 to the data supply nodes, for example to the data supply nodes S1 to S7, regarding their capacity to provide the given data blocks. The data supply nodes, for example the data supply nodes S1 to S7, respond as denoted by 630 with information regarding their capacity to supply data blocks to the user apparatus 50. On receipt of the information within the aforesaid wait period, the user apparatus 50 generates the aforesaid quota data (QCD) including allocations, for example, as shown in Table 3. In a decision step 710, the user apparatus 50 checks to determine whether or not the data supply nodes, for example the data supply nodes S1 to S7, have sufficient capacity to supply the given data blocks. In an event that the data supply nodes, for example the data supply nodes S1 to S7, are not able to provide sufficient capacity, the method progresses to a step 720 whereat a check is made whether or not all data supply nodes within the peer-to-peer network 20 have been investigated regarding supplying the given data blocks to the user apparatus 50.
If all data supply nodes have been investigated such that there is not sufficient available data supply capacity in the peer-to-peer network 20, the method progresses to a failure step 730 (FLR) whereat the user 670 is informed that an associated service is unavailable; alternatively, or additionally, the user apparatus 50 at the step 730 is operable to present advertisements or games to the user 670. Yet alternatively, data bundles can be provided directly from the central source 30 in an event on none of the nodes S1 to S7 being able to provide data bundles propagated thereto in a peer-to-peer manner. Optionally, after a waiting time, the user apparatus 50 can repeat an enquiry as depicted in Figure 5 to determine whether or not more data supply capacity has subsequently become available within the peer-to-peer network 20. When executing the step 720, if all data supply nodes, for example the data supply nodes S1 to S6, have not been queried or investigated, the method progress to enquire from the supemodes 600 identities of other potential data supply nodes available within the peer-to-peer network 20.
If at the step 710 there is found to be sufficient capacity available to supply data blocks from the peer-to-peer network 20, the quota data (QCD) is then communicated to the data supply nodes, for example to the data supply nodes S1 to S6, in a step 740 resulting in the data supply nodes sending their data packets in a timely sequence as, for example, depicted in Table 3. When all the data blocks have been received at the user apparatus 50, the method progresses to a state P1 indicative that all requested data blocks, for example data bundles, have been successfully received at the user apparatus 50. Alternatively, in an event of not all data blocks being received, the method progresses to a decision stage 750 whereat performance of the data supply nodes that have been selected is investigated. At the decision stage 750, in an event that the data supply nodes, for example the data supply nodes S1 to S6, have been found to have been performing correctly, the method progresses to a completion state denoted by P2. Conversely, in an event that the data supply nodes are determined at the decision stage 750 to be performing unsatisfactorily, the method progresses to a further search decision stage 760; alternatively, the method aborts and commences from start. At the search stage 760, if the search for data supply nodes has been exhausted, the method generates for presentation to the user 670 a warning indicative of supply of the stream 60 being at risk; the warning is generated at a step denoted by P3. Alternatively, from the stage 760, in an event of the data supply nodes not having been exhaustively searched, data supply node substitutions are sought as denoted by 770 by enquiring at the supemodes 600.
In an option of certain data blocks, for example data bundles being unavailable, the method is optionally operable to send requests for a supply of specific data blocks, for example data bundles or data fragments, from the peer-to-peer network 20. Optionally, the request for specific fragments is sent directly to the data supply nodes S1 to S6 without querying at the supernodes 600.
The present invention is relevant to digital television services provided to the user 670 via the Internet with data blocks being provided in a peer-to-peer manner. By such manner of data block supply, problems of data streaming from centralized data sources as employed in contemporary digital cable television are circumvented.
Although use of the Internet is described in the foregoing, the present invention is also capable of being implemented in other types of digital communication network. Moreover, the availability of data supply nodes in the peer-to-peer network 20 is susceptible to dynamically changing in response to other users being coupled to the network 10 attempting to access data blocks stored in the peer-to-peer network 20. Thus, the method as depicted in Figures 4 and 5 is susceptible to being repeated frequently when the user apparatus 50 is in operation.
Optionally, for ensuring an optimum balance between Internet overhead and reliability of data block supply to the user apparatus, 3 to 10 data supply nodes are preferably employed to support the data stream 60; for example, Table 3 concerns the use of 6 data supply nodes for such purpose.
Optionally, the user apparatus 50 is capable of being dynamically reconfigured to also function as a data supply node in the peer-to-peer network 20 to supply data blocks received thereat to other users of the network 10; yet more optionally, the user apparatus 50 is also capable of being dynamically reconfigured to function as a supernode akin to the supemodes 600.
Software executable in computing hardware of the user apparatus 50 for implementing the present invention is susceptible to being downloaded via the network 10 to the user apparatus 50 thereby enabling the network 10 to be reconfigured or upgraded. The software product is optionally conveyed to the user apparatus 50 on a data carrier, for example on a memory medium such a digital storage disk, on an Internet carrier signal, on a radio signal, on a solid state memory medium or similar.
It will be appreciated that modifications to embodiments of the invention described in the foregoing are possible without departing from the scope of the invention as defined by the accompanying claims.
Reference numerals included within parentheses in the claims are intended to assist understanding of the subject matter claimed in the claims, and are not to be construed to be limiting the scope of the claims. Reference to the singular is also to be construed to relate to the plural.
Terms used in describing and claiming the present invention such as "include", "comprise", "consist of, "have", "are", "incorporate", are to be construed in a nonexclusive manner, namely to allow for other parts or components to be present which are not explicitly indicated.

Claims

1. A method of supplying one or more streams of data (60) via a data communication network (10, 20) to a user apparatus (50),
said data communication network (10, 20) including a plurality of data supply nodes distributed therein,
said one or more streams of data (60) corresponding to one or more data blocks stored amongst said data supply nodes,
said method including steps of:
(a) sending into said network (10, 20) one or more requests (610) for determining a distribution of said one or more data blocks amongst said data supply nodes;
(b) receiving within a time period one or more responses (610) generated in response to receipt of said one or more requests, said one or more responses being operable to convey information indicative of said distribution;
(c ) generating quota data (QCD) for at least a subset of said data supply nodes for use in supplying said one or more data blocks, said quota data (QCD) including instructions to supply to said user apparatus (50) said one or more data blocks from said subset of said data supply nodes as a function of said distribution;
(d) communicating said quota data to said subset of said data supply nodes for instructing said subset of said data supply nodes to supply their respective one or more data blocks as specified in said quota data (QCD); and
(e) receiving said one or more requested data blocks at said user apparatus (50) for user (670) consumption thereat.
2. A method as claimed in claim 1 , wherein said subset includes all said data supply nodes.
3. A method as claimed in claim 1 , wherein said function relates to supply of said one or more data blocks from said subset of data supply nodes at least partially in proportion to said distribution.
4. A method as claimed in claim 1 , wherein said method includes a step of including in said quota data an indication of a temporal sequence in which said one or more data blocks are to be supplied, said temporal sequence having said subset of data supply nodes specified in frequency in response to their ability to supply said one or more data blocks.
5. A method as claimed in claim 1 , 2, 3 or 4, wherein said method includes a step of similarly communicating said quota data to each of said subset of said data supply nodes, such that each data supply node in said subset also receives information regarding other of said subset of said data supply nodes requested to supply said one or more data blocks to said user apparatus.
6. A method as claimed on claim 4, wherein said temporal sequence defines a start time from which said one or more data blocks are to be sent to said user apparatus (50), wherein said subset of said data supply nodes are operable to synchronize mutually independently to said start time, and said subset of said data supply nodes are operable to supply their one or more data blocks specified in said quota data substantially at times relative to said start time as specified in said quota data.
7. A method as claimed in any one of the preceding claims, wherein said subset of said data supply nodes comprise in a range of 3 to 10 data supply nodes as specified in said quota data.
8. A method as claimed in any one of the preceding claims, wherein said one or more data packets are encoded (500) with redundancy for at least one or: (e) compensating or correcting for data loss and/or erasure errors; and (f) correcting for data error.
9. A method as claimed in claim 8, wherein said one or more data blocks are encoded at said subset of said data supply nodes, and are subsequently decoded at said user apparatus (50).
10. A method as claimed in claim 8, wherein said one or more data blocks are Reed- Solomon encoded (500) and said user apparatus (50) is operable to apply Reed-Solomon decoding (510) to said one or more data blocks received at said user apparatus (50).
11. A method as claimed in any one of the preceding claims, wherein said user apparatus (50) includes a data buffer for at least one of:
(a) buffering fluctuations in a rate of supply of said one or more data blocks from said subset of said data supply nodes; and
(b) reordering a sequence of received data blocks in an event that said subset of data supply nodes are operable to deviate from a temporal sequence of data block supply as specified in said quota data.
12. A method as claimed in any one of the preceding claims, wherein said user apparatus is operable to present:: (g) a data supply interruption message to said user (670); and/or
(h) program content derived from substitute data blocks to said user (670), in an event of said supply of said one or more requested data blocks specified in said quota data (QCD) not being received at said user apparatus (50) in a timely manner pursuant to said quota data.
13. A method as claimed in claim 12, wherein said user apparatus (50) is operable to send a warning message to said data communication network (10, 20) in said event, said warning message being operable to prompt one or more searches in said network (10, 20) for identifying one or more alternative data supply nodes which are capable of providing data blocks corresponding to those not reliably received at said user apparatus (50).
14. A method as claimed in claim 13, wherein said interruption message and/or said program content corresponding to said substitute data blocks are presented to said user (670) until said alternative data supply nodes are operable to supply said data blocks not hitherto reliably received.
15. A method as claimed in any one of the preceding claims, wherein said data communication network (10, 20) is at least partially implemented via the Internet, said one or more data blocks correspond to television-type program content, and said user apparatus (50) corresponds to a television-type display apparatus.
16. A method as claimed in any one of the preceding claims, wherein said one or more data blocks correspond to a request for program content executed by said user via said user apparatus (50) to said data communication network (10, 20).
17. A method as claimed in any one of the preceding claims, wherein said one or more data blocks stored in said data supply nodes are previously propagated to said data supply nodes in a peer-to-peer manner.
18. A method as claimed in claim 17, wherein one or more of said data blocks are stored in multiple copies within data supply nodes of said data communication network (20).
19. A user apparatus adapted for operation with a data communication network configured to execute a method as claimed in any one of the preceding claims.
20. A program-content supply system comprising at least one user apparatus (50) and a data communication network (10, 20) operable to supply one or more data blocks to said user apparatus (50), said one or more data blocks including program content, wherein said system is configured to execute a method as claimed in any one of claims 1 to 18.
21. A peer-to-peer digital television system comprising at least one television-type user apparatus and a data communication network based at least in part on the Internet, said system being operable to supply one or more data blocks to said user apparatus, said one or more data blocks including program content, wherein said system is configured to execute a method as claimed in any one of claims 1 to 18.
22. A software product recorded on a data carrier, said software product being executable on computing hardware for implementing a method as claimed in any one of claims 1 to 18.
PCT/EP2006/010645 2006-11-07 2006-11-07 Method of supplying streams of data WO2008055519A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/EP2006/010645 WO2008055519A1 (en) 2006-11-07 2006-11-07 Method of supplying streams of data
TW096139478A TW200835270A (en) 2006-11-07 2007-10-22 Method of supplying streams of data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2006/010645 WO2008055519A1 (en) 2006-11-07 2006-11-07 Method of supplying streams of data

Publications (1)

Publication Number Publication Date
WO2008055519A1 true WO2008055519A1 (en) 2008-05-15

Family

ID=38197745

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2006/010645 WO2008055519A1 (en) 2006-11-07 2006-11-07 Method of supplying streams of data

Country Status (2)

Country Link
TW (1) TW200835270A (en)
WO (1) WO2008055519A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030204602A1 (en) * 2002-04-26 2003-10-30 Hudson Michael D. Mediated multi-source peer content delivery network architecture
WO2005112334A2 (en) * 2004-05-07 2005-11-24 Home Box Office, Inc. Method and system for secure distribution of content over a communications network
EP1633111A1 (en) * 2004-09-03 2006-03-08 Microsoft Corporation A system and method for distributed streaming of scalable media

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030204602A1 (en) * 2002-04-26 2003-10-30 Hudson Michael D. Mediated multi-source peer content delivery network architecture
WO2005112334A2 (en) * 2004-05-07 2005-11-24 Home Box Office, Inc. Method and system for secure distribution of content over a communications network
EP1633111A1 (en) * 2004-09-03 2006-03-08 Microsoft Corporation A system and method for distributed streaming of scalable media

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
THINH NGUYEN ET AL: "Multiple Sender Distributed Video Streaming", IEEE TRANSACTIONS ON MULTIMEDIA, IEEE SERVICE CENTER, PISCATAWAY, NJ, US, vol. 6, no. 2, April 2004 (2004-04-01), pages 315 - 326, XP002409314, ISSN: 1520-9210 *

Also Published As

Publication number Publication date
TW200835270A (en) 2008-08-16

Similar Documents

Publication Publication Date Title
US9979771B2 (en) Adaptive variable fidelity media distribution system and method
JP5058468B2 (en) Method for erasure resistant encoding of streaming media, media having computer-executable instructions for performing the method, and system
JP4676833B2 (en) System and method for distributed streaming of scalable media
JP4920220B2 (en) Receiver-driven system and method in peer-to-peer network
US8943215B2 (en) Distributed smooth streaming utilizing dynamic manifests
US9288250B2 (en) Mobile multimedia real-time transcoding system, apparatus, storage medium and method
US9473812B2 (en) System and method for delivering content
KR101089562B1 (en) P2p live streaming system for high-definition media broadcasting and the method therefor
WO2013159703A1 (en) Offline download method, multimedia file download method and system thereof
US10085123B2 (en) Information processing apparatus and method, program, and content supply system
CN102055718B (en) Method, device and system for layering request content in http streaming system
CN101552800A (en) Method, device and system for providing media content
JP6774957B2 (en) Methods and equipment for flexible broadcast services based on multimedia broadcast multicast services
US20040250286A1 (en) System for communication of streaming digital data
WO2016136489A1 (en) Reception apparatus, reception method, transmission apparatus and transmission method
CN102209262B (en) Method, device and system for scheduling contents
CN103051556A (en) Stream media data control system and method thereof
CN113574492A (en) Information processing apparatus, information processing method, and program
CN102821316A (en) Improved video on demand (VOD) transmission method based on peer-to-peer computing core algorithm
CN101243689A (en) System and method for multimedia streaming using interleaved packetization
WO2008055519A1 (en) Method of supplying streams of data
Zimmerman et al. Retransmission-based error control in a many-to-many client-server environment
WO2023071468A1 (en) Live broadcasting method, content distribution service device, and storage medium
CN101212452A (en) Real-time transport protocol based multimedia data link control method
JP2004221756A (en) Information processing apparatus and information processing method, and computer program

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 06828939

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 06828939

Country of ref document: EP

Kind code of ref document: A1