Packet sequence maintenance with load balancing, and head-of-line blocking avoidance in a switch
First Claim
1. A method comprising:
- a) accepting a packet associated with a flow;
b) generating a flow group identifier from the flow;
c) determining whether any other packets associated with the flow group are present in a switch fabric;
d) if it is determined that other packets associated with the flow group are present in the switch fabric, then assigning the packet to a path being used by the flow group, and if it is determined that other packets associated with the flow group are not present in the switch fabric, then assigning the packet to a path using path congestion status information.
3 Assignments
0 Petitions
Accused Products
Abstract
To avoid packet out-of-sequence problems, while providing good load balancing, each input port of a switch monitors the outstanding number of packets for each flow group. If there is an outstanding packet in the switch fabric, the following packets of the same flow group should follow the same path. If there is no outstanding packet of the same flow group in the switch fabric, the (first, and therefore subsequent) packets of the flow can choose a less congested path to improve load balancing performance without causing an out-of-sequence problem. To avoid HOL blocking without requiring too many queues, an input module may include two stages of buffers. The first buffer stage may be a virtual output queue (VOQ) and second buffer stage may be a virtual path queue (VPQ). At the first stage, the packets may be stored at the VOQs, and the HOL packet of each VOQ may be sent to the VPQ. By allowing each VOQ to send at most one packet to VPQ, HOL blocking can be mitigated dramatically.
-
Citations
32 Claims
-
1. A method comprising:
-
a) accepting a packet associated with a flow;
b) generating a flow group identifier from the flow;
c) determining whether any other packets associated with the flow group are present in a switch fabric;
d) if it is determined that other packets associated with the flow group are present in the switch fabric, then assigning the packet to a path being used by the flow group, and if it is determined that other packets associated with the flow group are not present in the switch fabric, then assigning the packet to a path using path congestion status information. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A machine-readable medium having stored thereon a data structure comprising a plurality of entries, each entry including
a) a flow group identifier, b) an outstanding packet in switch fabric indicator, and c) a path identifier.
-
15. Apparatus comprising:
-
a) an input for accepting a packet associated with a flow;
b) means for generating a flow group identifier from the flow;
c) means for determining whether any other packets associated with the flow group are present in a switch fabric;
d) means for assigning the packet to a path being used by the flow group if it is determined that other packets associated with the flow group are present in the switch fabric, and for assigning the packet to a path using path congestion status information if it is determined that other packets associated with the flow group are not present in the switch fabric. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25)
-
-
26. A method for alleviating head-of-line blocking in an input-buffered switch, wherein the switch includes a plurality of input modules, each input module including virtual output queues and virtual path queues, the method comprising:
-
a) assigning an incoming cell to an appropriate one of the virtual output queues using cell destination information;
b) providing a head-of-line cell of the one of the virtual output queues to an appropriate one of the virtual path queues using path identifier information of the cell;
c) for an input module-to-switch plane link, selecting one of a number of virtual path queues associated with the link and having at least one cell; and
d) sending the cell from the selected one of the number of virtual path queues over the link. - View Dependent Claims (27, 28)
-
-
29. For use in a switch, an input module comprising:
-
a) a plurality of virtual output queues for accepting cells; and
b) a plurality of virtual path queues for accepting head-of-line cells from the plurality of virtual output queues. - View Dependent Claims (30, 31, 32)
-
Specification