Hashing algorithm for network receive filtering
First Claim
1. A method for processing data packets received from a network, comprising the steps of:
- receiving from a computing device an indication of a first maximum extent-of-search;
iteratively searching a filter table for a matching entry having first comparison criteria that are satisfied by the content of a first incoming data packet received from the network; and
where a matching entry is identified in the step of searching after no more than a number of iterations indicated by the first maximum extent-of-search, delivering the packet to a receive queue in the computing device that is indicated by the matching entry.
11 Assignments
0 Petitions
Accused Products
Abstract
Roughly described, a network interface device is assigned a maximum extent-of-search. A hash function is applied to the header information of each incoming packet, to generate a hash code for the packet. The hash code designates a particular subset of the table within which the particular header information should be found, and an iterative search is made within that subset. If the search locates a matching entry before the search limit is exceeded, then the incoming data packet is delivered to the receive queue identified in the matching entry. But if the search reaches the search limit before a matching entry is located, then device delivers the packet to a default queue, such as a kernel queue, in the host computer system. The kernel is then responsible for delivering the packet to the correct endpoint.
86 Citations
49 Claims
-
1. A method for processing data packets received from a network, comprising the steps of:
-
receiving from a computing device an indication of a first maximum extent-of-search;
iteratively searching a filter table for a matching entry having first comparison criteria that are satisfied by the content of a first incoming data packet received from the network; and
where a matching entry is identified in the step of searching after no more than a number of iterations indicated by the first maximum extent-of-search, delivering the packet to a receive queue in the computing device that is indicated by the matching entry. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. A method for processing data packets received from a network, comprising the steps of:
-
receiving from a computing device an indication of a first maximum extent-of-search;
iteratively searching a filter table for a matching entry having first comparison criteria that are satisfied by the content of a first incoming data packet received from the network; and
where no matching entry is identified in the step of searching after the number of iterations indicated by the first maximum extent-of-search, delivering the packet to a first default receive queue in the host. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28, 29, 30, 31)
-
-
32. A method for controlling a network interface device, for use with a host computing device having a plurality of network data receive queues, comprising the steps of:
-
programming a receive filter table accessible to the network interface device, each entry in the receive filter table identifying a receive queue to which incoming packets are to be delivered if their content satisfies criteria indicated by the entry; and
programming the network interface device with an indication of a first maximum extent-of-search to which the network interface device should search in the filter table before delivering an incoming packet to a default receive queue. - View Dependent Claims (33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46)
-
-
47. A method for processing data packets received from a network, for use with a plurality of processors each having a respective kernel receive queue, comprising the steps of:
-
searching a filter table for an entry matching the content of a first incoming data packet received from the network; and
where no matching entry is identified in the step of searching;
selecting a selected one of the kernel receive queues in dependence upon the content of the first incoming data packet; and
delivering the packet to the selected one of the kernel receive queues. - View Dependent Claims (48, 49)
-
Specification