IP Library Granted Patent US 10,764,176
Granted Patent B1
US 10,764,176 · App. 15/682,363 · Granted Sep 1, 2020

Compiler and hardware interactions to reuse register fields in the data plane of a network forwarding element

Inventors: Michael E. Attig (Sunnyvale, CA); Patrick Bosshart (Plano, TX); Jay Evan Scott Peterson (San Francisco, CA); Michael Gregory Ferrara (Palo Alto, CA)
Assignee: Barefoot Networks, Inc.
H04L45/74H04L69/22G06F7/57
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 10,764,176
App. No.
15/682,363
Granted
Sep 1, 2020
Kind
B1
Abstract

A method of configuring a forwarding element that includes several message processing stages. The method identifies a first processing stage that starts processing a first header field of a message and a second processing stage that is the last message processing stage that processes the first header field. The method configures a field of a packet header container to store the first header field from the beginning of the first message processing stage. The method identifies a second header field used in a third processing stage after the second processing stage. The method configures a set of circuitries in the data plane to initialize the container field after the end of the second processing stage. The method configures the field of the container to store the second header field of the message after the end of the second processing stage and before the start of the third processing stage.

Claims (34)

1. A method of configuring a physical hardware forwarding element comprising a message processing pipeline comprising a plurality of message processing stages for processing header fields of messages, the method comprising:

identifying a first message processing stage that starts processing a first header field of a message and a second message processing stage that is a last message processing stage that processes the first header field;

configuring a field of a packet header container in a data plane of the physical hardware forwarding element to store the first header field for a duration from a beginning of the first message processing stage;

identifying a second header field used in a third message processing stage after the second message processing stage in the message processing pipeline;

configuring a set of hardware circuitries in the data plane to initialize the field of the packet header container after an end of the second message processing stage and before a start of the third message processing stage; and

configuring the field of the packet header container to store the second header field of the message and overwrite the first header field after the end of the second message processing stage and before the start of the third message processing stage and based on the second message processing stage having completed use of the first header field, wherein the third message processing stage processes the second header field stored in the field of the packet header container.

2. The method of claim 1 , wherein the set of hardware circuitries configured to initialize the field of the packet header container comprises a set of combinational logic circuits configured to initialize the field of the packet header container.

3. The method of claim 2 , wherein at least one message processing stage comprises a match action unit for processing header fields of a message, wherein the set of hardware circuitries configured to initialize the field of the packet header container is not utilized by the match action unit for processing the header fields of the message.

4. The method of claim 1 , wherein the data plane of the physical hardware forwarding element comprises a plurality of container fields, the method further comprising:

defining a mask comprising a plurality of fields, each field of the mask corresponding to a container field; and

utilizing the mask to initialize a set of container fields that are to be initialized for reuse.

5. The method of claim 4 , wherein the set of hardware circuitries configured to initialize the field of the packet header container comprises a latch configured to (i) hold a current value of a field of the packet header container when the corresponding mask field stores a first value and (ii) reset the field of the packet header container when the corresponding mask field stores a second value.

6. The method of claim 1 , wherein identifying the first and second message processing stages comprises utilizing a flow graph identifying a set of message processing stages in the message processing pipeline of the physical hardware forwarding element for processing the first and second header fields of the message.

7. The method of claim 6 , wherein the flow graph is generated from a set of instructions defining a plurality of operations performed by the physical hardware forwarding element.

8. The method of claim 1 , wherein the set of hardware circuitries configured to initialize the field of packet header container comprises an arithmetic logic unit (ALU) in a message processing stage that is between the second and third message processing stages of the message processing pipeline.

9. The method of claim 1 , wherein the field of the packet header container is a field in a register in the data plane of the physical hardware forwarding element.

10. The method of claim 1 , wherein the physical hardware forwarding element is one of a network router and a network switch.

11. A non-transitory computer readable medium storing a program for configuring a physical hardware forwarding element comprising a message processing pipeline comprising a plurality of message processing stages for processing header fields of messages, the program executable by a processing unit, the program comprising sets of instructions for:

identifying a first message processing stage that starts processing a first header field of a message and a second message processing stage that is a last message processing stage that processes the first header field;

configuring a field of a packet header container in a data plane of the physical hardware forwarding element to store the first header field for a duration from a beginning of the first message processing stage;

identifying a second header field used in a third message processing stage after the second message processing stage in the message processing pipeline;

configuring a set of hardware circuitries in the data plane to initialize the field of the packet header container after an end of the second message processing stage and before a start of the third message processing stage; and

configuring the field of the packet header container to overwrite the first header field and store the second header field of the message after the end of the second message processing stage and before the start of the third message processing stage and based on the second message processing stage having completed use of the first header field, wherein the third message processing stage processes the second header field stored in the field of the packet header container.

12. The non-transitory computer readable medium of claim 11 , wherein the set of hardware circuitries configured to initialize the field of the packet header container comprises a set of combinational logic circuits configured to initialize the field of the packet header container.

13. The non-transitory computer readable medium of claim 12 , wherein at least one message processing stage comprises a match action unit for processing header fields of a message, wherein the set of hardware circuitries configured to initialize the field of the packet header container is not utilized by the match action unit for processing the header fields of the message.

14. The non-transitory computer readable medium of claim 11 , wherein the data plane of the physical hardware forwarding element comprises a plurality of container fields, the program further comprising sets of instructions for:

defining a mask comprising a plurality of fields, at least one field of the mask corresponding to a container field; and

utilizing the mask to initialize a set of container fields that are to be initialized for reuse.

15. The non-transitory computer readable medium of claim 14 , wherein the set of hardware circuitries configured to initialize the field of the packet header container comprises a latch configured to (i) hold a current value of a container field when the corresponding mask field stores a first value and (ii) reset the container field when the corresponding mask field stores a second value.

16. The non-transitory computer readable medium of claim 11 , wherein the set of instructions for identifying the first and second message processing stages comprises a set of instructions for utilizing a flow graph identifying a set of message processing stages in the message processing pipeline of the physical hardware forwarding element for processing the first and second header fields of the message.

17. The non-transitory computer readable medium of claim 16 , wherein the flow graph is generated from a set of instructions defining a plurality of operations performed by the physical hardware forwarding element.

18. The non-transitory computer readable medium of claim 11 , wherein the set of hardware circuitries configured to initialize the field of the packet header container comprises an arithmetic logic unit (ALU) in a message processing stage that is between the second and third message processing stages of the message processing pipeline.

19. The non-transitory computer readable medium of claim 11 , wherein the field of the packet header container is a field in a register in the data plane of the physical hardware forwarding element.

20. The non-transitory computer readable medium of claim 11 , wherein the physical hardware forwarding element is one of a network router and a network switch.

Assignments (5)
RELEASE OF SECURITY INTEREST Recorded Sep 20, 2019
From: SILICON VALLEY BANK
To: BAREFOOT NETWORKS, INC.
Reel/Frame 050455/0455 →
RELEASE OF SECURITY INTEREST Recorded Sep 20, 2019
From: SILICON VALLEY BANK
To: BAREFOOT NETWORKS, INC.
Reel/Frame 050455/0497 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jun 25, 2019
From: BAREFOOT NETWORKS, INC.
To: SILICON VALLEY BANK
Reel/Frame 049588/0001 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jun 25, 2019
From: BAREFOOT NETWORKS, INC.
To: SILICON VALLEY BANK
Reel/Frame 049588/0112 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 10, 2018
From: ATTIG, MICHAEL E.; BOSSHART, PATRICK; PETERSON, JAY EVAN SCOTT; FERRARA, MICHAEL GREGORY
To: BAREFOOT NETWORKS, INC.
Reel/Frame 046833/0050 →
Continuity (1)
Provisional Application 62530289 · Jul 9, 2017
Cited By (1)
US 12,526,353