Patents Assigned to BAREFOOT NETWORKS, INC.
-
Patent number: 12040976Abstract: Some embodiments provide a method for processing a packet for a pipeline of a hardware switch. The pipeline, in some embodiments, includes several different stages that match against packet header fields and modify packet header fields. The method receives a packet that includes a set of packet headers. The method then populates, for each packet header in the set of packet headers, (i) a first set of registers with packet header field values of the packet header that are used in the pipeline, and (ii) a second set of registers with packet header field values of the packet header that are not used in the pipeline.Type: GrantFiled: July 7, 2022Date of Patent: July 16, 2024Assignee: BAREFOOT NETWORKS, INCInventor: Patrick Bosshart
-
Patent number: 10454833Abstract: Some embodiments provide a network forwarding integrated circuit (IC) for processing network packets. The network forwarding IC includes multiple packet processing pipelines and a traffic management unit. Each pipeline is configured to operate as an ingress pipeline and an egress pipeline. The traffic management unit is configured to receive a packet processed by an ingress pipeline and to enqueue the packet for output to a particular egress pipeline. A set of packets received by the network forwarding IC are processed by a first pipeline as an ingress pipeline and a second pipeline as an egress pipeline, then subsequently processed by the second pipeline as an ingress pipeline and a third pipeline as an egress pipeline.Type: GrantFiled: December 12, 2017Date of Patent: October 22, 2019Assignee: BAREFOOT NETWORKS, INC.Inventors: Patrick Bosshart, Jay Evan Scott Peterson, Michael Gregory Ferrara, Remy Chang
-
Patent number: 10447597Abstract: Some embodiments of the invention provide a path-and-latency tracking (PLT) method. At a forwarding element, this method in some embodiments detects the path traversed by a data message through a set of forwarding elements, and the latency that the data message experiences at each of the forwarding elements in the path. In some embodiments, the method has a forwarding element in the path insert its forwarding element identifier and path latency in a header of the data message that it forwards. The method of some embodiments also uses fast PLT operators in the data plane of the forwarding elements to detect new data message flows, to gather PLT data from these data message flows, and to detect path or latency changes for previously detected data message flows. In some embodiments, the method then uses control plane processes (e.g., of the forwarding elements or other devices) to collect and analyze the PLT data gathered in the data plane from new or existing flows.Type: GrantFiled: May 21, 2017Date of Patent: October 15, 2019Assignee: BAREFOOT NETWORKS, INC.Inventors: Changhoon Kim, Jeongkeun Lee, Parag Bhide, Jithin Thomas, Xiaozhou Li, Georgios Nikolaidis
-
Patent number: 10430095Abstract: A pool of unit memories is provided in order to flexibly allocate memory capacity to implement various tables and/or logical memories such as those for implementing an OpenFlow switch. The pool is structured with routing resources for allowing flexible allocation and reallocation of memory capacity to the various tables. The unit memories and logical units in the pool are interconnected by a set of horizontal routing resources and a set of vertical routing resources.Type: GrantFiled: August 22, 2018Date of Patent: October 1, 2019Assignee: BAREFOOT NETWORKS, INC.Inventor: Patrick W. Bosshart
-
Patent number: 10432527Abstract: Some embodiments provide a method for processing a packet for a pipeline of a hardware switch. The pipeline, in some embodiments, includes several different stages that match against packet header fields and modify packet header fields. The method receives a packet that includes a set of packet headers. The method then populates, for each packet header in the set of packet headers, (i) a first set of registers with packet header field values of the packet header that are used in the pipeline, and (ii) a second set of registers with packet header field values of the packet header that are not used in the pipeline.Type: GrantFiled: October 10, 2017Date of Patent: October 1, 2019Assignee: BAREFOOT NETWORKS, INC.Inventor: Patrick Bosshart
-
Patent number: 10419366Abstract: Some embodiments of the invention provide a forwarding element that can be configured through in-band data-plane messages from a remote controller that is a physically separate machine from the forwarding element. The forwarding element of some embodiments has data plane circuits that include several configurable message-processing stages, several storage queues, and a data-plane configurator. A set of one or more message-processing stages of the data plane are configured (1) to process configuration messages received by the data plane from the remote controller and (2) to store the configuration messages in a set of one or more storage queues. The data-plane configurator receives the configuration messages stored in the set of storage queues and configures one or more of the configurable message-processing stages based on configuration data in the configuration messages.Type: GrantFiled: October 16, 2017Date of Patent: September 17, 2019Assignee: BAREFOOT NETWORKS, INC.Inventors: Changhoon Kim, Xiaozhou Li, Anurag Agrawal, Julianne Zhu
-
Patent number: 10412018Abstract: Some embodiments provide a method for scheduling a packet to be dequeued to a processing pipeline of a hardware forwarding element. The method selects a node representing one of multiple ports associated with the processing pipeline. For each of one or more layers of logical queues, the method (i) identifies a set of logical queue nodes associated with a previously selected node based on a configuration that maps multiple physical queues to the multiple ports via the one or more layers of logical queues and (ii) selects one of the identified logical queue nodes based on properties of the identified logical queue nodes. The method selects one of a set of physical queues associated with a selected logical queue node of the last layer of logical queues. The method dequeues a next packet from the selected physical queue for processing by the processing pipeline.Type: GrantFiled: August 21, 2017Date of Patent: September 10, 2019Assignee: BAREFOOT NETWORKS, INC.Inventors: Michael Feng, Anurag Agrawal, Yi Li
-
Patent number: 10404619Abstract: A method of multicasting packets by a forwarding element that includes several packet replicators and several egress pipelines. Each packet replicator receives a data structure associated with a multicast packet that identifies a multicast group. Each packet replicator identifies a first physical egress port of a first egress pipeline for sending the multicast packet to a member of the multicast group. The first physical egress port is a member of LAG. Each packet replicator determines that the first physical egress port is not operational and identifies a second physical port in the LAG for sending the multicast packet to the member of the multicast group. When a packet replicator is connected to the same egress pipeline as the second physical egress, the packet replicator provides the identification of the second physical egress port to the egress pipeline to send the packet to the multicast member. Otherwise the packet replicator drops the packet.Type: GrantFiled: March 5, 2017Date of Patent: September 3, 2019Assignee: BAREFOOT NETWORKS, INC.Inventors: Anurag Agrawal, Julianne Zhu
-
Patent number: 10372365Abstract: Some embodiments provide a method for configuring unit memories of a forwarding element. The method configures a first pool of unit memories to implement several match entries that each include a set of match conditions and an address for an action entry to read when the set of match conditions are met. The method configures a second pool of unit memories to implement several action entries. Each unit memory in the second pool includes a set of action entries that are collectively assigned a virtual memory address. The method moves a particular set of action entries from a first unit memory in the second pool to a second unit memory in the second pool. The particular set of action entries retains a same virtual memory address after moving to the second unit memory.Type: GrantFiled: December 14, 2015Date of Patent: August 6, 2019Assignee: BAREFOOT NETWORKS, INC.Inventor: Patrick Bosshart
-
Patent number: 10318587Abstract: An algorithmic TCAM based ternary lookup method is provided. The method stores entries for ternary lookup into several sub-tables. All entries in each sub-table have a sub-table key that includes the same common portion of the entry. No two sub-tables are associated with the same sub-table key. The method stores the keys in a sub-table keys table in TCAM. Each key has a different priority. The method stores the entries for each sub-table in random access memory. Each entry in a sub-table has a different priority. The method receives a search request to perform a ternary lookup for an input data item. A ternary lookup into the ternary sub-table key table stored in TCAM is performed to retrieve a sub-table index. The method performs a ternary lookup across the entries of the sub-table associated with the retrieved index to identify the highest priority matched entry for the input data item.Type: GrantFiled: April 8, 2016Date of Patent: June 11, 2019Assignee: BAREFOOT NETWORKS, INC.Inventors: Patrick Bosshart, Michael G. Ferrara, Jay E. S. Peterson
-
Patent number: 10313231Abstract: A method of identifying a path for forwarding a packet by a packet forwarding element. The method receives a packet that includes a plurality of fields that identify a particular packet flow. The method computes a plurality of hash values from the plurality of fields that identify the particular packet flow. Each hash value computed using a different hash algorithm. Based on the plurality of hash values, the method identifies a plurality of paths configured to forward the packets of the particular flow. The method identifies the status of each of the plurality of paths. Each path status identifies whether or not the corresponding path is operational. The method selects an operational path in the plurality of paths to forward the packet based on a priority scheme using said plurality of identified status bits.Type: GrantFiled: April 8, 2016Date of Patent: June 4, 2019Assignee: BAREFOOT NETWORKS, INC.Inventor: Patrick Bosshart
-
Patent number: 10313495Abstract: 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.Type: GrantFiled: August 21, 2017Date of Patent: June 4, 2019Assignee: BAREFOOT NETWORKS, INC.Inventors: Patrick Bosshart, Michael Gregory Ferrara, Michael E. Attig, Jay Evan Scott Peterson
-
Patent number: 10303387Abstract: Some embodiments provide a method for configuring unit memories to implement first and second sets of entries, the second set of which references the first set. The method configures a first pool of unit memories to implement the first set. Each entry in the first set is located at a particular location in at least one of the memories of the first pool. The method configures a second pool of unit memories to implement the second set. Each entry in the second set includes a particular number of bits for indicating (i) an initial first-pool unit memory at which the first-set entry referenced by the second-set entry is found and (ii) a number of subsequent first-pool memories across which the first-set entry is divided. A number of bits required to identify a single first-pool memory is one fewer than the particular number of bits.Type: GrantFiled: February 15, 2018Date of Patent: May 28, 2019Assignee: BAREFOOT NETWORKS, INC.Inventor: Patrick Bosshart
-
Patent number: 10305820Abstract: Some embodiments of the invention provide a forwarding element that has one or more data plane, message-processing pipelines with key-value processing circuits. The forwarding element's data plane key-value circuits allow the forwarding element to perform key-value services that would otherwise have to be performed by data compute nodes connected by the network fabric that includes the forwarding element. In some embodiments, the key-value (KV) services of the forwarding element and other similar forwarding elements supplement the key-value services of a distributed set of key-value servers by caching a subset of the most commonly used key-value pairs in the forwarding elements that connect the set of key-value servers with their client applications.Type: GrantFiled: October 11, 2017Date of Patent: May 28, 2019Assignee: BAREFOOT NETWORKS, INC.Inventors: Xiaozhou Li, Jeongkeun Lee, Changhoon Kim, John Nathan Foster
-
Patent number: 10298456Abstract: Some embodiments of the invention provide a network forwarding element that can be dynamically reconfigured to adjust its data message processing to stay within a desired operating temperature or power consumption range. In some embodiments, the network forwarding element includes (1) a data-plane forwarding circuit (“data plane”) to process data tuples associated with data messages received by the IC, and (2) a control-plane circuit (“control plane”) for configuring the data plane forwarding circuit. The data plane includes several data processing stages to process the data tuples. The data plane also includes an idle-signal injecting circuit that receives from the control plane configuration data that the control plane generates based on the IC's temperature. Based on the received configuration data, the idle-signal injecting circuit generates idle control signals for the data processing stages.Type: GrantFiled: August 22, 2017Date of Patent: May 21, 2019Assignee: BAREFOOT NETWORKS, INC.Inventor: Remy Chang
-
Patent number: 10268634Abstract: Some embodiments of the invention provide novel methods for storing data in a hash-addressed memory and retrieving stored data from the hash-addressed memory. In some embodiments, the method receives a search key and a data tuple. The method then uses a first hash function to generate a first hash value from the search key, and then uses this first hash value to identify an address in the hash-addressed memory. The method also uses a second hash function to generate a second hash value, and then stores this second hash value along with the data tuple in the memory at the address specified by the first hash value. To retrieve data from the hash-addressed memory, the method of some embodiments receives a search key. The method then uses the first hash function to generate a first hash value from the search key, and then uses this first hash value to identify an address in the hash-addressed memory. At the identified address, the hash-addressed memory stores a second hash value and a data tuple.Type: GrantFiled: November 30, 2016Date of Patent: April 23, 2019Assignee: BAREFOOT NETWORKS, INC.Inventors: Patrick Bosshart, Changhoon Kim
-
Patent number: 10257122Abstract: Some embodiments of the invention provide a forwarding element (e.g., a switch, a router, etc.) that has one or more data plane, message-processing pipelines with key-value processing circuits. The forwarding element's data plane key-value circuits allow the forwarding element to perform key-value services that would otherwise have to be performed by data compute nodes connected by the network fabric that includes the forwarding element. In some embodiments, the key-value (KV) services of the forwarding element and other similar forwarding elements supplement the key-value services of a distributed set of key-value servers by caching a subset of the most commonly used key-value pairs in the forwarding elements that connect the set of key-value servers with their client applications.Type: GrantFiled: October 11, 2017Date of Patent: April 9, 2019Assignee: BAREFOOT NETWORKS, INC.Inventors: Xiaozhou Li, Jeongkeun Lee, Changhoon Kim, John Nathan Foster
-
Patent number: 10237206Abstract: A method of forwarding a multicast packet by a physical forwarding element is provided. The method receives a multicast packet that identifies a multicast group. The method scans a multicast tree associated with the multicast group to identify an ECMP group for forwarding the multicast packet to a member of the multicast group. The method calculates a group of hash values on several fields of the packet and uses a first hash value in the group of hash values to identify a first path in the ECMP. The method determines that the identified path has failed. The method uses a second hash value to identify a second path in the ECMP. The method forwards the multicast packet to the multicast member through the second path.Type: GrantFiled: March 5, 2017Date of Patent: March 19, 2019Assignee: BAREFOOT NETWORKS, INC.Inventors: Anurag Agrawal, Julianne Zhu
-
Patent number: 10230810Abstract: Some embodiments provide a method for a hardware forwarding element. Based on a set of characteristics of a packet, the method determines to copy a packet to a particular temporary storage of a set of temporary storages of the hardware forwarding element. Based on a property of the particular temporary storage, the method stores only a particular portion of the packet in the particular temporary storage. A same size portion of each packet copied to the particular temporary storage is stored in the particular temporary storage.Type: GrantFiled: May 22, 2016Date of Patent: March 12, 2019Assignee: BAREFOOT NETWORKS, INC.Inventors: Parag D. Bhide, Alain Loge, Chaitanya Kodeboyina, Anurag Agrawal
-
Patent number: 10225381Abstract: A method for generating configuration data for configuring a hardware switch is described. The method receives a description of functionality for the hardware switch. Based on the description, the method generates sets of match and action entries to configure the hardware switch to process packets. The method then determines, for each packet header field in a parse graph that specifies instructions for a parser of the switch to extract packet header fields from packets, whether the packet header field is used or modified by at least one match or action entry. The method generates for the parser of the hardware switch configuration data that instructs the parser to extract (i) packet header fields used or modified by at least one match or action entry to a first set of registers and (ii) packet header fields not used by any match or action entries to a second set of registers.Type: GrantFiled: October 10, 2017Date of Patent: March 5, 2019Assignee: BAREFOOT NETWORKS, INC.Inventor: Patrick Bosshart