| CPC G06F 13/4282 (2013.01) [G06F 2213/0002 (2013.01)] | 20 Claims |

|
1. A parsing system for parsing protocol headers, the parsing system comprising one or more computers, one or more storage devices on which are stored instructions that are operable, one or more memory and a parser engine, one or more parse nodes, one or more protocol tables, and one or more parsers, wherein an instance of a parser is comprised of a set of parse nodes and protocol tables, wherein the one or more parse nodes provide rules for parsing one or more protocol headers and the one or more parse nodes including additional rules for processing a protocol, wherein the one or more protocol tables describe relationships between the one or more parse nodes, wherein the parser engine processes the one or more protocol headers in a data object or packet per the rules of the one or more parse nodes and the one or more protocol tables, wherein to parse the one or more protocol headers, the one or more parse nodes determines a length of the one or more protocol headers being processed and a type of a next protocol header to be processed, wherein the length of the one or more protocol headers is determined by the one or more parse nodes that defines a minimum length attribute to give a minimum length of the one or more protocol headers, and wherein for a variable size protocol header, the one or more parse nodes define a length function that calculates the length of the one or more protocol headers, and wherein the length function includes a value of a length field in the one or more protocol headers as input, wherein the one or more parse nodes define a next type function to determine a type of the next protocol header to process, where the next type function includes a value of a next protocol field in the one or more protocol headers as input, wherein the parser engine uses the type of the next protocol header as input to a lookup in the one or more protocol tables that returns a next parse node or null when there is no next parse node, wherein an offset of the next parse node to process is given by a sum of an offset of a current protocol header being processed and a length of the current protocol header being processed, wherein when processing completes for the one or more parse nodes, the parser engine transitions to process the next parse node, wherein parsing of the data object or the packet is complete when the parser engine determines there is no next parse node to process.
|