Patent ID: 7643418

Claim:
An apparatus operative to allocate network bandwidth to one or more partitions, the apparatus comprising: one or more network interfaces; a memory; one or more processors; and an application, physically stored in the memory, comprising instructions operable to cause the one or more processors to: monitor a running rate of a data flow between a first and a second host relative to a target rate, wherein the data flow corresponds to a partition having an aggregate bandwidth allocation and a global window size; determine a target rate for the data flow; compute a window size indicating a number of packets that can be transmitted before receiving an acknowledgement for the data flow, based on the target rate, the running rate and a proportional/integral/derivative-type algorithm wherein computing the window size comprises: determining a PID term from component terms of the proportional/integral/derivative-type algorithm wherein the component terms include a proportional term, an integral term and a derivative term; determining a delta virtual control rate by multiplying the PID term with a difference between the target rate and the running rate; determining a delta window size by multiplying the delta virtual control rate by a round trip time for the data flow; and determining an advertised window size indicating a number of packets that can be transmitted before receiving an acknowledgement by dividing the global window size for the partition by the current number of data flows in the partition and adding the delta window size; and modify at least one acknowledgement transmitted between the first and second hosts to include the advertised window size computed in the determining step.