IPC분류정보
국가/구분 |
United States(US) Patent
등록
|
국제특허분류(IPC7판) |
|
출원번호 |
UP-0317851
(2002-12-11)
|
등록번호 |
US-7580972
(2009-09-08)
|
발명자
/ 주소 |
- Jones, Paul David
- Newcombe, Christopher Richard
- Ellis, Richard Donald
- Birum, Derrick Jason
|
출원인 / 주소 |
|
대리인 / 주소 |
|
인용정보 |
피인용 횟수 :
18 인용 특허 :
114 |
초록
▼
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 w
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.
대표청구항
▼
What is claimed is: 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 inf
What is claimed is: 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. The method of claim 1, wherein the bandwidth threshold applies to communications between the server and each client in a set of clients, wherein the bandwidth threshold is determined to be exceeded if bandwidth employed by the server in communicating with any one client of the set of clients during the first period of time exceeds the bandwidth threshold. 3. The method of claim 2, further comprising: (a) accessing another history that includes information about aggregate communications during a second period of time, the aggregate communications including communications between any client and the server during the second period of time; (b) employing the other history to determine whether the message can be communicated immediately without exceeding an aggregate bandwidth threshold, the aggregate bandwidth threshold corresponding to an upper limit for bandwidth allowed for the aggregate communications during the second period of time; and c) if the message can not be sent immediately without exceeding the aggregate bandwidth threshold, delaying sending the message. 4. The method of claim 2, wherein another bandwidth threshold applies to communications between the server and each client in another set of clients. 5. The method of claim 2, wherein the bandwidth threshold is exceeded by sending the message at a selected time if sending the message at the selected time would cause an average bandwidth employed in communicating between the at least one client and the server in excess of the bandwidth threshold during the first period of time. 6. The method of claim 1, wherein the information includes values indicating each time a communication occurred in the previous period of time and values corresponding to how much data was communicated each time the communication occurred. 7. The method of claim 1, wherein an average value corresponding to a bandwidth employed for the communications during the first period of time is calculated and included in the information. 8. The method of claim 1, wherein the communications during the first period of time are aggregate communications that include communications between the server and any client during the previous period of time and wherein the bandwidth threshold corresponds to an upper limit for bandwidth employed in the aggregate communications during the first period of time. 9. The method of claim 2, wherein bandwidth employed is computed by dividing a number of bytes communicated during the first period of time by a number of seconds in the first period of time. 10. The method of claim 1, wherein the data structure is modified by initiating an atomic instruction, wherein once the atomic instruction is initiated, the atomic instruction completes before the atomic instruction can be initiated again. 11. The method of claim 10, wherein initiating the atomic instruction avoids the use of a mutex in modifying the data structure. 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. 13. The apparatus of claim 12, wherein the bandwidth threshold applies to communications between the server and each client in a set of clients, wherein the bandwidth threshold is determined to be exceeded if bandwidth employed by the server in communicating with any one client of the set of clients exceeds the bandwidth threshold. 14. The apparatus of claim 13, wherein the server is further configured to perform acts, comprising: (a) accessing another history that includes information about aggregate communications during a second period of time, the aggregate communications including communications between any client and the server during the second period of time; (b) employing the other history to determine whether the message can be communicated immediately without exceeding an aggregate bandwidth threshold, the aggregate bandwidth threshold corresponding to an upper limit for bandwidth allowed for the aggregate communications during the second period of time; and (c) if the message can not be sent immediately without exceeding the aggregate bandwidth threshold, delaying sending the message. 15. The apparatus of claim 14, wherein the first time period and the second time period are for an identical time range. 16. The apparatus of claim 14, wherein Win32 input/output (I/O) completion ports are employed to activate at least one thread that drives a state machine that sends the messages to the interface for sending to the at least one client. 17. The apparatus of claim 12, wherein when the server executes an atomic instruction when modifying the data structure. 18. The apparatus of claim 17, wherein the atomic instruction is one of an interlocked increment instruction and an interlocked decrement instruction. 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. 21. The computer storage media of claim 20, further comprising another component for allocating the bandwidth to download content in the following order: (a) first to any active application that is requesting content that the client lacks; and (b) second to one or more inactive applications based on priorities assigned to the inactive applications. 22. The computer storage media of claim 20, further comprising another component for suspending preloading content for an inactive application upon receipt of a request for content from an active application, wherein the client lacks the content requested from the active application. 23. The computer storage media of claim 22, further comprising another component for resuming preloading content for the inactive application upon completion of downloading the content requested from the active application. 24. The computer storage media of claim 20, wherein the connection manager is disabled and employs none of the bandwidth of the client while disabled. 25. The computer storage media of claim 20, wherein the portion of the bandwidth is a percentage of the bandwidth available to the client. 26. The computer storage media of claim 20, wherein the portion of the bandwidth is a percentage of the bandwidth left over after user required bandwidth has been satisfied. 27. The computer storage media of claim 20, wherein the portion of the bandwidth employed varies according to a schedule.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.