IP Library Granted Patent US 11,182,365
Granted Patent B2
US 11,182,365 · App. 15/075,936 · Granted Nov 23, 2021

Systems and methods for distributed storage of data across multiple hash tables

Inventors: Aviv Kfir (Nili, IL); Benny Koren (Zichron Yaakov, IL); Gil Levy (Hod Hasharon, IL); Barak Gafni (Kfar Malal, IL)
Assignee: Mellanox Technologies TLV Ltd.
G06F16/2255H04L9/0643H04L9/0894
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 11,182,365
App. No.
15/075,936
Granted
Nov 23, 2021
Kind
B2
Abstract

Systems and methods are described that provide for distributively storing and accessing data across multiple hash tables, such that utilization of the hash tables is optimized. In particular, a key associated with a value is split into two or more sub-keys and the sub-keys are inserted into respective hash tables with associated values. For each sub-key except the final sub-key derived from a particular key, the value paired with the sub-key is an identifier that points to the location of the next sub-key and its associated value, which may be stored in the other hash tables. The final sub-key derived from the original key is paired with the value associated with the key, such as an action to be performed. Thus, rather than using a single key (which may be very large) to access or store a particular value, multiple (smaller) sub-keys are used to ultimately access the same value via multiple, smaller hash tables.

Claims (43)

1. A method of searching hash tables, comprising:

receiving a key, wherein, in response to a determination that a first width of the key is larger than a maximum width of a position of a first hash table, the key is split into at least a first sub-key and a second sub-key based on the first width and a second width of an action value associated with the key, wherein a third width of the second sub-key as a result of the split of the key corresponds to an average value of a difference between the first width and the second width, wherein the key is distributively stored using the first hash table and a second hash table, and wherein the action value is different than the key;

accessing the first hash table based on application of a first hash function to the first sub-key to locate the first sub-key in the first hash table;

in response to locating the first sub-key in the first hash table, returning an identifier stored in the first hash table associated with the first sub-key, wherein the identifier is a portion of an entry stored in the first hash table, wherein the entry comprises the first sub-key and the identifier, and concatenating the identifier stored in the first hash table with the second sub-key to create a concatenated second sub-key;

accessing the second hash table based on an application of a second hash function to the concatenated second sub-key to locate the concatenated second sub-key in the second hash table; and

in response to locating the concatenated second sub-key in the second hash table, obtaining the action value associated with the concatenated second sub-key.

2. The method of claim 1 , wherein the entry is a first entry, wherein the second hash table comprises a second entry, wherein the second entry comprises the concatenated second sub-key and the action value.

3. The method of claim 1 , wherein the first hash table is a cuckoo hash table.

4. The method of claim 1 , wherein the key comprises one of an Internet Protocol (IP) address, a media access control (MAC) address, a Multiprotocol Label Switching (MPLS) label, a tunnel, a social Identifier (ID), or a name.

5. The method of claim 1 , wherein a fourth width of the first sub-key corresponds to a difference between the first width and the third width.

6. A method of inserting a value into a hash table, the method comprising:

in response to determining that a first width of a key is larger than a maximum width of a position of a first hash table, splitting the key into at least a first sub-key and a second sub-key based on the first width and a second width of an action value associated with the key, wherein a third width of the second sub-key as a result of the split of the key corresponds to an average value of a difference between the first width and the second width, wherein the key is to be distributively stored using the first hash table and a second hash table, and wherein the action value is different than the key;

accessing the first hash table based on an application of a first hash function to the first sub-key;

in response to accessing the first hash table, identifying a first open position of the first hash table and inserting the first sub-key into the first open position of the first hash table;

generating an identifier to be associated with the first sub-key and inserting the identifier to be associated with the first sub-key into the first open position of the first hash table and associating the identifier with the first sub-key and inserting the identifier with the first sub-key into the first open position of the first hash table, wherein the identifier is a portion of an entry stored in the first hash table, wherein the entry comprises the first sub-key and the identifier;

concatenating the identifier stored in the first hash table with the second sub-key to create a concatenated second sub-key;

accessing the second hash table based on application of a second hash function to the concatenated second sub-key; and

in response to accessing the second hash table, identifying a second open position of the second hash table, inserting the concatenated second sub-key and the action value into the second open position of the second hash table.

7. The method of claim 6 , wherein the action value corresponds to an action to be performed.

8. The method of claim 6 further comprising, in response to identifying no first open position in the first hash table:

removing an entry from a populated position of the first hash table to create a third open position;

inserting the first sub-key into the third open position of the first hash table;

inserting the identifier into the third open position of the first hash table;

applying a different hash function to the removed entry;

accessing a different hash table in response to applying the different hash function to the removed entry; and

in response to accessing the different hash table, identifying an open position of the different hash table, inserting the removed entry into the open position of the different hash table.

9. The method of claim 6 further comprising, in response to identifying no second open position in the second hash table:

removing an entry from a populated position of the second hash table to create a fourth open position;

inserting the concatenated second sub-key into the fourth open position of the second hash table;

inserting the action value into the fourth open position of the second hash table;

applying a different hash function to the removed entry;

accessing a different hash table in response to applying the different hash function to the removed entry; and

in response to accessing the different hash table, identifying an open position of the different hash table, inserting the removed entry into the open position of the different hash table.

10. The method of claim 6 , wherein the key comprises one of an Internet Protocol (IP) address, a media access control (MAC) address, a Multiprotocol Label Switching (MPLS) label, a tunnel, a social Identifier (ID), or a name.

11. The method of claim 6 , wherein a fourth width of the first sub-key corresponds to a difference between the first width and the third width.

12. An apparatus comprising:

at least one physical processor configured to split a key into at least a first sub-key and a second sub-key, based on a first width of the key and a second width of an action value associated with the key, and in response to a determination that the first width of the key is larger than a maximum width of a position of the first hash table from an array of hash tables, wherein a third width of the second sub-key as a result of the split of the key corresponds to an average value of a difference between the first width and the second width, and wherein the action value is different than the key; and

at least one physical memory, wherein the at least one physical memory stores the array of hash tables, wherein the array of hash tables comprises at least the first hash table and a second hash table,

wherein the first hash table is associated with a first hash function, wherein the first hash function is configured to store the first sub-key and an identifier associated with the first sub-key, wherein the first sub-key is a first portion of an entry of the first hash table,

wherein the identifier is a second portion of the entry in the first hash table, wherein the second hash table is associated with a second hash function, and wherein the second hash table is configured to store the action value associated with the key and the second sub-key concatenated with the identifier.

13. The apparatus of claim 12 , wherein a first available width of an entry of the first hash table and a second available width of an entry of the second hash table are selected such that a fourth width of the first sub-key plus a fifth width of the identifier is equal to a sixth width of the concatenated second sub-key plus the second width of the action value.

14. The apparatus of claim 12 , wherein the array of hash tables are cuckoo hash tables.

15. The apparatus of claim 12 , wherein the key comprises one of an Internet Protocol (IP) address, a media access control (MAC) address, a Multiprotocol Label Switching (MPLS) label, a tunnel, a social Identifier (ID), or a name.

Assignments (4)
MERGER Recorded Jan 14, 2022
From: MELLANOX TECHNOLOGIES TLV LTD.
To: MELLANOX TECHNOLOGIES, LTD.
Reel/Frame 058662/0289 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 42962/0859 Recorded Jul 13, 2018
From: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
To: MELLANOX TECHNOLOGIES, LTD.; MELLANOX TECHNOLOGIES TLV LTD.; MELLANOX TECHNOLOGIES SILICON PHOTONICS INC.
Reel/Frame 046551/0459 →
SECURITY INTEREST Recorded Jun 23, 2017
From: MELLANOX TECHNOLOGIES, LTD.; MELLANOX TECHNOLOGIES TLV LTD.; MELLANOX TECHNOLOGIES SILICON PHOTONICS INC.
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 042962/0859 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 21, 2016
From: KFIR, AVIV; KOREN, BENNY; LEVY, GIL; GAFNI, BARAK
To: MELLANOX TECHNOLOGIES TLV LTD.
Reel/Frame 038053/0194 →