# US 2020/0401459 A1 · Extending berkeley packet filter semantics for hardware offloads

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

- Number: US 2020/0401459 A1
- Document ID: US20200401459A1
- Status: Published application
- Kind: A1
- Application number: 16/933,121
- Filed: 2020-07-20
- Published: 2020-12-24
- Earliest claimed: 2018-08-08
- Assignees: Intel Corporation
- Applicants: Intel Corporation
- Inventors: Eliezer TAMIR; Johannes BERG; Andrew CUNNINGHAM; Peter WASKIEWICZ, Jr.; Andrey CHILIKIN
- Web page: https://patentgrep.com/patent/US20200401459A1

## CPC

- G06F 9/5088: {involving task migration}
- G06F 9/4411: {Configuring for operating with peripheral devices; Loading of device drivers}
- G06F 9/4843: {by program, e.g. task dispatcher, supervisor, operating system}
- G06F 9/5027: {the resource being a machine, e.g. CPUs, Servers, Terminals}
- G06F 9/5044: {considering hardware capabilities}
- H04L 45/74: Address processing for routing
- H04L 47/23: {Bit dropping}
- H04L 49/30: {Peripheral units, e.g. input or output ports}
- H04L 63/0209: {Architectural arrangements, e.g. perimeter networks or demilitarized zones}
- H04L 63/0236: {Filtering by address, protocol, port number or service, e.g. IP-address or URL}
- H04L 63/0245: {Filtering by information in the payload}
- H04L 69/22: Parsing or analysis of headers
- G06F 2209/509: Offload
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Examples include registering a device driver with an operating system, including registering available hardware offloads. The operating system receives a call to a hardware offload, inserts a binary filter representing the hardware offload into a hardware component and causes the execution of the binary filter by the hardware component when the hardware offload is available, and executes the binary filter in software when the hardware offload is not available.

## Claims

### Claim at position 1

1-25. (canceled)

### Claim 26

At least one non-transient machine-readable medium storing instructions for execution by at least one machine, the at least one machine being associated with network interface controller circuitry for use in association with host computer circuitry, the host computer circuitry to execute, when the host computer circuitry is in operation, a Linux operating system and a user space application, the Linux operating system, when executed, having a kernel space, the instructions when executed by the at least one machine resulting in the at least one machine being configured for performance of operations comprising:
programming, at least in part, packet processing hardware offload circuitry of the network interface controller circuitry, based upon packet filter rule data, to implement packet filter rules corresponding, at least in part, to the packet filter rule data; and
determining by the network interface controller circuitry, based upon header data of at least one incoming packet and the packet filter rule data, at least one action to apply to the at least one incoming packet;
wherein:
the packet filter rules comprise the at least one action;
the packet filter rules are to be set, at least in part, using at least one call associated with the kernel space;
the at least one action is configurable to include:
at least one network address translation-related operation associated with the header data;
dropping the at least one incoming packet; and/or
forwarding the at least one incoming packet;
when the host computer circuitry is in the operation, after registration of at least one device driver of the network interface controller circuitry:
the packet filter rule data is to be associated with the network interface controller circuitry via at least one callback function call; and
the programming, at least in part of the packet processing hardware offload circuitry of the network interface controller circuitry is to be implemented, at least in part, by the at least one device driver associated with the network interface controller circuitry via code references to be associated, at least in part, with the at least one device driver associated with the network interface controller circuitry.

### Claim 27 (depends on 26)

The at least one non-transient machine-readable medium of claim 26, wherein:
the network interface controller circuitry comprises an application specific integrated circuit (ASIC) for use in association with processing of the at least one incoming packet.

### Claim 28 (depends on 27)

The at least one non-transient machine-readable medium of claim 27, wherein:
the network interface controller circuitry comprises physical layer circuitry for use in association with Ethernet protocol communication.

### Claim 29 (depends on 28)

The at least one non-transient machine-readable medium of claim 28, wherein:
the at least one action is also configurable to comprise:
passing of packet data of the at least one incoming packet to at least one client in the host computer circuitry;
adding at least one header to the at least one incoming packet; and/or
modifying the header data of the at least one incoming packet.

### Claim 30 (depends on 28)

The at least one non-transient machine-readable medium of claim 28, wherein:
the code references are to be generated, at least in part, by the at least one device driver associated with the network interface controller circuitry.

### Claim 31

Network interface controller circuitry for use in association with host computer circuitry and at least one device driver, the host computer circuitry to execute, when the host computer circuitry is in operation, a Linux operating system and a user space application, the Linux operating system, when executed, having a kernel space, the network interface controller circuitry comprising:
packet processing circuitry that comprises packet processing hardware offload circuitry; and
storage storing instructions to be executed by the packet processing circuitry, the instructions, when executed by the packet processing circuitry, resulting in the network interface controller circuitry being configured to perform operations comprising:
determining by the network interface controller circuitry, based upon packet filter rule data and header data of at least one incoming packet, at least one action to apply to the at least one incoming packet;
wherein:
the packet processing hardware offload circuitry of the network interface controller circuitry is to be programmed, at least in part, based upon the packet filter rule data, to implement packet filter rules corresponding, at least in part, to the packet filter rule data;
the packet filter rules comprise the at least one action;
the packet filter rules are to be set, at least in part, using at least one call associated with the kernel space;
the at least one action is configurable to include:
at least one network address translation-related operation associated with the header data;
dropping the at least one incoming packet; and/or
forwarding the at least one incoming packet;
when the host computer circuitry is in the operation, after registration of the at least one device driver associated with the network interface controller circuitry:
the packet filter rule data is to be associated with the network interface controller circuitry via at least one callback function call; and
programming, at least in part of the packet processing hardware offload circuitry of the network interface controller circuitry is to be implemented, at least in part, by the at least one device driver associated with the network interface controller circuitry via code references to be associated, at least in part, with the at least one device driver associated with the network interface controller circuitry.

### Claim 32 (depends on 31)

The network interface controller circuitry of claim 31, wherein:
the network interface controller circuitry comprises an application specific integrated circuit (ASIC) for use in association with processing of the at least one incoming packet.

### Claim 33 (depends on 32)

The network interface controller circuitry of claim 32, wherein:
the network interface controller circuitry comprises physical layer circuitry for use in association with Ethernet protocol communication.

### Claim 34 (depends on 33)

The network interface controller circuitry of claim 33, wherein:
the at least one action is also configurable to comprise:
passing of packet data of the at least one incoming packet to at least one client in the host computer circuitry;
adding at least one header to the at least one incoming packet; and/or
modifying the header data of the at least one incoming packet.

### Claim 35 (depends on 33)

The network interface controller circuitry of claim 33, wherein:
the code references are to be generated, at least in part, by the at least one device driver associated with the network interface controller circuitry.

### Claim 36

Host computer circuitry for use with network interface controller circuitry in association with at least one device driver, the host computer circuitry to execute, when the host computer circuitry is in operation, a Linux operating system and a user space application, the Linux operating system, when executed, having a kernel space, the host computer circuitry comprising:
processor core circuitry;
storage storing instructions that when executed by the processor core circuitry result in the processor core circuitry being configured to perform operations comprising:
executing, at least in part, the at least one device driver, the at least one device driver to program, at least in part, packet processing hardware offload circuitry of the network interface controller circuitry, based upon packet filter rule data, to implement packet filter rules corresponding, at least in part, to the packet filter rule data, the network interface controller circuitry to determine, based upon header data of at least one incoming packet and the packet filter rule data, at least one action to apply to the at least one incoming packet;
wherein:
the packet filter rules comprise the at least one action;
the packet filter rules are to be set, at least in part, using at least one call associated with the kernel space;
the at least one action is configurable to include:
at least one network address translation-related operation associated with the header data;
dropping the at least one incoming packet; and/or
forwarding the at least one incoming packet;
when the host computer circuitry is in the operation, after registration of the at least one device driver of the network interface controller circuitry:
the packet filter rule data is to be associated with the network interface controller circuitry via at least one callback function call; and
programming, at least in part of the packet processing hardware offload circuitry of the network interface controller circuitry is to be implemented, at least in part, by the at least one device driver associated with the network interface controller circuitry via code references to be associated, at least in part, with the at least one device driver associated with the network interface controller circuitry.

### Claim 37 (depends on 36)

The host computer circuitry of claim 36, wherein:
the network interface controller circuitry comprises an application specific integrated circuit (ASIC) for use in association with processing of the at least one incoming packet.

### Claim 38 (depends on 37)

The host computer circuitry of claim 37, wherein:
the network interface controller circuitry comprises physical layer circuitry for use in association with Ethernet protocol communication.

### Claim 39 (depends on 38)

The host computer circuitry of claim 38, wherein:
the at least one action is also configurable to comprise:
passing of packet data of the at least one incoming packet to at least one client in the host computer circuitry;
adding at least one header to the at least one incoming packet; and/or
modifying the header data of the at least one incoming packet.

### Claim 40 (depends on 38)

The host computer circuitry of claim 38, wherein:
the code references are to be generated, at least in part, by the at least one device driver associated with the network interface controller circuitry.

### Claim 41

Distributed computing system for use in providing at least one service via an Internet network, the distributed computing system comprising:
host computer circuitry for use with network interface controller circuitry in association with at least one device driver, the host computer circuitry to execute, when the host computer circuitry is in operation, a Linux operating system and a user space application, the Linux operating system, when executed, having a kernel space, the host computer circuitry comprising:
processor core circuitry;
storage storing instructions that when executed by the processor core circuitry result in the processor core circuitry being configured to perform operations comprising:
executing, at least in part, the at least one device driver, the at least one device driver to program, at least in part, packet processing hardware offload circuitry of the network interface controller circuitry, based upon packet filter rule data, to implement packet filter rules corresponding, at least in part, to the packet filter rule data, the network interface controller circuitry to determine, based upon header data of at least one incoming packet and the packet filter rule data, at least one action to apply to the at least one incoming packet;
wherein:
the packet filter rules comprise the at least one action;
the packet filter rules are to be set, at least in part, using at least one call associated with the kernel space;
the at least one action is configurable to include:
at least one network address translation-related operation associated with the header data;
dropping the at least one incoming packet; and/or
forwarding the at least one incoming packet;
when the host computer circuitry is in the operation, after registration of the at least one device driver of the network interface controller circuitry:
the packet filter rule data is to be associated with the network interface controller circuitry via at least one callback function call; and
programming, at least in part of the packet processing hardware offload circuitry of the network interface controller circuitry is to be implemented, at least in part, by the at least one device driver associated with the network interface controller circuitry via code references to be associated, at least in part, with the at least one device driver associated with the network interface controller circuitry.

### Claim 42 (depends on 41)

The distributed computing system of claim 41, wherein:
the network interface controller circuitry comprises an application specific integrated circuit (ASIC) for use in association with processing of the at least one incoming packet.

### Claim 43 (depends on 42)

The distributed computing system of claim 42, wherein:
the network interface controller circuitry comprises physical layer circuitry for use in association with Ethernet protocol communication.

### Claim 44 (depends on 43)

The distributed computing system of claim 43, wherein:
the at least one action is also configurable to comprise:
passing of packet data of the at least one incoming packet to at least one client in the host computer circuitry;
adding at least one header to the at least one incoming packet; and/or
modifying the header data of the at least one incoming packet.

### Claim 45 (depends on 43)

The distributed computing system of claim 43, wherein:
the code references are to be generated, at least in part, by the at least one device driver associated with the network interface controller circuitry.

### Claim 46

A method implemented using network interface controller circuitry for use in association with host computer circuitry, the host computer circuitry to execute, when the host computer circuitry is in operation, a Linux operating system and a user space application, the Linux operating system, when executed, having a kernel space, the method comprising:
programming, at least in part, packet processing hardware offload circuitry of the network interface controller circuitry, based upon packet filter rule data, to implement packet filter rules corresponding, at least in part, to the packet filter rule data; and
determining by the network interface controller circuitry, based upon header data of at least one incoming packet and the packet filter rule data, at least one action to apply to the at least one incoming packet;
wherein:
the packet filter rules comprise the at least one action;
the packet filter rules are to be set, at least in part, using at least one call associated with the kernel space;
the at least one action is configurable to include:
at least one network address translation-related operation associated with the header data;
dropping the at least one incoming packet; and/or
forwarding the at least one incoming packet;
when the host computer circuitry is in the operation, after registration of at least one device driver of the network interface controller circuitry:
the packet filter rule data is to be associated with the network interface controller circuitry via at least one callback function call; and
the programming, at least in part of the packet processing hardware offload circuitry of the network interface controller circuitry is to be implemented, at least in part, by the at least one device driver associated with the network interface controller circuitry via code references to be associated, at least in part, with the at least one device driver associated with the network interface controller circuitry.

### Claim 47 (depends on 46)

The method of claim 46, wherein:
the network interface controller circuitry comprises an application specific integrated circuit (ASIC) for use in association with processing of the at least one incoming packet.

### Claim 48 (depends on 47)

The method of claim 47, wherein:
the network interface controller circuitry comprises physical layer circuitry for use in association with Ethernet protocol communication.

### Claim 49 (depends on 48)

The method of claim 48, wherein:
the at least one action is also configurable to comprise:
passing of packet data of the at least one incoming packet to at least one client in the host computer circuitry;
adding at least one header to the at least one incoming packet; and/or
modifying the header data of the at least one incoming packet.

### Claim 50 (depends on 48)

The method of claim 48, wherein:
the code references are to be generated, at least in part, by the at least one device driver associated with the network interface controller circuitry.
