Compiler and hardware interactions to remove action dependencies in the data plane of a network forwarding element

US10313495B1 · US · B1

Patent metadata
FieldValue
Publication numberUS-10313495-B1
Application numberUS-201715682365-A
CountryUS
Kind codeB1
Filing dateAug 21, 2017
Priority dateJul 9, 2017
Publication dateJun 4, 2019
Grant dateJun 4, 2019

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A method of configuring a forwarding element that includes several data plane message processing stages. The method stores a set of action codes in an instruction memory in the data plane of the forwarding element. Each action code identifies an operation to perform on a field of a message received at the data plane. The method determines action codes required to process each field of the message in each message processing stage. The method configures a data-plane processing unit of the forwarding element to concurrently perform a group of the action codes in the same data plane processing stage when (i) the action codes are the same and (ii) operate on the same field of the message.

First claim

Opening claim text (preview).

What is claimed is: 1. A method of configuring a physical forwarding element comprising (i) a data plane comprising a data plane message processing pipeline and (ii) a parser for extracting fields of messages received at the data plane of the physical forwarding element, the data plane message processing pipeline comprising a plurality of data plane message processing stages, the method comprising: storing a set of action codes in an instruction memory in the data plane of the physical forwarding element, each action code identifying an operation to perform on a field of a message received at the data plane; determining action codes required to process each field of the message in each message processing stage; and when a plurality of the action codes (i) are the same and (ii) operate on a same field of the message, configuring a data-plane processing unit of the physical forwarding element to concurrently perform the plurality of the action codes in a same data plane processing stage and during a same clock cycle by utilizing a same data-plane processing unit to perform the plurality of the action codes. 2. The method of claim 1 , wherein the data plane of the physical forwarding element comprises circuitry to perform a logical OR operation on the action codes required to perform an operation on a same field of the message in a same message processing stage. 3. The method of claim 1 , the physical forwarding element comprising a plurality of data plane processing units, the method further comprising configuring each data plane processing unit to operate on a different field of a message at each message stage processing stage. 4. The method of claim 3 , wherein each data-plane processing unit is an arithmetic logic unit (ALU). 5. The method of claim 1 , wherein the physical forwarding element is one of a network router and a network switch. 6. A method of configuring a physical forwarding element comprising (i) a data plane comprising a data plane message processing pipeline and (ii) a parser for extracting fields of messages received at the data plane of the physical forwarding element, the data plane message processing pipeline comprising a plurality of data plane message processing stages, the method comprising: storing a set of action codes in an instruction memory in the data plane of the physical forwarding element, each action code identifying an operation to perform on a field of a message received at the data plane; determining action codes required to process each field of the message in each message processing stage; when a plurality of the action codes (i) are the same and (ii) operate on a same field of the message, configuring a data-plane processing unit of the physical forwarding element to concurrently perform the plurality of the action codes in a same data plane processing stage; and when the action codes are not the same, configuring the data-plane processing unit of the forwarding element to perform each of a plurality of action codes that operate on a same field of the message in a different processing stage. 7. A method of configuring a physical forwarding element comprising (i) a data plane comprising a data plane message processing pipeline and (ii) a parser for extracting fields of messages received at the data plane of the physical forwarding element, the data plane message processing pipeline comprising a plurality of data plane message processing stages, the method comprising: receiving a set of instructions from a control plane of the physical forwarding element to identify a set of actions to perform on the fields of messages received at the data plane of the physical forwarding element; storing a set of action codes in the instruction memory in the data plane of the physical forwarding element, the set of action codes comprising the actions identified in the set of instructions, each action code identifying an operation to perform on a field of a message received at the data plane; determining action codes required to process each field of the message in each message processing stage; and when a plurality of the action codes (i) are the same and (ii) operate on a same field of the message, configuring a data-plane processing unit of the physical forwarding element to concurrently perform the plurality of the action codes in a same data plane processing stage. 8. The method of claim 7 , wherein the set of instructions further comprises a set of lookup keys, each lookup key corresponding to an action code, the method further comprising storing the set of lookup keys in a plurality of match tables in the data plane of the physical forwarding element, wherein determining the action codes required to process each field of the message in each message processing stage comprises comparing each field of the message with a lookup key to determine whether the action corresponding with the lookup key is to be performed on the field. 9. The method of claim 7 , wherein the set of instructions is specified in a data-plane programming language. 10. A non-transitory computer readable medium storing a program for configuring a physical forwarding element comprising (i) a data plane comprising a data plane message processing pipeline and (ii) a parser for extracting fields of messages received at the data plane of the physical forwarding element, the data plane message processing pipeline comprising a plurality of data plane message processing stages, the program executable by a processing unit, the program comprising sets of instructions for: storing a set of action codes in an instruction memory in the data plane of the forwarding element, each action code identifying an operation to perform on a field of a message received at the data plane; determining action codes required to process each field of the message in each message processing stage; and when a plurality of the action codes (i) are the same and (ii) operate on a same field of the message, configuring a data-plane processing unit of the physical forwarding element to concurrently perform the plurality of the action codes in a same data plane processing stage and during a same clock cycle by utilizing a same data-plane processing unit to perform the plurality of action codes. 11. The non-transitory computer readable medium of claim 10 , wherein the data plane of the physical forwarding element comprises circuitry to perform a logical OR operation on the action codes required to perform an operation on a same field of the message in a same message processing stage. 12. The non-transitory computer readable medium of claim 10 , the physical forwarding element comprising a plurality of data plane processing units, the program further comprising a set of instructions for configuring each data plane processing unit to operate on a different field of a message at each message processing stage. 13. The non-transitory computer readable medium of claim 12 , wherein each data-plane processing unit is an arithmetic logic unit (ALU). 14. The non-transitory computer readable medium of claim 10 , wherein the physical forwarding element is one of a network router and a network switch. 15. A non-transitory computer readable medium storing a program for configuring a physical forwarding element comprising (i) a data plane comprising a data plane message processing pipeline and (ii) a parser for extracting fields of messages received at the data plane of the physical forwarding element, the data plane message processing pipeline comprising a plurality of data plane message processing stages, the program executable by a processing unit, the program comprising s

Assignees

Inventors

Classifications

  • Routing techniques specific to parallel machines, e.g. wormhole, store and forward, shortest path problem congestion (routing on a LAN H04L45/00) · CPC title

  • Flow based routing · CPC title

  • Address table lookup; Address filtering · CPC title

  • Logical and Boolean instructions, e.g. XOR, NOT · CPC title

  • Arithmetic instructions · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US10313495B1 cover?
A method of configuring a forwarding element that includes several data plane message processing stages. The method stores a set of action codes in an instruction memory in the data plane of the forwarding element. Each action code identifies an operation to perform on a field of a message received at the data plane. The method determines action codes required to process each field of the messa…
Who is the assignee on this patent?
Barefoot Networks Inc
What technology area does this patent fall under?
Primary CPC classification H04L69/22. Mapped technology areas include Electricity.
When was this patent published?
Publication date Tue Jun 04 2019 00:00:00 GMT+0000 (Coordinated Universal Time) (B1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).