WO2016093809A1 - Sections de support de stockage comprenant des cellules alternatives - Google Patents

Sections de support de stockage comprenant des cellules alternatives Download PDF

Info

Publication number
WO2016093809A1
WO2016093809A1 PCT/US2014/069386 US2014069386W WO2016093809A1 WO 2016093809 A1 WO2016093809 A1 WO 2016093809A1 US 2014069386 W US2014069386 W US 2014069386W WO 2016093809 A1 WO2016093809 A1 WO 2016093809A1
Authority
WO
WIPO (PCT)
Prior art keywords
storage media
cell
lookup
key
cells
Prior art date
Application number
PCT/US2014/069386
Other languages
English (en)
Inventor
Michael Schlansker
Jean Tourrilhes
Jose Renato Santos
Original Assignee
Hewlett Packard Enterprise Development Lp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Enterprise Development Lp filed Critical Hewlett Packard Enterprise Development Lp
Priority to PCT/US2014/069386 priority Critical patent/WO2016093809A1/fr
Publication of WO2016093809A1 publication Critical patent/WO2016093809A1/fr

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/64Hybrid switching systems
    • H04L12/6418Hybrid transport

Definitions

  • Computers can communicate across a network using protocols to obtain services. Computers commonly request and/or retrieve information to know where to send communications. For example, In a software-defined networking (“SDN”) architecture, flow tables are propagated across machines to describe the flow of traffic across the network. The information is commonfy stored on the machines of the network for quick retrieval to route the network traffic as fast as possible.
  • SDN software-defined networking
  • Figures 1-3 are block diagrams depicting example systems for maintaining table lookup.
  • Figures 4-7 are flow diagrams depicting example methods for maintaining table lookup.
  • SDN- compatible networks can abstract the hardware of the system from the services being provided.
  • an SDN network can decouple the traffic control decisions from the physical systems that forward network traffic.
  • An SDN network may allow the service to be provided without regard to the underlying physical hardware.
  • a first network device may become unresponsive or slow to respond from becoming overprovisioned and the SDN network may initiate the service to follow a different traffic flow through a second network device.
  • the network device or a port of the network device may be malfunctioning and traffic may be rerouted.
  • the customer may not notice a change in service because the SDN controller may make the network routing decisions autonomously.
  • SDN networks are abie to accomplish dynamic routing by maintaining flow tables, such as by propagating forwarding instructions to each device of the network.
  • a How table is a table of entries to forward traffic, such as forwarding a network packet from one device of the network to another.
  • the entries create "flows" of information through the network based on the table entries.
  • a flow represents the communication of information via a path of the network.
  • Communications such as transmissions related to a service offered by a device of the network, can follow a flow provided by the network based on a flow table.
  • SDN-compatible networks may provide a service or multiple services to devices or other networks.
  • a service is any appropriate supplying of communication, transmissions, software, or any other product, resource, or activity that may be capable of executing on a network of electronic devices.
  • An entry of a flow table is a representation of the instructions in memory to manage a communication of the network.
  • Each entry can include a match field to match against network packets, a counter to update for matching packets, and an instruction, such as an instruction to modify the action set or pipeline processing.
  • SDN networks can be successful when the environment allows for quick look up of forwarding rules to determine where to send packets.
  • the underlying physical hardware can affect the quality of service provided over the network. For example, insufficient table size or slow retrieval of stored forwarding information can create a delay in identifying the appropriate forwarding information, in network switches and other devices, table lookups of internal memory to retrieve forwarding information can be more common than table insertions to update the local flow table.
  • hardware performs lookups in a table via sequentially hashing multiple times into a single storage medium, such as random access memory ("RAM") until a matching entry is found.
  • RAM random access memory
  • the sequential use of a single RAM containing a lookup table can be relatively slow in comparison to the rate of network traffic traveling across the network and many hash lookup trials may be required before a hash table entry is found.
  • the time needed to lookup an entry can vary according to the number of trials needed to find the entry.
  • Various examples described vide relate to designating a plurality of storage media sections to a lookup table where the plurality of storage media sections are electrically connected to look up in the plurality of storage media sections in parallel (i.e., concurrently) and maintaining the plurality of storage media sections of a device using a controller with a maintenance technique that utilizes the alternative relationship that a lookup key defines among cells of the plurality of storage media.
  • a hardware pipeline that performs hash lookups at hardware speeds can be combined with the benefits of complex insertion processing performed in a programmed processor resource, such as a controller.
  • Figures 1 and 2 are block diagrams depicting example systems 100 and 200 for maintaining table lookup.
  • the example system 100 of figure 1 generally includes a controller 108 coupled to a plurality of storage medium sections, which in the example of figure 1 comprises a first storage section 104 and a second storage section 106.
  • the controller 108 can comprise circuitry and/or a combination of circuitry and executable instructions (such as an insert engine 110 and a lookup engine 112) to maintain the plurality of storage medium sections.
  • the controller 108 can comprise a data store 102 to track how flow entries of a flow table are mapped and stored into the first storage section 104 and the second storage section 106,
  • the plurality of storage media sections comprises a lookup table for flow entiles where each of the plurality of storage media sections comprise a subtabie of the lookup table.
  • the plurality of storage media sections is shown to include a first storage section 104 and a second storage section 106 as an example, but other numbers of storage media sections are contemplated in the discussion herein.
  • Each subtable can have an address assigned to a cell having a combination of a key field value and an output field value.
  • the plurality of storage media sections can be associated with a plurality of physically-separated storage media or a muitiport storage medium.
  • the plurality of physically-separated storage media can be operatively coupled to the controller to allow the controller to maintain a first section of storage media designated to first physical storage media and a second section of storage media designated to a second physical media.
  • the plurality of ports of a muitiport storage media can be operatively coupled to the controller to allow the controller to maintain a first section of a storage media designated to a first port of the muitiport storage media and the second section of storage media designated to a second port of the muitiport storage media, in either example, circuitry allowing parallel lookup into multiple storage sections can reduce the number of lookup trials by looking into multiple table entries at once.
  • the controller 108 can respond to insertion requests (i.e., requests to insert data into a lookup table) and lookup requests (i.e., requests to retrieve data from the lookup table), in response to a lookup request (also discussed as a retrieval request herein), the controller can utilize circuitry to allow parallel lookup into each of the plurality of storage media sections based on a plurality of indices resulting from application of a distinct hash function, for each section, to the lookup key (e.g., an index per storage media section is derived from multiple hashes of an lookup key provided in the retrieval request).
  • insertion requests i.e., requests to insert data into a lookup table
  • lookup requests i.e., requests to retrieve data from the lookup table
  • a lookup request also discussed as a retrieval request herein
  • the controller can utilize circuitry to allow parallel lookup into each of the plurality of storage media sections based on a plurality of indices resulting from application of a distinct hash
  • a “hash” refers to the result (or action) of determining an address in storage media from a lookup key. For example, an index to an address in a storage medium can be identified from a computational relationship represented as a function performed with the lookup key as input
  • the controller 108 can select a first level of cells (e.g., a plurality of cells, one in each section, Identified based on a set of hash computations) and determine whether any cell within the first level of cells has a vacancy for data input, if any first level cell is available (i.e., vacant) then the insertion key and the insertion data can be placed in the vacant first-level cell.
  • a cell represents a location in a storage medium to pface date.
  • a cell can be represented by a memory address and can include fields for storage, such as a key field and an output value field.
  • the key field can contain a key field value that represents a lookup key
  • the output value field can contain a value associated with the lookup key, such as a flow table entry.
  • first-level cells e.g., one cell for each storage media section
  • Each section's busy first-level cell holds a key (that is different from the insertion key) and value that were previously inserted into that cell.
  • These keys can be used to identify a second level of cells. For example, each of these keys with their values might be moved to a second-level cell in a different section by re-hashing the first-level cell's lookup key using the hash function associated with another section. If such an alternative second-level cell is empty, then a busy entry in a first-level cell can be moved to the empty second-level cell.
  • the operation of moving the first-level cell data to the empty second-level cell makes room (e.g., creates a vacancy) to insert the insertion key and insertion output value into the newly vacated first-level cell.
  • each section's busy second-level cell holds a different key and value that were previously inserted into that cell.
  • a third level of cells can be identified using the keys of the second level of cells. For example, each of these keys with their values might be moved to a third-level cell in a different section by re-hashing the second-level cell's lookup key using the hash function associated with another section. If such an alternative third-level cell is empty, then a busy entry in a second level cell can be moved to a third-level cell and a first-level cell can be moved into the newly vacant second-level cell. In this manner, room is made in the first level of cells to insert the insertion key and the associated output value into the newly vacated first-level cell.
  • This search process can repeat to fourth-, fifth-, or higher levels until an empty cell is found or all newly identified cells are cells that have already been visited. When the latter occurs, the lookup table is sufficiently full that the new entry cannot be inserted. In order to accomplish this determination, each identified cell can be tracked and a record of indices accessed in response to the insertion request can be maintained for comparison during tine data insertion (e.g., while determining an empty cell in the lookup table).
  • Cells can be reiated based on a lookup key.
  • a first cell can be associated with a second cell based on hashing the lookup key to indices across the plurality of storage media.
  • the related cells are designated herein as alternatives.
  • a first cell (such as a target cell as discussed herein) can include a plurality of alternatives that are looked into when the key contained in the first cell is used.
  • Alternative cells can be operativeiy coupled to be accessed concurrently.
  • a specific key can have a number of alternatives that are looked into at the same time as the cell based on the parallel circuitry among the plurality of storage media sections.
  • the level of cells are differentiated based on lookup keys. For example, a first level of cells can comprise the cells designated at the address results of hashing a first input into a plurality of hash functions and a second level of cells can comprise the address results of hashing a second input into the same plurality of hash functions (or a second plurality of hash functions).
  • the controller 108 can identify a first alternative location in a first storage media of the plurality of storage media and a second alternative location in a second storage media of the plurality of storage media based on a plurality of orthogonal hash functions where the orthogonality of the hash functions (e.g., the hash functions are uncorrected and/or otherwise produce different storage media section locations) allows for identification of a first cell in the first storage media storing a first component table of a plurality of component tables and a second cell of a second storage media storing a second component table of the plurality of component tables.
  • the orthogonality of the hash functions e.g., the hash functions are uncorrected and/or otherwise produce different storage media section locations
  • the insertion request maintenance on the plurality of storage media sections can be based on a cuckoo hash technique.
  • a cuckoo hash technique can be any appropriate technique of hashing mat utilizes pushing data from a cell of hash table to another cell when a collision occurs.
  • the controller can identify an available location in the plurality of storage media sections when the first level of cells is designated as occupied and recursively place data of an occupied cell of a preceding level of cells into an available cell of a subsequent level of cells based on the cuckoo hash technique until the target DCi of the first level of cells is designated as vacant and available to receive the insertion data, in one approach, the cuckoo hash technique can provide a mechanism to let the table entries requested most often rise to the primary cell level (e.g., level zero as discussed herein).
  • the functionality of the controller 108 to maintain a lookup table can be represented by the insert engine 110 and the lookup engine 112.
  • the insert engine 110 represents any circuitry or combination of circuitry and executable instructions to insert data into the lookup table distributed across the plurality of storage media sections.
  • the insert engine 110 is to perform a distinct hash computation for each subtable based on an input lookup key and investigate a first-level cell for each of the plurality of storage media at a first address in that storage media that is pointed to by an index computed by a hash of the lookup key for that section, in response to the primary cell set (e.g., a first first-level cell and a second first-level cell) being occupied, the insert engine 110 can investigate a second level of cells of the plurality of storage media at a second address pointed to by a second set of computed hashes and place the key and the data of the first-level cell into the second-level cell to open the first-level cell to receive new data.
  • the primary cell set e.g., a first first-level cell and a second first-level cell
  • a second level of cells can be identified based on a set of hashes computed from a key field value of the first level of cells (or a plurality of key field values, one from each cell of the first level of cells).
  • the insert engine 110 can place the input lookup key into the key field of the primary cell set vacancy and an insertion value into the output field of the primary cell set vacancy.
  • the lookup table can be updated with an insertion value that represents a flow table entry.
  • the lookup engine 112 represents any circuitry or combination of circuitry and executable instructions to retrieve data of the lookup table distributed across the plurality of storage media sections.
  • the lookup engine 112 can be coupled to the plurality of storage media to allow the lookup engine 112 to concurrently perform a distinct hash of the lookup key for each section and to perform a lookup in each of the plurality of storage media based on the perfection hash of the input key (i.e., the lookup key) and provide an output value for the one of the cells looked up in all of the sections whose stored lookup key value field is matched by (he input key.
  • the output value of a cell in specific section is delivered as a result when the index of that cell is calculated by applying the section hash to the lookup key and the cell's key field contains a previously inserted key entry that matches the lookup key,
  • the lookup engine 112 can generate the plurality of indices based on the input key. For example, a first index of the plurality of indices can be derived from a first hash function performed on the input key and a second index of the plurality of indices can be derived from a second hash function performed on the input key.
  • the lookup engine 112 can identify an address of a section of the plurality of storage media sections based on an index of a plurality of indices, such as identify a first address of a first storage media index based on a first index computed by a hash on the input key.
  • the lookup engine 112 can compare the index to a subtabie key field (i.e., the key field of the cell addressed to by the index within a storage media section) and provide an output value associated with the subtabie key field when the index matches the subtabie key field.
  • a subtabie key field i.e., the key field of the cell addressed to by the index within a storage media section
  • the lookup engine 112 can extract the key output values of the plurality of storage media sections in parallel. For example, the lookup engine 112 can allow the controller 108 to concurrently extract a first key field value from the first section of storage media and a second key field value associated with a second subtabie key field of a second subtabie from a second storage media section. The extracted values can also be compared in parallel. For example, the lookup engine 112 can allow the controller 108 to compare the first key field value with a second key field value associated with the second subtabie key field. In the case where the lookup does not find the correct entry, the lookup engine 112 can provide a default output value when none of a plurality of indices match the lookup key.
  • the data store 102 can contain information utilized by the controller 108, the insert engine 110, and/or the lookup engine 112.
  • the data store 102 can store tables or other data utilized to compute hashes, information to assist tracking of fiie changes to the lookup table, and/or locations of data in each section of the plurality of storage media sections.
  • Figure 2 depicts the example system 200 can comprise a memory resource 220 operatively coupled to a processor resource 222.
  • the processor resource 222 can be operatively coupled to a data store 202 and/or a controller 208.
  • the data store 202 can be the same as the data store 102 of figure 1.
  • the controller 208 can be electrically coupled to the first storage section 204 (which can be the same as the first storage section 104 of figure 1) and the second storage section 206 (which can be the same as the second storage section 106 of figure 1 ).
  • the memory resource 220 can contain a set of instructions that are executable by the processor resource 222.
  • the set of instructions are operable to cause the processor resource 222 to perform operations of the system 200 when the set of instructions are executed by the processor resource 222.
  • the set of instructions stored on the memory resource 220 can be represented as an insert module 210 and a lookup module 212.
  • the insert module 210 and the lookup module 212 represent program instructions that when executed function as the insert engine 110 and the lookup engine 112 of figure 1 , respectively.
  • the processor resource 222 can carry out a set of instructions to execute the modules 210, 212, and/or any other appropriate operations among and/or associated with the modules of the system 200.
  • modules illustrated in figure 2 and discussed in other example implementations perform specific functionalities in the examples discussed herein, these and other functionalities can be accomplished, implemented, or realized at different modules or at combinations of modules.
  • two or more modules illustrated and/or discussed as separate can be combined into a module that performs the functionalities discussed in relation to the two modules.
  • functionalities performed at one module as discussed in relation to these examples can be performed at a different module or different modules.
  • the processor resource 222 can be any appropriate circuitry capable of processing (e.g. compute) instructions, such as one or multiple processing elements capable of retrieving instructions from the memory resource 220 and executing those instructions.
  • the processor resource 222 can be a central processing unit ("CPU") that enables maintaining a lookup table by fetching, decoding, and executing modules 210 and 212.
  • Example processor resources 222 include at least one CPU, a semiconductor-based microprocessor, an application specific integrated circuit (“ASIC”), a field-programmable gate array ⁇ "FPGA"), and the like.
  • the processor resource 222 can include multiple processing elements that are integrated in a single device or distributed across devices.
  • the processor resource 222 can process the instructions serially, concurrently, or in partial concurrence.
  • the memory resource 220 and the data store 202 represent a medium to store data utilized and/or produced by the system 200.
  • the medium can be any non- transitory medium or combination of non-transitory mediums able to electronically store data, such as modules of the system 200 and/or data used by the system 200.
  • the medium can be a storage medium, which is distinct from a transitory transmission medium, such as a signal.
  • the medium can be machine-readable, such as computer-readable.
  • the medium can be an electronic, magnetic, optical, or other physical storage device that is capable of containing (i.e., storing) executable
  • the memory resource 220 can be said to store program instructions that when executed by the processor resource 222 cause the processor resource 222 to implement functionality of the system 200 of figure 2.
  • the memory resource 220 can be integrated in the same device as the processor resource 222 or it can be separate but accessible to mat device and the processor resource 222.
  • the memory resource 220 can be distributed across devices.
  • the memory resource 220 and the data store 202 can represent the same physical medium or separate physical mediums.
  • the data of the data store 202 can include representations of data and/or information mentioned herein.
  • the engines 110 and 112 of figure 1 and the modules 210 and 212 of figure 2 have been described as circuitry or a combination of circuitry and executable instructions. Such components can be implemented in a number of fashions.
  • the executable instructions can be processor- executable instructions, such as program instructions, stored on the memory resource 220, which is a tangible, non-transitory computer-readable storage medium, and the circuitry can be electronic circuitry, such as processor resource 222, for executing those instructions.
  • the instructions residing on the memory resource 220 can comprise any set of instructions to be executed directly (such as machine code) or indirectly (such as a script) by the processor resource 222.
  • the system 200 can include the executable instructions can be part of an installation package that when installed can be executed by the processor resource 222 to perform operations of the system 200, such as methods described with regards to figures 3-7.
  • the memory resource 220 can be a portable medium such as a compact disc, a digital video disc, a flash drive, or memory maintained by a computer device, such as a network switch housing a plurality of storage media containing the flow table, from which the installation package can be downloaded and installed, in another example, the executable instructions can be part of an application or applications already installed.
  • the memory resource 220 can be a non-volatile memory resource such as read only memory (“ROM”), a volatile memory resource such as random access memory ⁇ "RAM”), a storage device, or a combination thereof.
  • Example forms of a memory resource 220 include static RAM (“SRAM”), dynamic RAM (“DRAM”), electrically erasable programmable ROM (“EEPROM”), flash memory, or the like.
  • the memory resource 220 can include integrated memory such as a hard drive (“HD”), a solid state drive (“SSD”), or an optical drive.
  • the storage media sections 204 and 206 can be any appropriate storage architecture encompassed by the description of the memory resource 220 and capable of containing a portion of the lookup table (i.e., a subtable or component table as discussed herein).
  • Figure 3 is a block diagram that depicts an example system 300 for enabling access to the table lookup that is maintained by the insert engine 110. The relationship among the blocks is described in view of a lookup performed using the system 300.
  • the example system 300 of figure 3 depicts the use of four storage mediums 302-308 electrically coupled to allow for concurrent access into the storage mediums.
  • the lookup into the storage mediums 302-308 utilizes input 330 to determine the locations to lookup simultaneously.
  • the input 330 comprises a number of bits called a lookup key.
  • the lookup key can be processed by the system 300 to retrieve a corresponding output value in a hash lookup table that Is distributed across the four storage mediums 302-308.
  • the example system 300 illustrates a 4-way lookup with four component tables used to implement the hash table (e.g., one component table per storage medium). Each component table is accessed using a distinct hash function. Each of the component tables holds a 1/nth of all hash table entries (where N is the number of storage media sections), and in the example of figure 3, the component tables hold one quarter of ail hash table entries of the lookup table.
  • hash functions 332 are applied to the same input to produce four distinct hash outputs ⁇ e.g., one hash function per section table). Each hash output is used as an address to index into a
  • HAo can hash to an index of the storage medium 302.
  • Each cell stores a value of the lookup key and the output corresponding to that lookup key.
  • the cell of storage medium 302 hashed to by HAo can contain a key 312 and an output value 322.
  • the storage mediums 304, 306, and 308, can contain cells hashed to by corresponding hash functions 332 to reach a data
  • the input may match the key field stored in the indexed cell, if this match occurs the corresponding output value in the one of the cells is the retrieved lookup tabie output (i.e., the correct flow table entry).
  • the keys 312-318 are compared to the input 330 at block 334 and the result is passed to logical gates 336 so that the matching value is provided as the hash output value 338.
  • the logical gates 336 can represent any combination of circuit elements to perform a comparison of inputs, such as a comparator.
  • the success of the lookup can be trusted when the lookup table is accurately maintained at each of the plurality of storage mediums.
  • the component tables designated to each of the plurality of storage mediums are to be carefully maintained when an insertion request is made and ail the first level of hash target cells are in use by prior entries. In this case, higher level cells are considered.
  • a controller (not shown) identifies the original input 330 that was hashed using the hash functions 332 and the insertion data might be moved to a location in any of the other three storage mediums 314-318.
  • Each alternative cell is equivalent to the other alternative cells from the perspective of a lookup because the alternative locations are searched concurrently for a matching lookup key (i.e., allowing retrieval of any matching target cell) based on the lookup key and the parallel lookup circuitry among the plurality of storage sections and the controller. Similar equivalency is made at the subsequent levels of hashes if the cells are occupied at a preceding level. Thus, in the example of figure 3, there are a total of up to 12 level-one locations (when starting at level zero).
  • Figures 4-7 are flow diagrams depicting example methods for maintaining table lookup.
  • Figure 4 Is an example flow diagram depicting an example method for looking up flow table entries consistent with the system 300 of figure 3.
  • a plurality of indices are generated based on a lookup key.
  • the hash functions 332 of figure 3 are computed using the lookup key 330 to produce four addresses, one address in each of the corresponding storage mediums.
  • the plurality of addresses are looked up in parallel using the plurality of indices derived from the lookup key.
  • Circuitry of the system 300 receives the output values in parallel and compares the plurality of output values associated with the identified key values at block 406.
  • a matching output value of the plurality of output values compared at block 406 Is provided based on whether a key field value match (i.e., a comparison of input to the value of the key field to determine the input is equivalent to the key field value) occurred with the lookup key.
  • Figure 5 is an example flow diagram of an example method for
  • Example methods for maintaining table lookup can generally comprise determining occupancy of a first cell set, identifying a cell of the first cell set to receive insertion data, determine whether a cell of a second DC set is vacant, moving the cell data from the first cell set to the second cell set, and storing tie insertion data into the first cell set.
  • a primary cell set comprises a first primary cell and a second primary cell.
  • the first primary cell and the second primary cells are alternative cell locations for the same lookup key.
  • the first primary cell is a cell located in a first storage medium section of a plurality of storage media sections and the second primary cell is a cell located in a second storage medium section of the plurality of storage media sections.
  • the first primary cell and the second primary cell are related based on the input lookup key and a first hash set (e.g., a set of hash functions and/or computations of input through the set of hash functions).
  • a target cell of the primary cell set is Identified to receive a lookup key and insertion data, if the target cell is vacant, then the lookup key and insertion data combination can be placed in the target cell, if the target cell is occupied, then a determination as to whether one of a secondary cell set is vacant at block 506.
  • the secondary cell set can be identified based on a second hash set (e.g., a set of hash functions and/or computations of input through the set of hash functions) using the key field value of one (or each) of the primary cell set
  • a second hash set e.g., a set of hash functions and/or computations of input through the set of hash functions
  • the secondary cell set can inciude a first secondary cell located in a first storage medium section of a plurality of storage media sections and a second secondary cell located in a second storage medium section of the plurality of storage media sections.
  • the determination of whether a cell is vacant may include a threshold comparison of the cell to a record of
  • investigated cells to check whether the cell has already been investigated e.g., a list of cells that have been looked into to determine whether the cell is vacant or occupied.
  • an index of a secondary cell set can be identified in the list of cells as already searched, and any further operations to find further cells based on the key value of that DCi may terminate.
  • an index of a secondary cell set may not be included in a list of cells designated as investigated and the index can be accessed to determine whether the cell associated with the index is occupied or vacant.
  • the cell data of the target cell is moved to the vacant cell of the secondary DCi set at block 508. With the data moved, the target cell is available for receiving the insertion data at block 510.
  • the management of cells across the plurality of storage media sections can be adapted based on a cuckoo hash technique adapted to use alternative locations for every hash calculation.
  • Figure 6 is an example flow diagram depicting example methods for maintaining a plurality of storage sections based on a cuckoo hash technique.
  • Block 602 can include the description of block 502-510 of figure 5 as weii as the blocks 604- 608 of figure 6.
  • Figure 6 depicts details regarding the data movement to create a vacant entry in the primary cell set. Using careful writes to the component tables, a
  • programmed processor resource can ensure that the hash table is correct and useable by hardware even while reorganization is in process.
  • a redundant key-output combination is written in a next level entry from a current level entry based on the cuckoo hash technique.
  • a default value to designate a vacancy is written into the current level entry.
  • the lookup key and the output value of the insertion request is written into the current level entry when the current level entry is designated as vacant.
  • This cascading method of opening a vacancy at each ievei can allow for the insertion data of the key-output combination data to be place in the primary cell set.
  • the lookup engine When this cascading method for insertion is used, and while the table is being reorganized, the lookup engine correctly finds a matching cell containing a correct value for all prior table entries until a final state after insertion when atl prior table entries are found and the new table entry is also found.
  • the plurality of storage media sections can be utilized in an efficient manner in contrast the hash techniques that are unable to efficiently use the storage areas designated to store the hash lookup table in order to avoid collision.
  • Figure 7 includes blocks similar to blocks of figures 4-6 and provides additional blocks and details.
  • a switch table Insertion request is received.
  • the lookup table can be updated by maintaining a plurality of storage sections at block 704, such as described with regards to figures 5 and 6.
  • the plurality of storage sections can be maintained with a controller programmed with a set of instructions to organize a lookup table across the plurality of storage sections based on a cuckoo hash technique.
  • each cell of a first section of the plurality of storage sections can have a correlating alternative cell on a second section of the plurality of sections based on the cell's key field value and the plurality of hash functions (to compute addresses for each of the plurality of storage media), where if the hash functions compute an address that has data assigned, the assigned data can be pushed to another cell of the lookup table.
  • the hash functions can be distinct from each other so that a first hash function of the plurality of hash functions computes a first address associated with a first storage section and a second hash function of the plurality of hash functions computes a second address associated with the second storage section.
  • the controller can be implemented using a programmed processor resource that can read and write locations in the component tables designated to the plurality of storage sections.
  • a record of investigated cells can be maintained at block 706.
  • the software controller can keep a record of the data that was previously entered into the component tables, such as a target cell or a first-level cell set.
  • investigated cells can be tracked during a search for a vacant cell to improve efficiency of the data insertion because subsequent hash computations may result in an index mat has been investigated at a previous level. For example, when a new alternative is identified that has already been considered, then the new alternative is discarded to eliminate loops in the search for a vacant cell.
  • a switch table lookup request is received.
  • a plurality of indices can be generated based on the lookup key of the switch table lookup request at block 710.
  • the plurality of indices correspond to addresses of the plurality of storage sections, which can be a plurality of physically- separate storage mediums or a plurality of port sections of a muitiport storage medium where the plurality of storage mediums or the ports of the muitiport storage medium are electrically coupled to allow for parallel access to each of the storage sections.
  • the plurality of addresses are concurrently looked up using the plurality of indices at block 712.
  • the plurality of output values corresponding to a plurality of flow entries of the look up table associated with a switch are concurrently extracted from the plurality of addresses at block 714 and compared with a plurality of key field values identified based on the plurality of indices at block 716.
  • a matching output value is provided based on a key field value match associated with the lookup key.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

Dans une mise en œuvre de la présente invention, un système comprend un dispositif de commande couplé à la pluralité de sections de support de stockage. Dans cette mise en œuvre, le dispositif de commande doit, en réponse à une requête d'insertion, sélectionner une cellule cible à partir d'un premier niveau de cellules, identifier un second niveau de cellules lorsque la cellule cible est occupée, et insérer des données d'entrée de la requête d'insertion dans la cellule cible. En outre, dans cette mise en œuvre, le dispositif de commande comprend une circuiterie pour, en réponse à une requête d'extraction, permettre une recherche parallèle dans chacune de la pluralité de sections de support de stockage sur la base d'une pluralité d'indices dérivés à partir d'une clé de recherche.
PCT/US2014/069386 2014-12-09 2014-12-09 Sections de support de stockage comprenant des cellules alternatives WO2016093809A1 (fr)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2014/069386 WO2016093809A1 (fr) 2014-12-09 2014-12-09 Sections de support de stockage comprenant des cellules alternatives

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2014/069386 WO2016093809A1 (fr) 2014-12-09 2014-12-09 Sections de support de stockage comprenant des cellules alternatives

Publications (1)

Publication Number Publication Date
WO2016093809A1 true WO2016093809A1 (fr) 2016-06-16

Family

ID=56107830

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2014/069386 WO2016093809A1 (fr) 2014-12-09 2014-12-09 Sections de support de stockage comprenant des cellules alternatives

Country Status (1)

Country Link
WO (1) WO2016093809A1 (fr)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100011028A1 (en) * 2008-07-14 2010-01-14 Symbol Technologies, Inc. Lookup table arrangement and related management method for accommodating concurrent processors
US20100332846A1 (en) * 2009-06-26 2010-12-30 Simplivt Corporation Scalable indexing
US20130311492A1 (en) * 2012-05-20 2013-11-21 International Business Machines Corporation Hash collision reduction system
US20140156708A1 (en) * 2012-11-30 2014-06-05 Facebook, Inc. Method and system for implementing an array using different data structures

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100011028A1 (en) * 2008-07-14 2010-01-14 Symbol Technologies, Inc. Lookup table arrangement and related management method for accommodating concurrent processors
US20100332846A1 (en) * 2009-06-26 2010-12-30 Simplivt Corporation Scalable indexing
US20130311492A1 (en) * 2012-05-20 2013-11-21 International Business Machines Corporation Hash collision reduction system
US20140156708A1 (en) * 2012-11-30 2014-06-05 Facebook, Inc. Method and system for implementing an array using different data structures

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MICHAEL FERDMAN ET AL.: "Cuckoo Directory: A Scalable Directory for Many-Core Systems.", 2011 IEEE 17TH INTERNATIONAL SYMPOSIUM ON HIGH PERFORMANCE CO MPUTER ARCHITECTURE (HPCA, 12 February 2011 (2011-02-12), pages 169 - 180 *

Similar Documents

Publication Publication Date Title
US11588793B2 (en) System and methods for dynamic geospatially-referenced cyber-physical infrastructure inventory and asset management
US11929944B2 (en) Network forwarding element with key-value processing in the data plane
CN107395659A (zh) 一种业务受理及共识的方法及装置
US9210219B2 (en) Systems and methods for consistent hashing using multiple hash rings
US10459729B2 (en) Map tables for hardware tables
US10129181B2 (en) Controlling the reactive caching of wildcard rules for packet processing, such as flow processing in software-defined networks
CN106982236A (zh) 一种信息处理方法、装置和系统
US10956161B2 (en) Indirect target tagged geometric branch prediction using a set of target address pattern data
US11270227B2 (en) Method for managing a machine learning model
WO2018214905A1 (fr) Procédé, appareil, support et dispositif de stockage de données
US20210226927A1 (en) System and method for fingerprint-based network mapping of cyber-physical assets
US11805106B2 (en) System and method for trigger-based scanning of cyber-physical assets
US10331646B2 (en) Enhancements for optimizing query executions
CN104933054B (zh) 缓存资源文件的url存储方法及装置、缓存服务器
CN104253754B (zh) 一种acl快速匹配的方法和设备
CN108399175B (zh) 一种数据存储、查询方法及其装置
CN104615459A (zh) 一种MoCA设备参数配置方法及装置
CN117421771A (zh) 一种面向结构化数据的可搜索加密方法、装置及电子设备
Shuai et al. Performance models of access latency in cloud storage systems
WO2016093809A1 (fr) Sections de support de stockage comprenant des cellules alternatives
CN110442645A (zh) 数据索引方法及装置
CN110866380A (zh) 一种填写信息字段内容的方法、终端
KR101656077B1 (ko) 암시적 타임 칼럼값을 이용한 시간 기반 파티셔닝 시스템 및 방법
US20130151773A1 (en) Determining availability of data elements in a storage system
US11438432B2 (en) Control of cache data

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14907683

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14907683

Country of ref document: EP

Kind code of ref document: A1