IP Library Granted Patent US 11,038,993
Granted Patent B2
US 11,038,993 · App. 16/352,492 · Granted Jun 15, 2021

Flexible processing of network packets

Inventors: Deepak Goel (San Jose, CA); Jean-Marc Frailong (Los Altos Hills, CA); Srihari Raju Vegesna (San Jose, CA); Stimit Kishor Oak (San Jose, CA); Rohit Sunkam Ramanujam (Sunnyvale, CA); John David Huber (San Diego, CA); Hariharan Lakshminarayanan Thantry (Fremont, CA); Vikas Minglani (Cupertino, CA); Saurin Patel (San Jose, CA); Sureshkumar Nedunchezhian (San Jose, CA)
Assignee: FUNGIBLE, INC.
H04L69/22H04L41/0266H04L45/7453H04L45/7457H04L49/252
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,038,993
App. No.
16/352,492
Granted
Jun 15, 2021
Kind
B2
Abstract

Aspects of this disclosure describes techniques for parsing network packets, processing network packets, and modifying network packets before forwarding the modified network packets over a network. The present disclosure describes a system that, in some examples, parses network packets, generates data describing or specifying attributes of the network packet, identifies operations to be performed when processing a network packet, performs the identified operations, generates data describing or specifying how to modify and/or forward the network packet, modifies the network packet, and outputs the modified packet to another device or system, such as a switch.

Claims (60)

1. A method comprising:

identifying, by a device and based on a parser state of the device and further based on a subset of data of a packet header for a packet, a match index, wherein the subset of data is referenced by a pointer, and wherein the device includes separate sequence memory and action memory;

identifying, by the device and based on the match index, one or more sequence instructions stored in the sequence memory included within the device, wherein the sequence memory has a faster access time than the action memory included within the device;

executing, by the device, the sequence instructions to determine an updated parser state and an updated pointer, wherein parsing speed of the device is dependent upon how quickly the updated parser state is determined, and wherein the updated pointer references a new subset of data of the packet header;

identifying, by the device, one or more action instructions stored in the action memory included within the device; and

executing, by the device, the action instructions, wherein executing the action instructions includes storing at least one attribute of the packet header.

2. The method of claim 1 , wherein executing the action instructions includes:

determining, by the device, a structure for a parsed result vector for the packet header.

3. The method of claim 2 , wherein storing at least one attribute of the packet header includes:

storing, within the parsed result vector, the at least one attribute of the packet header.

4. The method of claim 3 , further comprising:

performing, by the device and based on the parsed result vector, a lookup in a first table to identify a first result;

performing, by the device and based on the parsed result vector, a lookup in a second table to identify a second result, wherein the second table is larger than the first table;

generating, by the device and based on the first result and the second result, metadata that includes information about how to forward the packet on the network; and

outputting, by the device, the metadata.

5. The method of claim 3 , further comprising:

determining, by the device and based on the parsed result vector, a plurality of sequential operations to perform;

performing, by the device, the plurality of sequential operations to generate metadata that includes information about how to forward the network packet on the network.

6. The method of claim 5 , further comprising:

modifying, by the device and based on the metadata, the network packet.

7. The method of claim 5 , further comprising:

forwarding, by the device and based on the metadata, the network packet.

8. The method of claim 1 , further comprising:

identifying, by the device and based on the new subset of data and the updated parser state, a new match index.

9. The method of claim 1 , further comprising:

identifying, by the device and based on stored information from the packet header and the updated parser state, a new match index.

10. The method of claim 1 , further comprising:

storing, by the device in one or more registers included within the device, information about the updated parser state.

11. The method of claim 1 ,

wherein the action instructions are executed by an action processor, and

wherein the sequence instructions are executed by a sequence machine, and wherein the sequence machine stores at least some of the subset of data to one or more registers included within the device.

12. The method of claim 1 , wherein identifying the one or more action instructions includes:

identifying, based on the match index, the action instructions.

13. The method of claim 1 , wherein the match index is a sequence match index, and wherein identifying the action instructions includes:

identifying, based on subset of data and the parser state, an action match index; and

identifying, based on the action match index, the action instructions.

14. The method of claim 1 ,

wherein identifying the match index includes identifying, by the device using a ternary content addressable memory, the match index.

15. The method of claim 1 ,

wherein executing the action instructions includes storing, in a parsed result vector, information identifying a template.

16. The method of claim 1 ,

wherein executing the action instructions includes setting, in a parsed result vector, a plurality of flags.

17. The method of claim 1 , further comprising:

storing, in the one or more registers, information from the packet header.

18. A device comprising:

content addressable memory configured to identify, based on a subset of data within a plurality of packet headers referenced by at least one pointer, and further based on a parser state, a match index;

sequence memory addressable by the match index;

action memory, wherein the sequence memory has a faster access time than the action memory, and wherein the action memory is separate from the sequence memory;

sequence processing circuitry having access to the sequence memory and configured to:

identify, based on the match index, sequence instructions stored in the sequence memory;

execute the sequence instructions to determine an updated parser state and an updated pointer, wherein parsing speed of the device is dependent upon how quickly the updated parser state is determined, and wherein the updated pointer references a different subset of data within at least one of the plurality of packet headers;

store, in one or more registers included within the device, information about the updated parser state;

action processing circuitry having access to the action memory and configured to identify action instructions stored in the action memory and execute the action instructions to store at least one attribute the packet header; and

a plurality of parsing devices, each of the parsing devices associated with a respective one of the plurality of packet headers.

19. A non-transitory computer-readable storage medium comprising instructions that, when executed, configure processing circuitry to:

identify, based on a parser state of a device and further based on a subset of data of a packet header for a packet, a match index, wherein the subset of data is referenced by a pointer, and wherein the device includes separate sequence memory and action memory;

identify, based on the match index, one or more sequence instructions stored in the sequence memory included within the device, wherein the sequence memory has a faster access time than the action memory included within the device;

execute the sequence instructions to determine an updated parser state and an updated pointer, wherein parsing speed of the device is dependent upon how quickly the updated parser state is determined, and wherein the updated pointer references a new subset of data of the packet header;

identify one or more action instructions stored in the action memory included within the device; and

execute the action instructions, wherein executing the action instructions includes storing at least one attribute of the packet header.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 31, 2023
From: FUNGIBLE, INC.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 064434/0430 →
RELEASE OF SECURITY INTEREST Recorded Jan 9, 2023
From: HERCULES CAPITAL, INC., AS AGENT
To: FUNGIBLE, INC.
Reel/Frame 062335/0803 →
RELEASE OF SECURITY INTEREST Recorded Jan 5, 2023
From: SILICON VALLEY BANK
To: FUNGIBLE, INC.
Reel/Frame 062308/0191 →
SECURITY INTEREST Recorded Dec 16, 2021
From: FUNGIBLE, INC.
To: SILICON VALLEY BANK
Reel/Frame 058523/0960 →
SECURITY INTEREST Recorded Dec 16, 2021
From: FUNGIBLE, INC.
To: HERCULES CAPITAL, INC., AS AGENT
Reel/Frame 058533/0429 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 23, 2019
From: FRAILONG, JEAN-MARC; SUNKAM RAMANUJAM, ROHIT; VEGESNA, SRIHARI RAJU
To: FUNGIBLE, INC.
Reel/Frame 048974/0106 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2019
From: GOEL, DEEPAK; OAK, STIMIT KISHOR; HUBER, JOHN DAVID; THANTRY, HARIHARAN LAKSHMINARAYANAN; MINGLANI, VIKAS; PATEL, SAURIN; NEDUNCHEZHIAN, SURESHKUMAR
To: FUNGIBLE, INC.
Reel/Frame 048589/0506 →
Continuity (2)
Provisional Application 62642798 · Mar 14, 2018
Related Publication 20190289102A1 · Sep 19, 2019