Claims
- 1. A communications device for use on a communications network, the device capable of transferring data packets received at an input port to an output port, the device comprising:
a first configurable queue in communication with said input port and said output port; and a second configurable queue in communication with said input port and said output port, wherein each of said first and second queues is configurable to independently operate in one of a fairness-based mode, wherein a fairness-based queue is serviced when egress bandwidth is available, and a priority-based mode, wherein a priority-based queue with packets for dequeuing is serviced before a fairness-based queue is serviced when priority-based mode dequeuing constraints are met.
- 2. The device of claim 1 further comprising:
a dequeuing component in communication with each of said first and second queues and said output port.
- 3. The device of claim 1 wherein said first queue comprises:
a first credit counter for tracking credits associated with said first queue, wherein said first queue is ineligible for service unless said first credit counter indicates said first queue has sufficient credits for service.
- 4. The device of claim 3 wherein said second queue comprises:
a second credit counter for tracking credits associated with said second queue, wherein said second queue is ineligible for service unless said second credit counter indicates said second queue has sufficient credits for service.
- 5. The device of claim 3 wherein said first queue further comprises:
a first enable bit specifying the state of said first credit counter; and a first increment register specifying an incremental value for said first credit counter.
- 6. The device of claim 4 wherein said second queue further comprises:
a second enable bit specifying the state of said second credit counter; and a second increment register specifying the incremental value for said second credit counter.
- 7. The device of claim 5 wherein said first queue further comprises:
a first rate value register specifying the rate at which said first credit counter is incremented.
- 8. The device of claim 6 wherein said second queue further comprises:
a second rate value register specifying the rate at which said second credit counter is incremented.
- 9. The device of claim 3 wherein said first queue further comprises:
a first burst size register specifying a maximum value for said first credit counter, wherein said first credit counter is unable to accumulate credits in excess of said specified maximum value.
- 10. The device of claim 4 wherein said second queue further comprises:
a second burst size register specifying a maximum value for said second credit counter, wherein said second credit counter is unable to accumulate credits in excess of said specified maximum value.
- 11. The device of claim 9 wherein said first queue further comprises:
a first credit allocation register comprising entries indicative of at least one other queue for receiving credits in excess of said first maximum value.
- 12. The device of claim 10 wherein said second queue further comprises:
a second credit allocation register comprising entries indicative of at least one other queue for receiving credits in excess of said second maximum value.
- 13. The device of claim 11 wherein said entries in said first credit allocation register proportionately represent said at least one other queue.
- 14. The device of claim 12 wherein said entries in said second credit allocation register proportionately represent said at least one other queue.
- 15. The device of claim 11 wherein said first queue further comprises:
a first received donation register comprising entries indicative of said received credits from at least one other queue.
- 16. The device of claim 12 wherein said second queue further comprises:
a second received donation register comprising entries indicative of said received credits from at least one other queue.
- 17. The device of claim 1 further comprising:
a priority mask register associated with said output port comprising entries associated with at least one queue, said entries specifying the operation of said at least one queue in either priority-based mode or fairness-based mode.
- 18. The device of claim 1 further comprising:
a dequeuing vector associated with at least one queue operating in a fairness-based mode, said dequeuing vector comprising entries associated with at least one queue.
- 19. The device of claim 18 wherein said entries in said dequeuing vector proportionately represent said at least one other queue.
- 20. The device of claim 1 further comprising:
a vector register comprising a value specifying the maximum amount of data to be provided by a fairness-based queue to its associated output port.
- 21. A method for routing data packets using a telecommunications device, the method comprising the steps:
(a) providing a first configurable queue in communication with an input port and an output port, and a second configurable queue in communication with said input port and said output port, each of said first and second queues independently configured to operate in one of a fairness-based mode and a priority-based mode; (b) receiving a packet at said input port; (c) classifying the packet as subject to one of fairness-based handling and priority-based handling; (d) assigning said packet to one of said first configurable queue and said second configurable queue operating in a mode corresponding to the handling to which the packet is subject; and (e) causing the queue to which said packet has been assigned to provide said packet to said output port by servicing said identified queue in one of a fairness-based mode and a priority-based mode, as configured.
- 22. The method of claim 21 wherein the received packet is classified prior to receipt at said input port as subject to one of fairness-based handling and priority-based handling.
- 23. The method of claim 21 wherein the received packet is not classified prior to receipt at said input port as subject to one of fairness-based handling and priority-based handling.
- 24. The method of claim 21 further comprising the steps:
(f) providing a plurality of quality-of-service levels for association with packets; and (g) associating each of said plurality of quality-of-service levels with one of said first configurable queue and said second configurable queue.
- 25. The method of claim 21 further comprising the steps:
(f) incrementing a first credit counter associated with said first queue; (g) comparing the value of said first credit counter to a first predetermined value; and (h) providing said packet in step (e) if the result of said comparison indicates that the value of said credit counter exceeds said first predetermined value.
- 26. The method of claim 21 further comprising the steps:
(f) incrementing a first credit counter associated with said first queue; (g) comparing the value of said first credit counter to a first predetermined value; (h) decrementing said first incremented credit counter if the result of said comparison indicates that said first incremented credit counter exceeds said first predetermined value; and (i) incrementing a second credit counter.
- 27. The method of claim 26 wherein step (i) comprises the step:
incrementing said second credit counter by the excess of said first incremented credit counter over said first predetermined value.
- 28. The method of claim 26 wherein step (i) comprises the step:
incrementing said second credit counter by the amount used to increment said first credit counter.
- 29. The method of claim 26 further comprising the steps:
(j) accessing a credit allocation register; (k) retrieving the next entry in said credit allocation register; and (l) processing said retrieved entry as said second credit counter.
- 30. The method of claim 21 further comprising the steps:
(f) referencing a priority mask register associated with said output port; (g) retrieving an entry in said priority mask register defining the operational state of said first configurable queue as one of a fairness-based mode and a priority-based mode; and (h) retrieving an entry in said priority mask register defining the operational state of said second configurable queue as one of a fairness-based mode and a priority-based mode.
- 31. The method of claim 21 wherein step (f) comprises the steps:
(e-1) servicing said identified queue in a priority-based mode; (e-2) iterating step (e-1) until said identified queue is emptied of packets or a predetermined transmission criteria is satisfied.
- 32. The method of claim 31 further comprising the steps:
(f) incrementing a first credit counter associated with said first queue; (g) comparing the value of said first credit counter to a first predetermined value; (h) decrementing said first incremented credit counter if the result of said comparison indicates that said first incremented credit counter exceeds said first predetermined value; and (i) incrementing a second credit counter.
- 33. The method of claim 32 wherein step (i) comprises the step:
incrementing said second credit counter by the excess of said first incremented credit counter over said first predetermined value.
- 34. The method of claim 32 wherein step (i) comprises the step:
incrementing said second credit counter by the amount used to increment said first credit counter.
- 35. The method of claim 32 further comprising the steps:
(j) accessing a credit allocation register; (k) retrieving the next entry in said credit allocation register; and (l) processing said retrieved entry as said second credit counter.
- 36. The method of claim 31 further comprising the step:
(e-3) iterating steps (e-1) and (e-2) for all remaining queues configured to operate in a priority-based mode; and (e-4) servicing a queue configured to operate in a fairness-based mode until a queue configured to operate in a priority-based mode requires servicing.
- 37. A method for routing data packets using a telecommunications device, the method comprising the steps of:
(a) selecting one of a plurality of queues, each of said queues independently operating in one of a priority-based and a fairness-based mode; (b) dequeuing a packet from one of said priority-based queues; (c) iterating step (b) until a priority-based condition is satisfied; (d) dequeuing a packet from one of said fairness-based queues while said priority-based condition is satisfied, the failure of said condition resulting in the execution of step (c).
- 38. The method of claim 37 wherein said predetermined condition satisfied by the absence of any remaining packets in any queue operating in priority-based mode.
- 39. The method of claim 37 wherein said predetermined condition is satisfied by dequeuing packets from a priority-based queue in excess of a predetermined value.
- 40. The method of claim 37 further comprising the step:
decrementing a counter associated with said one of said priority-based queues.
- 41. The method of claim 40 wherein said predetermined condition is satisfied by a value in the associated counter less than the one of the size and the quantity of the packets remaining in said one of priority-based queues.
- 42. The method of claim 37 further comprising the step:
decrementing a counter associated with said one of said fairness-based queues.
- 43. The method of claim 42 wherein said predetermined condition is satisfied by a value in the associated counter less than the one of the size and the quantity of the packets remaining in said one of fairness-based queues.
- 44. A packet-buffering system in a communication device for transferring packets received over a communications network from an input port to an output port of the communication device, the system comprising:
a first-level memory segmented into a plurality of first-level configurable queues each having a first-buffer depth, the plurality of first-level configurable queues receiving the packets from the input port of the communication device; and a second-level memory in communication with the first-level memory and the output port, the second-level memory being segmented into a plurality of second-level configurable queues each having a second-buffer depth and being associated with the output port of the communication device, the plurality of second-level configurable queues receiving packet data from at least one of the plurality of first-level configurable queues and transferring the packet data to the output port, wherein a sum of the second-buffer depths exceeds a sum of the first-buffer depths and each of said plurality of second-level queues is configurable to independently operate in one of a fairness-based mode and a priority-based mode.
- 45. The packet-buffering system of claim 44, wherein the plurality of first-level configurable queues each have a first-buffer bandwidth and the plurality of second-level configurable queues each have a second-buffer bandwidth, wherein a sum of the second-buffer bandwidths is equal to or greater than a sum of the first-buffer bandwidths.
- 46. The packet-buffering system of claim 45, wherein the sum of the first-buffer bandwidths is not less than an aggregate bandwidth of the communications network.
- 47. The packet-buffering system of claim 44, wherein the first and second-level memories are implemented in a fully connected mesh architecture having a plurality of input ports and a plurality of output ports, each input port being continuously connected to a corresponding output port.
- 48. The packet-buffering system of claim 44, wherein the first and second-level memories are implemented in a partially connected mesh architecture having a plurality of input ports and a plurality of output ports, at least one of the input ports being switchably connected to at least one of the output ports.
- 49. The packet-buffering system of claim 44, wherein the received packets have priority levels associated therewith, each of the plurality of second-level configurable queues being assigned a priority level and receiving packets having a priority level consistent therewith.
- 50. The packet-buffering system of claim 49, further comprising
a scheduler in communication with the plurality of second-level queues, the scheduler donating bandwidth from one of the plurality of second-level configurable queues with a first priority level to another of the plurality of second-level configurable queues with a second priority level, wherein the first priority level is higher than the second priority level.
- 51. The packet-buffering system of claim 49, further comprising
a scheduler in communication with the plurality of second-level configurable queues, the scheduler donating bandwidth from one of the plurality of second-level configurable queues with a first priority level to another of the plurality of second-level configurable queues with a second priority level, wherein the first priority level is lower than the second priority level.
- 52. The packet-buffering system of claim 44, further comprising
a scheduler in communication with the plurality of second-level configurable queues, the scheduler independently scheduling packets received by the plurality of second-level configurable queues on a pure priority basis.
- 53. The packet-buffering system of claim 44, further comprising
a scheduler in communication with the plurality of second-level configurable queues, the scheduler independently scheduling packets received by the plurality of second-level configurable queues using one of a weighted fair queuing technique and a priority-based queuing technique.
- 54. The packet-buffering system of claim 44, further comprising
a scheduler in communication with the plurality of second-level configurable queues, the scheduler independently scheduling packets received by the plurality of second-level configurable queues using a random early detection technique.
- 55. The packet-buffering system of claim 44, further comprising
a scheduler in communication with the plurality of second-level configurable queues, the scheduler independently scheduling packets received by the plurality of second-level configurable queues using a weighted random early detection technique.
- 56. The packet-buffering system of claim 44, further comprising
a scheduler in communication with the plurality of second-level configurable queues, the scheduler independently scheduling packets received by the plurality of second-level configurable queues using a bandwidth donation technique.
- 57. The packet-buffering system of claim 44, further comprising
a scheduler in communication with the plurality of second-level configurable queues, the scheduler independently scheduling packets received by the plurality of second-level configurable queues by using a combination of techniques selected from pure priority, weighted fair queuing, random early detection, weighted random early detection, and bandwidth donation.
- 58. The packet-buffering system of claim 44, wherein the first-level memory is composed of a first memory type and the second-level memory is composed of a second memory type, the second memory type having performance characteristics substantially similar to the first memory type.
- 59. The packet-buffering system of claim 44, wherein the first-level memory is composed of a first memory type and the second-level memory is composed of a second memory type, the second memory type having performance characteristics substantially different from that of the first memory type.
- 60. A hierarchical packet-buffering system in a communication device for connection to a network having a first network bandwidth, the system comprising:
a first configurable packet buffer capable of receiving data packets from the communication device over the network, the first configurable packet buffer comprising a plurality of queues and having a first packet-buffer bandwidth and a first packet-buffer depth; and a plurality of second configurable packet buffers in communication with the first configurable packet buffer, each of the plurality of second packet buffers being associated with and receiving packets from at least one of the plurality of queues of the first configurable packet buffer, each of the plurality of second packet buffers having a second packet-buffer bandwidth and a second packet-buffer depth, wherein a sum of the second packet-buffer depths exceeds the first packet-buffer depth, a sum of the second packet-buffer bandwidths is equal to or greater than the first packet-buffer bandwidth, the first packet-buffer bandwidth is greater than or equal to the first network bandwidth, and each of said plurality of second configurable packet buffers is configurable to independently operate in one of a fairness-based mode and a priority-based mode.
- 61. The hierarchical packet-buffering system of claim 60, wherein the communication device is one of a plurality of communication devices interconnected to provide direct connections between each of the plurality of communication devices, wherein the hierarchical packet-buffering system contained in each of the plurality of communication devices is not shared by the plurality of communication devices.
- 62. The hierarchical packet-buffering system of claim 60, wherein the first configurable packet buffer comprises a packet buffer embedded in an ASIC.
- 63. The hierarchical packet-buffering system of claim 60, wherein each of the plurality of second configurable packet buffers comprises field configurable memory elements.
- 64. The hierarchical packet-buffering system of claim 60, further comprising a plurality of third packet buffers in communication with at least one of the plurality of second packet buffers, each of the plurality of third packet buffers being associated with and receiving packets from the at least one of the plurality of queues from the at least one of the plurality of second packet buffers, each of the plurality of third packet buffers having a third packet-buffer bandwidth and a third packet-buffer depth, wherein a sum of the third packet-buffer bandwidths associated with the at least one of the plurality of queues of the at least one second packet buffer is equal to or greater than the at least one second packet-buffer bandwidth, and wherein a sum of the third packet-buffer depths associated with the at least one of the plurality of queues of the at least one second packet buffer exceeds the second packet-buffer depth of the at least one second packet buffer.
- 65. The hierarchical packet-buffering system of claim 60, wherein the first configurable packet buffer is composed of a first memory type and the second packet buffers are composed of a second memory type, the second memory type having performance characteristics substantially similar to the first memory type.
- 66. The hierarchical packet-buffering system of claim 60, wherein the first configurable packet buffer is composed of a first memory type and the second configurable packet buffers are composed of a second memory type, the second memory type having performance characteristics substantially different from that of the first memory type.
- 67. The hierarchical packet-buffering system of claim 60, wherein the first and second packet buffers are implemented in a fully connected mesh architecture having a plurality of input ports and a plurality of output ports, each input port being continuously connected to a corresponding output port.
- 68. The hierarchical packet-buffering system of claim 60, wherein the first and second packet buffers are implemented in a partially connected mesh architecture having a plurality of input ports and a plurality of output ports, at least one of the input ports being switchably connected to at least one of the output ports.
- 69. The hierarchical packet-buffering system of claim 60, wherein the data packets received by the first configurable packet buffer have priority levels associated therewith, each of the plurality of second configurable packet buffers being assigned a priority level and receiving packets having a priority level consistent therewith.
- 70. The hierarchical packet-buffering system of claim 69, further comprising
a scheduler in communication with the plurality of second configurable packet buffers, the scheduler donating bandwidth from one of the plurality of second configurable packet buffers with a first priority level to another of the plurality of second configurable packet buffers with a second priority level, wherein the first priority level is higher than the second priority level.
- 71. The hierarchical packet-buffering system of claim 69, further comprising
a scheduler in communication with the plurality of second configurable packet buffers, the scheduler donating bandwidth from one of the plurality of second configurable packet buffers with a first priority level to another of the plurality of second configurable packet buffers with a second priority level, wherein the first priority level is lower than the second priority level.
- 72. The hierarchical packet-buffering system of claim 60, further comprising
a scheduler in communication with the plurality of second configurable packet buffers, the scheduler independently scheduling packets received by the plurality of second configurable packet buffers on a pure priority basis.
- 73. The hierarchical packet-buffering system of claim 60, further comprising
a scheduler in communication with the plurality of second configurable packet buffers, the scheduler independently scheduling packets received by the plurality of second configurable packet buffers using a weighted fair queuing technique.
- 74. The hierarchical packet-buffering system of claim 60, further comprising
a scheduler in communication with the plurality of second configurable packet buffers, the scheduler independently scheduling packets received by the plurality of second configurable packet buffers using a random early detection technique.
- 75. The hierarchical packet-buffering system of claim 60, further comprising
a scheduler in communication with the plurality of second configurable packet buffers, the scheduler independently scheduling packets received by the plurality of second configurable packet buffers using a weighted random early detection technique.
- 76. The packet-buffering system of claim 60, further comprising
a scheduler in communication with the plurality of second configurable packet buffers, the scheduler independently scheduling packets received by the plurality of second configurable packet buffers using a bandwidth donation technique.
- 77. The packet-buffering system of claim 60, further comprising
a scheduler in communication with the plurality of second configurable packet buffers, the scheduler independently scheduling packets received by the plurality of second configurable packet buffers by using a combination of techniques selected from pure priority, weighted fair queuing, random early detection, weighted random early detection, and bandwidth donation.
- 78. A hierarchical packet-buffering system for transferring packets from a series of input ports to a series of output ports, at least some of the input ports being continuously connected to corresponding output ports, the system comprising:
a first configurable packet buffer organized into a first series of queues comprising a plurality of priority queue sets, each first-series priority queue set comprising a plurality of the first-series queues and being associated with one of the output ports, each of the first-series queues having a first-series queue size; a second packet buffer receiving packets from the first configurable packet buffer, the second packet buffer being organized into a second series of queues comprising a plurality of priority queue sets, each second-series priority queue set comprising a plurality of the second-series configurable queues and being associated with one of the output ports, each of the second-series configurable queues having a second-series queue size larger than the size of a corresponding first-series queue; a plurality of de-queuing systems, each of the de-queuing systems being assigned to one of the second-series configurable queues and scheduling packets stored therein for output on one of the output ports; and a forwarding engine for examining each of the packets received on the input ports and enabling transfer of each the packet to a selected one of the first-series queues, wherein packets arrive at the input ports and are transferred to the first-series queues at an aggregate network rate, packets being received by the second-series configurable queues are transferred at a rate less than the aggregate network rate, and each of said plurality of second-series queues is configurable to independently operate in one of a fairness-based mode and a priority-based mode.
- 79. The hierarchical packet-buffering system of claim 78, wherein the first-series queues each have a first-buffer bandwidth and the second-series configurable queues each have a second-buffer bandwidth, wherein a sum of the second-buffer bandwidths is equal to or greater than a sum of the first-buffer bandwidths.
- 80. The hierarchical packet-buffering system of claim 79, wherein the sum of the first-buffer bandwidths is not less than an aggregate bandwidth of a communications network coupled to the input ports.
- 81. The hierarchical packet-buffering system of claim 78, wherein the first and second packet buffers are implemented in a fully connected mesh architecture.
- 82. The hierarchical packet-buffering system of claim 78, wherein the first and second packet buffers are implemented in a partially connected mesh architecture.
- 83. The hierarchical packet-buffering system of claim 78, wherein the transferred packets each have associated priority levels, the associated priority levels corresponding to at least one of the plurality of first-series priority queue sets and to at least one of the plurality of second-series priority queue sets.
- 84. The hierarchical packet-buffering system of claim 83, further comprising
a scheduler in communication with the plurality of second-series priority queue sets, the scheduler donating bandwidth from one of the plurality of second-series priority queue sets with a first priority level to another of the plurality of second-series priority queue sets with a second priority level, wherein the first priority level is higher than the second priority level.
- 85. The hierarchical packet-buffering system of claim 83, further comprising
a scheduler in communication with the plurality of second-series priority queue sets, the scheduler donating bandwidth from one of the plurality of second-series priority queue sets with a first priority level to another of the plurality of second-series priority queue sets with a second priority level, wherein the first priority level is lower than the second priority level.
- 86. The hierarchical packet-buffering system of claim 78, further comprising
a scheduler in communication with the plurality of second-series priority queue sets, the scheduler independently scheduling packets received by the plurality of second-series priority queue sets on a pure priority basis.
- 87. The hierarchical packet-buffering system of claim 78, further comprising
a scheduler in communication with the plurality of second-series priority queue sets, the scheduler independently scheduling packets received by the plurality of second-series priority queue sets using a weighted fair queuing technique.
- 88. The hierarchical packet-buffering system of claim 78, further comprising
a scheduler in communication with the plurality of second-series priority queue sets, the scheduler independently scheduling packets received by the plurality of second-series priority queue sets using a random early detection technique.
- 89. The hierarchical packet-buffering system of claim 78, further comprising
a scheduler in communication with the plurality of second-series priority queue sets, the scheduler independently scheduling packets received by the plurality of second-series priority queue sets using a weighted random early detection technique.
- 90. The packet-buffering system of claim 78, further comprising
a scheduler in communication with the plurality of second-series priority queue sets, the scheduler independently scheduling packets received by the plurality of second-series priority queue sets using a bandwidth donation technique.
- 91. The packet-buffering system of claim 78, further comprising
a scheduler in communication with the plurality of second-series priority queue sets, the scheduler independently scheduling packets received by the plurality of second-series priority queue sets by using a combination of techniques selected from pure priority, weighted fair queuing, random early detection, weighted random early detection, and bandwidth donation.
- 92. A method of buffering packets in a communication device, the method comprising the steps of:
receiving the packets at an input port of the communication device; providing first-level configurable queues associated with the input port and having a first-buffer depth, the first-level configurable queues receiving the packets from the input port; selecting an output port of the communication device as a destination for the received packets; providing second-level configurable queues associated with the selected output port and corresponding to the first-level configurable queues, the second-level configurable queues having a second-buffer depth exceeding the first-buffer depth of the first-level configurable queues; transferring the received packets from the first-level configurable queues to corresponding second-level configurable queues; and transmitting the transferred packets in the second-level configurable queues to the selected output port, wherein each of said of second-level configurable queues is configurable to independently operate in one of a fairness-based mode and a priority-based mode.
- 93. The method of claim 92, further comprising the steps of:
determining a priority level associated with the received packets; assigning the priority level to at least one of the second-level configurable queues; and transferring the received packets from the first-level configurable queues to the at least one of the second-level configurable queues assigned to that priority level.
- 94. The method of claim 93, further comprising the step of donating bandwidth from one of the second-level configurable queues with a first priority level to another of the second-level configurable queues with a second priority level, wherein the first priority level is higher than the second priority level.
- 95. The method of claim 93, further comprising the step of donating bandwidth from one of the second-level configurable queues with a first priority level to another of the second-level configurable queues with a second priority level, wherein the first priority level is lower than the second priority level.
- 96. The method of claim 92 further comprising the step of independently scheduling packets received by the second-level configurable queues on a pure priority basis.
- 97. The method of claim 92 further comprising the step of independently scheduling packets received by the second-level configurable queues using a weighted fair queuing technique.
- 98. The method of claim 92 further comprising the step of independently scheduling packets received by the second-level configurable queues using a random early detection technique.
- 99. The method of claim 92 further comprising the step of independently scheduling packets received by the second-level configurable queues using a weighted random early detection technique.
- 100. The method of claim 92 further comprising the step of independently scheduling packets received by the second-level configurable queues using a bandwidth donation technique.
- 101. The method of claim 92 further comprising the step of independently scheduling packets received by the second-level configurable queues using a combination of techniques selected from pure priority, weighted fair queuing, random early detection, weighted random early detection, and bandwidth donation.
- 102. The method of claim 92, wherein
i) the step of providing first-level configurable queues further comprises receiving the packets at an aggregate network rate of the communication device, and ii) the transferring step comprises buffering the transferred packets in the second-level configurable queues at a rate less than the aggregate network rate.
- 103. The method of claim 92, wherein the received packets have forwarding attributes associated therewith, and further comprising the steps of:
aggregating the received packets with substantially similar forwarding attributes into queue flows; and routing the queue flows into the first-level configurable queues.
- 104. The method of claim 92 further comprising the step of continuously coupling the input port to the selected output port.
- 105. The method of claim 92 further comprising the step of switchably coupling the input port to the selected output port.
- 106. The method of claim 92 further comprising the steps of:
providing a first memory element having a first set of performance characteristics; forming the first-level configurable queues within the first memory element; providing a second memory element having a second set of performance characteristics, the second set of performance characteristics being substantially similar to the first set of performance characteristics; and forming the second-level configurable queues within the second memory element.
- 107. The method of claim 92 further comprising the steps of:
providing a first memory element having a first set of performance characteristics; forming the first-level configurable queues within the first memory element; providing a second memory element having a second set of performance characteristics, the second set of performance characteristics differing from the first set of performance characteristics; and forming the second-level configurable queues within the second memory element.
- 108. A method of buffering data in a packet-buffering system of a communication device for connection to a network having a first network bandwidth, the method comprising the steps of:
providing a first configurable packet buffer capable of receiving data packets from the communication device over the network, the first configurable packet buffer comprising a plurality of queues and having a first packet-buffer bandwidth and a first packet-buffer depth; providing a plurality of second configurable packet buffers in communication with the first configurable packet buffer, each of the second configurable packet buffers being associated with and receiving packets from at least one of the plurality of queues of the first configurable packet buffer, each of the second configurable packet buffers having a second packet-buffer bandwidth and a second packet-buffer depth, wherein
i) a sum of the second packet-buffer depths exceeds the first packet-buffer depth, ii) a sum of the second packet-buffer bandwidths is equal to or greater than the first packet-buffer bandwidth, and iii) the first packet-buffer bandwidth is greater than or equal to the first network bandwidth; receiving the data packets in at least one of the plurality of queues of the first configurable packet buffer, the data packets being received from an input port of the communication device; and routing packets from the queues of the first configurable packet buffer to corresponding queues of second configurable packet buffer, the corresponding queues transferring the routed packets to an output port of the communication device.
- 109. The method of claim 108, further comprising the steps of:
determining a priority level associated with the data packets received from the input port; assigning the priority level to at least one of the second configurable packet buffers; and routing the received packets from the first-level configurable queues to the at least one of the second configurable packet buffers assigned to that priority level.
- 110. The method of claim 108, further comprising the step of donating bandwidth from one of the second configurable packet buffers with a first priority level to another of the second-level configurable packet buffers with a second priority level, wherein the first priority level is higher than the second priority level.
- 111. The method of claim 108, further comprising the step of donating bandwidth from one of the second configurable packet buffers with a first priority level to another of the second configurable packet buffers with a second priority level, wherein the first priority level is lower than the second priority level.
- 112. The method of claim 108 further comprising the step of independently scheduling packets received by the second configurable packet buffers on a pure priority basis.
- 113. The method of claim 108 further comprising the step of independently scheduling packets received by the second configurable packet buffers using a weighted fair queuing technique.
- 114. The method of claim 108 further comprising the step of independently scheduling packets received by the second configurable packet buffers using a random early detection technique.
- 115. The method of claim 108 further comprising the step of independently scheduling packets received by the second configurable packet buffers using a weighted random early detection technique.
- 116. The method of claim 108 further comprising the step of independently scheduling packets received by the second configurable packet buffers using a bandwidth donation technique.
- 117. The method of claim 108 further comprising the step of independently scheduling packets received by the second configurable packet buffers using a combination of techniques selected from pure priority, weighted fair queuing, random early detection, weighted random early detection, and bandwidth donation.
- 118. The method of claim 108, further comprising the steps of:
receiving the data packets at an aggregate network rate of the communication device by the queues of the first configurable packet buffer; and buffering the packets received from the first configurable packet buffer by the second configurable packet buffers at a rate less than the aggregate network rate.
- 119. The method of claim 108 further comprising the steps of:
aggregating the packets received at the input port according to substantially similar forwarding attributes associated therewith, the aggregated packets forming queue flows; and routing the queue flows into the plurality of queues of the first configurable packet buffer.
- 120. The method of claim 108 further comprising the step of continuously coupling the input port to the output port.
- 121. The method of claim 108 further comprising the step of switchably coupling the input port to the output port.
- 122. The method of claim 108 further comprising the steps of:
providing a first memory element having a first set of performance characteristics; forming the first configurable packet buffer within the first memory element; providing a second memory element having a second set of performance characteristics, the second set of performance characteristics being substantially similar to the first set of performance characteristics; and forming the second configurable packet buffers within the second memory element.
- 123. The method of claim 108 further comprising the steps of:
providing a first memory element having a first set of performance characteristics; forming the first configurable packet buffer within the first memory element; providing a second memory element having a second set of performance characteristics, the second set of performance characteristics differing from the first set of performance characteristics; and forming the second configurable packet buffers within the second memory element.
- 124. A method of buffering queues in a hierarchical packet-buffering system coupled to a network, comprising the steps of:
receiving data packets over the network, the data packets having forwarding attributes associated therewith; aggregating data packets with substantially similar forwarding attributes into queue flows; routing at least one of the queue flows into a plurality of first configurable packet buffers, each of the plurality of first configurable packet buffers having a first packet-buffer bandwidth and first packet-buffer depth; routing a subset of the at least one of the queue flows from at least one of the plurality of first configurable packet buffers into a plurality of second configurable packet buffers associated with the at least one of the queue flows, each of the plurality of second configurable packet buffers having a second packet-buffer bandwidth and a second packet-buffer depth, wherein a sum of the first packet-buffer bandwidths associated with the at least one of the queue flows is less than or equal to a corresponding sum of the associated second packet-buffer bandwidths.
- 125. A method for routing data packets using a telecommunications device, the method comprising the steps:
(a) providing a first configurable queue in communication with an input port and an output port, and a second configurable queue in communication with said input port and said output port, each of said first and second queues independently configured to operate in one of a fairness-based mode and a priority-based mode; (b) incrementing a first credit counter associated with said first queue; (c) comparing the value of said first credit counter to a first predetermined value; and (d) incrementing a second credit counter in response to the result of said comparison.
- 126. The method of claim 125 wherein step (d) comprises the step:
incrementing said second credit counter by the excess of said first incremented credit counter over said first predetermined value.
- 127. The method of claim 125 wherein step (d) comprises the step:
incrementing said second credit counter by amount used to increment said first credit counter.
- 128. The method of claim 125 further comprising the step:
decrementing said first incremented credit counter if the result of said comparison indicates that said first incremented credit counter exceeds said first predetermined value.
- 129. The method of claim 125 further comprising the steps:
(e) accessing a credit allocation register; (f) retrieving the next entry in said credit allocation register; and (g) processing said retrieved entry as said second credit counter.
- 130. The method of claim 125 further comprising the step:
(e) providing a register to selectively disable step (d).
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] The present application claims the benefit of provisional application No. 60/339,073, filed on Nov. 16, 2001, the entire disclosure of which is incorporated by reference as if set forth in its entirety herein.
Provisional Applications (1)
|
Number |
Date |
Country |
|
60339073 |
Nov 2001 |
US |