IP Library Granted Patent US 8,775,456
Granted Patent B2
US 8,775,456 · App. 12/552,169 · Granted Jul 8, 2014

System and method for scheduled and collaborative distribution of software and data to many thousands of clients over a network using dynamic virtual proxies

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 8,775,456
App. No.
12/552,169
Granted
Jul 8, 2014
Kind
B2
Abstract

A method and system for distributing content from a server computer to a number of client computers is disclosed. A file to be distributed to a requesting client computer is identified. If another client computer of the plurality of client computers can distribute the file to the requesting client computer, the requesting client computer requests the file from the other client computer. If no client computer can distribute the file to the requesting client computer, the requesting client computer requests the first file from the server computer. Then the requesting client computer receives the first file from either the other client computer or the server computer. Each client computer can act both as a client and a server to the other client computers, providing content that would otherwise be provided by the server computer.

Claims (80)

1. A method of distributing content, the method comprising:

requesting, from a server computer by a first client computer of a plurality of client computers, an index of the content, the index including a list of associated files for the content;

receiving, by the first client computer, the index of the content from the server computer;

identifying, by the first client computer, a first file listed in the index that is not currently held by the first client computer of the plurality of client computers;

requesting the first file from a second client computer of the plurality of client computers if the second client computer of the plurality of client computers can distribute the first file to the first client computer, wherein requesting the first file from the second client computer comprises:

broadcasting information about the first file to more than one of the plurality of client computers;

receiving a response from the second client computer of the plurality of client computers indicating that the second client computer can distribute the first file to the first client computer; and

requesting the first file from the second client computer of the plurality of client computers;

requesting the first file from a server computer if no client computer of the plurality of client computers can distribute the first file to the first client computer; and

receiving the first file on the first client computer.

2. The method of claim 1 , wherein requesting the first file from the second client computer further comprises:

selecting the second client computer from multiple client computers of the plurality of client computers if the first client computer receives responses from the multiple client computers of the plurality of client computers indicating that each of the multiple client computers can distribute the first file to the first client computer.

3. The method of claim 1 , wherein receiving the first file on the first client computer comprises:

establishing a sequence of checkpoints while receiving the first file on the first computer; and

restarting the receiving of the first file on the first computer from a most recently established checkpoint of the sequence of checkpoints if the receiving of the first file on the first computer is interrupted.

4. The method of claim 1 , wherein requesting the first file from the second client computer further comprises:

requesting a first portion of the first file from the second client computer; and

requesting a second portion of the first file, the second portion being different from the first portion, from a third client computer of the plurality of client computers.

5. The method of claim 1 , further comprising:

scheduling distribution of the content to the first client computer and to a fourth client computer of the plurality of client computers,

wherein distribution of the content to the first client computer is scheduled at a different time than distribution of the content to the fourth client computer.

6. The method of claim 1 ,

wherein indicating that the second client computer can distribute the first file to the first client computer comprises:

indicating that the second client computer holds all of the first file.

7. The method of claim 1 ,

wherein indicating that the second client computer can distribute the first file to the first client computer comprises:

indicating that the second client computer is obtaining the first file; and

indicating how much of the first file the second client computer has obtained.

8. The method of claim 1 ,

wherein indicating that the second client computer can distribute the first file to the first client computer comprises:

indicating a load upon the second client computer.

9. The method of claim 1 ,

wherein indicating that the second client computer can distribute the first file to the first client computer comprises:

indicating how many clients are receiving files from the second client computer.

10. The method of claim 9 , wherein requesting the first file from the second client computer further comprises:

requesting the first file from the second client computer; and

receiving a rejection from the second client computer if the second client computer is servicing more than a predetermined number of requests for files.

11. The method of claim 1 , further comprising:

receiving a request for the first file from another client computer of the plurality of client computers; and

sending the first file to the another client computer while receiving the first file from the second client computer.

12. The method of claim 1 , further comprising:

receiving a broadcast message from another client computer of the plurality of client computers asking which of the plurality of client computers has a second file; and

in the event the second file is held by the first client computer:

responding to the broadcast message with an indication that the first client computer has the second file;

receiving a request for the second file from the another client computer; and

sending the second file to the another client computer while receiving the first file from the second client computer.

13. A non-transitory computer readable medium with instructions for a client computer stored thereon wherein the instructions cause a processor of the client computer to perform the method of claim 1 .

14. A content distribution system comprising:

a server computer; and

a plurality of client computers communicatively coupled to each other and to the server computer, at least one of the plurality of client computers being programmed to perform at least a portion of the method of claim 1 , wherein the entire method of claim 1 is performed collectively by the server computer and the plurality of client computers.

15. A method of distributing content, the method comprising:

requesting, from a server computer by a first client computer of a plurality of client computers, an index of the content, the index including a list of associated files for the content;

receiving, by the first client computer, the index of the content from the server computer;

identifying, by the first client computer, a first file listed in the index that is not currently held by the first client computer of the plurality of client computers;

requesting the first file from a second client computer of the plurality of client computers if the second client computer of the plurality of client computers can distribute the first file to the first client computer, wherein requesting the first file from the second client computer comprises:

broadcasting information about the first file to more than one of the plurality of client computers;

creating a list of client computers that can distribute the first file to the first client computer;

selecting the second client computer from the list of client computers that can distribute the first file to the first client computer; and

requesting the first file from the second client computer; and

receiving the first file on the first client computer, wherein receiving the first file on the first client computer comprises:

establishing a sequence of checkpoints while receiving the first file on the first client computer;

requesting the first file from a third client computer of the list of client computers that can distribute the first file to the first client computer if receiving the first file on the first client computer is interrupted; and

receiving the first file on the first client computer from the third client computer from a most-recently established checkpoint of the sequence of checkpoints.

16. An endpoint computer for use with a content distribution system comprising a server computer and a plurality of client computers, the endpoint computer comprising:

a processor; and

a tuner process,

wherein the processor is programmed to execute the tuner process to perform the operations of:

requesting, from the server computer, a content index of a content for distribution by the content distribution system, the content index including a list of associated files for the content;

receiving, from the server computer, the content index;

identifying, by the endpoint computer, a first file listed in the content index that is not currently held by the endpoint computer;

requesting the first file from a second client computer of the plurality of client computers if the second client computer of the plurality of client computers can distribute the first file to the endpoint computer, wherein requesting the first file from the second client computer comprises:

broadcasting information about the first file to more than one of the plurality of client computers;

receiving a response from the second client computer of the plurality of client computers indicating that the second client computer can distribute the first file to the endpoint computer; and

requesting the first file from the second client computer of the plurality of client computers;

requesting the first file from the server computer if no client computer of the plurality of client computers can distribute the first file to the endpoint computer; and

receiving the first file on the endpoint computer.

17. The endpoint computer of claim 16 , further comprising:

a first policy data; and

wherein the operation of requesting the first file from the second client computer further comprises:

selecting, in accordance with the first policy data, the second client computer from multiple client computers of the plurality of client computers if the first client computer receives responses from the multiple client computers of the plurality of client computers indicating that each of the multiple client computers can distribute the first file to the first client computer.

Assignments (13)
GRANT OF FIRST LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0628 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Nov 13, 2024
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 069352/0568 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052854/0139) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0617 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (052844/0646) Recorded Aug 6, 2024
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 068339/0408 →
OMNIBUS ASSIGNMENT OF SECURITY INTERESTS IN PATENT COLLATERAL Recorded Mar 4, 2024
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS RESIGNING COLLATERAL AGENT
To: GOLDMAN SACHS BANK USA, AS SUCCESSOR COLLATERAL AGENT
Reel/Frame 066729/0889 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 1, 2024
From: ALTER DOMUS (US) LLC
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.
Reel/Frame 066567/0283 →
GRANT OF SECOND LIEN SECURITY INTEREST IN PATENT RIGHTS Recorded Sep 30, 2021
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: ALTER DOMUS (US) LLC
Reel/Frame 057683/0582 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052854/0139 →
SECURITY INTEREST Recorded Jun 4, 2020
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 052844/0646 →
RELEASE OF PATENTS Recorded Oct 5, 2018
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: BMC SOFTWARE, INC.; BLADELOGIC, INC.; BMC ACQUISITION L.L.C.
Reel/Frame 047198/0468 →
SECURITY INTEREST Recorded Oct 2, 2018
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047185/0744 →
SECURITY AGREEMENT Recorded Sep 11, 2013
From: BMC SOFTWARE, INC.; BLADELOGIC, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 031204/0225 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 1, 2009
From: SHRIVASTAVA, NITISH; TIWARI, NEEL; JHA, PRANAV
To: BMC SOFTWARE, INC.
Reel/Frame 023178/0947 →