US2021399998A1PendingUtilityA1

Augmenting data plane functionality with field programmable integrated circuits

Assignee: BAREFOOT NETWORKS INCPriority: May 13, 2019Filed: Sep 3, 2021Published: Dec 23, 2021
Est. expiryMay 13, 2039(~12.8 yrs left)· nominal 20-yr term from priority
H04L 49/90H04L 49/40H04L 49/106H04L 47/50H04L 43/50H04L 2212/00H04L 49/9057H04L 49/3063H04L 45/745H04L 45/38H03K 19/173G06F 13/42G06F 13/1668H04L 49/901
68
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

Some embodiments use one or more FPGAs and external memories associated with the FPGAs to implement large, hash-addressable tables for a data plane circuit. These embodiments configure at least one message processing stage of the DP circuit to store (1) a first plurality of records for matching with a set of data messages received by the DP circuit, and (2) a redirection record redirecting data messages that do not match the first plurality of records to a DP egress port associated with the memory circuit. These embodiments configure an external memory circuit to store a larger, second set of records for matching with redirected data messages received through the DP egress port associated with the memory circuit. This external memory circuit is a hash-addressable memory in some embodiments. To determine whether a redirected data message matches a record in the second set of record, the method of some embodiments configures an FPGA associated with the hash-addressable external memory to use a collision free hash process to generate a collision-free, hash address value from a set of attributes of the data message. This hash address value specifies an address in the external memory for the record in the second set of records to compare with the redirected data message.

Claims

exact text as granted — not AI-modified
1 . An apparatus comprising:
 a switch comprising:
 multiple stage packet processing pipeline and 
 a field programmable gate array (FPGA) to perform hash table lookup, wherein different stages of the multiple stage packet processing pipeline are to access the FPGA perform table lookup. 
   
     
     
         2 . The apparatus of  claim 1 , wherein the switch comprises:
 a plurality of message processing pipelines, a memory circuit, a plurality of ingress ports, and a plurality of egress ports, at least one egress port associated with the memory circuit;   at least one message processing stage configured with (i) a first plurality of records for matching with a set of data messages received by a DP circuit, and (ii) a redirection record redirecting data messages that do not match the first plurality of records to the DP egress port associated with the memory circuit;   the memory circuit comprising a set of hash-addressable storages to store a second plurality of records to match with data messages redirected to the external memory through the DP egress port; and   a collision free hash generator to generate, from attributes of the redirected data messages, collision-free, hash-value addresses that identify, in a hash collision free manner, locations in the hash-addressable storage set of records from the second plurality of records to compare with the redirected data messages and wherein:   the set of hash-addressable storages comprises a first set of storages and a second set of storages;   the collision free hash generator is a perfect hash generator that generates, for a data message, at most two hash values, a first hash value and a second hash value;   the first hash value identifying in the first storage set a location storing a first set of values to compare to the data message's set of attributes or reference to a second storage set;   when the first set of values does not match the data message's set of attributes, the second hash value identifying in the second storage set a location storing a second set of values to compare to the data message's set of attributes.   
     
     
         3 . The apparatus of  claim 2 , wherein
 the perfect hash generator comprises first and second hash generators to generate the first and second hash values;   the first hash generator generating a same first hash value for first and second set of values stored in the first and second storage sets; and   the first set of values stored in the first storage set at the location identified by the first hash value, while the second set of values stored in the second storage set at the location identified by the second hash value.   
     
     
         4 . The apparatus of  claim 3 , wherein
 the second set of storages comprising a plurality of secondary storage sets;   the perfect hash generator comprises first hash generator and a plurality of secondary hash generators each corresponding to one of the plurality of secondary storage sets;   the first hash generator producing hash address values for the first storage set that are not collision free;   the plurality of secondary hash generator producing collision free hash address values for the secondary storage sets.   
     
     
         5 . The apparatus of  claim 4 , wherein no two set of values are stored in a particular secondary hash generator when the secondary hash generator for the particular secondary hash generator would produce a same hash address value for the two sets of values. 
     
     
         6 . The apparatus of  claim 1  further comprising a field programmable circuit that comprises the collision free hash generator. 
     
     
         7 . The apparatus of  claim 6 , wherein the field programmable circuit comprises a field programmable gate array (FPGA) that is on a different integrated circuit (IC) die than the data plane circuit and the memory circuit. 
     
     
         8 . The apparatus of  claim 6 , wherein the field programmable circuit comprises a field programmable gate array (FPGA) that is on a same integrated circuit (IC) die as the memory circuit but a different IC die than the data plane circuit. 
     
     
         9 . The apparatus of  claim 6 , wherein the field programmable circuit comprises a field programmable gate array (FPGA) that is on a different integrated circuit (IC) chip than the data plane circuit and the memory circuit. 
     
     
         10 . The apparatus of  claim 6 , wherein the field programmable circuit comprises a field programmable gate array (FPGA) that is in a same integrated circuit (IC) chip as the memory circuit but a different chip than the data plane circuit. 
     
     
         11 . A forwarding element for forwarding data messages within a network, the forwarding element comprising: 
     
     
         12 . The forwarding element of  claim 11 , wherein the circuitry comprises:
 a data plane (DP) circuit for forwarding data messages within a network, the DP circuit comprising:
 a plurality of message processing pipelines, a memory circuit, a plurality of ingress ports, and a plurality of egress ports, at least one egress port associated with the memory circuit; 
 at least one message processing stage configured with (i) a first plurality of records for matching with a set of data messages received by the DP circuit, and (ii) a redirection record redirecting data messages that do not match the first plurality of records to the DP egress port associated with the memory circuit; 
 the memory circuit comprising a set of hash-addressable storages to store a second plurality of records to match with data messages redirected to the external memory through the DP egress port; and 
   a collision free hash generator to generate, from attributes of the redirected data messages, collision-free, hash-value addresses that identify, in a hash collision free manner, locations in the hash-addressable storage set of records from the second plurality of records to compare with the redirected data messages and wherein:   the set of hash-addressable storages comprises a first set of storages and a second set of storages;   the collision free hash generator is a perfect hash generator that generates, for a data message, at most two hash values, a first hash value and a second hash value;   the first hash value identifying in the first storage set a location storing a first set of values to compare to the data message's set of attributes or reference to a second storage set;   when the first set of values does not match the data message's set of attributes, the second hash value identifying in the second storage set a location storing a second set of values to compare to the data message's set of attributes.   
     
     
         13 . The forwarding element of  claim 12 , wherein
 the perfect hash generator comprises first and second hash generators to generate the first and second hash values;   the first hash generator generating a same first hash value for first and second set of values stored in the first and second storage sets; and   the first set of values stored in the first storage set at the location identified by the first hash value, while the second set of values stored in the second storage set at the location identified by the second hash value.   
     
     
         14 . The forwarding element of  claim 13 , wherein
 the second set of storages comprising a plurality of secondary storage sets;   the perfect hash generator comprises first hash generator and a plurality of secondary hash generators each corresponding to one of the plurality of secondary storage sets;   the first hash generator producing hash address values for the first storage set that are not collision free;   the plurality of secondary hash generator producing collision free hash address values for the secondary storage sets.   
     
     
         15 . The forwarding element of  claim 14 , wherein no two set of values are stored in a particular secondary hash generator when the secondary hash generator for the particular secondary hash generator would produce a same hash address value for the two sets of values. 
     
     
         16 . The forwarding element of  claim 11  further comprising a field programmable circuit that comprises the collision free hash generator. 
     
     
         17 . The forwarding element of  claim 16 , wherein the field programmable circuit comprises a field programmable gate array (FPGA) that is on a different integrated circuit (IC) die than the data plane circuit and the memory circuit. 
     
     
         18 . The forwarding element of  claim 16 , wherein the field programmable circuit comprises a field programmable gate array (FPGA) that is on a same integrated circuit (IC) die as the memory circuit but a different IC die than the data plane circuit. 
     
     
         19 . The forwarding element of  claim 16 , wherein the field programmable circuit comprises a field programmable gate array (FPGA) that is on a different integrated circuit (IC) chip than the data plane circuit and the memory circuit. 
     
     
         20 . The forwarding element of  claim 16 , wherein the field programmable circuit comprises a field programmable gate array (FPGA) that is in a same integrated circuit (IC) chip as the memory circuit but a different chip than the data plane circuit.

Join the waitlist — get patent alerts

Track US2021399998A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.