US 7,453,804 B1
Aggregate network resource utilization control scheme
Azeem Feroz, Cupertino, Calif. (US); Wei-Lung Lai, Cupertino, Calif. (US); Roopesh R. Varier, Sunnyvale, Calif. (US); James J. Stabile, Los Altos, Calif. (US); and Jon Eric Okholm, Monte Sereno, Calif. (US)
Assigned to Packeteer, Inc., Cupertino, Calif. (US)
Filed on Feb. 08, 2005, as Appl. No. 11/53,596.
Int. Cl. G01R 31/08 (2006.01); H04L 12/28 (2006.01); H04J 3/16 (2006.01)
U.S. Cl. 370—230  [370/229; 370/412; 370/468] 11 Claims
OG exemplary drawing
 
1. In a network device including a flow control module operative to allocate network bandwidth into a plurality of partitions, wherein each partition in the plurality of partitions includes an aggregate bandwidth allocation, a method directed to an aggregate bandwidth utilization control scheme, the method comprising
receiving a packet;
associating the packet with a data flow;
measuring a data rate for the data flow;
identifying a partition for the data flow, wherein the partition includes an aggregate bandwidth allocation, and wherein each partition has associated therewith a low priority partition queue and a high priority partition queue;
buffering the packet in a flow queue corresponding to the data flow;
computing a per-flow fair share bandwidth allocation based on the number of active data flows associated with the partition and the aggregate bandwidth allocation;
determining a per-flow target rate for the data flow based on the per-flow fair share bandwidth allocation and the measured data rate;
pushing an identifier for the flow queue in a partition queue corresponding to the identified partition, wherein the pushing an identifier comprises pushing the identifier for the flow queue on the high priority partition queue associated with the identified partition if the measured data rate is less than the per-flow fair share bandwidth allocation, else, pushing the identifier for the flow queue on the low priority partition queue associated with the identified partition;
enforcing the target rate on the data flow; and
passing the packet to the flow control module, wherein the flow control module is operative to enforce the aggregate bandwidth allocation associated with the partition, and prioritize, relative to a given partition, packets of data flows corresponding to high priority partition queues over low priority partition queues.