Output queue latency behavior for input queue based device
First Claim
1. A method comprising:
- receiving a virtual output queue length value from each virtual output queue at each of a plurality of input ports coupled to an output port, wherein the output port includes an output queue having a size less than a size of each virtual output queue such that packet flow control is not performed at the output queue;
calculating, by a controller, an aggregate queue length value for the output port as a sum of each virtual output queue length value from each of the plurality of input ports, the aggregate queue length value representing an amount of data across the plurality of input ports and destined for the output port;
generating a feedback drop instruction for at least one of the plurality of input ports based on the aggregate queue length value for the output port;
instructing, in response to the feedback drop instruction, the at least one of the plurality of input ports to drop packets based on the aggregate queue length value wherein packets are dropped rather than delayed.
1 Assignment
0 Petitions
Accused Products
Abstract
In one implementation, an input queue switch provides latency fairness across multiple input ports and multiple output ports. In one embodiment, each input port maintains a virtual output queue for each associate output port. The virtual output queues across multiple inputs are aggregated for each specific output port. The sum of the lengths of the virtual output queues is compared to a threshold, and based on the comparison, feedback may be generated to control the operation of the input port for subsequent packets. The feedback may instruct the input port to stop buffering or drop packets destined for the output port with the sum of the lengths of the virtual output queues associated to the specific output port that exceeds the threshold. In another embodiment, each packet has an arrival timestamp, and a virtual output queue having the oldest timestamp is selected first to dequeue.
-
Citations
20 Claims
-
1. A method comprising:
-
receiving a virtual output queue length value from each virtual output queue at each of a plurality of input ports coupled to an output port, wherein the output port includes an output queue having a size less than a size of each virtual output queue such that packet flow control is not performed at the output queue; calculating, by a controller, an aggregate queue length value for the output port as a sum of each virtual output queue length value from each of the plurality of input ports, the aggregate queue length value representing an amount of data across the plurality of input ports and destined for the output port; generating a feedback drop instruction for at least one of the plurality of input ports based on the aggregate queue length value for the output port; instructing, in response to the feedback drop instruction, the at least one of the plurality of input ports to drop packets based on the aggregate queue length value wherein packets are dropped rather than delayed. - View Dependent Claims (2, 3, 18, 19)
-
-
4. A network device comprising:
-
a communication interface of an output port, the communication interface configured to receive a virtual output queue length value from each virtual output queue at each of a plurality of input ports coupled to the output port, wherein the output port includes an output queue having a size less than a size of each virtual output queue such that packet flow control is not performed at the output queue; and a controller configured to calculate an aggregate queue length value for the output port as a sum of each virtual output queue length value from each of the plurality of input ports and compare the aggregate queue length value to a predetermined threshold, the aggregate queue length value representing an amount of data of all of the plurality of input ports and destined for the output port;
wherein feedback is provided to the plurality of input ports according to a result of the comparison,wherein the controller is configured to generate a tail drop message if the aggregate queue length value exceeds the predetermined threshold, wherein the tail drop message instructs the plurality of input ports to stop buffering subsequent packets associated with the output port and start dropping subsequent packets associated with the output port. - View Dependent Claims (5, 6, 7, 8, 9, 12)
-
-
10. A non-transitory computer readable medium containing instructions that when executed by a computer processor cause the computer processor to:
-
calculate an aggregate queue length value for an output port as a sum of a plurality of virtual output queue length values, wherein each of the virtual output queue length values is associated with one of a plurality of input ports, wherein the output port includes an output queue having a size less than a size of each virtual output queue at each of the plurality of input ports such that packet flow control is not performed at the output queue; calculate a difference between the aggregate queue length value and a predetermined queue length value; and generate a message based on the difference between the aggregate queue length value and the predetermined queue length value, wherein when the difference between the aggregate queue length value and the predetermined queue length value exceeds a first threshold, the message includes a congestion warning, and wherein when the difference between the aggregate queue length value and the predetermined queue length value exceeds a second threshold, the message includes a packet drop command, wherein the second threshold is greater than the first threshold, wherein the second threshold is triggered after the first threshold. - View Dependent Claims (13, 15)
-
-
11. A method comprising:
-
receiving a virtual output queue length value from each virtual output queue at each of a plurality of input ports coupled to an output port, wherein the output port includes an output queue having a size less than a size of each virtual output queue such that packet flow control is not performed at the output queue; calculating, by a controller, an aggregate queue length value for the output port as a sum of each virtual output queue length value from each of the plurality of input ports, the aggregate queue length value representing an amount of data across the plurality of input ports and destined for the output port; generating a feedback message for at least one of the plurality of input ports including the aggregate queue length value; and comparing, by the controller, the aggregate queue length value to a first threshold and a second threshold, wherein the second threshold is greater than the first threshold, wherein the feedback message instructs the at least one of the plurality of input ports to stop buffering subsequent packets associated with the output port when the aggregate queue length value exceeds the second threshold, and wherein the feedback message includes a congestion warning when the aggregate queue length value is between the first threshold and the second threshold. - View Dependent Claims (14, 16)
-
-
17. A non-transitory computer readable medium containing instructions that when executed by a computer processor cause the computer processor to:
-
receive a virtual output queue length value from each virtual output queue at each of a plurality of input ports coupled to an output port, wherein the output port includes an output queue having a size less than a size of each virtual output queue such that packet flow control is not performed at the output queue; calculate an aggregate queue length value for the output port as a sum of each virtual output queue length value from each of the plurality of input ports, the aggregate queue length value representing an amount of data across the plurality of input ports and destined for the output port; generate a feedback drop instruction for at least one of the plurality of input ports based on the aggregate queue length value for the output port; instruct, in response to the feedback drop instruction, the at least one of the plurality of input ports to drop packets based on the aggregate queue length value wherein packets are dropped rather than delayed. - View Dependent Claims (20)
-
Specification