System and method for allocating server output bandwidth
AssigneeHewlett-Packard Development Company, L.P.
InventorJeffrey Clifford Mogul
Life of this patent
Estimating the term…
Abstract
A server computer handles multiple data flows between itself and other devices. The server has one or more applications that allocate bandwidth to respective flows and a network protocol stack that implements those allocations. When bandwidth allocations are made in accordance with a bandwidth allocation policy, the protocol stack in the network server enforces the policy. The network protocol stack provides a programming interface that allows the application to specify the bandwidth allocation for a flow. The network protocol stack then enforces this allocation unless there is no shortage of available bandwidth.
Claims27
A method for transmitting a plurality of competing data flows, across a communication link in a network, comprising:
- in a server computer, under the control of a plurality of application programs, generating transmission requests and data to be transmitted in a plurality of data flows;
- under the control of at least one of the application programs, determining a target bandwidth of at least one of the data flows;
- in the server computer executing a set of procedures in a network protocol stack of a server computer, including:
- controlling transmission of each of the data flows, including controlling transmission bandwidth of each of the data flows;
- and
- executing a flow admission control protocol to control transmission of the one data flow, including calculating a flow admission delay for the one data flow based on the target bandwidth determined for the one data flow, delaying transmission of a first packet in the one data flow for a delay corresponding to the calculated flow admission delay, and then transmitting a remaining portion of the one data flow without additional delay.
A method for transmitting a plurality of competing data flows, across a communication link in a network, comprising:
- in a server computer, under the control of a plurality of application programs, generating transmission requests and data to be transmitted in a plurality of data flows;
- under the control of at least one of the application programs, determining a target bandwidth of at least one of the data flows;
- in the server computer executing a set of procedures in a network protocol stack of a server computer, including:
- controlling transmission of each of the data flows, including controlling transmission bandwidth of each of the data flows;
- and
- executing a flow admission control protocol to control transmission of the one data flow, including calculating a flow admission delay for the one data flow based on the target bandwidth determined for the one data flow, and delaying transmission of a first packet in the one data flow for a delay corresponding to the calculated flow admission delay;
- wherein controlling transmission includes:
- dynamically determining a respective bandwidth allocation mechanism, from among a plurality of predefined bandwidth allocation mechanisms, for each of a plurality of competing data flow requests received at the network protocol stack of the server computer;
- allocating a target bandwidth for each said competing data flow at the network protocol stack;
- and
- transmitting each said competing data flow from said server computer onto the communication link in accordance with the target bandwidth and the bandwidth allocation mechanism assigned to the perspective competing data flow;
- wherein the plurality of predefined bandwidth allocation mechanisms includes the flow admission control protocol.
A computer system for transmitting a plurality of competing data flows, across a communication link in a network, comprising:
- a server computer, having a plurality of application programs for generating transmission requests and data to be transmitted in a plurality of data flows;
- at least one of the application programs for determining a target bandwidth of at least one of the data flows;
- a network protocol stack having a set of procedures, executed by the server computer, for transmitting a plurality of data flows by:
- controlling transmission of each of the data flows, including controlling transmission bandwidth of each of the data flows;
- and
- executing a flow admission control protocol to control transmission of the one data flow, including calculating a flow admission delay for the one data flow based on the target bandwidth determined for the one data flow, delaying transmission of a first packet in the one data flow for a delay corresponding to the calculated flow admission delay, and then transmitting a remaining portion of the one data flow without additional delay.
A computer system for transmitting a plurality of competing data flows, across a communication link in a network, comprising:
- a server computer, having a plurality of application programs for generating transmission requests and data to be transmitted in a plurality of data flows;
- at least one of the application programs for determining a target bandwidth of at least one of the data flows;
- a network protocol stack having a set of procedures, executed by the server computer, for transmitting a plurality of data flows by:
- controlling transmission of each of the data flows, including controlling transmission bandwidth of each of the data flows;
- and
- executing a flow admission control protocol to control transmission of the one data flow, including calculating a flow admission delay for the one data flow based on the target bandwidth determined for the one data flow, and delaying transmission of a first packet in the one data flow for a delay corresponding to the calculated flow admission delay;
- wherein controlling transmission includes:
- dynamically determining a respective bandwidth allocation mechanism, from among a plurality of predefined bandwidth allocation mechanisms, for each of a plurality of competing data flow requests received at the network protocol stack of the server computer;
- allocating a target bandwidth for each said competing data flow at the network protocol stack;
- and
- transmitting each said competing data flow from said server computer onto the communication link in accordance with the target bandwidth and the bandwidth allocation mechanism assigned to the perspective competing data flow;
- wherein the plurality of predefined bandwidth allocation mechanisms includes the flow admission control protocol.
A computer readable medium carrying one or more sequences of one or more instructions for transmitting a plurality of competing data flows, across a communication link in a network, wherein the execution of the one or more sequences of the one or more instructions by one or more processors in a server computer causes the one or more processors to:
- in the server computer, under the control of a plurality of application programs, generating transmission requests and data to be transmitted in a plurality of data flows;
- under the control of at least one of the application programs, determining a target bandwidth of at least one of the data flows;
- in the server computer executing a set of procedures in a network protocol stack of a server computer, including:
- controlling transmission of each of the data flows, including controlling transmission bandwidth of each of the data flows;
- and
- executing a flow admission control protocol to control transmission of the one data flow, including calculating a flow admission delay for the one data flow based on the target bandwidth determined for the one data flow, delaying transmission of a first packet in the one data flow for a delay corresponding to the calculated flow admission delay, and then transmitting a remaining portion of the one data flow without additional delay.
A computer readable medium carrying one or more sequences of one or more instructions for transmitting a plurality of competing data flows, across a communication link in a network, wherein the execution of the one or more sequences of the one or more instructions by one or more processors in a server computer causes the one or more processors to:
- in the server computer, under the control of a plurality of application programs, generating transmission requests and data to be transmitted in a plurality of data flows;
- under the control of at least one of the application programs, determining a target bandwidth of at least one of the data flows;
- in the server computer executing a set of procedures in a network protocol stack of a server computer, including:
- controlling transmission of each of the data flows, including controlling transmission bandwidth of each of the data flows;
- and
- executing a flow admission control protocol to control transmission of the one data flow, including calculating a flow admission delay for the one data flow based on the target bandwidth determined for the one data flow, and delaying transmission of a first packet in the one data flow for a delay corresponding to the calculated flow admission delay;
- wherein controlling transmission comprises:
- dynamically determining a respective bandwidth allocation mechanism, from among a plurality of predefined bandwidth allocation mechanisms, for each of a plurality of competing data flow requests received at the network protocol stack of the server computer;
- allocating a target bandwidth for each said competing data flow at the network protocol stack;
- and
- transmitting each said competing data flow from said server computer onto the communication link in accordance with the target bandwidth and the bandwidth allocation mechanism assigned to the perspective competing data flow;
- wherein the plurality of predefined bandwidth allocation mechanisms includes the flow admission control protocol.
Dependencies are inferred from the claim text.