TCP/IP offload device
First Claim
1. A system, comprising:
- (a) fast-path receive circuitry that is in control of a first plurality of TCP/IP connections, a first TCP/IP packet associated with one of the first plurality of TCP/IP connections being received onto the fast-path circuitry from a network, the fast-path receive circuitry comprising;
an SRAM that stores a control block (CB) for each TCP/IP connection of a first set of the first plurality of TCP/IP connections;
a DRAM that stores a CB for each TCP/IP connection of a second set of the first plurality of TCP/IP connections, the DRAM storing a CB associated with the first TCP/IP packet received onto the fast-path receive circuitry;
a content addressable memory (CAM); and
a first processor that executes a receive state machine, the first processor obtaining from the CAM information indicative of whether the CB associated with the first TCP/IP packet is stored in the SRAM or is stored in the DRAM, the first processor using the information obtained from the CAM to access the CB; and
(b) a processor that executes a protocol processing stack, the protocol processing stack being in control of a second plurality of TCP/IP connections, wherein TCP/IP packets associated with the second plurality of TCP/IP connections are received onto the fast-path circuitry from the network, the protocol processing stack performing TCP protocol processing on the TCP/IP packets associated with the second plurality of TCP/IP connections, and wherein other TCP/IP packets associated with the first plurality of TCP/IP connections are received onto the fast-path circuitry from the network, the protocol stack performing substantially no TCP protocol processing on the other TCP/IP packets associated with the second plurality of TCP/IP connections.
3 Assignments
0 Petitions
Accused Products
Abstract
A TCP/IP offload network interface device (NID) is integrated with a processing device that executes a stack. The TCP/IP offload NID can either be a full TCP/IP offload device or a partial TCP/IP offload device. Common types of packets are processed by the NID in a fast-path such that the stack is offloaded of TCP and IP protocol processing tasks. A hash is made from the packet header and is pushed onto a queue. The hash is later popped off the queue and is used to identify an associated TCB number from a hash table. A mechanism caches hash buckets in SRAM and stores other hash buckets in DRAM. An “IN SRAM CAM” is used to determine whether the TCB associated with the identified TCB number is cached in SRAM or whether it must be moved from DRAM into the SRAM cache. A lock table and a “lock table CAM” mechansim is disclosed that facilitates multiple processors working on the protocol processing of a single packet.
-
Citations
22 Claims
-
1. A system, comprising:
-
(a) fast-path receive circuitry that is in control of a first plurality of TCP/IP connections, a first TCP/IP packet associated with one of the first plurality of TCP/IP connections being received onto the fast-path circuitry from a network, the fast-path receive circuitry comprising;
an SRAM that stores a control block (CB) for each TCP/IP connection of a first set of the first plurality of TCP/IP connections;
a DRAM that stores a CB for each TCP/IP connection of a second set of the first plurality of TCP/IP connections, the DRAM storing a CB associated with the first TCP/IP packet received onto the fast-path receive circuitry;
a content addressable memory (CAM); and
a first processor that executes a receive state machine, the first processor obtaining from the CAM information indicative of whether the CB associated with the first TCP/IP packet is stored in the SRAM or is stored in the DRAM, the first processor using the information obtained from the CAM to access the CB; and
(b) a processor that executes a protocol processing stack, the protocol processing stack being in control of a second plurality of TCP/IP connections, wherein TCP/IP packets associated with the second plurality of TCP/IP connections are received onto the fast-path circuitry from the network, the protocol processing stack performing TCP protocol processing on the TCP/IP packets associated with the second plurality of TCP/IP connections, and wherein other TCP/IP packets associated with the first plurality of TCP/IP connections are received onto the fast-path circuitry from the network, the protocol stack performing substantially no TCP protocol processing on the other TCP/IP packets associated with the second plurality of TCP/IP connections. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16)
-
-
17. A system, comprising:
-
a first processor that executes a protocol processing stack; and
fast-path receive circuitry that receives an incoming TCP/IP packet and performs substantially all TCP and IP protocol processing on the TCP/IP packet, the TCP/IP packet containing a header portion and a data portion, the data portion being transferred into a destination identified by the first processor, the data portion being transferred without the header portion being transferred into the destination and without the protocol processing stack doing any TCP protocol processing on the TCP/IP packet, the fast-path receive circuitry comprising;
an SRAM that stores a first plurality of control blocks (CB);
a DRAM that stores a second plurality of control blocks (CB);
a content addressable memory (CAM); and
a second processor that executes a receive state machine, the second processor using the CAM to determine whether a control block (CB) associated with the incoming TCP/IP packet is stored in the SRAM, wherein if the control block is not stored in the SRAM but rather is stored in the DRAM, then the second processor causes the control block (CB) associated with the incoming TCP/IP packet to be copied into the SRAM. - View Dependent Claims (18, 19)
-
-
20. A method, comprising:
-
receiving a TCP/IP packet onto a network interface device;
generating a hash from the TCP/IP packet and pushing the hash onto a queue, the queue being located on the network interface device;
popping the queue to retrieve the hash and using the hash to identify a hash bucket;
determining that the hash bucket identified by the hash is stored in a DRAM and copying the hash bucket from the DRAM and into an SRAM, the DRAM and the SRAM both being part of the network interface device;
searching a plurality of hash entries in the identified hash bucket and determining from one of the hash entries a control block number;
using a content addressable memory (CAM) to determine that a control block (CB) associated with the control block number is located in the DRAM, the CAM being part of the network interface device;
copying the control block (CB) from the DRAM and into the SRAM; and
using the control block (CB) to fast-path process the TCP/IP packet on the network interface device, the network interface device transferring a data portion of the TCP/IP packet into a destination, the destination having been identified by a processor, the processor executing a protocol processing stack, the network interface device transferring the data portion into the destination identified by the processor without the protocol processing stack of the processor performing any TCP protocol processing on the TCP/IP packet. - View Dependent Claims (21, 22)
-
Specification