Method and system for controlling bandwidth on client and server
First Claim
1. A method for controlling bandwidth used to communicate between at least one client and a server, comprising:
- (a) accessing a history that includes information about communications between the at least one client and the server during a previous period of time, wherein the information includes values indicating each time a communication was sent in a sliding window of time and values indicating how much data were sent at each time a communication was sent in the sliding window of time;
(b) employing the history to determine a send time to communicate a message between the at least one client and the server without exceeding a bandwidth threshold, the bandwidth threshold corresponding to an upper limit for an amount of bandwidth allowed during a first period of time to communicate between the at least one client and the server; and
(c) modifying a data structure to delay communicating the message until at least the send time by modifying a global delay queue that indicates the earliest time the message should be sent, wherein an amount of bandwidth employed during the first period of time for all communications between the at least one client and the server is less than the bandwidth threshold, wherein the message is directed to an application on the at least one client, and wherein the amount of bandwidth allowed is based in part on whether the application is active or inactive on the at least one client and a priority associated with the application, and wherein the amount of allowed bandwidth is adaptively modifiable in real time to consume up to a predetermined portion of the bandwidth currently available to any one client of the at least one client.
2 Assignments
0 Petitions
Accused Products
Abstract
A method and system for controlling bandwidth used to communicate between at least one client and a server. A history is accessed that includes information about communications between the at least one client and a server during a period of time. The history is employed to determine a send time at which a message could be sent without exceeding a bandwidth threshold. The bandwidth threshold indicates an upper limit for an amount of bandwidth allowed during a period of time to communicate between the at least one client and the server. A data structure is then modified to delay sending the message until at least the send time.
162 Citations
27 Claims
-
1. A method for controlling bandwidth used to communicate between at least one client and a server, comprising:
-
(a) accessing a history that includes information about communications between the at least one client and the server during a previous period of time, wherein the information includes values indicating each time a communication was sent in a sliding window of time and values indicating how much data were sent at each time a communication was sent in the sliding window of time; (b) employing the history to determine a send time to communicate a message between the at least one client and the server without exceeding a bandwidth threshold, the bandwidth threshold corresponding to an upper limit for an amount of bandwidth allowed during a first period of time to communicate between the at least one client and the server; and (c) modifying a data structure to delay communicating the message until at least the send time by modifying a global delay queue that indicates the earliest time the message should be sent, wherein an amount of bandwidth employed during the first period of time for all communications between the at least one client and the server is less than the bandwidth threshold, wherein the message is directed to an application on the at least one client, and wherein the amount of bandwidth allowed is based in part on whether the application is active or inactive on the at least one client and a priority associated with the application, and wherein the amount of allowed bandwidth is adaptively modifiable in real time to consume up to a predetermined portion of the bandwidth currently available to any one client of the at least one client. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. An apparatus for controlling bandwidth used to communicate between at least one client and the apparatus, comprising:
-
(a) an interface configured to send and receive messages; and (b) coupled to the interface, a server configured to perform acts, comprising; (i) accessing a history that includes information about communications between the at least one client and the apparatus during a first period of time, wherein the information includes values indicating each time a communication was sent in a sliding window of time and values indicating how much data were sent at each time a communication was sent in the sliding window of time; (ii) employing the history to determine a send time to communicate a message between the at least one client and the apparatus without exceeding a bandwidth threshold, the bandwidth threshold corresponding to an upper limit for an amount of bandwidth allowed during a first period of time to communicate between the at least one client and the server; and (iii) modifying a data structure to delay communicating the message until at least the send time by modifying a global delay queue that indicates the earliest time the message should be sent, wherein an amount of bandwidth employed during the first period of time for all communications between the at least one client and the server is less than the bandwidth threshold, wherein the message is directed by a configuration manager to an application on the at least one client, and wherein the amount of bandwidth allowed is based in part on another amount of the bandwidth used by another application on the at least one client, wherein the other application is unmanaged by the configuration manager, and wherein the amount of allowed bandwidth is adaptively modifiable in real time to consume up to a predetermined portion of the bandwidth currently available to any one client of the at least one client. - View Dependent Claims (13, 14, 15, 16, 17, 18)
-
-
19. An apparatus for controlling bandwidth used to communicate between at least one client and the apparatus, comprising:
-
(a) means for sending and receiving messages; (b) means for storing a history that includes information about communications between the at least one client and the apparatus during a first period of time;
wherein the information includes values indicating each time a communication was sent in a sliding window of time and values indicating how much data were sent at each time a communication was sent in the sliding window of time;(c) means for employing the history to determine a send time to communicate a message between the at least one client and the apparatus without exceeding a bandwidth threshold, the bandwidth threshold corresponding to an upper limit for an amount of bandwidth allowed during a first period of time to communicate between the at least one client and the server; and (d) means for modifying a data structure to delay communicating the message until at least the send time by modifying a global delay queue that indicates the earliest time the message should be sent, wherein the message is directed to an application on the at least one client, and wherein the amount of bandwidth allowed is based in part on a schedule of a time of day on the at least one client, and based in part on whether the application is active or inactive on the at least one client and a priority associated with the application, and wherein the amount of allowed bandwidth is adaptively modifiable in real time to consume up to a predetermined portion of the bandwidth currently available to any one client of the at least one client.
-
-
20. A computer storage media that includes instructions for components for controlling bandwidth used to communicate between a client and a plurality of servers, comprising:
-
(a) a first component for configuring a connection manager to employ at least a portion of a bandwidth of the client if the connection manager is enabled; (b) a second component for employing an accessed history to determine a send time to communicate a message between the client and a server of the plurality of servers without exceeding an upper limit for an amount of the bandwidth to download content from the server to the client, wherein the history includes information about communication during a period of time, wherein the information includes values indicating each time a communication was sent in a sliding window of time and values indicating how much data were sent at each time a communication was sent in the sliding window of time; (c) a third component for delaying communicating the message to download content until at least the send time by modifying a data structure of a global delay queue that indicates the earliest time the message should be sent; (d) a fourth component for determining another send time to communicate another message between the client and another server of the plurality of servers without exceeding another upper limit for another amount of the bandwidth to download another content from the other server to the client, wherein each of the amount of bandwidth is based on part on whether an application is active or inactive on the client, and wherein the amounts of bandwidth are adaptively modifiable in real time to consume up to a predetermined portion of the bandwidth currently available to any one client of the at least one client; and (e) a fifth component for delaying communicating the other message to download content until at least the other send time. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27)
-
Specification