Method for scheduling transmissions in a buffered switch
Switches and routers have traditionally employed output-queuing. When packets or cells arrive at an input port, they are immediately transferred by a high-speed switching fabric to the correct output port and stored in output queues. Various queue management policies which have been considered, such...
Saved in:
Main Authors | , |
---|---|
Format | Patent |
Language | English |
Published |
19.03.2002
|
Online Access | Get full text |
Cover
Summary: | Switches and routers have traditionally employed output-queuing. When packets or cells arrive at an input port, they are immediately transferred by a high-speed switching fabric to the correct output port and stored in output queues. Various queue management policies which have been considered, such as virtual clock algorithms, deficit round robin, weighted fair queuing or generalized processor sharing, and many variations, have attempted to control precisely the time of departure of packets belonging to different virtual circuits (VCs) or flows or sessions, thus providing various quality-of-service (QoS) features such as delay, bandwidth and fairness guarantees.
A method for scheduling transmission of cells through a data switch having a plurality of inputs and outputs provides a plurality of buffers at each input. Each buffer corresponds to an output, or to a virtual circuit. A weight is assigned to each buffer; and buffers are selected according to a maximal weighted matching. Finally, cells are transmitted from the selected buffers to the corresponding outputs. Weights are based on number of credits associated with each buffer. Optionally, the weight is zero if the associated buffer is empty. A credit bucket size may be assigned to each buffer to limit the number of credits when the buffer is empty. Alternatively, weights are set to either buffer length, or to the number of credits, whichever is less. Or, weights may be set to validated waiting times associated with the oldest cells. Each input/output pair is assigned the maximum weight of any associated virtual connection. Fairness is provided in leftover bandwidth by determining a second matching between remaining inputs and outputs. Buffers are selected according to the second matching. In addition, a linked list structure is provided. Each list is associated with a weight, and holds references to buffers which have that weight, and has links to next and previous lists associated respectively with weights one greater and one less than the subject list's associated weight. Each reference is placed in a list associated with the respective weight. Upon changing a buffer's weight, its reference is moved to the list corresponding to the new weight. Previously unselected buffers are selected from the lists in order descending weights. |
---|