# US 10,484,304 B2 · Determining actions to be immediately performed on a network packet with an application specific integrated circuit

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

- Number: US 10,484,304 B2
- Document ID: US10484304B2
- Status: Granted
- Kind: B2
- Application number: 15/577,334
- Filed: 2015-05-29
- Published: 2019-01-17
- Granted: 2019-11-19
- Earliest claimed: 2015-05-29
- Assignees: Hewlett Packard Enterprise Development LP
- Applicants: Hewlett Packard Enterprise Development LP
- Inventors: Claudio Enrique Viquez Calderon; Thomas A. Keaveny; Osvaldo Andres Sanchez Melendez
- Web page: https://patentgrep.com/patent/US10484304B2

## CPC

- H04L 49/25: Routing or path finding in a switch fabric
- H04L 45/38: {Flow based routing}
- H04L 45/54: {Organization of routing tables}
- H04L 49/1546: using pipelined operation
- H04L 49/355: {Application aware switches, e.g. for HTTP}
- H04L 69/22: Parsing or analysis of headers
- H04L 45/42: Centralised routing
- H04L 45/7452: Multiple parallel or consecutive lookup operations (lookup operation involving Bloom filters H04L45/7459)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

In some examples, a network switch includes an Application-Specific Integrated Circuit (ASIC), a processing resource, and a memory resource storing machine readable instructions. The instructions are to cause the processing resource to: accumulate an action set for a first packet received by the switch; fetch an action from the action set; determine, with the ASIC, whether the fetched action is to be performed immediately on the first packet; in response to determining that the fetched action is to be performed immediately, generate a second packet from the first packet; and output one of the first and second packets through an output port without further processing of the packet after generation of the second packet.

## Claims

### Claim 1

A method comprising:
accumulating from multiple forwarding tables of a network switch, an action set for a first packet received by the switch, wherein the action set includes a set of actions in a pipeline to be performed on the first packet;
fetching an action from the action set;
determining, by a networking Application-Specific Integrated Circuit (ASIC) in the network switch, whether the fetched action is an output action to be performed immediately on the first packet, wherein the output action specifies a physical or virtual port for outputting the first packet;
in response to determining that the fetched action is an output action to be performed immediately, generating, by the ASIC, a second packet based on the first packet;
outputting one of the first and second packets through the specified physical or virtual port before performing actions remaining in the action set on the outputted packet; and
returning the other one of the first and second packets for further processing, which involves performing the actions remaining in the action set and accumulating actions from additional forwarding tables.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
fetching, with the ASIC, an additional action from the action set; and
applying the additional action to the returned packet.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
in response to determining that the action is an output action to be performed immediately, storing a pointer to a next action following the fetched action in the action set,
in response to determining that the action is an output action to be performed immediately, storing a pointer to a next table for the returned packet; and
in response to determining that the action is an output action to be performed immediately, storing accumulated actions for the returned packet.

### Claim 4 (depends on 3)

The method of claim 3, further comprising:
fetching the stored accumulated actions;
associating the fetched accumulated actions to an action set of the returned packet.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
determining whether the fetched action is a final action in the action set;
determining whether there are any further forwarding tables from which to accumulate the action set; and
sending the outputted packet to an output port when it is determined that the fetched action is the final action and when it is determined that there are no further forwarding tables.

### Claim 6 (depends on 1)

The method of claim 1, wherein the second packet is copied from the first packet using a replication engine of the ASIC.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
in response to determining that the fetched action is not an output action to be performed immediately, applying, by the ASIC, the fetched action to the first packet; and
in response to determining that the fetched action is not an output action to be performed immediately, fetching a next action following the fetched action in the action set.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
modifying a header of the returned packet such that the returned packet is to be forwarded to a different destination than the outputted packet.

### Claim 9 (depends on 1)

The method of claim 1, wherein the first packet is modified before the second packet is generated.

### Claim 10 (depends on 1)

The method of claim 1, wherein no modifications are made to the outputted packet before outputting the outputted packet.

### Claim 11

A non-transitory machine readable storage medium having stored thereon machine readable instructions to cause a computer processor to:
fetch an action from an action set accumulated from multiple forwarding tables of a network switch, wherein the action set includes a set of actions in a pipeline to be performed on a first packet;
in response to a networking Application-Specific Integrated Circuit (ASIC) in the network switch, determining that the fetched action is not an output action to be performed immediately on the first packet, apply the fetched action to the first packet;
in response to the networking ASIC determining that the fetched action is an output action to be performed immediately on the first packet, generate a second packet based on the first packet, wherein the output action specifies a physical or virtual port for outputting the first packet;
output one of the first and second packets through the specified physical or virtual port before performing actions remaining in the action set on the outputted packet; and
return the other one of the first and second packets for further processing, which involves performing the actions remaining in the action set and accumulating actions from additional forwarding tables.

### Claim 12 (depends on 11)

The medium of claim 11, wherein the medium is stored on the network switch.

### Claim 13

A network switch comprising:
an Application-Specific Integrated Circuit (ASIC);
a processing resource; and
a memory resource storing machine readable instructions to cause the processing resource to:
accumulate an action set for a first packet received by the switch;
fetch an action from the action set;
determine, with the ASIC, whether the fetched action is an output action to be performed immediately on the first packet, wherein the output action specifies a physical or virtual port for outputting the first packet;
in response to determining that the fetched action is an output action to be performed immediately, generate, by the ASIC, a second packet based on the first packet;
output one of the first and second packets through the specified physical or virtual port before performing actions remaining in the action set on the outputted packet; and
return the other one of the first and second packets for further processing, which involves performing the actions remaining in the action set and accumulating actions from additional forwarding tables.

### Claim 14 (depends on 13)

The network switch of claim 13, wherein the outputted packet is the first packet, and wherein the returned packet is the second packet.
