IP Library Patent Application 13109690
Patent Application
App. No. 13/109,690

EFFICIENTLY DISTRIBUTING VIDEO CONTENT USING A COMBINATION OF A PEER-TO-PEER NETWORK AND A CONTENT DISTRIBUTION NETWORK

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
13/109,690
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 (146)

1 . 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.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 3, 2011
From: YANG, YANG RICHARD
To: YALE UNIVERSITY
Reel/Frame 026693/0193 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 17, 2011
From: ZHANG, YIN; QIU, LILI
To: SPLENDORSTREAM, LLC
Reel/Frame 026293/0656 →