Network address lookup based on bloom filters
First Claim
1. A method for performing a network address lookup for a routing table having prefixes of a plurality of different prefix lengths, the method comprising:
- (a) providing a Bloom filter programmed with the prefixes corresponding to all of the different prefix lengths in the routing table without having to expand any of the prefixes programmed into the Bloom filter; and
(b) performing membership probes into the Bloom filter using candidate prefix values for a given network address, wherein;
there are g different prefix lengths in the routing table and g candidate prefix values for each given network address;
the Bloom filter is programmed by hashing each prefix in the routing table into k hash values corresponding to k hash functionsthe Bloom filter is implemented using k Bloom sub-filters;
each Bloom sub-filter is associated with a different set of g hash functions; and
each hash value in a set is associated with a different prefix length.
3 Assignments
0 Petitions
Accused Products
Abstract
In one embodiment, IP lookup into a routing table having prefixes of different prefix lengths is performed using a Bloom filter that was programmed with the prefixes corresponding to all of the different prefix lengths without having to expand any of the prefixes programmed into the Bloom filter. Membership probes are performed into the Bloom filter using candidate prefix values of a given network address. The Bloom filter can be implemented in a distributed manner using Bloom sub-filters, where each Bloom sub-filter is hashed based on a set of hash functions, where each different hash function in the set corresponds to a different prefix length in the routing table. Each Bloom sub-filter can in turn be implemented using a plurality of practically realizable multi-port memory devices controlled by a port scheduler. False-positive matches can be detected and next-hop information for true-positive matches retrieved using an off-chip, hash-based prefix table.
-
Citations
34 Claims
-
1. A method for performing a network address lookup for a routing table having prefixes of a plurality of different prefix lengths, the method comprising:
-
(a) providing a Bloom filter programmed with the prefixes corresponding to all of the different prefix lengths in the routing table without having to expand any of the prefixes programmed into the Bloom filter; and (b) performing membership probes into the Bloom filter using candidate prefix values for a given network address, wherein; there are g different prefix lengths in the routing table and g candidate prefix values for each given network address; the Bloom filter is programmed by hashing each prefix in the routing table into k hash values corresponding to k hash functions the Bloom filter is implemented using k Bloom sub-filters; each Bloom sub-filter is associated with a different set of g hash functions; and each hash value in a set is associated with a different prefix length. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. An apparatus for performing a network address lookup for a routing table having prefixes of a plurality of different prefix lengths, the apparatus comprising:
-
a Bloom filter adapted to be programmed with the prefixes corresponding to all of the different prefix lengths in the routing table without having to expand any of the prefixes programmed into the Bloom filter; and a routing processor adapted to perform membership probes into the Bloom filter using candidate prefix values for a given network address, wherein; there are g different prefix lengths in the routing table and g candidate prefix values for each given network address; the Bloom filter is programmed by hashing each prefix in the routing table into k hash values corresponding to k hash functions; the Bloom filter is implemented using k Bloom sub-filters; each Bloom sub-filter is associated with a different set of g hash functions; and each hash value in a set is associated with a different prefix length. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25)
-
-
26. A method for performing a network address lookup for a routing table having prefixes of a plurality of different prefix lengths, the method comprising:
-
(a) providing a Bloom filter programmed with the prefixes corresponding to all of the different prefix lengths in the routing table without having to expand any of the prefixes programmed into the Bloom filter; (b) performing membership probes into the Bloom filter using candidate prefix values for a given network address; (c) accessing a prefix table based on one or more matching candidate prefix values identified in step (b), wherein, if at least a specified number of longest, matching candidate prefix values identified in step (b) are determined to be false-positive matches in step (c), then step (c) further comprises adding the longest, false-positive matching candidate prefix value to the prefix table along with true next-hop information for the given network address.
-
-
27. A method for performing a network address lookup for a routing table having prefixes of a plurality of different prefix lengths, the method comprising:
-
(a) providing a Bloom filter programmed with the prefixes corresponding to all of the different prefix lengths in the routing table without having to expand any of the prefixes programmed into the Bloom filter; (b) performing membership probes into the Bloom filter using candidate prefix values for a given network address; (c) accessing a prefix table based on one or more matching candidate prefix values identified in step (b), wherein at least one bucket in the prefix table identifies two or more different prefix values, such that the two or more different prefix values are retrieved in one prefix table lookup.
-
-
28. A method for performing a network address lookup for a routing table having prefixes of a plurality of different prefix lengths, the method comprising:
-
(a) providing a Bloom filter programmed with the prefixes corresponding to all of the different prefix lengths in the routing table without having to expand any of the prefixes programmed into the Bloom filter; (b) performing membership probes into the Bloom filter using candidate prefix values for a given network address; and (c) accessing a prefix table based on one or more matching candidate prefix values identified in step (b), wherein the prefix table is hashed using two or more hash functions per candidate prefix value.
-
-
29. A method for performing a network address lookup for a routing table having prefixes of a plurality of different prefix lengths, the method comprising:
-
(a) providing a Bloom filter programmed with the prefixes corresponding to all of the different prefix lengths in the routing table without having to expand any of the prefixes programmed into the Bloom filter; and (b) performing membership probes into the Bloom filter using candidate prefix values for a given network address, wherein step (b) comprises; (b1) hashing each candidate prefix value using a set of seed hash functions to generate a set of seed hash values for the candidate prefix value; and (b2) combining two or more of the seed hash values one or more different ways to generate one or more additional hash values for the candidate prefix value. - View Dependent Claims (30)
-
-
31. An apparatus for performing a network address lookup for a routing table having prefixes of a plurality of different prefix lengths, the apparatus comprising:
-
a Bloom filter adapted to be programmed with the prefixes corresponding to all of the different prefix lengths in the routing table without having to expand any of the prefixes programmed into the Bloom filter; and a routing processor adapted to perform membership probes into the Bloom filter using candidate prefix values for a given network address, wherein; the apparatus is operably coupled to a prefix table that is accessed by the apparatus based on one or more matching candidate prefix values identified during the membership probes; and if at least a specified number of longest, matching candidate prefix values are determined to be false-positive matches, then the apparatus adds the longest, false-positive matching candidate prefix value to the prefix table along with true next-hop information for the given network address.
-
-
32. An apparatus for performing a network address lookup for a routing table having prefixes of a plurality of different prefix lengths, the apparatus comprising:
-
a Bloom filter adapted to be programmed with the prefixes corresponding to all of the different prefix lengths in the routing table without having to expand any of the prefixes programmed into the Bloom filter; and a routing processor adapted to perform membership probes into the Bloom filter using candidate prefix values for a given network address, wherein; the apparatus is operably coupled to a prefix table that is accessed by the apparatus based on one or more matching candidate prefix values identified during the membership probes; at least one bucket in the prefix table identifies two or more different prefix values, such that the two or more different prefix values are retrieved in one prefix table lookup by the apparatus; and the apparatus is adapted to hash into the prefix table using two or more hash functions per candidate prefix value.
-
-
33. An apparatus for performing a network address lookup for a routing table having prefixes of a plurality of different prefix lengths, the apparatus comprising:
-
a Bloom filter adapted to be programmed with the prefixes corresponding to all of the different prefix lengths in the routing table without having to expand any of the prefixes programmed into the Bloom filter; and a routing processor adapted to perform membership probes into the Bloom filter using candidate prefix values for a given network address, wherein the apparatus is adapted to; (1) hash each candidate prefix value using a set of seed hash functions to generate a set of seed hash values for the candidate prefix value; and (2) combine two or more of the seed hash values one or more different ways to generate one or more additional hash values for the candidate prefix value. - View Dependent Claims (34)
-
Specification