# US 10,484,514 B2 · Method for dispatching network frames among processing resources

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

- Number: US 10,484,514 B2
- Document ID: US10484514B2
- Status: Granted
- Kind: B2
- Application number: 14/932,679
- Filed: 2015-11-04
- Published: 2016-05-12
- Granted: 2019-11-19
- Earliest claimed: 2014-11-07
- Assignees: Kalray
- Applicants: Kalray
- Inventors: Patrice Couvert; Marta Rybczynska; Siméon Marijon; Yann Kalemkarian; Benoît Ganne; Alexandre Blampey
- Web page: https://patentgrep.com/patent/US10484514B2

## CPC

- H04L 49/351: for local area network [LAN], e.g. Ethernet switches
- H04L 49/3009: {Header conversion, routing tables or routing tags}
- H04L 69/12: Protocol engines
- H04L 69/161: {Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields}
- H04L 69/22: Parsing or analysis of headers
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

The invention relates to a method of processing data frames arriving on a network interface, comprising the following steps implemented in the network interface: storing a set of target positions (tgtPOS), positions in a frame at which are expected at least one parameter characterizing a subframe (ETH_TYPE) and parameters (SRC_IP, DST_IP) characterizing a client-server session; storing an expected value (xpVAL) for the subframe parameter; receiving a current frame and comparing the value (xtVAL) received at the position of the subframe parameter to the expected value; if equal, calculating an index (IDX) from the values received at the positions of the session parameters; and routing the current frame to a processing resource associated with the index.

## Claims

### Claim 1

A method of processing data frames arriving on a network interface, the method comprising the following steps implemented in the network interface:
storing a set of subframe and session parameter positions for a frame, including positions of a subframe parameter and of a set of session parameters;
storing an expected value for the subframe parameter;
receiving a current frame in fixed size words;
when a current word of the current frame overlaps a position among the stored parameter positions, storing the current word in a respective register of an extracted parameter register bank;
configuring an index mask for cancelling all data of the extracted parameter register bank except data at the positions of the set of session parameters;
calculating an index from the index mask;
comparing data received at the position of the subframe parameter to the expected value; and
if the comparison is equal, routing the current frame to a processing resource associated with the index.

### Claim 2 (depends on 1)

The method of claim 1, further comprising the steps of:
storing expected values for several subframe parameters in an expected parameter register bank in correspondence with registers of the extracted parameter register bank;
configuring a comparison mask for cancelling all data of the extracted parameter register bank except data at the positions of the subframe parameters; and
comparing the extracted parameter register bank as modified by the comparison mask to the expected parameter register bank.

### Claim 3 (depends on 1)

The method of claim 1, further comprising the steps of:
storing the subframe and session parameter positions in respective registers of a parameter position register bank, respectively associated with registers of the extracted parameter register bank;
simultaneously comparing all the registers of the parameter position register bank to a current position count of the current frame as the current frame is being received; and
in case of correspondence between the current position count and a given register of the parameter position register bank, storing a current word of the current frame in a register of the extracted parameter register bank associated with the given register of the parameter position register bank.

### Claim 4 (depends on 2)

The method of claim 2, further comprising the steps of:
providing a plurality of independent dispatching rules, where each independent dispatching rule uses a set of parameter positions, an extracted parameter register bank, an index mask, a comparison mask, and an expected parameter register bank;
assigning respective priorities to each independent dispatching rules of the plurality of independent dispatching rules;
evaluating in parallel the plurality of independent dispatching rules on a current frame;
producing in parallel a respective index for each independent dispatching rule; and
using an index produced for a respective dispatching rule having the highest priority among multiple rules simultaneously satisfied from the plurality of independent dispatching rules.

### Claim 5 (depends on 1)

The method of claim 1, further comprising the steps of:
defining the parameter positions of the set of session parameters so that each data item received at a position of the set of session parameters is stored in a distinct register of the extracted parameter register bank; and
if two registers of the extracted parameter register bank contain a source parameter and a destination parameter in the set of session parameters of a current frame, calculating the index in a manner that provides a same result when contents of the two registers are exchanged.

### Claim 6

A method of dispatching frames arriving on a network interface among processing resources, comprising the following steps implemented in the network interface:
splitting a current received frame in fixed size words;
storing words wholly or partially containing selected parameters in respective registers of a register bank, wherein the selected parameters are not aligned with word boundaries;
configuring a comparison mask for cancelling all data of the registers except data at positions of a first subset of the selected parameters;
configuring an index mask for cancelling all data of the registers except data at positions of a second subset of the selected parameters;
calculating an index from the index mask;
associating a processing resource with the calculated index;
comparing an output of the comparison mask to a set of expected values; and
if the comparison is equal, routing the current received frame to the processing resource associated with the index.

### Claim 7 (depends on 6)

The method of claim 6, further comprising the steps of:
providing a plurality of independent dispatching rules, where each independent dispatching rule uses a respective register bank, a respective index mask, a respective comparison mask, and a respective set of expected values;
assigning respective priorities to each independent dispatching rule of the plurality of independent dispatching rules;
evaluating in parallel the plurality of independent dispatching rules on a current frame;
producing in parallel a respective index for each independent dispatching rule of the plurality of independent dispatching rules; and
using an index produced for a respective independent dispatching rule having the highest priority among multiple rules simultaneously satisfied from the plurality of independent dispatching rules.

### Claim 8 (depends on 6)

The method of claim 6, wherein the frames are Ethernet frames and the selected parameters include an Ethernet type and a set of session parameters including a protocol, a source address, and a destination address.

### Claim 9 (depends on 8)

The method of claim 8, wherein the comparison mask isolates at least the Ethernet type, and the index mask isolates at least the session parameters.

### Claim 10 (depends on 8)

The method of claim 8, further comprising the steps of:
storing the source and destination addresses in two distinct registers of the register bank; and
calculating the index using the source address and the destination address always in an identical order.
