IP Library Granted Patent US 9,948,710
Granted Patent B2
US 9,948,710 · App. 14/801,778 · Granted Apr 17, 2018

Peer-to-peer live streaming

Inventor: Bram Cohen (Mill Valley, CA)
Assignee: Rainberry, Inc.
H04L67/108H04L29/08333H04L29/08405H04L65/4069H04L67/104H04L67/1076H04L65/602
View Patent ↗
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 9,948,710
App. No.
14/801,778
Granted
Apr 17, 2018
Kind
B2
Abstract

According to a peer-to-peer protocol, a peer-to-peer network includes multiple clubs and multiple peers that receive content distributed by a source of the network. Each of the plurality of peers is part of at least two of the clubs. As content is generated, the source divides the content into multiple data blocks and assigns each data block to a club. Each data block is transmitted to peers that belong to the club assigned to the data block. When a peer in a club receives a data block assigned to that club, the peer distributes the data block to other peers in the club. Additionally, the peer transmits the data block to peers in other clubs. Also, the peer receives data blocks assigned to other clubs from peers that are not members of the club.

Claims (45)

1. A method for distributing content in a peer-to-peer network according to a protocol, the method comprising:

dividing, by a source computer system, content into a plurality of data blocks;

assigning, by the source computer system, each of the plurality of data blocks to one of a plurality of clubs in a peer-to-peer network, the peer-to-peer network including a plurality of peers, each of the plurality of peers part of at least two clubs from the plurality of clubs;

transmitting, by the source computer system, each of the plurality of data blocks to at least one peer that is part of the club to which the data block is assigned;

wherein an authentication signature is attached to each of the plurality of data blocks;

wherein a peer in a club of the plurality of clubs transmits a notification to other peers in the club with which it has download connections, when the peer receives a particular data block assigned to the club and successfully authenticates the particular data block using the authentication signature of the particular data block, the notification preventing the other peers from transmitting the particular data block to the peer;

wherein the peer, upon authenticating the particular data block, transmits the particular data block to at least one receiving peer in the club with which the peer has an upload connection, in response to not having yet received a notification from the at least one receiving peer indicating that the at least one receiving peer has already received the particular data block; and

wherein the peer has download connections with a first subset of peers in the club and upload connections with a second subset of peers in the club.

2. The method of claim 1 , wherein a data block from the plurality of data blocks is assigned to a club based on a sequence number of the data block and a number of clubs of the peer-to-peer network.

3. The method of claim 2 , wherein assigning the data block to a club comprises:

determining a result of an operation including the sequence number of the data block modulo the number of clubs of the peer-to-peer network; and

assigning the data block to a club associated with the result of the operation.

4. The method of claim 1 , wherein the source has an upload connection with a peer in each of the plurality of clubs.

5. The method of claim 1 wherein the content is live content captured by the source computer system.

6. The method of claim 1 , wherein each of the plurality of data blocks is transmitted via a unidirectional UDP connection.

7. The method of claim 1 , wherein the authentication signature is a root hash of a hash tree, a hash of each of the plurality of data blocks part of the hash tree.

8. The method of claim 1 , wherein each of the plurality of clubs includes the source computer system and a set of peers.

9. The method of claim 1 , wherein each of the plurality of peers has at least two download connections and at least two upload connections with peers in each club that the peer is a part of.

10. A computer system for distributing content in a peer-to-peer network according to a protocol, the computer system comprising:

one or more computer processors; and

a non-transitory computer readable storage medium storing computer program instructions executed by the one or more computer processors for:

dividing content into a plurality of data blocks;

assigning each of the plurality of data blocks to one of a plurality of clubs in a peer-to-peer network, the peer-to-peer network including a plurality of peers, each of the plurality of peers part of at least two clubs from the plurality of clubs;

transmitting each of the plurality of data blocks to at least one peer that is part of the club to which the data block is assigned;

wherein an authentication signature is attached to each of the plurality of data blocks;

wherein a peer in a club of the plurality of clubs transmits a notification to other peers in the club with which it has download connections, when the peer receives a particular data block assigned to the club and successfully authenticates the particular data block using the authentication signature of the particular data block, the notification preventing the other peers from transmitting the particular data block to the peer;

wherein the peer, upon authenticating the particular data block transmits the particular data block to at least one receiving peer in the club with which the peer has an upload connection, in response to not having yet received a notification from the at least one receiving peer indicating that the at least one receiving peer has already received the particular data block; and

wherein the peer has download connections with a first subset of peers in the club and upload connections with a second subset of peers in the club.

11. A computer program product for distributing content in a peer-to-peer network according to a protocol, the computer program product having a non-transitory computer-readable storage medium having computer program instructions for:

dividing, by a source computer system, content into a plurality of data blocks;

assigning, by the source computer system, each of the plurality of data blocks to one of a plurality of clubs in a peer-to-peer network, the peer-to-peer network including a plurality of peers, each of the plurality of peers part of at least two clubs from the plurality of clubs;

transmitting, by the source computer system, each of the plurality of data blocks to at least one peer that is part of the club to which the data block is assigned;

wherein an authentication signature is attached to each of the plurality of data blocks;

wherein a peer in a club of the plurality of clubs transmits a notification to other peers in the club with which it has download connections, when the peer receives a particular data block assigned to the club and successfully authenticates the particular data block using the authentication signature of the particular data block, the notification preventing the other peers from transmitting the particular data block to the peer;

wherein the peer, upon authenticating the particular data block, transmits the particular data block to at least one receiving peer in the club with which the peer has an upload connection, in response to not having yet received a notification from the at least one receiving peer indicating that the at least one receiving peer has already received the particular data block; and

wherein the peer has download connections with a first subset of peers in the club and upload connections with a second subset of peers in the club.

12. The computer program product of claim 11 , wherein a data block from the plurality of data blocks is assigned to a club based on a sequence number of the data block and a number of clubs of the peer-to-peer network.

13. The computer program product of claim 12 , wherein assigning the data block to a club comprises:

determining a result of an operation including the sequence number of the data block modulo the number of clubs of the peer-to-peer network; and

assigning the data block to a club associated with the result of the operation.

14. The computer program product of claim 11 , wherein the source has an upload connection with a peer in each of the plurality of clubs.

15. The computer program product of claim 11 , wherein the content is live content captured by the source computer system.

16. The computer program product of claim 11 , wherein each of the plurality of data blocks is transmitted via a unidirectional UDP connection.

17. The computer program product of claim 11 , wherein the authentication signature is a root hash of a hash tree, a hash of each of the plurality of data blocks part of the hash tree.

18. The computer program product of claim 11 , wherein each of the plurality of clubs includes the source computer system and a set of peers.

Assignments (3)
CHANGE OF NAME Recorded Jul 27, 2021
From: BITTORRENT, INC.
To: RAINBERRY, INC.
Reel/Frame 056995/0889 →
CHANGE OF NAME Recorded Mar 8, 2018
From: BITTORRENT, INC.
To: RAINBERRY, INC.
Reel/Frame 045149/0213 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 17, 2015
From: COHEN, BRAM
To: BITTORRENT, INC.
Reel/Frame 036119/0790 →
Continuity (3)
Division 13407635 · Feb 28, 2012
Provisional Application 61447583 · Feb 28, 2011
Related Publication 20150326657A1 · Nov 12, 2015