High-speed MAC address search engine
First Claim
1. A method of searching for a computer address in an address table, the computer address having a bit size n, the steps comprising:
- partitioning the bit size n computer address into an upper set of n-m bits and a lower set of m bits, wherein m comprises a bit size less than bit size n;
generating a search index by compressing the upper set of n-m bits to obtain a compressed value of the computer address, wherein the search index comprises a number of bits equal to the number of bits of the lower set of m bits;
accessing a primary address record corresponding to the computer address in a primary address table, the primary address record being accessed by using the search index to locate the primary address record, wherein the primary address record includes the computer address, a port number associated with the computer address, and a link that that specifies the location of an initial secondary address record in a secondary address table;
comparing the search index to the primary address record by;
selecting the m low order bits of the combination of the search index and the lower set of m bits, wherein a first value is determined, decompressing the compressed value of the address contained in the primary address record to obtain a second value, and comparing the first value to the second value; and
if the first value does not equal the second value, then accessing the initial secondary address record using the link, wherein the initial secondary address record includes a respective address entry of the bit size n-m, a port number associated with the computer address, and a link to a subsequent secondary address record of the same hash family.
11 Assignments
0 Petitions
Accused Products
Abstract
Disclosed is an apparatus and method for storing and searching computer node addresses in a computer network system. In one embodiment, the apparatus comprises a frame forwarding device such as a switch. The switch includes two MAC address tables including a primary MAC address table and secondary MAC address table both for storing and searching MAC addresses. The primary table stores records that contain compressed values of MAC addresses. The records are contained in storage locations that are referenced using the compressed value of the MAC address as a search index. In order to account for searching collisions that may result from different MAC addresses compressing to the same value, each record in the primary address table is linked to a chain of records in the secondary table. The records in the secondary table store the full value of the MAC address. Each chain of records in the secondary address table contains MAC addresses the present invention.
173 Citations
54 Claims
-
1. A method of searching for a computer address in an address table, the computer address having a bit size n, the steps comprising:
-
partitioning the bit size n computer address into an upper set of n-m bits and a lower set of m bits, wherein m comprises a bit size less than bit size n;
generating a search index by compressing the upper set of n-m bits to obtain a compressed value of the computer address, wherein the search index comprises a number of bits equal to the number of bits of the lower set of m bits;
accessing a primary address record corresponding to the computer address in a primary address table, the primary address record being accessed by using the search index to locate the primary address record, wherein the primary address record includes the computer address, a port number associated with the computer address, and a link that that specifies the location of an initial secondary address record in a secondary address table;
comparing the search index to the primary address record by;
selecting the m low order bits of the combination of the search index and the lower set of m bits, wherein a first value is determined, decompressing the compressed value of the address contained in the primary address record to obtain a second value, and comparing the first value to the second value; and
if the first value does not equal the second value, then accessing the initial secondary address record using the link, wherein the initial secondary address record includes a respective address entry of the bit size n-m, a port number associated with the computer address, and a link to a subsequent secondary address record of the same hash family. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A storage and search unit for computer addresses each having a fixed bit size n, the unit comprising:
-
a primary address table stored within a first memory of a first bus width, the primary address table configured to store a plurality of primary address records, each primary address record including a respective address entry of a first bit size less than the fixed bit size n, a port number associated with the compressed address entry and a first link that links each primary address record to a corresponding chain of secondary address records in a second address table;
a secondary address table stored within a second memory separate from the first memory, the second address table configured to store a plurality of secondary address records, each secondary address record including a respective address entry of the first bit size less than the fixed bit size n, a port number associated with the computer address, and a link that links each secondary address record to a corresponding secondary address record in the second address table to thereby form one or more linked chains of secondary address records, wherein each chain of secondary address records contains full address entries of the same hash family;
a software search module configured to store and access the primary address records and secondary address records, wherein the software module stores each primary address record in a location defined by the value of the respective compressed address entry. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20)
-
-
21. Computer readable software stored within a frame forwarding device of a computer network, the computer readable software code including a set of instructions for causing the device to search for a computer address in an address table, the computer address having a bit size n, the instruction further causing the device to:
-
partition the bit size n computer address into an upper set of n-m bits and a lower set of m bits, wherein m comprises a bit size less than bit size n;
generate a search index by compressing the upper set of n-m bits to obtain a compressed value of the computer address, wherein the search index comprises a number of bits equal to the number of bits of the lower set of bits;
access a primary address record corresponding to the computer address in a primary address table, the primary address record being accessed by using the search index to locate the primary address record, wherein the primary address record includes the computer address, a port number associated with the computer address, and a link that that specifies the location of an initial secondary address record in a secondary address table;
compare the search index to the primary address record by;
selecting the m low order bits of the combination of the search index and the lower set of m bits, wherein a first value is determined, decompressing the compressed value of the address contained in the primary address record to obtain a second value, and comparing the first value to the second value; and
if the first value does not equal the second value, then access the initial secondary address record using the link, wherein the initial secondary address record includes a respective address entry of the first bit size less than the fixed bit size n, a port number associated with the computer address, and a link to a subsequent secondary address record of the same hash family. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28)
-
-
29. A method of searching for a computer address in an address table, the computer address having a bit size n, the steps comprising:
-
partitioning the bit size n computer address into an upper set of n-m bits and a lower set of m bits, wherein m comprises a bit size less than bit size n;
generating a search index by compressing the upper set of n-m bits to obtain a compressed value of the computer address, wherein the search index comprises a number of bits equal to the number of bits of the lower set of bits;
accessing an address record corresponding to the computer address in an address table, the address record being accessed by using the search index to locate the address record, wherein the address record includes the computer address, and a port number associated with the computer address; and
comparing the search index to the address record by;
selecting the m low order bits of the combination of the search index and the lower set of m bits, wherein a first value is determined, decompressing the compressed value of the address contained in the address record to obtain a second value, and comparing the first value to the second value. - View Dependent Claims (30, 31, 32)
-
-
33. A method of searching for a computer address in an address table, the computer address having a bit size n, the steps comprising:
-
generating a search index by compressing the computer address to obtain a compressed value of the address, wherein the search index comprises a first number of bits less than the bit size n;
accessing at least two primary address records corresponding to an equal number of computer addresses stored in a primary address table, the at least two primary address records being accessed by using the search index to locate the primary address records, wherein the primary address records include the computer addresses, a port number associated with each of the computer addresses, and a link that specifies the location of an initial secondary address record in a secondary address table;
comparing the search index to the primary address records simultaneously by;
decompressing the search index to obtain a first value, decompressing the compressed values of the addresses contained in each of the primary address records, and comparing the first value to the values of the addresses of the primary address records; and
if the first value does not equal any of the values of the addresses of the primary address records, then accessing the initial secondary address record using the link, wherein the initial secondary address record includes a computer address, a port number associated with the computer address, and a link to a subsequent secondary address record of the same hash family. - View Dependent Claims (34, 35, 36, 37, 38, 39, 40)
-
-
41. A method for forwarding a frame to a computer address using classification based upon multiple fields in a header, the header having a first field of bit size n-m and a second field having a bit size m, the steps comprising:
-
concatenating the first field of bit size n-m and the second field of bit size m into a bit size n, wherein m comprises a bit size less than bit size n;
generating a search index by compressing the concatenated bit size n to obtain a compressed value of the concatenated fields, wherein the search index comprises a number of bits equal to the number of bits of the second field bit size m;
accessing a primary record corresponding to the computer address in a primary table, the primary record being accessed by using the search index to locate the primary record, wherein the primary record includes the computer address, a port number associated with the computer address, and a link that that specifies the location of an initial secondary record in a secondary table;
comparing the search index to the primary record by;
selecting the concatenated fields of bit size m of the search index and the second field of bit size m, wherein a first value is determined, decompressing the compressed value of the address contained in the primary record to obtain a second value, and comparing the first value to the second value; and
if the first value does not equal the second value, then accessing the initial secondary record using the link, wherein the initial secondary record includes a respective computer address entry of the bit size n-m, a port number associated with the computer address, and a link to a subsequent secondary record of the same hash family. - View Dependent Claims (42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54)
-
Specification