IP Library Granted Patent US 12,388,915
Granted Patent B1
US 12,388,915 · App. 18/468,908 · Granted Aug 12, 2025

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 12,388,915
App. No.
18/468,908
Granted
Aug 12, 2025
Kind
B1
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 (41)

1. A method comprising:

receiving, by an input port of a packet forwarding system, a first data unit comprising a first header portion and a first payload portion;

processing, by a parser of the packet forwarding system, the first data unit to generate a first parsing output that describes the first header portion;

determining, by a header lookup functional component of the packet forwarding system, a forwarding decision for the first data unit based on the first parsing output, the determining of the forwarding decision comprising performing a three-way branch decision to either perform a header lookup operation based on the first parsing output, recirculate the first data unit back to the parser to generate another parsing output that describes another header portion, or provide an output of the lookup operation, the forwarding decision being determined based on the output of the header lookup operation;

selecting, by the header lookup functional component of the packet forwarding system, an output queue for the first data unit based on the forwarding decision;

modifying, by a header rewrite functional component of the packet forwarding system, a copy of the first header portion stored in an external buffer to generate a modified first data unit, the modifying of the copy of the first header portion comprising:

removing, from the copy of the first header portion, an existing encapsulating header associated with a terminated tunnel;

generating a new encapsulating header based on a template, the template providing one or more tunnel-specific values that are included in the new encapsulating header when the new encapsulating header is generated, the one or more tunnel-specific values comprising at least one of a source address or a destination address, and the one or more tunnel-specific values comprising a time-to-live value and a quality of service code; and

adding, to the first header portion, the new encapsulating header;

adding the modified first data unit to the output queue; and

transmitting the modified first data unit via a transmit port of the packet forwarding system that is serviced by the output queue.

2. The method of claim 1 , wherein the modifying of the copy of the first header portion comprises:

updating a forwarding header in the copy of the first header portion based on at least one of a forwarding method being used to transmit the first data unit or a network path being used to transmit the first data unit.

3. The method of claim 1 , wherein the output of the header lookup operation comprising either a metadata item, the metadata item and a header byte string, the metadata item and the first data unit in its entirety, or the metadata item and a portion of the first data unit that is greater than the header byte string.

4. A system comprising:

a port manager functional component comprising an input port and a transmit port, wherein the port manager functional component is configured to perform operations comprising:

receiving a first data unit via the input port, the first data unit comprising a first header portion and a first payload portion; and

transmitting a modified first data unit via the transmit port that is serviced by an output queue;

a parser configured to process the first data unit to generate a first parsing output that describes the first header portion;

a header lookup functional component configured to perform operations comprising:

determining a forwarding decision for the first data unit based on the first parsing output, the determining of the forwarding decision comprising performing a three-way branch decision to either perform a header lookup operation based on the first parsing output, recirculate the first data unit back to the parser to generate another parsing output that describes another header portion, or provide an output of the lookup operation, the forwarding decision being determined based on the output of the header lookup operation; and

selecting an output queue for the first data unit based on the forwarding decision; and

a header rewrite functional component configured to generate the modified first data unit and to add the modified first data unit to the output queue, the header rewrite functional component generating the modified first data unit by modifying a copy of the first header portion stored in an external buffer, the modifying of the copy of the first header portion comprising:

removing, from the copy of the first header portion, an existing encapsulating header associated with a terminated tunnel;

generating a new encapsulating header based on a template, the template providing one or more tunnel-specific values that are included in the new encapsulating header when the new encapsulating header is generated, the one or more tunnel-specific values comprising at least one of a source address or a destination address, and the one or more tunnel-specific values comprising at least one of a time-to-live value or a quality of service code; and

adding, to the first header portion, the new encapsulating header.

5. The system of claim 4 , wherein the modifying of the copy of the first header portion comprises:

updating a forwarding header in the copy of the first header portion based on at least one of a forwarding method being used to transmit the first data unit or a network path being used to transmit the first data unit.

6. The system of claim 4 , wherein the output of the header lookup operation comprising either a metadata item, the metadata item and a header byte string, the metadata item and the first data unit in its entirety, or the metadata item and a portion of the first data unit that is greater than the header byte string.

7. A physical device configured to perform operations comprising:

receiving, by an input port of the physical device, a first data unit comprising a first header portion and a first payload portion;

processing, by a parser of the physical device, the first data unit to generate a first parsing output that describes the first header portion;

determining, by a header lookup functional component of the physical device, a forwarding decision for the first data unit based on the first parsing output, the determining of the forwarding decision comprising performing a three-way branch decision to either perform a header lookup operation based on the first parsing output, recirculate the first data unit back to the parser to generate another parsing output that describes another header portion, or provide an output of the lookup operation, the forwarding decision being determined based on the output of the header lookup operation;

selecting, by the header lookup functional component of the physical device, an output queue for the first data unit based on the forwarding decision;

modifying, by a header rewrite functional component of the physical device, a copy of the first header portion stored in an external buffer to generate a modified first data unit, the modifying of the copy of the first header portion comprising:

removing, from the copy of the first header portion, an existing encapsulating header associated with a terminated tunnel;

generating a new encapsulating header based on a template, the template providing one or more tunnel-specific values that are included in the new encapsulating header when the new encapsulating header is generated, the one or more tunnel-specific values comprising at least one of a source address or a destination address, and the one or more tunnel-specific values comprising at least one of a time-to-live value or a quality of service code; and

adding, to the first header portion, the new encapsulating header;

adding the modified first data unit to the output queue; and

transmitting the modified first data unit via a transmit port of the physical device that is serviced by the output queue.

8. The physical device of claim 7 , wherein the output of the header lookup operation comprising either a metadata item, the metadata item and a header byte string, the metadata item and the first data unit in its entirety, or the metadata item and a portion of the first data unit that is greater than the header byte string.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 18, 2023
From: PETERSEN, BRIAN ARNOLD; MYERS, ROY T., JR.; ENGELKEMIER, DARREN S.; SEDARAT, HOSSEIN; SHIRANI, RAMIN
To: ETHERNOVIA INC.
Reel/Frame 064934/0832 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 18, 2023
From: PETERSEN, BRIAN ARNOLD; WELLBAUM, TOM QUOC; LEUNG, POON-KUEN
To: ETHERNOVIA INC.
Reel/Frame 064935/0092 →
Continuity (4)
Continuation 17807255 · Jun 16, 2022
Continuation 16926057 · Jul 10, 2020
Provisional Application 63013440 · Apr 21, 2020
Provisional Application 62872458 · Jul 10, 2019
References Cited (21)
US 7558270B1 · Wilford · 2009 [cited by examiner]
US 8793358B1 · Godbole · 2014 [cited by examiner]
US 10778588B1 · Singh · 2020 [cited by applicant]
US 11394813B1 · Petersen et al. · 2022 [cited by applicant]
US 20070019661A1 · Rowett et al. · 2007 [cited by applicant]
US 20150281106A1 · Lee · 2015 [cited by examiner]
US 20160357781A1 · Bastide et al. · 2016 [cited by applicant]
US 20170279638A1 · Albrecht · 2017 [cited by examiner]
US 20180097722A1 · Callard · 2018 [cited by examiner]
US 20190289102A1 · Goel · 2019 [cited by examiner]
US 20210144405A1 · Sharangpani · 2021 [cited by applicant]
US 20210160350A1 · Volpe · 2021 [cited by examiner]
U.S. Appl. No. 16/926,057 U.S. Pat. No. 11,394,813, filed Jul. 10, 2020, Protocol Independent Data Unit Forwarding. [cited by applicant]
U.S. Appl. No. 17/807,255, filed Jun. 16, 2022, Protocol Independent Data Unit Forwarding. [cited by applicant]
“U.S. Appl. No. 16/926,057, Non Final Office Action mailed Oct. 15, 2021”, 13 pgs. [cited by applicant]
“U.S. Appl. No. 16/926,057, Notice of Allowance mailed Mar. 17, 2022”, 10 pgs. [cited by applicant]
“U.S. Appl. No. 16/926,057, Response filed Jan. 18, 2022 to Non Final Office Action mailed Oct. 15, 2021”, 11 pgs. [cited by applicant]
“U.S. Appl. No. 17/807,255, Non Final Office Action mailed Feb. 15, 2023”, 23 pgs. [cited by applicant]
“U.S. Appl. No. 17/807,255, Notice of Allowance mailed Jul. 12, 2023”, 5 pgs. [cited by applicant]
“U.S. Appl. No. 17/807,255, Preliminary Amendment filed Oct. 28, 2022”, 8 pgs. [cited by applicant]
“U.S. Appl. No. 17/807,255, Response filed May 25, 2023 to Non Final Office Action mailed Feb. 15, 2023”, 11 pgs. [cited by applicant]