IP Library › Granted Patent US 9,559,956
Granted Patent B2
US 9,559,956 · App. 13/364,705 · Granted Jan 31, 2017

Sharing bandwidth among multiple users of network applications

Inventors: Anand Raghuraman (Campbell, CA); Alok Kumar (Fremont, CA); Uday Naik (Fremont, CA); Aspi Siganporia (Saratoga, CA); Sushant Jain (Sunnyvale, CA)
Assignee: Google Inc.
H04L47/00H04W72/0446
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,559,956
App. No.
13/364,705
Granted
Jan 31, 2017
Kind
B2
Abstract

A system and method are provided that allocate bandwidth on a global large scale network. Bandwidth allocation is based on the predicted bandwidth demands of the network users. Each user may be assigned one of a plurality of different values that determines the amount of bandwidth allocated to that user. In instances where an application runs on behalf of a plurality of remote clients, a system and method is provided that allows for the allocation of bandwidth based each individual remote client.

Claims (50)

1. A method of allocating bandwidth over a network, the method comprising:

receiving, on a network, a request for a shared-service application to run on a host device on behalf of a plurality of remote clients;

receiving an estimation of a volume of network traffic associated with running the shared-service application for each remote client;

classifying the plurality of remote clients, based at least in part on the received estimation, as either being in a first classification or a second classification, wherein classifying the plurality of remote clients includes:

aggregating the estimation of the volume of network traffic associated with each of the remote clients to create a network traffic total;

selecting at least some of the plurality of remote clients in an order of descending estimation of the volume of network traffic;

upon selecting each remote client, aggregating the estimation of the volume of network traffic for all selected remote clients;

stopping the selection of remote clients when the selected remote clients have an aggregated estimation of the volume of network traffic that is above a predetermined fraction of the network traffic total;

classifying all selected remote clients into the first classification; and

classifying all remote clients that have not been selected into the second classification;

transmitting classifications of the plurality of remote clients to the host device; and

allocating bandwidth for the shared-service application,

wherein remote clients classified with the first classification are allocated bandwidth individually, and wherein the remote clients classified with the second classification are provided bandwidth as part of a group.

2. The method of claim 1 , wherein classifying the plurality of remote clients includes:

determining whether the estimation of the volume of network traffic for each remote client is below a predetermined threshold;

classifying all remote clients having estimation of the volume of network traffic that is not below the predetermined threshold with the first classification; and

classifying all remote clients having estimation of the volume of network traffic that is below the predetermined threshold with the second classification.

3. The method of claim 1 , wherein allocating bandwidth includes providing bandwidth for each remote client having the first classification based at least in part on one of a plurality of weight values associated with each of the remote clients.

4. The method of claim 1 , further comprising:

receiving bandwidth usage information for a plurality of applications running on behalf of a plurality of clients, including the shared-service application running on behalf of the plurality of remote clients;

aggregating bandwidth usage information to determine a total bandwidth demand;

detecting congested links within the network; and

dividing the network's available bandwidth between the plurality of applications based, at least in part, on a weight value associated with the remote clients.

5. The method of claim 4 , wherein the bandwidth demand information is based on peak bandwidth usage of the plurality of applications over a predetermined time period.

6. The method of claim 4 , further comprising:

determining that all network bandwidth demand is being met;

determining that unused bandwidth is available on the network; and

dividing the unused bandwidth among the plurality of clients in proportion to the client's weight values.

7. The method of claim 4 , wherein a portion of network bandwidth remains exempt from the operations to create bandwidth allocations.

8. The method of claim 4 , wherein a subset of the clients receive a permanent allocation of bandwidth.

9. A network device for allocating bandwidth over a network, the device comprising:

a memory; and

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

receive a request for a shared-service application to run on a host device on behalf of a plurality of remote clients;

receive an estimation of a volume of network traffic associated with running the shared-service application for each remote client;

classify the remote plurality of clients, based at least in part on the received estimation, as either being in a first classification or a second classification, wherein classifying the plurality of remote clients includes:

aggregating the estimation of the volume of network traffic associated with each of the remote clients to create a network traffic total;

selecting at least some of the plurality of remote clients in an order of descending estimation of the volume of network traffic;

upon selecting each remote client, aggregating the estimation of the volume of network traffic for all selected remote clients;

stopping the selection of remote clients when the selected remote clients have an aggregated estimation of the volume of network traffic that is above a predetermined fraction of the network traffic total;

classifying all selected remote clients into the first classification; and

classifying all remote clients that have not been selected into the second classification;

transmit classifications of the plurality of remote clients to the host device; and

allocate bandwidth for the shared-service application,

wherein remote clients classified with the first classification are allocated bandwidth individually, and wherein the remote clients classified with the second classification are provided bandwidth as part of a group.

10. The device of claim 9 , wherein the processor is further configured to execute instruction to:

determine whether each of the remote client's estimation of the volume of network traffic is below a predetermined threshold;

classify all remote clients having estimation of the volume of network traffic that is not below the predetermined threshold with the first classification; and

classify all remote clients having estimation of the volume of network traffic that is below the predetermined threshold with the second classification.

11. The device of claim 9 wherein instructions to allocate bandwidth includes providing bandwidth for remote clients having the first classification based, at least in part, on one of a plurality of weight values associated with each of the remote clients.

Assignments (2)
CHANGE OF NAME Recorded Oct 2, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044097/0658 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 13, 2012
From: RAGHURAMAN, ANAND; KUMAR, ALOK; NAIK, UDAY; SIGANPORIA, ASPI; JAIN, SUSHANT
To: GOOGLE INC.
Reel/Frame 027705/0222 →
Continuity (2)
Continuation In Part 13018967 · Feb 1, 2011
Related Publication 20120195324A1 · Aug 2, 2012