Claims
- 1. A method of allocating bandwidth between a plurality of queues, comprising:
allocating bandwidth between a plurality of queues; and setting a borrow vector for a queue of said plurality of queues that indicates a subset of said plurality of queues from which borrowing unused allocated bandwidth is permitted.
- 2. The method of claim 1, further comprising:
consuming bandwidth according to said allocated bandwidth; and allowing unused allocated bandwidth of a first queue to be used by a second queue if a borrow vector of said second queue indicates that borrowing from said first queue is permitted.
- 3. The method of claim 1, further comprising:
running a scheduling algorithm to identify a queue, Qi; allowing Qi to consume up to the allocated bandwidth of Qi; determining whether Qi has unused allocated bandwidth; identifying a next queue, Qnext; and checking a borrow vector associated with Qnext to determine whether Qnext is permitted to borrow unused allocated bandwidth from Qi.
- 4. The method of claim 3, further comprising:
consuming said unused allocated bandwidth if Qnext is permitted to borrow unused allocated bandwidth from Qi.
- 5. The method of claim 1, wherein said borrow vector indicates whether a queue, Qnext, of said plurality of queues is permitted to borrow unused bandwidth from said plurality of queues other than Qnext.
- 6. A method for forwarding packet-based traffic from a plurality of contending queues to an output having a finite bandwidth, comprising:
consuming a portion of bandwidth of an output with packets from a plurality of queues according to respective bandwidths allocated to said plurality of queues, leaving unused allocated bandwidth of a first queue of said plurality of queues when said first queue does not exhaust the bandwidth that is allocated to said first queue; and allowing a second queue to forward packets using said unused allocated bandwidth if a borrow vector associated with said second queue indicates that said second queue is permitted to use bandwidth allocated to said first queue.
- 7. The method of claim 6, wherein said borrow vector indicates whether said second queue is permitted to borrow unused bandwidth from said plurality of queues other than said second queue.
- 8. The method of claim 6, further comprising:
determining that said first queue has unused allocated bandwidth.
- 9. The method of claim 6, further comprising:
determining from said borrow vector that said second queue is permitted to use said unused allocated bandwidth; and determining that said second queue has packets to forward.
- 10. The method of claim 6, further comprising:
identifying said second queue using a routine for identifying a next queue.
- 11. The method of claim 10, further comprising:
identifying a third queue using said routine for identifying a next queue; and allowing said third queue to forward packets using a portion of said unused allocated bandwidth if a borrow vector associated with said third queue indicates said third queue is permitted to borrow from said first queue and said second queue consumes less than said unused allocated bandwidth, leaving said portion.
- 12. A system for forwarding packet-based traffic from a plurality of contending queues to an output having a finite bandwidth, comprising:
a plurality of queues for forwarding packets, wherein a first queue of said plurality of queues has a first allocated bandwidth; a borrow vector, associated with a second queue, configured to indicate a subset of said plurality of queues from which said second queue is permitted to borrow unused allocated bandwidth; a scheduler for forwarding packets from said second queue using a portion of said first allocated bandwidth when said first queue does not consume all of said first allocated bandwidth, if said borrow vector associated with said second queue indicates that said second queue is permitted to borrow unused allocated bandwidth from said first queue.
- 13. The system of claim 12, wherein said borrow vector indicates whether said second queue is permitted to use bandwidth allocated to each of said plurality of queues other than said second queue.
- 14. The system of claim 12, further comprising:
a plurality of borrow vectors respectively associated with each of said plurality of queues other than said second queue.
- 15. The system of claim 12, further comprising:
a register configured to contain said borrow vector, wherein said borrow vector includes an array of bits, and wherein each bit of said array of bits corresponds to a queue of said subset.
- 16. The system of claim 12, wherein said scheduler allows packets to be forwarded according to a scheduling algorithm.
- 17. The system of claim 12, wherein said scheduler allows packets to be forwarded according to allocated bandwidth.
- 18. The system of claim 12, further comprising:
an and gate for enabling said second second queue when said second queue is not empty and said borrow vector indicates said second queue may borrow unused allocated bandwidth from said first queue.
- 19. The system of claim 12, wherein said scheduler implements a first scheduling algorithm for identifying the queues from which packet forwarding is allowed and a second scheduling algorithm for identifying a next queue that is permitted to used unused allocated bandwidth.
CROSS REFERENCE TO RELATED APPLICATION
[0001] This application is entitled to the benefit of provisional Patent Application Serial No. 60/385,982, filed Jun. 4, 2002.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60385982 |
Jun 2002 |
US |