# US 2019/0379767 A1 · Highly parallel programmable packet editing engine with a scalable control infrastructure

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

- Number: US 2019/0379767 A1
- Document ID: US20190379767A1
- Status: Published application
- Kind: A1
- Application number: 16/418,869
- Filed: 2019-05-21
- Published: 2019-12-12
- Earliest claimed: 2018-06-08
- Assignees: Avago Technologies International Sales Pte. Limited
- Applicants: Avago Technologies International Sales Pte. Limited
- Inventors: Rajan SHARMA; Niranjan Vaidya; Mandar Joshi
- Web page: https://patentgrep.com/patent/US20190379767A1

## CPC

- H04L 49/25: Routing or path finding in a switch fabric
- H04L 49/309: {Header conversion, routing tables or routing tags}
- H04L 49/9026: {Single buffer per packet}
- 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

A highly parallel programmable packet editing engine with a scalable control infrastructure includes receiving an ingress packet having one or more headers; assigning, by one or more processors, the one or more headers of the ingress packet to a number of zones, wherein each zone is a grouping of adjacent headers that are closely related to one another by information content or processing type; performing, by the one or more processors, offset computations for the one or more headers in a zone concurrently with offset computations of headers assigned to other zones; performing, by the one or more processors, different header operations on the one or more headers concurrently with respective ones of a plurality of editing engines; combining, by the one or more processors, the edited one or more headers at the computed offsets to generate a modified egress packet; and providing, for transmission, the modified egress packet.

## Claims

### Claim 1

A method of packet processing, the method comprising:
processing a received ingress packet having one or more headers;
assigning, by one or more processors, the one or more headers of the received ingress packet to a number of zones, wherein each zone is a grouping of adjacent headers that are closely related to one another by information content or processing type;
performing, by the one or more processors, offset computations for the one or more headers in a zone concurrently with offset computations of headers assigned to other zones;
performing, by the one or more processors, different header operations on the one or more headers concurrently with respective ones of a plurality of editing engines to produce edited one or more headers;
combining, by the one or more processors, the edited one or more headers at the computed offsets to generate a modified egress packet; and
providing, for transmission, the modified egress packet.

### Claim 2 (depends on 1)

The method of claim 1, wherein assigning the one or more headers comprises assigning one or more headers of the received ingress packet to one or more ingress zones and one or more headers of the processed packet to one or more egress zones.

### Claim 3 (depends on 1)

The method of claim 1, wherein performing the offset computations comprises performing ingress header offset computations concurrently with or subsequent to egress header offset computations.

### Claim 4 (depends on 3)

The method of claim 3, wherein performing the offset computations comprises performing the egress header offset computations concurrently with performing one or more of header construction operations or header modification operations.

### Claim 5 (depends on 1)

The method of claim 1, wherein performing the offset computations comprises computing an offset for each of a plurality of header operations irrespective of a specific header operation on each header.

### Claim 6 (depends on 1)

The method of claim 1, wherein performing the offset computations comprises computing an offset for each header of the received ingress packet.

### Claim 7 (depends on 1)

The method of claim 1, wherein performing the offset computations comprises computing an offset for each header added to the modified egress packet.

### Claim 8 (depends on 1)

The method of claim 1, wherein performing the offset computations comprises calculating the offsets per zone using one or more lookup tables associated with the zone.

### Claim 9 (depends on 1)

The method of claim 1, wherein performing the different header operations comprises performing one or more header operations independent of an actual location of a header in the received ingress packet.

### Claim 10 (depends on 1)

The method of claim 1, wherein performing the different header operations comprises performing each different header operation in parallel by independent editing engines of the plurality of editing engines.

### Claim 11 (depends on 1)

The method of claim 1, wherein the offset computations and the header operations are performed in parallel.

### Claim 12 (depends on 1)

The method of claim 1, wherein the combining the edited one or more headers of the received ingress packet at the computed offsets is based on information indicating an offset for each header in the modified egress packet.

### Claim 13 (depends on 1)

The method of claim 1, wherein the combining the edited one or more headers comprises shifting a result of each editor engine in parallel into an outgoing packet buffer, and wherein the modified egress packet is fed from the outgoing packet buffer.

### Claim 14 (depends on 1)

The method of claim 1, wherein the combining the edited one or more headers comprises performing header merge operations in parallel to the offset computations and the header operations.

### Claim 15

A device comprising:
a processor; and
a memory device containing instructions, which when executed by the processor cause the processor to perform operations comprising:
processing a received ingress packet;
parsing the received ingress packet to identify one or more headers in the received ingress packet;
assigning the one or more headers of the received ingress packet to a number of zones, wherein each zone is a grouping of adjacent headers that are closely related to one another by information content or processing type;
performing offset computations for the one or more headers in a zone concurrently with offset computations of headers assigned to other zones;
performing different header operations on the one or more headers concurrently with respective ones of a plurality of editing engines to produce edited one or more headers;
combining the edited one or more headers at the computed offsets to generate a modified egress packet; and
providing, for transmission, the modified egress packet.

### Claim 16 (depends on 15)

The device of claim 15, wherein the plurality of editing engines comprises a header construction engine, a header deletion engine, and a header modify engine.

### Claim 17 (depends on 16)

The device of claim 16, wherein the performing offset computations comprises performing an ingress header offset computation, and wherein the operations further comprise:
extracting one or more fields and extracting one or more headers, from the ingress header offset computation.

### Claim 18 (depends on 17)

The device of claim 17, wherein the operations further comprise:
sending the extracted one or more fields to the header construction engine.

### Claim 19 (depends on 17)

The device of claim 17, wherein the operations further comprise:
sending the extracted one or more headers to the header modify engine.

### Claim 20 (depends on 17)

The device of claim 17, wherein the performing different header operations comprises performing a header deletion operation with the header deletion engine using the ingress header offset computation.

### Claim 21

A computer program product comprising instructions stored in a tangible computer-readable storage medium, the instructions comprising:
instructions for receiving an ingress packet having one or more headers;
instructions for assigning the one or more headers of the ingress packet to a number of zones, wherein each zone is a grouping of adjacent headers that are closely related to one another by information content or processing type;
instructions for performing offset computations for the one or more headers in a zone concurrently with offset computations of headers assigned to other zones;
instructions for performing different edit operations on the one or more headers concurrently with respective ones of a plurality of editing engines to produce edited one or more headers;
instructions for combining the edited one or more headers using the computed offsets to generate a modified egress packet; and
instructions for providing, for transmission, the modified egress packet.

### Claim 22 (depends on 21)

The computer program product of claim 21, wherein the instructions further comprise:
instructions for parsing the ingress packet to identify one or more headers in the ingress packet; and
instructions for determining that the identified one or more headers correspond to a number of zones.

### Claim 23 (depends on 22)

The computer program product of claim 22, wherein the number of zones comprises a first zone that corresponds to an outermost zone on a packet and a second zone that corresponds to an innermost zone of the packet.

### Claim 24 (depends on 22)

The computer program product of claim 22, wherein a header of the one or more headers is assigned to a first zone for the ingress packet and the header is assigned to a second zone different from the first zone for the modified egress packet.

### Claim 25 (depends on 21)

The computer program product of claim 21, wherein the instructions further comprise:
instructions for creating a relationship between an ingress zone space and an egress zone space by an array that is indexed by an egress zone providing a corresponding ingress zone.

### Claim 26 (depends on 21)

The computer program product of claim 21, wherein a boundary between adjacent zones delineate groups of headers having a level of affinity below a threshold, to each other.

### Claim 27 (depends on 21)

The computer program product of claim 21, wherein the instructions further comprise:
instructions for obtaining information about a structure of the ingress packet,
wherein the information indicates a number of headers in the ingress packet and a number of corresponding zones.

### Claim 28 (depends on 27)

The computer program product of claim 27, wherein the instructions further comprise:
instructions for encoding the information of the structure into a match identifier vector,
wherein the match identifier vector identifies the number of headers in the ingress packet and corresponding order within the ingress packet.

### Claim 29 (depends on 28)

The computer program product of claim 28, wherein the match identifier vector defines a structure of the ingress packet in an ingress zone space.

### Claim 30 (depends on 28)

The computer program product of claim 28, wherein the match identifier vector comprises information for N zones of headers, where N is an integer.

### Claim 31 (depends on 28)

The computer program product of claim 28, wherein calculated offsets for ingress packets are a function of the match identifier vector and derived using one or more lookup tables.

### Claim 32 (depends on 21)

The computer program product of claim 21, wherein each zone comprises a subset of the headers from the ingress packet, and wherein the subset of the headers corresponds to a subset of the maximum number of permutations per zone.

### Claim 33 (depends on 21)

The computer program product of claim 21, wherein the instructions further comprise:
instructions for performing each of the different edit operations by an operation type and an operation command,
wherein the operation type identifies a type of edit operation and the operation command includes instructions that identify specific information about the operation type, and
wherein the type of edit operation corresponds to one or more of an add header operation, a delete header operation or a modify header operation.

### Claim 34 (depends on 21)

The computer program product of claim 21, wherein the instructions further comprise:
instructions for processing a edit identifier vector that indicates a list of headers with corresponding operation types to process; and
instructions for processing a edit command vector that indicates the list of headers to process and corresponding operation commands that apply to the headers.
