High data rate stateful protocol processing
AssigneeAstute Networks, Inc.
InventorsFazil Ismet Osman, Simon John Knee
Life of this patent
Estimating the term…
Abstract
A method, system, and apparatus for processing messages according to one or more stateful protocols in a data communication system. Messages belonging to various communication flows (such as TCP transport layer “connections”) are processed according to a selected stateful protocol. Messages belonging to a single unified flow are distributed among different protocol processing cores (PPCs) at different times. Assignment of flows to PPCs is typically modifiable at the level of specific individual flows, permitting flexible load balancing between PPCs. The architecture of the system facilitates the method by providing a mix of pipelined and parallel processing structures.
Claims28
A method of processing data in a stateful protocol processing system (“SPPS”), including a plurality of protocol processing cores (“PPCs”), that processes a multiplicity of flows of messages, each flow being associated with a uniquely corresponding flow identification (“FID”) that is conveyed by messages belonging to such flow, the method comprising:
- receiving a plurality of messages belonging to a particular flow of the multiplicity of flows;
- deriving a plurality of SPPS events associated with the particular flow from the received messages;
- determining an event type of at least one of the SPPS events of the plurality of derived SPPS events;
- determining whether the derived SPPS events belong to a flow for which one of the PPCs is presently assigned before selecting one of the PPCs to process the derived event;
- specifically assigning a first PPC selected from among the plurality of PPCs compatible with the event type to process one or more events of the particular flow in accordance with a stateful protocol (SP) of the particular flow;
- wherein if it is determined that the at least one of the SPPS events belongs to the flow for which one of the plurality of PPCs is assigned, processing incoming events that will affect a state of a corresponding flow through the determined one of the PPCs, and wherein events of a combination of different flows are currently assigned to the first PPC;
- and
- specifically assigning a different second PPC to process one or more other events of the particular flow in accordance with the SP of the particular flow;
- wherein subsequent events of one of the combination of different flows is assigned to the second PPC while the first PPC processed events of another of the combination of different flow;
- and
- transferring the events assigned to the first PPC to the first PPC and transferring the events assigned to the second PPC to the second PPC.
A method of processing data in a data communication stateful protocol processing system (“SPPS”), including a plurality of protocol processing cores (“PPCs”), that processes a multiplicity of flows of data communication messages, each flow being associated with a uniquely corresponding flow identification (“FID”) that is conveyed by messages belonging to such flow, the method comprising:
- receiving messages belonging to a particular flow and messages belonging to other flows, the particular flow and the other flows being selected from the multiplicity of flows;
- deriving a plurality of events from the received messages that are associated with the flow indicated by the FID of the message from which they are derived, including events associated with the particular flow and events associated with the other flows;
- determining a stateful protocol (SP) of the particular flow based upon at least one of the events associated with the particular flow;
- placing each event in one of a group of one or more preliminary processing queues;
- validating integrity of the plurality of events prior to transferring the events to the PPCs;
- assigning a first protocol processor core (“PPC”) selected from among the plurality of PPCS compatible with the SP of the particular flow to process a first event of the particular flow without regard to the preliminary processing queue in which the first event is located, and subsequently transferring the first event to a local queue of the assigned first PPC;
- wherein if it is determined that the at least one of the SPPS event belongs to the flow for which one of the PPCs is presently assigned, processing all incoming events that will affect a state of a corresponding flow through the determined one of the PPCs, and
- wherein events of a combination of different flows are concurrently assigned to the first PPC
- assigning a different second PPC to process a different second event of the particular flow without regard to the preliminary processing queue in which the second event is located, and subsequently transferring the second event to a local queue of the assigned second PPC;
- and
- transferring the events assigned to the first PPC to the first PPC and transferring the events assigned to the second PPC to the second PPC.
Dependencies are inferred from the claim text.