Patent ID: 7287092

Claim:
A method of processing a plurality of packets, wherein each packet has a socket address, each socket address comprising a destination IP address, a source IP address, a destination TCP port address, and a source TCP port address, the method comprising: (a) generating on a network interface device a hash value from the socket address of each of the plurality of incoming packets, wherein each such hash value is associated with one of a plurality of hash buckets, each socket address comprising a plurality of high entropy bits and a plurality of low entropy bits, wherein the hash values resulting from changing the values of the high entropy bits are substantially evenly distributed among the plurality of hash buckets, and wherein the high entropy bits include at least the three least significant bits of the source TCP port address and at least the five least significant bits of the source IP address, and wherein the low entropy bits include essentially all the bits of each of the following: the destination IP address, the eight most significant bits of the source IP address, and the destination TCP port address, and wherein each hash bucket can contain up to X socket addresses, and wherein there are Y hash buckets, and wherein X*Y is 2E32 or less; (b) receiving onto a network interface device a first incoming packet of the plurality of packets and generating therefrom a first hash value as set forth above in (a); (c) using the first hash value to determine that a TCP connection identified by the socket address of the first incoming packet is a TCP connection being handled by the network interface device, and performing on the network interface device substantially all TCP and IP protocol processing on the first incoming packet; (d) receiving onto the network interface device a second incoming packet of the plurality of packets and generating therefrom a second hash value as set forth above in (a); and (e) using the second hash value to determine that a TCP connection identified by the socket address of the second incoming packet is a TCP connection not being handled by the network interface device, and forwarding the second packet to a host computer for TCP and IP protocol processing on the host computer.