Patents by Inventor Patrick Bosshart

Patrick Bosshart has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Publication number: 20180239551
    Abstract: 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: Application
    Filed: February 15, 2018
    Publication date: August 23, 2018
    Inventor: Patrick Bosshart
  • Publication number: 20180234355
    Abstract: A synchronous packet-processing pipeline whose data paths are populated with data-plane stateful processing units (DSPUs) is provided. A DSPU is a programmable processor whose operations are synchronous with the dataflow of the packet-processing pipeline. A DSPU performs every computation with fixed latency. Each DSPU is capable of maintaining a set of states and perform its computations based on its maintained set of states. The programming of a DSPU determines how and when the DSPU updates one of its maintained states. Such programming may configure the DSPU to update the state based on its received packet data, or to change the state regardless of the received packet data.
    Type: Application
    Filed: February 4, 2018
    Publication date: August 16, 2018
    Inventors: Changhoon Kim, Patrick Bosshart, Jay Evan Scott Peterson, Michael Gregory Ferrara, Steven Licking, Chaitanya Kodeboyina
  • Publication number: 20180173448
    Abstract: 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 memories to implement the first set. Each first-set entry is located at a particular location in at least one of the first-pool memories. The method configures a second pool of memories to implement the second set of entries. Each second-set entry includes (i) a first set of bits for indicating a memory page that corresponds to one or more first-pool memories, (ii) a second set of bits for specifying a location in each of the one or more memories from which to retrieve data for the referenced first-set entry, and (iii) a third set of bits for specifying a sub-location within the retrieved data. The number of bits in the third set of bits is fixed for the second-set entries while a number of sub-locations varies for different locations specified by the second set of bits of different second-set entries.
    Type: Application
    Filed: February 15, 2018
    Publication date: June 21, 2018
    Inventor: Patrick Bosshart
  • Patent number: 9940056
    Abstract: 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 memories to implement the first set. Each first-set entry is located at a particular location in at least one of the first-pool memories. The method configures a second pool of memories to implement the second set of entries. Each second-set entry includes (i) a first set of bits for indicating a memory page that corresponds to one or more first-pool memories, (ii) a second set of bits for specifying a location in each of the one or more memories from which to retrieve data for the referenced first-set entry, and (iii) a third set of bits for specifying a sub-location within the retrieved data. The number of bits in the third set of bits is fixed for the second-set entries while a number of sub-locations varies for different locations specified by the second set of bits of different second-set entries.
    Type: Grant
    Filed: December 14, 2015
    Date of Patent: April 10, 2018
    Assignee: BAREFOOT NETWORKS, INC.
    Inventor: Patrick Bosshart
  • Patent number: 9912610
    Abstract: A synchronous packet-processing pipeline whose data paths are populated with data-plane stateful processing units (DSPUs) is provided. A DSPU is a programmable processor whose operations are synchronous with the dataflow of the packet-processing pipeline. A DSPU performs every computation with fixed latency. Each DSPU is capable of maintaining a set of states and perform its computations based on its maintained set of states. The programming of a DSPU determines how and when the DSPU updates one of its maintained states. Such programming may configure the DSPU to update the state based on its received packet data, or to change the state regardless of the received packet data.
    Type: Grant
    Filed: September 24, 2015
    Date of Patent: March 6, 2018
    Assignee: BAREFOOT NETWORKS, INC.
    Inventors: Patrick Bosshart, Jay Evan Scott Peterson, Michael Gregory Ferrara, Changhoon Kim, Steven Licking, Chaitanya Kodeboyina
  • Patent number: 9910615
    Abstract: 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: Grant
    Filed: December 14, 2015
    Date of Patent: March 6, 2018
    Assignee: BAREFOOT NETWORKS, INC.
    Inventor: Patrick Bosshart
  • Patent number: 9880768
    Abstract: 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: Grant
    Filed: January 27, 2016
    Date of Patent: January 30, 2018
    Assignee: BAREFOOT NETWORKS, INC.
    Inventor: Patrick Bosshart
  • Patent number: 9826071
    Abstract: 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: Grant
    Filed: August 26, 2015
    Date of Patent: November 21, 2017
    Assignee: BAREFOOT NETWORKS, INC.
    Inventor: Patrick Bosshart
  • Patent number: 9825862
    Abstract: 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: Grant
    Filed: August 26, 2015
    Date of Patent: November 21, 2017
    Assignee: BAREFOOT NETWORKS, INC.
    Inventor: Patrick Bosshart
  • Patent number: 9646105
    Abstract: Hashing complexity is reduced by exploiting a hashing matrix structure that permits a corresponding hashing function to be implemented such that an output vector of bits is produced in response to an input vector of bits without combining every bit in the input vector with every bit in any row of the hashing matrix.
    Type: Grant
    Filed: June 20, 2013
    Date of Patent: May 9, 2017
    Assignee: TEXAS INSTRUMENTS INCORPORATED
    Inventors: Hun-Seok Kim, Patrick Bosshart
  • Publication number: 20170093986
    Abstract: A synchronous packet-processing pipeline whose data paths are populated with data-plane stateful processing units (DSPUs) is provided. A DSPU is a programmable processor whose operations are synchronous with the dataflow of the packet-processing pipeline. A DSPU performs every computation with fixed latency. Each DSPU is capable of maintaining a set of states and perform its computations based on its maintained set of states. The programming of a DSPU determines how and when the DSPU updates one of its maintained states. Such programming may configure the DSPU to update the state based on its received packet data, or to change the state regardless of the received packet data.
    Type: Application
    Filed: September 24, 2015
    Publication date: March 30, 2017
    Inventors: Changhoon Kim, Patrick Bosshart, Jay Evan Scott Peterson, Michael Gregory Ferrara, Steven Licking, Chaitanya Kodeboyina
  • Publication number: 20170064047
    Abstract: 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: Application
    Filed: August 26, 2015
    Publication date: March 2, 2017
    Inventor: Patrick Bosshart
  • Publication number: 20170063690
    Abstract: 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: Application
    Filed: August 26, 2015
    Publication date: March 2, 2017
    Inventor: Patrick Bosshart
  • Patent number: 9529531
    Abstract: 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: Grant
    Filed: October 6, 2014
    Date of Patent: December 27, 2016
    Assignee: BAREFOOT NETWORKS, INC.
    Inventors: Patrick Bosshart, Changhoon Kim
  • Publication number: 20160246532
    Abstract: Some embodiments provide a method that configures a first pool of unit memories to implement several match entries, each including a set of match conditions. Each memory in the first pool includes at least one set of match entries. The method configures a second pool of unit memories to implement several action entries each located at a location in a memory. Each unit memory in the second pool has a different memory page address. The method assigns each set of match entries a virtual memory page address that corresponds to a different memory in the second pool. When the set of match conditions are met for a particular match entry at a particular location in a particular virtual memory page address, a particular action entry is read, having a same location in a memory with a same virtual memory page address in the second pool.
    Type: Application
    Filed: December 14, 2015
    Publication date: August 25, 2016
    Inventor: Patrick Bosshart
  • Publication number: 20160246535
    Abstract: 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: Application
    Filed: December 14, 2015
    Publication date: August 25, 2016
    Inventor: Patrick Bosshart
  • Publication number: 20160246507
    Abstract: 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 memories to implement the first set. Each first-set entry is located at a particular location in at least one of the first-pool memories. The method configures a second pool of memories to implement the second set of entries. Each second-set entry includes (i) a first set of bits for indicating a memory page that corresponds to one or more first-pool memories, (ii) a second set of bits for specifying a location in each of the one or more memories from which to retrieve data for the referenced first-set entry, and (iii) a third set of bits for specifying a sub-location within the retrieved data. The number of bits in the third set of bits is fixed for the second-set entries while a number of sub-locations varies for different locations specified by the second set of bits of different second-set entries.
    Type: Application
    Filed: December 14, 2015
    Publication date: August 25, 2016
    Inventor: Patrick Bosshart
  • Publication number: 20160246541
    Abstract: 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: Application
    Filed: December 14, 2015
    Publication date: August 25, 2016
    Inventor: Patrick Bosshart
  • Publication number: 20160216913
    Abstract: 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: Application
    Filed: January 27, 2016
    Publication date: July 28, 2016
    Inventor: PATRICK BOSSHART
  • Publication number: 20160099872
    Abstract: Some embodiments of the invention provide a load balancer for distributing packet flows that are addressed to a group of data compute nodes (DCNs) amongst the DCNs of the group. In some embodiments, the load balancer includes a connection data storage comprising several different destination network address translation (DNAT) tables. Each particular DNAT table is defined at a particular instance in time and stores the identity of a plurality DCNs that are part of the group at the particular instance in time. Each time a DCN is added to the group, the load balancer of some embodiments creates a new DNAT table in the connection data storage for processing new packet flows, while using previously created DNAT tables to process packets that are part of previously processed packet flows.
    Type: Application
    Filed: October 6, 2014
    Publication date: April 7, 2016
    Inventors: Changhoon Kim, Patrick Bosshart