Distributed packet processing with ordered locks to maintain requisite packet orderings
First Claim
1. A method for processing packets, the method comprising:
- distributing a plurality of packets to a plurality of packet processing engines while maintaining order of one or more streams of packets using one or more ordered locks, said distributing including distributing a particular packet of the plurality of packets to a particular packet processing engine of the plurality of packet processing engines with the particular packet being associated with a particular identifier of a particular ordered lock of said one or more ordered locks;
in response to the particular packet processing engine completing processing of the particular packet, attaching a gather instruction to the particular identifier and releasing the packet processing engine; and
performing the gather instruction in response to the particular ordered lock being acquired by the particular identifier, said gather instruction causing the processed particular packet to be sent;
wherein said releasing the packet processing engine is performed prior to said performing the gather instruction.
1 Assignment
0 Petitions
Accused Products
Abstract
Sequences of items may be maintained using ordered locks. These items may correspond to anything, but using ordered locks to maintain sequences of packets, especially for maintaining requisite packet orderings when distributing packets to be processed to different packet processing engines, may be particularly useful. For example, in response to a particular packet processing engine completing processing of a particular packet, a gather instruction is attached to the particular identifier of a particular ordered lock associated with the particular packet. If no longer needed for further processing, the packet processing engine is immediately released to be able to process another packet or perform another function. The gather instruction is performed in response to the particular ordered lock being acquired by the particular identifier, with the gather instruction causing the processed particular packet to be sent.
-
Citations
22 Claims
-
1. A method for processing packets, the method comprising:
-
distributing a plurality of packets to a plurality of packet processing engines while maintaining order of one or more streams of packets using one or more ordered locks, said distributing including distributing a particular packet of the plurality of packets to a particular packet processing engine of the plurality of packet processing engines with the particular packet being associated with a particular identifier of a particular ordered lock of said one or more ordered locks; in response to the particular packet processing engine completing processing of the particular packet, attaching a gather instruction to the particular identifier and releasing the packet processing engine; and performing the gather instruction in response to the particular ordered lock being acquired by the particular identifier, said gather instruction causing the processed particular packet to be sent; wherein said releasing the packet processing engine is performed prior to said performing the gather instruction. - View Dependent Claims (2)
-
-
3. A method for processing packets, the method comprising:
-
receiving a particular packet of a stream of packets; storing the particular packet in a packet data storage and allocating a packet handle data structure identifying the particular packet in the packet data storage; associating the particular packet with a particular identifier of a particular ordered lock of one or more ordered locks; distributing the particular packet to a particular packet processing engine of a plurality of packet processing engines; in response to the particular packet processing engine completing processing of the particular packet, attaching a gather instruction to the particular identifier and releasing the packet processing engine; and performing the gather instruction in response to the particular ordered lock being acquired by the particular identifier, said gather instruction including communicating a gather request to a gather mechanism, wherein the gather mechanism prepares and sends the processed particular packet; and receiving by the gather mechanism a copy of the packet handle data structure, and releasing the packet handle data structure after the gather mechanism receives the copy of the packet handle data structure; wherein said releasing the packet processing engine is performed prior to said performing the gather instruction, and said releasing the packet handle data structure is performed prior to the sending of the processed packet. - View Dependent Claims (4)
-
-
5. A method for processing packets, the method comprising:
-
receiving a particular packet of a stream of packets; storing the particular packet in a packet data storage and allocating a packet handle data structure identifying the particular packet in the packet data storage; associating the particular packet with a particular identifier of a particular ordered lock of one or more ordered locks; distributing the particular packet to a particular packet processing engine of a plurality of packet processing engines; in response to the particular packet processing engine completing processing of the particular packet, attaching a gather instruction to the particular identifier; and performing the gather instruction in response to the particular ordered lock being acquired by the particular identifier, said gather instruction including communicating a gather request to a gather mechanism, wherein the gather mechanism prepares and sends the processed particular packet; receiving by the gather mechanism a copy of the packet handle data structure; and reusing the packet handle data structure after the gather mechanism receives the copy of the packet handle data structure by the particular packet processing engine to perform further processing in response to said processing of the particular packet; wherein said reusing the packet handle data structure is commenced prior to the sending of the processed packet. - View Dependent Claims (6, 7)
-
-
8. A method for processing packets, the method comprising:
-
receiving a particular packet of a stream of packets; associating the particular packet with a particular identifier of a particular ordered lock of one or more ordered locks; distributing the particular packet to a particular packet processing engine of a plurality of packet processing engines; in response to the particular packet processing engine completing processing of the particular packet, attaching a gather instruction to the particular identifier; and performing the gather instruction in response to the particular ordered lock being acquired by the particular identifier, said gather instruction including communicating a gather request to a gather mechanism, wherein the gather mechanism prepares and sends the processed particular packet and then notifies the particular packet processing engine; and further processing of the particular packet by the particular packet processing engine in response to said notification. - View Dependent Claims (9, 10)
-
-
11. An apparatus for processing packets, the apparatus comprising:
-
a plurality of packet processing engines; an ordered lock manager configured to receive lock requests, to receive instruction requests corresponding to said lock requests, and to process instructions corresponding to said lock requests in the order said lock requests are received and after an immediately prior lock request in the order said lock requests are received is released; and a distributor, coupled to the plurality of packet processing engines and the ordered lock manager, configured to receive a packet, make a locking request corresponding to the packet to the ordered lock manager, and to distribute the packet to a particular processing engine of the plurality of packet processing engines; wherein the particular processing engine is configured to communicate one or more instructions corresponding to the packet to the ordered lock manager after completing processing of the packet, and after said communication of said one or more instructions, the particular packet processing engine is released. - View Dependent Claims (12, 13, 14)
-
-
15. An apparatus for processing packets, the apparatus comprising:
-
a plurality of packet processing engines; an ordered lock manager configured to receive lock requests, to receive instruction requests corresponding to said lock requests, and to process instructions corresponding to said lock requests in the order said lock requests are received and after an immediately prior lock request in the order said lock requests are received is released; and a distributor, coupled to the plurality of packet processing engines and the ordered lock manager, configured to receive a packet, make a locking request corresponding to the packet to the ordered lock manager, and to distribute the packet to a particular processing engine of the plurality of packet processing engines, wherein the particular processing engine is configured to communicate one or more instructions corresponding to the packet to the ordered lock manager after completing processing of the packet, wherein said one or more instructions includes a gather instruction for the packet; and a gather mechanism, wherein the ordered lock manager is configured to communicate a gather request for the packet to the gather mechanism in response to acquiring a lock identifier associated with the packet, with said one or more instructions being associated with the lock identifier, wherein the gather mechanism prepares and sends the processed particular packet and then notifies the particular packet processing engine; and wherein the particular packet processing engine is configured to further process the packet in response to receiving said notification. - View Dependent Claims (16)
-
-
17. An apparatus for processing packets, the apparatus comprising:
-
means for distributing a plurality of packets to a plurality of packet processing engines while maintaining order of one or more streams of packets using one or more ordered locks, said means for distributing including means for distributing a particular packet of the plurality of packets to a particular packet processing engine of the plurality of packet processing engines with the particular packet being associated with a particular identifier of a particular ordered lock of said one or more ordered locks; means for attaching a gather instruction to the particular identifier and releasing the packet processing engine in response to the particular packet processing engine completing processing of the particular packet; and means for performing the gather instruction in response to the particular ordered lock being acquired by the particular identifier, said gather instruction causing the processed particular packet to be sent; wherein said releasing the packet processing engine is performed prior to said performing the gather instruction. - View Dependent Claims (18)
-
-
19. An apparatus for processing packets, the apparatus comprising:
-
means for receiving a particular packet of a stream of packets; means for storing the particular packet in a packet data storage and allocating a packet handle data structure identifying the particular packet in the packet data storage; means for associating the particular packet with a particular identifier of a particular ordered lock of one or more ordered locks; means for distributing the particular packet to a particular packet processing engine of a plurality of packet processing engines; means for attaching a gather instruction to the particular identifier and releasing the packet processing engine, in response to the particular packet processing engine completing processing of the particular packet; and means for performing the gather instruction in response to the particular ordered lock being acquired by the particular identifier, said gather instruction including communicating a gather request to a gather mechanism, wherein the gather mechanism prepares and sends the processed particular packet; and means for receiving by the gather mechanism a copy of the packet handle data structure, and releasing the packet handle data structure after the gather mechanism receives the copy of the packet handle data structure; wherein said releasing the packet processing engine is performed prior to said performing the gather instruction, and said releasing the packet handle data structure is performed prior to the sending of the processed packet.
-
-
20. An apparatus for processing packets, the apparatus comprising:
-
means for receiving a particular packet of a stream of packets; means for associating the particular packet with a particular identifier of a particular ordered lock of one or more ordered locks; means for distributing the particular packet to a particular packet processing engine of a plurality of packet processing engines; means for attaching a gather instruction to the particular identifier in response to the particular packet processing engine completing processing of the particular packet; and means for performing the gather instruction in response to the particular ordered lock being acquired by the particular identifier, said gather instruction including communicating a gather request to a gather mechanism, wherein the gather mechanism prepares and sends the processed particular packet and then notifies the particular packet processing engine; and further processing of the particular packet by the particular packet processing engine in response to said notification. - View Dependent Claims (21, 22)
-
Specification