IP Library Granted Patent US 9,037,657
Granted Patent B2
US 9,037,657 · App. 12/994,030 · Granted May 19, 2015

Systems and methods for peer-to-peer bandwidth allocation

Inventors: Jason Nieh (New York, NY); Alexander Sherman (New York, NY); Clifford Stein (Tenafly, NJ)
Assignee: The Trustees of Columbia University in the City of New York
H04L67/104H04L67/108H04L67/1082
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,037,657
App. No.
12/994,030
Granted
May 19, 2015
Kind
B2
Abstract

Apparatus, systems, and methods can operate to provide efficient data transfer in a peer-to-peer network. A list of peer computers can be accessed and sorted by a data exchange metric. A requester peer is selected by traversing the list from a peer computer with a smallest data exchange metric to a peer computer with a largest data exchange metric to identify a peer computer with a pending data block request, the peer computer with the pending data block request being the requester peer and having an associated data exchange metric. A data block is then transmitted to the requester peer and the data exchange metric associated with the requester peer is updated to provide an updated data exchange metric for the requester peer. The list of peer computers can then be resorted. Additional apparatus, systems, and methods are disclosed.

Claims (54)

1. A computer-implemented method comprising:

accessing, by a transmitter peer, a list of peer computers each having a respective data exchange metric, the list created, stored, and maintained at the transmitter peer, the list including peers with which the transmitter peer has had at least one transaction, and the list including at least one peer with a data block request and at least one peer without a data block request, the data exchange metric for each respective peer computer representing the difference between bytes sent to a respective peer computer from the transmitter peer and bytes received from the respective peer computer at the transmitter peer, and the list sorted by the data exchange metric from the greatest deficit to the least deficit;

selecting, by the transmitter peer, a requester peer by traversing the list to identify a peer computer with a pending data block request, the peer computer with the pending data block request being the requester peer and having an associated data exchange metric, wherein selecting the requester peer comprises:

maintaining a total amount of received data associated with each peer computer in the list of peer computers; and

using the total amount of received data to select among a plurality of peer computers having equal data exchange metrics by selecting from the plurality of peer computers having equal data exchange metrics a peer computer having a largest total amount of transmitted data; and

transmitting a data block to the requester peer from the transmitter peer.

2. The computer-implemented method of claim 1 , wherein selecting the requester peer comprises determining whether the requester peer is able to receive the data block, and wherein transmitting the data block comprises transmitting the data block to the requester peer when the requester peer is able to receive the data block.

3. The computer-implemented method of claim 1 , comprising:

updating the data exchange metric associated with the requester peer to provide an updated data exchange metric for the requester peer; and

resorting the list of peer computers.

4. The computer-implemented method of claim 3 , wherein updating the data exchange metric comprises:

adjusting the data exchange metric by the size of the data block transmitted to the requester peer.

5. The computer-implemented method of claim 3 , wherein resorting the list of peer computers comprises:

removing the requester peer from the list; and

inserting the requester peer into the list based on the updated data exchange metric.

6. The computer-implemented method of claim 1 , comprising:

determining whether the requester peer already has a data block corresponding to the pending data block request; and

selecting an alternative data block to transmit to the requester peer when the requester peer already has the data block corresponding to the pending data block request.

7. The computer-implemented method of claim 6 , wherein selecting the alternative data block comprises:

identifying a rare data block.

8. The computer-implemented method of claim 1 , comprising:

determining whether a playback position of the requester peer is beyond a sequence number of a data block corresponding to the pending data block request; and

selecting an alternative data block to transmit to the requester peer when the playback position of the requester peer is beyond the sequence number of the data block corresponding to the pending data block request.

9. The computer-implemented method of claim 8 , wherein selecting the alternative data block comprises:

identifying a rare data block.

10. A transmitter peer system comprising:

a memory; and

a processor coupled to the memory, the processor configured to:

access a list of peer computers each having a respective data exchange metric, the list created, stored, and maintained in the memory at the transmitter peer, the list including peers with which the transmitter peer has had at least one transaction, and the list including at least one peer with a data block request and at least one peer without a data block request, the data exchange metric for each respective peer computer representing the difference between bytes sent to a respective peer computer from the transmitter peer and bytes received from the respective peer computer at the transmitter peer, and the list sorted by the data exchange metric from the greatest deficit to the least deficit;

select a requester peer by traversing the list to identify a peer computer with a pending data block request, the peer computer with the pending data block request being the requester peer and having an associated data exchange metric, and to select the requester peer by: maintaining a total amount of received data associated with each peer computer in the list of peer computers and using the total amount of received data to select among a plurality of peer computers having equal data exchange metrics by selecting from the plurality of peer computers having equal data exchange metrics a peer computer having a largest total amount of transmitted data; and

transmit a data block to the requester peer.

11. The system of claim 10 , wherein the processor is configured to:

select the requester peer by determining whether the requester peer is able to receive the data block, and

transmit the data block by transmitting the data block to the requester peer when the requester peer is able to receive the data block.

12. The system of claim 10 , wherein the processor is configured to:

update the data exchange metric associated with the requester peer to provide an updated data exchange metric for the requester peer; and

resort the list of peer computers.

13. The system of claim 12 , wherein the processor is configured to update the data exchange metric by:

adjusting the data exchange metric by the size of the data block transmitted to the requester peer.

14. The system of claim 12 , wherein the processor is configured to resort the list of peer computers by:

removing the requester peer from the list; and

inserting the requester peer into the list based on the updated data exchange metric.

15. The system of claim 10 , wherein the processor is configured to:

determine whether the requester peer already has a data block corresponding to the pending data block request; and

select an alternative data block to transmit to the requester peer when the requester peer already has the data block corresponding to the pending data block request, wherein the alternative data block is a rare block.

16. The system of claim 10 , wherein the processor is configured to:

determine whether a playback position of the requester peer is beyond a sequence number of a data block corresponding to the pending data block request; and

select an alternative data block to transmit to the requester peer when the playback position of the requester peer is beyond the sequence number of the data block corresponding to the pending data block request, wherein the alternative data block is a rare block.

17. A non-transitory machine-readable medium including instructions, which when executed by a transmitter peer, cause the transmitter peer to:

access a list of peer computers each having a respective data exchange metric, the list created, stored, and maintained at the transmitter peer, the list including peers with which the transmitter peer has had at least one transaction, and the list including at least one peer with a data block request and at least one peer without a data block request, the data exchange metric for each respective peer computer representing the difference between bytes sent to a respective peer computer from the transmitter peer and bytes received from the respective peer computer at the transmitter peer, and the list sorted by the data exchange metric from the greatest deficit to the least deficit;

select a requester peer by traversing the list to identify a peer computer with a pending data block request, the peer computer with the pending data block request being the requester peer and having an associated data exchange metric, wherein to select the requester peer includes instructions to:

maintain a total amount of received data associated with each peer computer in the list of peer computers; and

use the total amount of received data to select among a plurality of peer computers having equal data exchange metrics by selecting from the plurality of peer computers having equal data exchange metrics a peer computer having a largest total amount of transmitted data; and

transmit a data block to the requester peer.

Assignments (4)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2011
From: DYNASEP LLC
To: DJLL HOLDINGS, LLC
Reel/Frame 027043/0188 →
CONFIRMATORY LICENSE Recorded Aug 15, 2011
From: COLUMBIA UNIVERSITY NEW YORK MORNINGSIDE
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 026746/0970 →
CONFIRMATORY LICENSE Recorded Aug 11, 2011
From: COLUMBIA UNIVERSITY NEW YORK MORNINGSIDE
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 026735/0348 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 16, 2011
From: NIEH, JASON; SHERMAN, ALEXANDER; STEIN, CLIFFORD
To: TRUSTEES OF COLUMBIA UNIVERSITY IN THE CITY OF NEW YORK, THE
Reel/Frame 025791/0234 →
Continuity (4)
Provisional Application 61055917 · May 23, 2008
Provisional Application 61214107 · Apr 20, 2009
Provisional Application 61214105 · Apr 20, 2009
Related Publication 20110131278A1 · Jun 2, 2011