Distributed packet processing with ordered locks to maintain requisite packet orderings
First Claim
1. An apparatus, comprising:
- one or more ordered lock managers configured to receive lock requests, to receive instruction requests corresponding to said lock requests, and to perform said received instructions corresponding to said lock requests in the order said lock requests are requested and after an immediately prior lock request in the order said lock requests are received is released,wherein said instruction requests include a gather instruction for a processed packet processed by one of the plurality of packet processing packet engines;
a plurality of packet processing engines, each of the plurality of packet processing engines configured to process packets distributed to it and to communicate one or more instructions to one or more of said one or more ordered lock managers for each said packet distributed to it; and
a distributor configured to receive packets, make locking requests corresponding to said received packets to said one or more ordered lock managers, and to distribute said received packets to the plurality of packet processing engines;
wherein said instruction requests include a gather instruction for a processed packet processed by one of the plurality of packet processing engines.
0 Assignments
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 typically 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.
21 Citations
19 Claims
-
1. An apparatus, comprising:
-
one or more ordered lock managers configured to receive lock requests, to receive instruction requests corresponding to said lock requests, and to perform said received instructions corresponding to said lock requests in the order said lock requests are requested and after an immediately prior lock request in the order said lock requests are received is released, wherein said instruction requests include a gather instruction for a processed packet processed by one of the plurality of packet processing packet engines; a plurality of packet processing engines, each of the plurality of packet processing engines configured to process packets distributed to it and to communicate one or more instructions to one or more of said one or more ordered lock managers for each said packet distributed to it; and a distributor configured to receive packets, make locking requests corresponding to said received packets to said one or more ordered lock managers, and to distribute said received packets to the plurality of packet processing engines; wherein said instruction requests include a gather instruction for a processed packet processed by one of the plurality of packet processing engines. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method, comprising:
-
distributing a plurality of packets of one or more streams of packets to a plurality of packet processing engines while maintaining the original order of the individual streams of one or more streams of packets using one or more ordered locks of one or more ordered locking mechanisms, wherein each of said ordered locks is configured for queuing a plurality of identifiers corresponding to its locking requests in the order of receipt of its said locking requests, and to associate instructions with said identifiers; for each particular packet of the plurality of packets;
in response to completing processing of the particular packet, attaching a gather instruction to an identifier of said identifiers, wherein the identifier corresponds to said particular packet; andfor each particular gather instruction of said gather instructions;
performing the particular gather instruction in response to a particular ordered lock of said ordered locks being acquired by the particular identifier, wherein said performance of the gather instruction causes a processed packet of the plurality of packets to be sent with the same original order of the individual streams of one or more streams of packets being maintained. - View Dependent Claims (13, 14, 15)
-
-
16. An apparatus, comprising:
-
means for distributing a plurality of packets of one or more streams of packets to a plurality of packet processing engines while maintaining the original order of the individual streams of one or more streams of packets using one or more ordered locks of one or more ordered locking mechanisms, wherein each of said ordered locks is configured for queuing a plurality of identifiers corresponding to its locking requests in the order of receipt of its said locking requests, and to associate instructions with said identifiers; means for, for each particular packet of the plurality of packets;
in response to completing processing of the particular packet, attaching a gather instruction to an identifier of said identifiers, wherein the identifier corresponds to said particular packet; andmeans for, for each particular gather instruction of said gather instructions;
performing the particular gather instruction in response to a particular ordered lock of said ordered locks being acquired by the particular identifier, wherein said performance of the gather instruction causes a processed packet of the plurality of packets to be sent with the same original order of the individual streams of one or more streams of packets being maintained. - View Dependent Claims (17, 18, 19)
-
Specification