Claims
- 1. A method for selecting a queue for service across a shared link, comprising:
classifying each queue from a group of queues within a plurality of ingresses into one tier of a number “N” of tiers, wherein the number “N” is greater than or equal to 2, wherein queue state information is used to classify at least some of the queues into the tiers, and wherein each tier of queues is assigned a different priority; and matching queues to available egresses by trying to match queues classified within tiers with higher priorities before trying to match queues classified within tiers with lower priorities.
- 2. The method of claim 1, wherein classifying each queue includes classifying into at least a first tier and a second tier and wherein the queue state information includes information about a guaranteed bandwidth rate for each of the queues, wherein each of the queues classified in the first tier is receiving less than the guaranteed bandwidth rate for the queue and wherein each of the queues classified in the second tier is receiving more than the guaranteed bandwidth rate for the queue, and wherein the first tier has a higher priority than the second tier.
- 3. The method of claim 1, wherein matching queues to available egresses includes:
selecting the tier with the highest priority for which matching queues to available egresses has not yet been performed; selecting one of the queues within the selected tier; matching the selected queue with its desired egress if the desired egress is available, and if the selected queue is matched to the desired egress, deleting the desired egress from a list of available egresses; deleting the selected queue from a list of queues to be considered; and repeating the steps of selecting one of the queues, matching the selected queue, and deleting the selected queue until all of the queues within the selected tier have been evaluated.
- 4. The method of claim 3, wherein the act of selecting one of the queues includes randomly selecting one of the queues within the selected tier.
- 5. The method of claim 1, wherein the acts of classifying and matching are performed for each timeslot for service across the shared link.
- 6. The method of claim 1, wherein the acts of classifying and matching provide overload protection by ensuring that a first queue having a packet for an available egress and receiving its guaranteed rate of bandwidth is not matched to that available egress if a second queue having a packet for that available egress has not received its guaranteed rate of bandwidth.
- 7. The method of claim 6, wherein the first queue is classified into a tier having a higher priority than a tier in which the second queue is classified.
- 8. The method of claim 1, further comprising:
ascertaining the size of a first-out packet in each queue; and if the size of the first-out packet in any queue is too large for transmission across the shared link in a single timeslot, classifying its queue into a tier having the highest priority.
- 9. The method of claim 1, further comprising:
maintaining information regarding a queue metric for each queue; calculating a guaranteed rate for each queue based on the queue metric information and a guaranteed bandwidth amount; and using the guaranteed rate to calculate a credit value for each queue in the group of queues, wherein the credit values are the queue state information.
- 10. The method of claim 9, wherein using the guaranteed rate to calculate a credit value for each queue comprises:
adjusting the credit value associated with each queue by:
decrementing the credit value by an appropriate amount if the queue is serviced in a given timeslot; and incrementing the credit value by an amount based on the guaranteed rate after the given timeslot.
- 11. The method of claim 10, wherein the guaranteed bandwidth amount is based on an amount for an egress.
- 12. The method of claim 10, wherein the guaranteed bandwidth amount is based on an amount for a group of queues.
- 13. The method of claim 10, wherein classifying each queue includes (a) classifying at least one queue having a credit value greater than zero into a first tier having a higher priority than a second tier, and (b) classifying at least one queue having a credit value less than zero into the second tier.
- 14. The method of claim 1, wherein the queue state information includes a credit value for at least some of the queues, wherein each credit value is derived from a guaranteed bandwidth rate for each queue.
- 15. The method of claim 14, wherein a credit value greater than zero indicates a hungry queue and a credit value less than zero indicates a satisfied queue.
- 16. The method of claim 15, wherein each hungry queue is classified into a first tier having a higher priority than a second tier, wherein each satisfied queue is classified into the second tier.
- 17. The method of claim 14, wherein the information about allocated bandwidth includes information about whether the queue is empty.
- 18. The method of claim 17, wherein queues that are empty are classified into a tier having a lowest priority.
- 19. The method of claim 18, wherein the queue state information includes information about whether a queue contains a partial packet, wherein a partial packet is a packet that is too large for transmission across the shared link in a single timeslot.
- 20. The method of claim 19, wherein queues containing partial packets are classified into a tier having a highest priority.
- 21. The method of claim 20, wherein the queue state information includes information about whether a queue has been receiving as many packets as it can handle.
- 22. The method of claim 21, wherein each queue that has not been receiving as many packets as it can handle is classified into a tier having a priority level just above the tier having the lowest priority.
- 23. The method of claim 21, wherein the queue state information includes information about whether a queue has not been serviced for a long period of time, wherein the long period of time is a predefined number of timeslots.
- 24. The method of claim 23, wherein each queue that has not been serviced for a long period of time is classified into a tier having a priority level just below the tier having the highest priority.
- 25. The method of claim 1, wherein the information about allocated bandwidth includes at least two or more of:
a credit value for at least some of the queues, wherein each credit value is derived from a guaranteed rate for each queue based on queue metric information for the queue; information about whether each queue is empty; information about whether a queue contains a partial packet; information about whether a queue has been receiving as many packets as it can handle; and information about whether a queue has not been serviced for a long period of time.
- 26. A method for arbitrating for access across a shared link, comprising:
maintaining queue state information for each queue of a group of queues, wherein the queue state information includes a guaranteed rate of bandwidth for each queue and information relating to whether each queue is empty; and during each timeslot for service across the shared link:
using the queue state information to map each queue into a tier from a group of at least two tiers, wherein each tier has a different priority level; and matching some of the queues to egresses by matching at least some queues within tiers having higher priorities before matching queues within tiers having lower priorities.
- 27. The method of claim 26 wherein matching some of the queues to egresses includes:
selecting the tier with the highest priority, selecting one of the queues within the selected tier, matching the selected queue with its desired egress if the egress is available, and if the desired egress is available, deleting the egress from a list of available egresses, deleting the selected queue from a list of queues to be considered; and repeating the steps of selecting one of the queues, matching the selected queue, and deleting the selected queue until all of the queues within the selected tier have been evaluated.
- 28. A system for selecting a queue for service across a shared link, comprising:
means for classifying each queue from a group of queues within a plurality of ingresses into one tier of a number “N” of tiers, wherein the number “N” is greater than or equal to 2, wherein queue state information is used to classify at least some of the queues into the tiers, and wherein each tier of queues is assigned a different priority; and means for matching queues to available egresses by trying to match queues classified within tiers with higher priorities before trying to match queues classified within tiers with lower priorities.
- 29. A system for arbitrating for access across a shared link, comprising:
means for maintaining queue state information for each queue of a group of queues, wherein the queue state information includes a guaranteed rate of bandwidth for each queue and information relating to whether each queue is empty; and means for, during each timeslot for service across the shared link, mapping each queue into a tier from a group of at least two tiers using the queue state information, wherein each tier has a different priority level; and means for, during each timeslot for service across the shared link, matching some of the queues to egresses by matching at least some queues within tiers having higher priorities before matching queues within tiers having lower priorities.
- 30. A system for selecting a queue for service across a shared link, comprising:
a metering module within an ingress to determine credit values for at least some queues within the ingress during each timeslot for data transfer, wherein each credit value indicate whether a given queue has received its allocated bandwidth; and an arbitration module to, during each timeslot: (a) map each queue into a tier from a group of at least two tiers, wherein each tier has a different priority level, and (b) match some of the queues to egresses by matching at least some queues within tiers having higher priorities before matching queues within tiers having lower priorities.
- 31. The system of claim 30, further comprising a bandwidth allocator module to calculate a guaranteed rate of bandwidth for each queue based on queue metric information and a guaranteed bandwidth amount for some group of queues, wherein the metering module uses the guaranteed rates to determine credit values.
- 32. A method for apportioning bandwidth across a shared link, comprising:
maintaining information regarding a queue metric for each queue in a group of queues; calculating a guaranteed rate for each queue in the group of queues based on the queue metric information and a guaranteed bandwidth amount; sending the guaranteed rate for each queue to an ingress associated with each queue, wherein each ingress is capable of calculating a credit value for each queue using the guaranteed rate for each queue; receiving queue state information from at least one ingress, wherein the queue state information includes the credit value for at least one or more of the queues; mapping each queue into a tier from a group of at least two tiers by using the credit values, wherein each tier has a different priority level; and matching some of the queues to egresses by trying to match at least some queues within tiers having higher priorities before trying to match queues within tiers having lower priorities.
Parent Case Info
[0001] This application is a continuation-in-part of International Application Number PCT/US01/21185, filed on Jul. 5, 2001 and designating the United States, and entitled “Method and Apparatus for Allocating Link Bandwidth.” The entire disclosure of the prior application is hereby incorporated by reference.
Continuation in Parts (1)
|
Number |
Date |
Country |
| Parent |
PCT/US01/21185 |
Jul 2001 |
US |
| Child |
10639269 |
Aug 2003 |
US |