Bandwidth management
First Claim
Patent Images
1. A method for managing bandwidth in a network using a system coupled to the network and running an operating system, the method comprising:
- determining whether a request being transferred from a socket layer to a protocol layer in the operating system is subject to one or more bandwidth limits;
limiting data to be transmitted to the protocol layer to only a portion of the data specified by the request if at least one bandwidth limit exists, wherein an amount of the portion of the data is determined based on the at least one bandwidth limit;
maintaining a list of pending requests captured before reaching the protocol layer in an order of preceding allocation from smallest to largest, and processing requests having more limited connections prior to processing those having less limited connections;
dividing a remainder of bandwidth in a next scheduling window by a number of other users of the at least one bandwidth limit who have not received an allocation during a current scheduling window that precedes the next scheduling window;
maintaining a data structure for each limit, and determining an amount of available bandwidth by examining recent usage statistics as indicated by examining the data structures;
maintaining a time stamp in each data structures;
using one of the data structures if the time stamp indicates that the data is not stale; and
updating data in said one of the data structures if the data is not stale.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and apparatus for managing bandwidth in a network is described. In one embodiment, the method determines whether a request being transferred from a socket layer to a protocol layer in the operating system is subject to one or more bandwidth limits, and limits data to be transmitted to network protocols to only a portion of the data specified by the request if at least one bandwidth limit exists.
89 Citations
25 Claims
-
1. A method for managing bandwidth in a network using a system coupled to the network and running an operating system, the method comprising:
-
determining whether a request being transferred from a socket layer to a protocol layer in the operating system is subject to one or more bandwidth limits;
limiting data to be transmitted to the protocol layer to only a portion of the data specified by the request if at least one bandwidth limit exists, wherein an amount of the portion of the data is determined based on the at least one bandwidth limit;
maintaining a list of pending requests captured before reaching the protocol layer in an order of preceding allocation from smallest to largest, and processing requests having more limited connections prior to processing those having less limited connections;
dividing a remainder of bandwidth in a next scheduling window by a number of other users of the at least one bandwidth limit who have not received an allocation during a current scheduling window that precedes the next scheduling window;
maintaining a data structure for each limit, and determining an amount of available bandwidth by examining recent usage statistics as indicated by examining the data structures;
maintaining a time stamp in each data structures;
using one of the data structures if the time stamp indicates that the data is not stale; and
updating data in said one of the data structures if the data is not stale. - View Dependent Claims (2, 3, 4, 5, 6)
enqueuing an input/output (I/O) request corresponding to the request, the I/O request for transmitting the portion of data to the protocol layer; - and
enqueuing remaining data associated with the request on a pending message list for transmission in the future.
-
-
7. An apparatus for managing bandwidth in a network using a system coupled to the network and running an operating system, the apparatus comprising:
-
means for determining whether a request being transferred from a sock et layer to a protocol layer in the operating system is subject to one or more bandwidth limits;
means for limiting data to be transmitted to the protocol layer to only a portion of the data specified by the request if at least one bandwidth limit exists, wherein an amount of the portion of the data is determined based on the at least one bandwidth limit;
means for maintaining a list of p ending requests captured before reaching the protocol layer in an order of preceding allocation from smallest to largest, and processing requests having more limited connections prior to processing those having less limited connections;
means for dividing a remainder of bandwidth in a next scheduling window by a number of other users of the at least one bandwidth limit who have not received an allocation during a current scheduling window that precedes the next scheduling window;
means for maintaining a data structure for each limit, and determining an amount of available bandwidth by examining recent usage statistics as indicated by examining the data structures;
means for maintaining a time stamp in each of the data structures;
means for using one of the data structures if the time stamp indicates that the data is not stale; and
means for updating data in said one of the data structures if the data is not stale. - View Dependent Claims (8, 9, 10, 11, 12)
means for enqueuing an input/output (I/O) request corresponding to the request, the I/O request for transmitting the portion of data to the protocol layer; - and
means for enqueuing remaining data associated with the request on a pending message list for transmission in the future.
-
-
13. A system comprising:
-
a network interface;
a processing device executing an operating system and an application program, the application program operable to generate a request to transfer through the network interface, wherein the operating system comprises;
a protocol module;
a socket module;
a virtual socket module interfacing the protocol module and the socket module;
a bandwidth limit module to capture a request being transferred from the socket module to the protocol module, determine whether the captured request is subject to one or more bandwidth limits, limit data being transmitted onto a network to only a portion of the data specified by the request if at least one bandwidth limit exists, wherein an amount of the portion of the data is determined based on the at least one bandwidth limit, maintaining a list of pending requests captured before reaching the protocol layer in an order of preceding allocation from smallest to largest, and processing requests having more limited connections prior to processing those having less limited connections, divide a remainder of bandwidth in a next scheduling window by a number of other users of the at least one bandwidth limit who have not received an allocation during a current scheduling window that precedes the next scheduling window, maintain a data structure for each limit, and determining an amount of available bandwidth by examining recent usage statistics as indicated by examining the data structures, maintain a time stamp in each of the data structures, use of the data structures if the time stamp indicates that the data is not stale, and update data in said one of the data structures if the data is not stale. - View Dependent Claims (14, 15, 16, 17, 18, 19)
a socket abstraction module to interface to the virtual socket module;
a bandwidth manager coupled to socket abstraction module;
a buffer manager coupled to the socket abstraction module and the bandwidth manager;
an active I/O module coupled to the buffer manager; and
a I/O scheduler coupled to the active I/O module.
-
-
15. The system defined in claim 14 further comprising an accounting module coupled to the bandwidth manager to maintain usage information.
-
16. The system of claim 15, wherein the bandwidth manager determines available bandwidth for the request by examining recent usage statistics stored in the accounting module.
-
17. The system of claim 16, wherein the I/O scheduler accepts the request from bandwidth manager, queues the request until bandwidth is available, and forwards the request to active I/O module when the bandwidth is available.
-
18. The system of claim 17, wherein the active I/O module forwards the request received from the I/O scheduler to the socket abstraction, where an appropriate protocol routine is invoked.
-
19. The system of claim 14, wherein the buffer manager allocates and updates one or more data structures associated with the request, at least a portion of the data structures being used to store a remainder of the data.
-
20. An article of manufacture having at least one recordable media having executable instructions stored thereon which, when executed by at least one processing device, cause the processing device to:
-
determine whether a request being transferred from a socket layer to a protocol layer in an operating system is subject to one or more bandwidth limits, limit data to be transmitted to the protocol layer to only a portion of the data specified by the request if at least one bandwidth limit exists, wherein an amount of the portion of the data is determined based on the at least one bandwidth limit, wherein the executable instructions further cause the processing device to maintain a list of pending requests captured before reaching the protocol layer in an order of preceding allocation from smallest to largest, and processing requests having more limited connections prior to processing those having less limited connections, divide a remainder of bandwidth in a next scheduling window by a number of other users of the at least one bandwidth limit who have not received an allocation during a current scheduling window that precedes the next scheduling window, maintain a data structure for each limit, and determining an amount of available bandwidth by examining recent usage statistics as indicated by examining the data structures, maintain a time stamp in each of the data structures, use one of the data structures if the time stamp indicates that the data is not stale, and update data in said one of the data structures if the data is not stale. - View Dependent Claims (21, 22, 23, 24, 25)
enqueue an input/output (I/O) request corresponding to the request, the I/O request for transmitting the portion of data to the protocol layer, and enqueue remaining data associated with the request on a pending message list for transmission in the future.
-
Specification