# US 12,119,991 B2 · Programmable protocol parser for NIC classification and queue assignments

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,119,991 B2
- Document ID: US12119991B2
- Status: Granted
- Kind: B2
- Application number: 17/837,864
- Filed: 2022-06-10
- Published: 2022-10-06
- Granted: 2024-10-15
- Earliest claimed: 2014-12-27
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Iosif Gasparakis; Ronen Chayat; John Fastabend
- Web page: https://patentgrep.com/patent/US12119991B2

## CPC

- H04L 41/082: the condition being updates or upgrades of network functionality
- H04L 41/342: between virtual entities, e.g. orchestrators, SDN or NFV entities
- H04L 67/04: specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
- H04L 67/34: {involving the movement of software or configuration parameters (network booting or remote initial program loading [RIPL] G06F9/4416)}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Technologies for controlling operation of a compute node coupled to a computer network via a computing device that includes communications for communicating with the computer network and persistent instructions such as firmware for providing control functions to the computing device, wherein the control functions being defined at least in part by protocol data. An update control module of the computing device may receive update data from a remote node in the computer network via the communications, wherein the update data comprising new protocol data for the persistent instructions. A protocol parser module may parse the update data and generate metadata relating to the update data. A classifier module may receive rules for the control functions, wherein the rules are based at least in part on the update data and metadata. A compiler may compile the parsed update data to the persistent instructions for providing new control functions to the computing device based at least in part on the received rules.

## Claims

### Claim 1

A network device comprising physical layer and data link layer communication circuitry and being for use in receiving network traffic, the network device being usable in association with a remote controller that is to be communicatively coupled to the network device via at least one network, the network device comprising:
packet parser circuitry for use in (1) identifying and parsing at least one header of at least one incoming packet and (2) for generating output data for use in association with at least one packet switching-related operation, the packet parser circuitry being programmable, at least in part, based upon compilation of user-provided instructions in a language, the user-provided instructions being configurable to describe, at least in part, a parse graph, the parse graph being to define, at least in part, (1) header structure of the at least one incoming packet and/or (2) manner of parsing of the at least one header;
wherein:
the user-provided instructions also are configurable to describe match/action tuples that associate, at least in part, possible incoming packet characteristics with corresponding actions to be taken by the network device;
the corresponding actions comprise the at least one packet switching-related operation;
when the network device is in operation, the network device is to determine a particular action to take with respect to the at least one incoming packet based, at least in part, upon the output data and the match/action tuples; and
when the network device is in operation, the network device is programmable, at least in part, based upon control information to be provided to the network device from the remote controller via the at least one network.

### Claim 2 (depends on 1)

The network device of claim 1, wherein:
the possible incoming packet characteristics comprise one or more of the following:
source port;
protocol type;
destination port;
source address; and
destination address.

### Claim 3 (depends on 2)

The network device of claim 2, wherein:
the network device is useable in association with software-defined networking; and
the network device comprises embedded switch circuitry.

### Claim 4 (depends on 3)

The network device of claim 3, wherein:
when the network device is in the operation, the network device is to receive the compilation from a computing device.

### Claim 5 (depends on 4)

The network device of claim 4, wherein:
the compilation is to be generated, at least in part, by compiler software that is to be executed by the computing device, based upon the user-provided instructions; and
the compiler software is usable in programming multiple different hardware devices.

### Claim 6

One or more non-transitory machine-readable storage media storing instructions for being executed by a network device, the network device comprising physical layer and data link layer communication circuitry, the network device being for use in receiving network traffic and also usable in association with a remote controller that is to be communicatively coupled to the network device via at least one network, the instructions when executed by the network device resulting in the network device being configured for performance of operations comprising:
identifying and parsing, by packet parser circuitry of the network device, at least one header of at least one incoming packet; and
generating, by the packet parser circuitry, output data for use in association with at least one packet switching-related operation, the packet parser circuitry being programmable, at least in part, based upon compilation of user-provided instructions in a language, the user-provided instructions being configurable to describe, at least in part, a parse graph, the parse graph being to define, at least in part, (1) header structure of the at least one incoming packet and/or (2) manner of parsing of the at least one header;
wherein:
the user-provided instructions also are configurable to describe match/action tuples that associate, at least in part, possible incoming packet characteristics with corresponding actions to be taken by the network device;
the corresponding actions comprise the at least one packet switching-related operation;
when the network device is in operation, the network device is to determine a particular action to take with respect to the at least one incoming packet based, at least in part, upon the output data and the match/action tuples; and
when the network device is in operation, the network device is programmable, at least in part, based upon control information to be provided to the network device from the remote controller via the at least one network.

### Claim 7 (depends on 6)

The one or more non-transitory machine-readable storage media of claim 6, wherein:
the possible incoming packet characteristics comprise one or more of the following:
source port;
protocol type;
destination port;
source address; and
destination address.

### Claim 8 (depends on 7)

The one or more non-transitory machine-readable storage media of claim 7, wherein:
the network device is useable in association with software-defined networking; and
the network device comprises embedded switch circuitry.

### Claim 9 (depends on 8)

The one or more non-transitory machine-readable storage media of claim 8, wherein:
when the network device is in the operation, the network device is to receive the compilation from a computing device.

### Claim 10 (depends on 9)

The one or more non-transitory machine-readable storage media of claim 9, wherein:
the compilation is to be generated, at least in part, by compiler software that is to be executed by the computing device, based upon the user-provided instructions; and
the compiler software is usable in programming multiple different hardware devices.

### Claim 11

A method implemented, at least in part, by a network device, the network device comprising physical layer and data link layer communication circuitry, the network device being for use in receiving network traffic and also usable in association with a remote controller that is to be communicatively coupled to the network device via at least one network, the method comprising:
identifying and parsing, by packet parser circuitry of the network device, at least one header of at least one incoming packet; and
generating, by the packet parser circuitry, output data for use in association with at least one packet switching-related operation, the packet parser circuitry being programmable, at least in part, based upon compilation of user-provided instructions in a language, the user-provided instructions being configurable to describe, at least in part, a parse graph, the parse graph being to define, at least in part, (1) header structure of the at least one incoming packet and/or (2) manner of parsing of the at least one header;
wherein:
the user-provided instructions also are configurable to describe match/action tuples that associate, at least in part, possible incoming packet characteristics with corresponding actions to be taken by the network device;
the corresponding actions comprise the at least one packet switching-related operation;
when the network device is in operation, the network device is to determine a particular action to take with respect to the at least one incoming packet based, at least in part, upon the output data and the match/action tuples; and
when the network device is in operation, the network device is programmable, at least in part, based upon control information to be provided to the network device from the remote controller via the at least one network.

### Claim 12 (depends on 11)

The method of claim 11, wherein:
the possible incoming packet characteristics comprise one or more of the following:
source port;
protocol type;
destination port;
source address; and
destination address.

### Claim 13 (depends on 12)

The method of claim 12, wherein:
the network device is useable in association with software-defined networking; and
the network device comprises embedded switch circuitry.

### Claim 14 (depends on 13)

The method of claim 13, wherein:
when the network device is in the operation, the network device is to receive the compilation from a computing device.

### Claim 15 (depends on 14)

The method of claim 14, wherein:
the compilation is to be generated, at least in part, by compiler software that is to be executed by the computing device, based upon the user-provided instructions; and
the compiler software is usable in programming multiple different hardware devices.

### Claim 16

A network device for use in receiving network traffic via at least one network, the network device comprising:
packet parser circuitry for use in (1) identifying and parsing at least one header of at least one incoming packet and (2) for generating output data for use in association with at least one packet switching-related operation, the packet parser circuitry being programmable, at least in part, based upon compilation of user-provided instructions in a language, the user-provided instructions being configurable to describe, at least in part, a parse graph, the parse graph being to define, at least in part, (1) header structure of the at least one incoming packet and/or (2) manner of parsing of the at least one header;
wherein:
the user-provided instructions also are configurable to describe match/action tuples that associate, at least in part, possible incoming packet characteristics with corresponding actions to be taken by the network device;
the corresponding actions comprise the at least one packet switching-related operation; and
when the network device is in operation, the network device is to determine a particular action to take with respect to the at least one incoming packet based, at least in part, upon the output data and the match/action tuples.

### Claim 17 (depends on 16)

The network device of claim 16, wherein:
the possible incoming packet characteristics comprise one or more of the following:
source port;
protocol type;
destination port;
source address; and
destination address.

### Claim 18 (depends on 17)

The network device of claim 17, wherein:
the network device comprises embedded switch circuitry.

### Claim 19 (depends on 18)

The network device of claim 18, wherein:
when the network device is in the operation, the network device is to receive the compilation from a computing device.

### Claim 20 (depends on 19)

The network device of claim 19, wherein:
the compilation is to be generated, at least in part, by compiler software that is to be executed by the computing device, based upon the user-provided instructions.

### Claim 21

One or more non-transitory machine-readable storage media storing instructions for being executed by a network device, the network device for use in receiving network traffic via at least one network, the instructions when executed by the network device resulting in the network device being configured for performance of operations comprising:
identifying and parsing, by packet parser circuitry of the network device, at least one header of at least one incoming packet; and
generating, by the packet parser circuitry, output data for use in association with at least one packet switching-related operation, the packet parser circuitry being programmable, at least in part, based upon compilation of user-provided instructions in a language, the user-provided instructions being configurable to describe, at least in part, a parse graph, the parse graph being to define, at least in part, (1) header structure of the at least one incoming packet and/or (2) manner of parsing of the at least one header;
wherein:
the user-provided instructions also are configurable to describe match/action tuples that associate, at least in part, possible incoming packet characteristics with corresponding actions to be taken by the network device;
the corresponding actions comprise the at least one packet switching-related operation; and
when the network device is in operation, the network device is to determine a particular action to take with respect to the at least one incoming packet based, at least in part, upon the output data and the match/action tuples.

### Claim 22 (depends on 21)

The one or more non-transitory machine-readable storage media of claim 21, wherein:
the possible incoming packet characteristics comprise one or more of the following:
source port;
protocol type;
destination port;
source address; and
destination address.

### Claim 23 (depends on 22)

The one or more non-transitory machine-readable storage media of claim 22, wherein:
the network device comprises embedded switch circuitry.

### Claim 24 (depends on 23)

The one or more non-transitory machine-readable storage media of claim 23, wherein:
when the network device is in the operation, the network device is to receive the compilation from a computing device.

### Claim 25 (depends on 24)

The one or more non-transitory machine-readable storage media of claim 24, wherein:
the compilation is to be generated, at least in part, by compiler software that is to be executed by the computing device, based upon the user-provided instructions.

### Claim 26

A method implemented, at least in part, by a network device, the network device for use in receiving network traffic via at least one network, the method comprising:
identifying and parsing, by packet parser circuitry of the network device, at least one header of at least one incoming packet; and
generating, by the packet parser circuitry, output data for use in association with at least one packet switching-related operation, the packet parser circuitry being programmable, at least in part, based upon compilation of user-provided instructions in a language, the user-provided instructions being configurable to describe, at least in part, a parse graph, the parse graph being to define, at least in part, (1) header structure of the at least one incoming packet and/or (2) manner of parsing of the at least one header;
wherein:
the user-provided instructions also are configurable to describe match/action tuples that associate, at least in part, possible incoming packet characteristics with corresponding actions to be taken by the network device;
the corresponding actions comprise the at least one packet switching-related operation; and
when the network device is in operation, the network device is to determine a particular action to take with respect to the at least one incoming packet based, at least in part, upon the output data and the match/action tuples.

### Claim 27 (depends on 26)

The method of claim 26, wherein:
the possible incoming packet characteristics comprise one or more of the following:
source port;
protocol type;
destination port;
source address; and
destination address.

### Claim 28 (depends on 27)

The method of claim 27, wherein:
the network device comprises embedded switch circuitry.

### Claim 29 (depends on 28)

The method of claim 28, wherein:
when the network device is in the operation, the network device is to receive the compilation from a computing device.

### Claim 30 (depends on 29)

The method of claim 29, wherein:
the compilation is to be generated, at least in part, by compiler software that is to be executed by the computing device, based upon the user-provided instructions.
