Systems and methods using NIC-based prefetching for host TCP context lookup
First Claim
1. A network interface controller, comprising:
- a hashing logic to generate a hashing value from a packet received from a network including an index to a table content derived from a transformation of information in a header of the packet,wherein the received packet has a context associated therewith;
a memory to store;
a hash table pages table to store a physical page address of a host hash table stored in a host memory of a host; and
a context table pages table to store a physical page address of a host context table in the host memory; and
a cache line determinator in communication with the host and the hashing logic, the cache line determinator being configured to;
determine a hash node page and a context table page corresponding to the hashing value;
lookup the physical address of the hash table page from the hash table pages table;
lookup the physical address of the context table page from the context table pages table;
determine the host hash cache line using the physical address of the hash table page and an offset of the hash value within the hash table page;
determine the host context cache line using the physical address of the context table page and an offset of the hash value within the context table page;
associate the hashing value with the host hash table cache line using the hash table pages table; and
associate the hashing value with the host context table cache line in the host memory using and the context table pages table.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems and methods using network interface card-based (NIC-based) prefetching for host TCP context lookup are disclosed. The process generally includes hashing, by the NIC, a packet received over the network, computing a host hash table cache line in a host memory using the hash value and using a hash table pages table containing host memory physical page addresses of a host hash table, and computing a host context table cache line in a host memory using the hash value and using a context table pages table containing host memory physical page addresses of a host context table. The NIC may be initialized with the hash table pages table and the context table pages table as well as with the a set number of hash node entries in the hash table of the host memory.
21 Citations
25 Claims
-
1. A network interface controller, comprising:
-
a hashing logic to generate a hashing value from a packet received from a network including an index to a table content derived from a transformation of information in a header of the packet, wherein the received packet has a context associated therewith; a memory to store; a hash table pages table to store a physical page address of a host hash table stored in a host memory of a host; and a context table pages table to store a physical page address of a host context table in the host memory; and a cache line determinator in communication with the host and the hashing logic, the cache line determinator being configured to; determine a hash node page and a context table page corresponding to the hashing value; lookup the physical address of the hash table page from the hash table pages table; lookup the physical address of the context table page from the context table pages table; determine the host hash cache line using the physical address of the hash table page and an offset of the hash value within the hash table page; determine the host context cache line using the physical address of the context table page and an offset of the hash value within the context table page; associate the hashing value with the host hash table cache line using the hash table pages table; and associate the hashing value with the host context table cache line in the host memory using and the context table pages table. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A network interface controller, comprising:
a hardware card comprising; a hashing logic to generate a hashing value from a packet received from a network including an index to a table content derived from a transformation of information in a header of the packet, wherein the received packet has a context associated therewith; a cache line determinator in communication with the hashing logic, the cache line determinator being configured to; determine a hash node page and a context table page corresponding to the hashing value, lookup the physical address of the hash table page from the hash table pages table, lookup the physical address of the context table page from the context table pages table, determine the host hash cache line using the physical address of the hash table page and an offset of the hash value within the hash table page, determine the virtual host hash table cache line using the physical address of the context table page and an offset of the hash value within the context table page, associate the hashing value with the host hash table cache line using the hash table pages table; and associate the hash value with the virtual host hash table cache line and the virtual host context table cache line in a memory of the host of the network interface controller; wherein the network interface controller is configured to issue a pre-fetch of the host context table cache line and the host hash table cache line to the host. - View Dependent Claims (9)
-
10. A method for processing incoming packets from a network, comprising:
-
hashing, by a network interface controller in communication with a host and a network, a packet received from the network, wherein the packet has a context associated therewith to generate a hash value from context of the received packet including an index to a table content derived from a transformation of information in a header of the packet; computing a host hash table cache line in a host memory of the host using the hash value and using a hash table pages table stored in a memory of the network interface controller and storing memory physical page addresses of a host hash table stored in the host memory of the host; computing a host context table cache line in the host memory using the hash value and using a context table pages table stored in a memory of the network interface controller and storing memory physical page addresses of a host context table stored in the host memory of the host; and issuing a pre-fetch of the host context table cache line and the host hash table cache line; wherein computing the host hash table cache line includes; determining a hash node page and a context table page corresponding to the hash value; looking up the physical address of the hash table page and the context table page from the hash table pages table and the context table pages table, respectively; and determining the host hash cache line and the host context cache line using the physical address of the hash table page and the context table page and an offset of the hash value within the hash table page and the context table page respectively. - View Dependent Claims (11, 12, 13, 14, 15)
-
-
16. A computer program product stored on a computer readable medium to process packets, the program including instructions for causing at least one processor to:
-
hash, by a network interface controller in communication with a host and the a network, a packet received from the network, the packet having a context associated therewith to generate a hash value from context of the received packet including an index to a table content derived from a transformation of information in a header of the packet; compute a host hash table cache line in a host memory of the host using the hash value and using a hash table pages table stored in a memory of the network interface controller and storing physical page addresses of a host hash table stored in the host memory; compute a host context table cache line in the host memory using the hash value and using a context table pages table stored in the memory of the network interface controller and storing physical page addresses of a host context table stored in the host memory; and issuing a pre-fetch of the host context table cache line and the host hash table cache line; wherein the instructions to compute the host hash table cache line further include instructions for causing the at least one processor to; determine a hash node page and a context table page corresponding to the hash value; lookup the physical address of the hash table page and the context table page from the hash table pages table and the context table pages table, respectively; and determine the host hash cache line and the host context cache line using the physical address of the hash table page and the context table page and an offset of the hash value within the hash table page and the context table page, respectively. - View Dependent Claims (17, 18)
-
-
19. A system, comprising:
-
a host CPU; a host memory; a network interface controller (NIC); and a host bus to facilitate the host CPU, host memory, and the NIC to communicate therebetween, wherein the NIC comprises; a hashing logic to generate a hashing value from a packet received over a network including an index to a table content derived from a transformation of information in a header of the packet, the received packet having a context associated therewith; a hash table pages table to store a physical page address of a host hash table stored in the host memory of the host CPU; and a context table pages table to store a physical page address of a host context table stored in the host memory of the host CPU; and a cache line determinator in communication with the host bus and the hashing logic, and wherein the cache line determinator is being configured to; determine a hash node page and a context table page corresponding to the hashing value; lookup the physical address of the hash table page from the hash table pages table; lookup the physical address of the context table page from the context table pages table; determine the host hash cache line using the physical address of the hash table page and an offset of the hash value within the hash table page; determine the host context cache line using the physical address of the context table page and an offset of the hash value within the context table page; associate the hashing value with the host hash table cache line using the hash table pages table; and associate the hashing value with the host context table cache line in the host memory using and the context table pages table. - View Dependent Claims (20, 21, 22, 23, 24, 25)
-
Specification