IP Library › Granted Patent US 11,818,236
Granted Patent B1
US 11,818,236 · App. 17/807,255 · Granted Nov 14, 2023

Protocol independent data unit forwarding

Inventors: Brian Arnold Petersen (San Francisco, CA); Roy T. Myers, Jr. (Morgan City, CA); Darren S. Engelkemier (Menlo Park, CA); Hossein Sedarat (San Jose, CA); Ramin Shirani (Morgan Hill, CA); Tom Quoc Wellbaum (San Jose, CA); Poon-Kuen Leung (Fremont, CA)
Assignee: Ethernovia Inc.
H04L69/18H04L49/252H04L49/3027H04L69/22H04L2212/00
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,818,236
App. No.
17/807,255
Filed
Jun 16, 2022
Granted
Nov 14, 2023
Kind
B1
Art Unit
2461
USPC
370/465
Abstract

Disclosed are systems, methods, and non-transitory computer-readable media for protocol independent data unit forwarding. A packet forwarding system receives a data unit comprising a header byte string via an input port. The packet forwarding system parses the data unit based on a header type determined based on the input port, yielding a parsing output describing the header byte string of the data unit. The packet forwarding system updates a metadata item associated with the data unit based on the parsing output and determines a packet forwarding instruction for forwarding the data unit to a destination based on the metadata item associated with the data unit. The packet forwarding system forwards the data unit to the destination based on the packet forwarding instruction and the metadata item associated with the data unit.

Claims (76)

1. A method comprising:

receiving, by a packet forwarding system, a first data unit, the first data unit received via an input port of the packet forwarding system, the first data unit comprising a header byte string;

determining, based on the input port, a first header type of a first header of the first data unit;

parsing, by a parser, the first data unit based on the first header type to yield a first parsing output that describes the header byte string of the first data unit;

updating a metadata item associated with the first data unit based on the first parsing output;

determining, based on the metadata item associated with the first data unit, a first packet forwarding instruction by:

generating a first search argument based on the metadata item;

executing a first lookup based on the first search argument, yielding a first lookup output; and

determining a subsequent action based on the first lookup output, the subsequent action being selected from a group that comprises one of recirculating the first data unit to the parser to parse for a next layer of headers of the first data unit, execute a second lookup based on the first lookup output, and provide a lookup result processor with data identifying the first packet forwarding instruction, the recirculating of the first data unit to the parser comprising returning the metadata item and the header byte string to the parser; and

forwarding the first data unit to a first destination based on the first packet forwarding instruction.

2. The method of claim 1 , wherein the subsequent action is to execute the second lookup based on the first lookup output, and wherein the determining of the first packet forwarding instruction further comprises:

updating the metadata item associated with the first data unit based on the first lookup output, yielding an updated metadata item associated with the first data unit;

generating a second search argument based on the updated metadata item;

executing the second lookup based on the second search argument, yielding a second lookup output; and

determining a second subsequent action based on the second lookup output.

3. The method of claim 2 , wherein the second subsequent action is to perform a subsequent parsing of the first data unit.

4. The method of claim 1 , wherein the forwarding of the first data unit to the first destination based on the first packet forwarding instruction comprises:

determining a transmit port for the first data unit based on the first packet forwarding instruction;

selecting an output queue servicing the transmit port based on the metadata items associated with the first data unit;

generating an updated header byte string for the first data unit; and

adding the first data unit to the output queue to be transmitted to the first destination via the transmit port, the first data unit having been updated based on the updated header byte string.

5. The method of claim 1 , wherein the data provided to the lookup result processor further comprises one of the metadata item, the metadata item and the header byte string, the metadata item and the data unit in its entirety, or the metadata item and at least a portion of the data unit that is greater than the header byte string.

6. The method of claim 1 , wherein to provide the lookup result processor with the data identifying the first packet forwarding instruction comprises updating the metadata item to include a value that points to the first packet forwarding instruction.

7. The method of claim 6 , wherein the updating of the metadata item comprises using either an action associated with a tunnel termination lookup operation or an action associated with an access control list operation.

8. The method of claim 1 , wherein only the metadata item and the header byte string are returned to the parser to recirculate the first data unit to the parser.

9. A system comprising:

a port manager functional component comprising at least a first input port, wherein the port manager functional component is configured to perform operations comprising:

receiving a first data unit via the first input port, the first data unit comprising a header byte string that is a subset of the first data unit;

determining, based on the input port, a first header type of a first header of the first data unit;

a parser functional component configured to perform operations comprising:

parsing the first data unit based on the first header type to yield a first parsing output that describes the header byte string of the first data unit;

updating a metadata item associated with the first data unit based on the first parsing output;

a header lookup functional component configured to perform operations comprising:

determining, based on the metadata item associated with the first data unit, a first packet forwarding instruction by:

generating a first search argument based on the metadata item;

executing a first lookup based on the first search argument, yielding a first lookup output; and

determining a subsequent action based on the first lookup output, the subsequent action being selected from a group that comprises one of recirculating the first data unit to the parser functional component to parse for a next layer of headers of the first data unit, execute a second lookup based on the first lookup output, and provide a lookup result processor with data identifying the first packet forwarding instruction, the recirculating of the first data unit to the parser comprising returning the metadata item and the header byte string to the parser; and

a lookup result processor functional component configured to perform operations comprising:

forwarding the first data unit to a first destination based on the first packet forwarding instruction.

10. The system of claim 9 , wherein the subsequent action is to execute the second lookup based on the first lookup output, and wherein the determining of the first packet forwarding instruction further comprises:

updating the metadata item associated with the first data unit based on the first lookup output, yielding an updated metadata item associated with the first data unit;

generating a second search argument based on the updated metadata item;

executing the second lookup based on the second search argument, yielding a second lookup output; and

determining a second subsequent action based on the second lookup output.

11. The system of claim 10 , wherein the second subsequent action is to perform a subsequent parsing of the first data unit.

12. The system of claim 9 , wherein the forwarding of the first data unit to the first destination based on the first packet forwarding instruction comprises:

determining a transmit port for the first data unit based on the first packet forwarding instruction;

selecting an output queue servicing the transmit port based on the metadata items associated with the first data unit;

generating an updated header byte string for the first data unit; and

adding the first data unit to the output queue to be transmitted to the first destination via the transmit port, the first data unit having been updated based on the updated header byte string.

13. The system of claim 9 , wherein the data provided to the lookup result processor further comprises one of the metadata item, the metadata item and the header byte string, the metadata item and the data unit in its entirety, or the metadata item and at least a portion of the data unit that is greater than the header byte string.

14. The system of claim 9 , wherein to provide the lookup result processor with the data identifying the first packet forwarding instruction comprises updating the metadata item to include a value that points to the first packet forwarding instruction.

15. The system of claim 14 , wherein the updating of the metadata item comprises using either an action associated with a tunnel termination lookup operation or an action associated with an access control list operation.

16. The system of claim 9 , wherein only the metadata item and the header byte string are returned to the parser to recirculate the first data unit to the parser.

17. A system comprising:

a physical device configured to forward data units using various communication protocols, the physical device configured to perform operations comprising:

receiving a first data unit via a first input port of the physical device, the first data unit comprising a header byte string that is a subset of the first data unit;

determining, based on the input port, a first header type of a first header of the first data unit;

parsing, by a parser, the first data unit based on the first header type to yield a first parsing output that describes the header byte string of the first data unit;

updating a metadata item associated with the first data unit based on the first parsing output;

determining, based on the metadata item associated with the first data unit, a first packet forwarding instruction by:

generating a first search argument based on the metadata item;

executing a first lookup based on the first search argument, yielding a first lookup output; and

determining a subsequent action based on the first lookup output, the subsequent action being selected from a group that comprises one of recirculating the first data unit to the parser to parse for a next layer of headers of the first data unit, execute a second lookup based on the first lookup output, and provide a lookup result processor with data identifying the first packet forwarding instruction, the recirculating of the first data unit to the parser comprising returning the metadata item and the header byte string to the parser; and

forwarding the first data unit to a first destination based on the first packet forwarding instruction.

18. The system of claim 17 , wherein the subsequent action is to execute the second lookup based on the first lookup output, and wherein the determining of the first packet forwarding instruction further comprises:

updating the metadata item associated with the first data unit based on the first lookup output, yielding an updated metadata item associated with the first data unit;

generating a second search argument based on the updated metadata item;

executing the second lookup based on the second search argument, yielding a second lookup output; and

determining a second subsequent action based on the second lookup output.

19. The system of claim 18 , wherein the second subsequent action is to perform a subsequent parsing of the first data unit.

20. The system of claim 17 , wherein the forwarding of the first data unit to the first destination based on the first packet forwarding instruction comprises:

determining a transmit port for the first data unit based on the first packet forwarding instruction;

selecting an output queue servicing the transmit port based on the metadata items associated with the first data unit;

generating an updated header byte string for the first data unit; and

adding the first data unit to the output queue to be transmitted to the first destination via the transmit port, the first data unit having been updated based on the updated header byte string.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 25, 2023
From: PETERSEN, BRIAN ARNOLD; MYERS, ROY T., JR.; ENGELKEMIER, DARREN S.; SEDARAT, HOSSEIN; SHIRANI, RAMIN
To: ETHERNOVIA INC.
Reel/Frame 063759/0354 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 25, 2023
From: PETERSEN, BRIAN ARNOLD; WELLBAUM, TOM QUOC; LEUNG, POON-KUEN
To: ETHERNOVIA INC.
Reel/Frame 063759/0423 →
Continuity (3)
Continuation 16926057 · Jul 10, 2020
Provisional Application 63013440 · Apr 21, 2020
Provisional Application 62872458 · Jul 10, 2019
Cited By (1)
US 12,267,258