Methods and apparatus for retaining packet order in systems utilizing multiple transmit queues
First Claim
1. A method, comprising:
- defining at least two transmit queues for a priority level group;
receiving at least two transmit requests substantially simultaneously; and
wherein, if the at least two transmit requests correspond to packets from separate flows, the packets having a priority designation corresponding to the priority level group, then processing the at least two transmit requests substantially in parallel and queuing the packets separately in the at least two transmit queues;
wherein, if the at least two transmit requests correspond to packets from a common flow, then processing the at least two transmit requests substantially in series and queuing the packets together in one of the at least two transmit queues.
1 Assignment
0 Petitions
Accused Products
Abstract
Methods, apparatus, and articles of manufacture for retaining packet order in multiprocessor systems utilizing multiple transmit queues are disclosed herein. Embodiments of the present invention define multiple transmit queues for a given priority level of packets to enable the multiprocessor system to process and queue packets of equal priority in different transmit queues. Queuing packets of equal priority in different transmit queues minimizes processor time spent attempting to acquire queue-specific resources associated with one particular transmit queue. In addition, embodiments of the present invention provide an assignment mechanism to ensure that packets corresponding to a common flow are queued in the same transmit queue in order to eliminate, to the extent possible, out-or-order packets, which many times results in lost packets and a reduction in realized network throughput.
92 Citations
24 Claims
-
1. A method, comprising:
-
defining at least two transmit queues for a priority level group; receiving at least two transmit requests substantially simultaneously; and wherein, if the at least two transmit requests correspond to packets from separate flows, the packets having a priority designation corresponding to the priority level group, then processing the at least two transmit requests substantially in parallel and queuing the packets separately in the at least two transmit queues; wherein, if the at least two transmit requests correspond to packets from a common flow, then processing the at least two transmit requests substantially in series and queuing the packets together in one of the at least two transmit queues. - View Dependent Claims (2, 3, 4)
-
-
5. A method, comprising:
-
defining at least two transmit queues to correspond to at least one priority level receiving at least two transmit requests at a send packet function of a device driver substantially simultaneously, the at least two transmit requests corresponding to at least two packets; assigning each of the at least two packets to a queue group in response to a priority designation, the queue group comprising the at least two transmit queues corresponding to the at least one priority level; assigning each of the at least two packets to one of the at least two transmit queues in response to a flow characteristic; and wherein, if the at least two packets correspond to different queue assignments, then processing the at least two transmit requests substantially in parallel and queuing the at least two packets separately in the at least two transmit queues; wherein assigning each of the at least two packets to one of the at least two transmit queues comprises correlating an output generated by an algorithm with a defined value associated uniquely with each of the at least two transmit queues. - View Dependent Claims (6, 7, 8, 9)
-
-
10. An apparatus, comprising:
-
a plurality of processors; and a memory, coupled to the plurality of processors, to store a plurality of instructions, the memory configured to provide at least two transmit queues accessible by the communications interface, and wherein execution of the instructions by the plurality of processors causes the apparatus to; define the at least two transmit queues for a priority level group; receive, substantially simultaneously, a plurality of transmit requests at the plurality of processors, each of the transmit requests corresponding to a packet having a priority designation and a flow characteristic; and process the two or more transmit requests substantially in series and queue the packets together in one of the at least two transmit queues in response to a determination that the packets have equivalent flow characteristics; wherein, if two or more of the plurality of transmit requests correspond to packets having distinct flow characteristics, the packets having a priority designation corresponding to the priority level group, then process the two or more of the plurality of transmit requests substantially in parallel and queue the packets separately in the at least two transmit queues. - View Dependent Claims (11, 12, 13, 14, 15)
-
-
16. An article of manufacture, comprising:
a machine-readable medium that provides instructions, which, when executed by a machine, cause the machine to; define at least two transmit queues for a priority level group; receive at least two transmit requests substantially simultaneously; and process the at least two transmit requests substantially in series and queue the packets together in one of the at least two transmit queues in response to a determination that the at least two transmit requests correspond to packets from a common flow; wherein, if the at least two transmit requests correspond to packets from separate flows, the packets having a priority designation corresponding to the priority level group, then processing the at least two transmit requests substantially in parallel and queuing the packets separately in the at least two transmit queues. - View Dependent Claims (17, 18, 19)
-
20. An article of manufacture, comprising:
-
a machine-readable medium that provides instructions, which, when executed by a machine, cause the machine to; define at least two transmit queues to correspond to at least one priority level; receive at least two transmit requests at a send packet function of a device driver substantially simultaneously, the at least two transmit requests corresponding to at least two packets; assign each of the at least two packets to a queue group in response to a priority designation, the queue group comprising the at least two transmit queues corresponding to the at least one priority level; assign each of the at least two packets to one of the at least two transmit queues in response to a flow characteristic; and wherein, if the at least two packets correspond to different queue assignments, then process the at least two transmit requests substantially in parallel and queue the at least two packets separately in the at least two transmit queues; wherein assigning each of the at least two packets to one of the at least two transmit queues comprises correlating an output generated by an algorithm with a defined value associated uniquely with each of the at least two transmit queues. - View Dependent Claims (21, 22, 23, 24)
-
Specification