Cooperative flow locks distributed among multiple components
First Claim
Patent Images
1. An apparatus, comprising:
- a plurality of components, each of the plurality of components being configured to maintain and process a plurality of flow locks in a distributed manner, wherein each of the plurality of components includes one or more packet processing contexts and one or more flow lock interfaces;
wherein each particular flow lock of the plurality of flow locks is associated with a queue for maintaining an ordering of packet identifiers associated with the particular flow lock; and
wherein each particular flow lock of the plurality of flow locks is configured to perform one or more operations from a plurality of operations corresponding to a particular packet identifier corresponding to a particular packet when the particular packet identifier acquires the flow lock;
wherein the plurality of operations includes selectively converting from one particular flow lock of said flow locks on one component of the plurality of components to a second particular flow lock of said flow locks on a different component of the plurality of components, which includes said one component communicating directly or indirectly with the different component in processing flow locks, including said one particular flow lock and the second particular flow lock, in a distributed manner;
wherein said converting from said one particular flow lock to the second particular flow lock includes adding a packet identifier corresponding to the particular packet to the second particular flow lock and releasing said one particular flow lock;
wherein each of said flow locks has associated with it a command queue configured to store one or more commands;
wherein each of the plurality of components includes a flow lock interface configured for communicating commands to be stored in said command queues in each of the plurality of components;
wherein each of the plurality of components includes one or more packet processors;
wherein each packet processor of said packet processors is configured to communicate with the flow lock interface on said component on which the said packet processor resides for communicating said commands associated with packets being processed by said packet processor to said command queues in each of the plurality of components; and
wherein each flow lock interface of the plurality of flow lock interfaces includes one or more data structures stored in one or more computer-readable media for maintaining information related to flow locks of packets being processed on the component on which said flow lock interface resides;
wherein said information includes an indication of a location of the current flow lock for each packet being processed on the component.
2 Assignments
0 Petitions
Accused Products
Abstract
Disclosed are, inter alia, methods, apparatus, computer-storage media, mechanisms, and means associated with cooperative flow locks distributed among multiple components, such as on different application-specific integrated circuits in a packet switching device. Flow locks are typically used for maintaining the order of packets and operations performed thereon by the coordination of a context (e.g., the processing of a packet by a packet processor) with a corresponding flow lock interface, and by the manner of communication performed among the flow lock interface and the distributed flow locks.
27 Citations
16 Claims
-
1. An apparatus, comprising:
-
a plurality of components, each of the plurality of components being configured to maintain and process a plurality of flow locks in a distributed manner, wherein each of the plurality of components includes one or more packet processing contexts and one or more flow lock interfaces; wherein each particular flow lock of the plurality of flow locks is associated with a queue for maintaining an ordering of packet identifiers associated with the particular flow lock; and
wherein each particular flow lock of the plurality of flow locks is configured to perform one or more operations from a plurality of operations corresponding to a particular packet identifier corresponding to a particular packet when the particular packet identifier acquires the flow lock;
wherein the plurality of operations includes selectively converting from one particular flow lock of said flow locks on one component of the plurality of components to a second particular flow lock of said flow locks on a different component of the plurality of components, which includes said one component communicating directly or indirectly with the different component in processing flow locks, including said one particular flow lock and the second particular flow lock, in a distributed manner;
wherein said converting from said one particular flow lock to the second particular flow lock includes adding a packet identifier corresponding to the particular packet to the second particular flow lock and releasing said one particular flow lock;wherein each of said flow locks has associated with it a command queue configured to store one or more commands;
wherein each of the plurality of components includes a flow lock interface configured for communicating commands to be stored in said command queues in each of the plurality of components;wherein each of the plurality of components includes one or more packet processors;
wherein each packet processor of said packet processors is configured to communicate with the flow lock interface on said component on which the said packet processor resides for communicating said commands associated with packets being processed by said packet processor to said command queues in each of the plurality of components; andwherein each flow lock interface of the plurality of flow lock interfaces includes one or more data structures stored in one or more computer-readable media for maintaining information related to flow locks of packets being processed on the component on which said flow lock interface resides;
wherein said information includes an indication of a location of the current flow lock for each packet being processed on the component. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A method, comprising:
-
a particular flow lock interface, on a component of a plurality of components of a packet switching device, adding a packet identifier corresponding to a particular packet to the end of queue of a flow lock on a first component of the plurality of components; in response to the packet identifier associated with a convert operation request acquiring the flow lock, performing the convert operation to a second flow lock on a second component, which is not the first component, of the plurality of components, which includes the first component communicating directly or indirectly with the second component in processing flow locks, including the flow lock and the second flow lock, in a distributed manner; and in response to said performance of the convert operation, the second component communicating an acknowledgement message identifying to the particular flow lock interface on the component that the current location of a flow lock associated with the particular packet is the second flow lock; wherein each of the plurality of components includes one or more packet processing contexts and one or more flow lock interfaces. - View Dependent Claims (9, 10, 11, 12, 13)
-
-
14. An apparatus, comprising:
-
a plurality of components, each of the plurality of components being configured to maintain and process a plurality of flow locks in a distributed manner, wherein each of the plurality of components includes one or more packet processing contexts and one or more flow lock interfaces; wherein each particular flow lock of the plurality of flow locks is associated with a queue for maintaining an ordering of packet identifiers associated with the particular flow lock; and
wherein each particular flow lock of the plurality of flow locks is configured to perform one or more operations from a plurality of operations corresponding to a particular packet identifier corresponding to a particular packet when the particular packet identifier acquires the flow lock;
wherein the plurality of operations includes selectively converting from one particular flow lock of said flow locks on one component of the plurality of components to a second particular flow lock of said flow locks on a different component of the plurality of components, which includes said one component communicating directly or indirectly with the different component in processing flow locks, including said one particular flow lock and the second particular flow lock, in a distributed manner;
wherein said converting from said one particular flow lock to the second particular flow lock includes adding a packet identifier corresponding to the particular packet to the second particular flow lock and releasing said one particular flow lock. - View Dependent Claims (15, 16)
-
Specification