Dual Hash Indexing System and Methodology
First Claim
1. A standalone cache unit for caching data operations requested from one or more networked data storage devices by one or more remote clients, the standalone cache unit comprising:
- a cache memory for caching data that is requested by a remote client, the cache memory storing a plurality of index tables and a connection state table for each connection used to cache data in the cache memory;
a packet processor coupled to the cache memory and to one or more I/O ports for transparently splicing connections between the data storage devices and remote clients, where the packet processor inspects network protocol traffic state parameters received on the I/O ports to determine if a request from a remote client can be serviced by the standalone cache unit by extracting connection information from each received packet and generating first and second hash values from the connection information, where the first hash value is used to point to an addressed index table from the plurality of index tables, and where the second hash value is stored as an index to an entry in the addressed index table which also stores a connection data index value which is used to point to an address for the connection state table corresponding to the received packet.
3 Assignments
0 Petitions
Accused Products
Abstract
A method, system and program are disclosed for accelerating data storage in a cache appliance that transparently monitors NFS and CIFS traffic between clients and NAS subsystems and caches files in a cache memory by using a dual hash technique to rapidly store and/or retrieve connection state information for cached connections in a plurality of index tables that are indexed by hashing network protocol address information with a pair of irreducible CRC hash algorithms to obtain an index to the memory location of the connection state information.
-
Citations
20 Claims
-
1. A standalone cache unit for caching data operations requested from one or more networked data storage devices by one or more remote clients, the standalone cache unit comprising:
-
a cache memory for caching data that is requested by a remote client, the cache memory storing a plurality of index tables and a connection state table for each connection used to cache data in the cache memory; a packet processor coupled to the cache memory and to one or more I/O ports for transparently splicing connections between the data storage devices and remote clients, where the packet processor inspects network protocol traffic state parameters received on the I/O ports to determine if a request from a remote client can be serviced by the standalone cache unit by extracting connection information from each received packet and generating first and second hash values from the connection information, where the first hash value is used to point to an addressed index table from the plurality of index tables, and where the second hash value is stored as an index to an entry in the addressed index table which also stores a connection data index value which is used to point to an address for the connection state table corresponding to the received packet. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A method for retrieving connection information from a memory, comprising:
-
determining a first connection identifier from a received packet for retrieving connection information corresponding to the received packet; generating a first memory address for a first table in memory corresponding to the first connection identifier by calculating a first hash value from the first connection identifier; generating a first index to the first table corresponding to the first connection identifier by calculating a second hash value from the first connection identifier; retrieving from the first table a first entry using the first index; and generating from the first entry a second memory address for retrieving connection information from a connection state table in memory corresponding to the first connection. - View Dependent Claims (10, 11, 12, 13, 14, 15, 16)
-
-
17. A method for storing connection information in memory, comprising:
-
determining a first connection identifier from a received packet for storing connection information corresponding to the received packet; generating a first memory address for a first table in memory corresponding to the first connection identifier by calculating a first hash value from the first connection identifier; generating a first index to the first table corresponding to the first connection identifier by calculating a second hash value from the first connection identifier; generating a unique identifier; storing the first index and the unique identifier in an available entry in the first table located at the first memory address; and storing connection information at a second memory address in a connection state table in memory corresponding to the first connection, where the second memory address is generated from the unique identifier. - View Dependent Claims (18, 19, 20)
-
Specification