Method and apparatus for forwarding packets from a plurality of contending queues to an output
First Claim
1. A method for forwarding packets from a plurality of contending queues to an output having a finite bandwidth comprising the steps of:
- prioritizing each queue of said plurality of queues with a priority that is fixed relative to the other queues of said plurality of queues, thereby defining a fixed prioritization range that includes a highest priority queue and a lowest priority queue;
allocating a share of said bandwidth of said output to each of said queues;
consuming at least a portion of said bandwidth of said output with packets from said queues according to said allocated shares, leaving an unconsumed portion when at least one of said queues does not exhaust the allocated share of said at least one queue; and
distributing one hundred percent of said unconsumed portion of said bandwidth to said queues on a fixed priority basis, wherein one hundred percent of said unconsumed portion of said bandwidth is offered first to said highest priority queue and then any remaining portion of said unconsumed portion of said bandwidth is offered to lower priority queues, on a queue by queue basis, according to said fixed prioritization range until all of said bandwidth is consumed or until there are no more queued packets.
10 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus for forwarding packets from contending queues of a multiport switch to an output of a finite bandwidth involve first prioritizing the contending queues into different priorities that relate to priorities of the packets that are being forwarded in the network. Bandwidth of the output is then allocated among the prioritized contending queues and the bandwidth of the output is consumed by the queued packets according to the allocated proportions. Any unconsumed bandwidth is distributed to the queues on a priority basis such that the highest priority queue is offered the unconsumed bandwidth first and lower priority queues are offered the remaining unconsumed bandwidth in priority order. An advantage of the invention is that queues are not starved of bandwidth by higher priority queues and unconsumed bandwidth is not wasted when there are not enough packets to consume an allocated portion of the output bandwidth. The method is adjustable during normal network operations through a programming interface to provide a specified quality of service.
-
Citations
35 Claims
-
1. A method for forwarding packets from a plurality of contending queues to an output having a finite bandwidth comprising the steps of:
-
prioritizing each queue of said plurality of queues with a priority that is fixed relative to the other queues of said plurality of queues, thereby defining a fixed prioritization range that includes a highest priority queue and a lowest priority queue; allocating a share of said bandwidth of said output to each of said queues; consuming at least a portion of said bandwidth of said output with packets from said queues according to said allocated shares, leaving an unconsumed portion when at least one of said queues does not exhaust the allocated share of said at least one queue; and distributing one hundred percent of said unconsumed portion of said bandwidth to said queues on a fixed priority basis, wherein one hundred percent of said unconsumed portion of said bandwidth is offered first to said highest priority queue and then any remaining portion of said unconsumed portion of said bandwidth is offered to lower priority queues, on a queue by queue basis, according to said fixed prioritization range until all of said bandwidth is consumed or until there are no more queued packets. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. An application-specific integrated circuit (ASIC) having a plurality of queues related to packets contending for the same output, where said output has a bandwidth capacity comprising:
-
means for identifying a fixed priority order among said plurality of queues wherein one queue has a highest priority among said queues and a different queue has a lowest priority among said queues; means for allocating a percentage of said bandwidth capacity of said output to each of said queues; means, formed in circuitry that is specific to said queue management, for forwarding packets to said output according to said allocated percentages; and means, formed in circuitry that is specific to queue management, for distributing one hundred percent of any unused bandwidth capacity to said plurality of queues according to said fixed priority order such that said queue with said highest priority is first offered one hundred percent of said unused bandwidth capacity and then lower priority queues are offered one hundred percent of any remaining unused bandwidth, one queue at a time, according to said fixed priority order from highest priority to lowest priority until all of said bandwidth capacity is distributed or until no packets remain for forwarding. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
-
15. A method of forwarding contending variable-length packets from an output buffer to an output port of a multiport switch comprising steps of:
-
prioritizing output queues that store information representative of said contending variable-length packets such that each output queue has a different fixed priority relative to the other of said output queues; allocating bandwidth of said output port among said prioritized output queues such that said prioritized output queues have allocated shares of said bandwidth; forwarding, from said output buffer to said output port, contending variable-length packets represented by said information stored within said prioritized output queues according to said bandwidth allocations; monitoring said forwarding of said contending variable-length packets to detect bandwidth allocations in excess of bandwidth consumed by said contending variable-length packets; offering one hundred percent of any excess bandwidth allocations that are detected by said monitoring to a highest priority output queue of said prioritized output queues that includes a variable-length packet to be forwarded to said output port of said multiport switch; and offering any remaining portions of said excess bandwidth allocations to lower priority output queues on a queue-by-queue basis until all of said remaining portions of said excess bandwidth allocations are consumed, said remaining portions of said excess bandwidth allocations being offered to said prioritized output queues in priority order from highest priority to lowest priority. - View Dependent Claims (16, 17, 18, 19)
-
-
20. A method for forwarding packets from a plurality of contending queues to an output having a finite bandwidth comprising the steps of:
-
prioritizing said plurality of queues such that each of said queues has a priority relative to the other queues of said plurality of queues, thereby defining a prioritization range that includes a highest priority queue and a lowest priority queue; allocating a share of said bandwidth of said output to each of said queues, said step of allocating including a step of utilizing a programming interface to set register values, in circuitry, that correspond to said allocated shares of said bandwidth; consuming at least a portion of said bandwidth of said output with packets from said queues according to said allocated shares, leaving an unconsumed portion when at least one of said queues does not exhaust the allocated share of said at least one queue, said step of consuming including steps of changing a clock counter value in relation to a system clock and comparing said clock counter value to said register values to control bandwidth consumption; and distributing said unconsumed portion of said bandwidth to said queues according to said prioritization range. - View Dependent Claims (21, 22, 23, 24, 25)
-
-
26. An application-specific integrated circuit (ASIC) having a plurality of queues related to packets contending for the same output, where said output has a bandwidth capacity comprising:
-
means for identifying a priority order among said plurality of queues wherein one queue has a highest priority among said queues and a different queue has a lowest priority among said queues; means for allocating a percentage of said bandwidth capacity of said output to each of said queues, said means for allocating including run-time programmable registers that are set to register values that define time intervals; means, formed in circuitry that is specific to said queue management, for forwarding packets to said output according to said allocated percentages; and means, formed in circuitry that is specific to queue management, for distributing unused bandwidth capacity to said plurality of queues in priority order from said queue with said highest priority to said queue with said lowest priority. - View Dependent Claims (27, 28, 29, 30, 31)
-
-
32. A method of forwarding contending variable-length packets from output queues to an output port of a multiport switch comprising steps of:
-
prioritizing said output queues such that each output queue has a different priority relative to the other of said contending queues; storing said contending variable-length packets in output queues of said prioritized output queues; allocating bandwidth of said output port among said prioritized output queues such that said prioritized output queues have allocated shares of said bandwidth, including setting register values that represent time intervals in an application specific integrated circuit on a queue specific basis while said multiport switch is forwarding packets; forwarding contending variable-length packets from said prioritized output queues to said output ports according to said bandwidth allocations; monitoring said forwarding of contending variable-length packets to detect bandwidth allocations in excess of bandwidth consumed by said contending variable-length packets in said prioritized output queues; and offering excess bandwidth allocations that are detected by said monitoring to a highest priority output queue of said prioritized output queues that has a variable-length packet to be forwarded to said output port of said multiport switch. - View Dependent Claims (33, 34, 35)
-
Specification