Method for longest prefix matching in a content addressable memory
First Claim
1. A method of determining which of a plurality of CIDR addresses stored in a ternary content addressable memory (CAM) has a longest matching prefix with a comparand of said ternary CAM, each of said CIDR addresses having first and second address fields of varying lengths and having a prefix value indicative of a number of bits in said first address field, said ternary CAM having a plurality of CAM words and a corresponding plurality of mask words, said method comprising the steps of:
- loading said plurality of CIDR addresses into respective ones of said plurality of CAM words in a predetermined order such that increasing numerical CAM word addresses correspond to CIDR addresses having decreasing prefix values;
for each CIDR address loaded in the previous step, setting bit values of said corresponding mask word according to said prefix of said CIDR address such that bits of said second address field of each CIDR address are individually masked by said corresponding mask word; and
comparing said comparand to said respective first address fields of said plurality of CIDR addresses in a single compare operation.
11 Assignments
0 Petitions
Accused Products
Abstract
A ternary content addressable memory is employed to perform a longest prefix match search. Each CAM cell within the ternary CAM has an associated mask cell so that the CAM cells may be individually masked so as to effectively store either a logic 0, a logic 1, or a don'"'"'t care for compare operations. For example, Classless Inter-Domain Routing (CIDR) addresses are pre-sorted and loaded into the ternary CAM such that the CAM entry having the longest prefix is located at the lowest numerical address or index of the ternary CAM, and the CAM entry with the shortest prefix is located at the highest numerical address or index. The prefix portions of the CIDR addresses are used to set the mask cells associated with each CAM entry such that during compare operations, only the unmasked prefix portion of each CAM entry is compared to an incoming destination address stored as the CAM search key. Since each CAM entry is masked according to an associated prefix value, the ternary CAM requires only one search operation to locate the CAM entry having the longest matching prefix.
-
Citations
7 Claims
-
1. A method of determining which of a plurality of CIDR addresses stored in a ternary content addressable memory (CAM) has a longest matching prefix with a comparand of said ternary CAM, each of said CIDR addresses having first and second address fields of varying lengths and having a prefix value indicative of a number of bits in said first address field, said ternary CAM having a plurality of CAM words and a corresponding plurality of mask words, said method comprising the steps of:
-
loading said plurality of CIDR addresses into respective ones of said plurality of CAM words in a predetermined order such that increasing numerical CAM word addresses correspond to CIDR addresses having decreasing prefix values;
for each CIDR address loaded in the previous step, setting bit values of said corresponding mask word according to said prefix of said CIDR address such that bits of said second address field of each CIDR address are individually masked by said corresponding mask word; and
comparing said comparand to said respective first address fields of said plurality of CIDR addresses in a single compare operation. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
Specification