Efficiently distributing video content using a combination of a peer-to-peer network and a content distribution network
Abstract
A method, system and computer program product for efficiently distributing video content. A peer-to-peer network and a content distribution network are used in combination to distribute video content. A content distribution network relies on servers distributed across the Internet to achieve high quality content delivery at a high cost. A peer-to-peer network distributes content among peers without incurring server side cost but may experience poor performance. The peer-to-peer network and the content distribution network are leveraged in a manner that achieves high content delivery and low cost by allowing the peer-to-peer network to serve as much content as possible while using the content distribution network to bootstrap the content in the peer-to-peer network and using it as a fallback whenever the peer-to-peer network has insufficient bandwidth, insufficient quality or when the missing piece of video content in the video buffer of the client device has an immediate deadline.
Claims
exact text as granted — not AI-modified1 . A method for efficiently distributing video content, the method comprising:
requesting from a tracker unit to one of join an existing live streaming channel, join a video on demand streaming channel and join a video conference, wherein said tracker unit is configured to keep track of active peers in a peer-to-peer network; receiving a list of active peers participating in one of said live streaming channel, said video on demand streaming channel and said video conference from said tracker unit; connecting, by a processor, to a subset of peers in said list provided by said tracker unit to become neighbors in said peer-to-peer network; and receiving a missing piece of video content from one of said neighbors in said peer-to-peer network or from a content distribution network server based on where said missing piece of video content is to be stored in a video buffer.
2 . The method as recited in claim 1 further comprising:
requesting periodically from said tracker unit for additional peers to form part of said peer-to-peer network if a number of said neighbors in said peer-to-peer network is below a threshold number.
3 . The method as recited in claim 1 further comprising:
sending a notification to said tracker unit to leave said peer-to-peer network; and
disconnecting all said neighbors in said peer-to-peer network.
4 . The method as recited in claim 3 further comprising:
removing an indication of a client by said tracker unit from said list of active peers in response to receiving said notification from said client.
5 . The method as recited in claim 1 further comprising:
connecting to one or more additional peers to become said neighbors in said peer-to-peer network if a number of said neighbors in said peer-to-peer network is below a threshold.
6 . The method as recited in claim 1 further comprising:
removing a peer from said peer-to-peer network if said peer has not provided a message within a duration of time.
7 . The method as recited in claim 1 further comprising:
removing a peer from said peer-to-peer network if a rate of loss video content provided by said peer exceeds a threshold.
8 . The method as recited in claim 1 , wherein said video buffer comprises a back buffer, a source protection window, an urgent window and a front buffer, wherein said back buffer comprises recently played pieces of video content, wherein said source protection window comprises pieces of video content whose deadlines are within a first number of pieces from a current play point, wherein said urgent window comprises a second number of pieces of video content after an end of said source protection window, wherein said front buffer comprises a third number of pieces of video content after an end of said urgent window.
9 . The method as recited in claim 8 , wherein pieces of video content in said front buffer are later in time than pieces of video content in said urgent window which are later in time than pieces of video content in said source protection window which are later in time than pieces of video content in said back buffer.
10 . The method as recited in claim 8 , wherein missing pieces of video content in said source protection window are fetched from said content distribution network server.
11 . The method as recited in claim 8 , wherein missing pieces of video content in said urgent window are fetched from said neighbors in said peer-to-peer network in an earliest-deadline-first fashion.
12 . The method as recited in claim 8 , wherein missing pieces of video content in said front buffer are fetched from one of said content distribution network server and said neighbors in said peer-to-peer network.
13 . The method as recited in claim 12 , wherein said missing pieces of video content are fetched from said neighbors in said peer-to-peer network in a rarest-latest-first fashion.
14 . The method as recited in claim 8 , wherein a size of said front buffer is based on a difference between a neighbor's play point and a play point of a client.
15 . The method as recited in claim 8 further comprising:
readjusting a size of said front buffer after performing one of a forward and a backward seek operation if a new play point is not within an upper bound limit of said front buffer.
16 . The method as recited in claim 1 further comprising:
selecting a number of peers to fetch a missing piece of video content from said content distribution network server; and
disseminating said fetched missing piece of video content to other peers in a peer-to-peer fashion in said peer-to-peer network.
17 . The method as recited in claim 1 further comprising:
receiving information about said neighbors in said peer-to-peer network, wherein said information comprises geographical location and upload bandwidth;
computing a randomized weight for said upload bandwidth of said neighbors; and
selecting a subset of said neighbors to fetch a missing piece of video content from said content distribution network server based on said randomized weight.
18 . The method as recited in claim 1 further comprising:
injecting a missing piece of video content from said content distribution network server when a neighbor in said peer-to-peer network has insufficient upload bandwidth.
19 . The method as recited in claim 18 further comprising:
exchanging piece availability via a bitmap with said neighbors in said peer-to-peer network;
computing a per-piece bandwidth deficit;
computing a cumulative bandwidth deficit;
computing a number of copies that need to be injected from said content distribution network server into a client's 1-hop neighborhood; and
selecting a subset of said neighbors in said client's 1-hop neighborhood to inject said missing piece of video content from said content distribution network server.
20 . The method as recited in claim 1 further comprising:
implementing a token bucket algorithm to control an amount of video content uploaded.
21 . The method as recited in claim 1 further comprising:
implementing an additive increase/multiplicative-decrease algorithm to control an amount of video content downloaded.
22 . The method as recited in claim 1 further comprising:
receiving said list of active peers that are within a first number of minutes from a play point of a client.
23 . The method as recited in claim 1 further comprising:
requesting one or more missing pieces of video content from one or more of said neighbors in said peer-to-peer network or from said content distribution network server.
24 . A computer program product embodied in a computer readable storage medium for efficiently distributing video content, the computer program product comprising the programming instructions for:
requesting from a tracker unit to one of join an existing live streaming channel, join a video on demand streaming channel and join a video conference, wherein said tracker unit is configured to keep track of active peers in a peer-to-peer network; receiving a list of active peers participating in one of said live streaming channel, said video on demand streaming channel and said video conference from said tracker unit; connecting to a subset of peers in said list provided by said tracker unit to become neighbors in said peer-to-peer network; and receiving a missing piece of video content from one of said neighbors in said peer-to-peer network or from a content distribution network server based on where said missing piece of video content is to be stored in a video buffer.
25 . The computer program product as recited in claim 24 further comprising the programming instructions for:
requesting periodically from said tracker unit for additional peers to form part of said peer-to-peer network if a number of said neighbors in said peer-to-peer network is below a threshold number.
26 . The computer program product as recited in claim 24 further comprising the programming instructions for:
sending a notification to said tracker unit to leave said peer-to-peer network; and
disconnecting all said neighbors in said peer-to-peer network.
27 . The computer program product as recited in claim 24 further comprising the programming instructions for:
connecting to one or more additional peers to become said neighbors in said peer-to-peer network if a number of said neighbors in said peer-to-peer network is below a threshold.
28 . The computer program product as recited in claim 24 further comprising the programming instructions for:
removing a peer from said peer-to-peer network if said peer has not provided a message within a duration of time.
29 . The computer program product as recited in claim 24 further comprising the programming instructions for:
removing a peer from said peer-to-peer network if a rate of loss video content provided by said peer exceeds a threshold.
30 . The computer program product as recited in claim 24 , wherein said video buffer comprises a back buffer, a source protection window, an urgent window and a front buffer, wherein said back buffer comprises recently played pieces of video content, wherein said source protection window comprises pieces of video content whose deadlines are within a first number of pieces from a current play point, wherein said urgent window comprises a second number of pieces of video content after an end of said source protection window, wherein said front buffer comprises a third number of pieces of video content after an end of said urgent window.
31 . The computer program product as recited in claim 30 , wherein pieces of video content in said front buffer are later in time than pieces of video content in said urgent window which are later in time than pieces of video content in said source protection window which are later in time than pieces of video content in said back buffer.
32 . The computer program product as recited in claim 30 , wherein missing pieces of video content in said source protection window are fetched from said content distribution network server.
33 . The computer program product as recited in claim 30 , wherein missing pieces of video content in said urgent window are fetched from said neighbors in said peer-to-peer network in an earliest-deadline-first fashion.
34 . The computer program product as recited in claim 30 , wherein missing pieces of video content in said front buffer are fetched from one of said content distribution network server and said neighbors in said peer-to-peer network.
35 . The computer program product as recited in claim 30 , wherein said missing pieces of video content are fetched from said neighbors in said peer-to-peer network in a rarest-latest-first fashion.
36 . The computer program product as recited in claim 30 , wherein a size of said front buffer is based on a difference between a neighbor's play point and a play point of a client.
37 . The computer program product as recited in claim 30 further comprising the programming instructions for:
readjusting a size of said front buffer after performing one of a forward and a backward seek operation if a new play point is not within an upper bound limit of said front buffer.
38 . The computer program product as recited in claim 24 further comprising the programming instructions for:
selecting a number of peers to fetch a missing piece of video content from said content distribution network server to be disseminated to other peers in a peer-to-peer fashion in said peer-to-peer network.
39 . The computer program product as recited in claim 24 further comprising the programming instructions for:
receiving information about said neighbors in said peer-to-peer network, wherein said information comprises geographical location and upload bandwidth;
computing a randomized weight for said upload bandwidth of said neighbors; and
selecting a subset of said neighbors to fetch a missing piece of video content from said content distribution network server based on said randomized weight.
40 . The computer program product as recited in claim 24 further comprising the programming instructions for:
injecting a missing piece of video content from said content distribution network server when a neighbor in said peer-to-peer network has insufficient upload bandwidth.
41 . The computer program product as recited in claim 40 further comprising the programming instructions for:
exchanging piece availability via a bitmap with said neighbors in said peer-to-peer network;
computing a per-piece bandwidth deficit;
computing a cumulative bandwidth deficit;
computing a number of copies that need to be injected from said content distribution network server into a client's 1-hop neighborhood; and
selecting a subset of said neighbors in said client's 1-hop neighborhood to inject said missing piece of video content from said content distribution network server.
42 . The computer program product as recited in claim 24 further comprising the programming instructions for:
implementing a token bucket algorithm to control an amount of video content uploaded.
43 . The computer program product as recited in claim 24 further comprising the programming instructions for:
implementing an additive increase/multiplicative-decrease algorithm to control an amount of video content downloaded.
44 . The computer program product as recited in claim 24 further comprising the programming instructions for:
receiving said list of active peers that are within a first number of minutes from a play point of a client.
45 . The computer program product as recited in claim 24 further comprising the programming instructions for:
requesting one or more missing pieces of video content from one or more of said neighbors in said peer-to-peer network or from said content distribution network server.
46 . A system, comprising:
a memory unit for storing a computer program for efficiently distributing video content; and a processor coupled to said memory unit, wherein said processor, responsive to said computer program, comprises
circuitry for requesting from a tracker unit to one of join an existing live streaming channel, join a video on demand streaming channel and join a video conference, wherein said tracker unit is configured to keep track of active peers in a peer-to-peer network;
circuitry for receiving a list of active peers participating in one of said live streaming channel, said video on demand streaming channel and said video conference from said tracker unit;
circuitry for connecting to a subset of peers in said list provided by said tracker unit to become neighbors in said peer-to-peer network; and
circuitry for receiving a missing piece of video content from one of said neighbors in said peer-to-peer network or from a content distribution network server based on where said missing piece of video content is to be stored in a video buffer.
47 . The system as recited in claim 46 , wherein said processor further comprises:
circuitry for requesting periodically from said tracker unit for additional peers to form part of said peer-to-peer network if a number of said neighbors in said peer-to-peer network is below a threshold number.
48 . The system as recited in claim 46 , wherein said processor further comprises:
circuitry for sending a notification to said tracker unit to leave said peer-to-peer network; and circuitry for disconnecting all said neighbors in said peer-to-peer network.
49 . The system as recited in claim 46 , wherein said processor further comprises:
circuitry for connecting to one or more additional peers to become said neighbors in said peer-to-peer network if a number of said neighbors in said peer-to-peer network is below a threshold.
50 . The system as recited in claim 46 , wherein said processor further comprises:
circuitry for removing a peer from said peer-to-peer network if said peer has not provided a message within a duration of time.
51 . The system as recited in claim 46 , wherein said processor further comprises:
circuitry for removing a peer from said peer-to-peer network if a rate of loss video content provided by said peer exceeds a threshold.
52 . The system as recited in claim 46 , wherein said video buffer comprises a back buffer, a source protection window, an urgent window and a front buffer, wherein said back buffer comprises recently played pieces of video content, wherein said source protection window comprises pieces of video content whose deadlines are within a first number of pieces from a current play point, wherein said urgent window comprises a second number of pieces of video content after an end of said source protection window, wherein said front buffer comprises a third number of pieces of video content after an end of said urgent window.
53 . The system as recited in claim 52 , wherein pieces of video content in said front buffer are later in time than pieces of video content in said urgent window which are later in time than pieces of video content in said source protection window which are later in time than pieces of video content in said back buffer.
54 . The system as recited in claim 52 , wherein missing pieces of video content in said source protection window are fetched from said content distribution network server.
55 . The system as recited in claim 52 , wherein missing pieces of video content in said urgent window are fetched from said neighbors in said peer-to-peer network in an earliest-deadline-first fashion.
56 . The system as recited in claim 52 , wherein missing pieces of video content in said front buffer are fetched from one of said content distribution network server and said neighbors in said peer-to-peer network.
57 . The system as recited in claim 52 , wherein said missing pieces of video content are fetched from said neighbors in said peer-to-peer network in a rarest-latest-first fashion.
58 . The system as recited in claim 52 , wherein a size of said front buffer is based on a difference between a neighbor's play point and a play point of a client.
59 . The system as recited in claim 52 , wherein said processor further comprises:
circuitry for readjusting a size of said front buffer after performing one of a forward and a backward seek operation if a new play point is not within an upper bound limit of said front buffer.
60 . The system as recited in claim 46 , wherein said processor further comprises:
circuitry for selecting a number of peers to fetch a missing piece of video content from said content distribution network server to be disseminated to other peers in a peer-to-peer fashion in said peer-to-peer network.
61 . The system as recited in claim 46 , wherein said processor further comprises:
circuitry for receiving information about said neighbors in said peer-to-peer network, wherein said information comprises geographical location and upload bandwidth; circuitry for computing a randomized weight for said upload bandwidth of said neighbors; and circuitry for selecting a subset of said neighbors to fetch a missing piece of video content from said content distribution network server based on said randomized weight.
62 . The system as recited in claim 46 , wherein said processor further comprises:
circuitry for injecting a missing piece of video content from said content distribution network server when a neighbor in said peer-to-peer network has insufficient upload bandwidth.
63 . The system as recited in claim 62 , wherein said processor further comprises:
circuitry for exchanging piece availability via a bitmap with said neighbors in said peer-to-peer network; circuitry for computing a per-piece bandwidth deficit; circuitry for computing a cumulative bandwidth deficit; circuitry for computing a number of copies that need to be injected from said content distribution network server into a client's 1-hop neighborhood; and circuitry for selecting a subset of said neighbors in said client's 1-hop neighborhood to inject said missing piece of video content from said content distribution network server.
64 . The system as recited in claim 46 , wherein said processor further comprises:
circuitry for implementing a token bucket algorithm to control an amount of video content uploaded.
65 . The system as recited in claim 46 , wherein said processor further comprises:
circuitry for implementing an additive increase/multiplicative-decrease algorithm to control an amount of video content downloaded.
66 . The system as recited in claim 46 , wherein said processor further comprises:
circuitry for receiving said list of active peers that are within a first number of minutes from a play point of a client.
67 . The system as recited in claim 46 , wherein said processor further comprises:
circuitry for requesting one or more missing pieces of video content from one or more of said neighbors in said peer-to-peer network or from said content distribution network server.Join the waitlist — get patent alerts
Track US2012297405A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.