Partially-ordered cams used in ternary hierarchical address searching/sorting
First Claim
1. A binary content addressable memory (CAM) for storing ternary hierarchical addresses of a communication system therein and wherein each ternary hierarchical address comprises a communication system address and associated communication system address mask, said binary CAM comprising a plurality of entries wherein:
- each entry comprises;
(1) a first value comprising the logically ANDed communication system address and its associated mask; and
(2) a second value comprising the logically ANDed complement of said communication system address and its associated mask; and
wherein each entry is positioned in said CAM based on the number of contiguous ones in said associated mask.
1 Assignment
0 Petitions
Accused Products
Abstract
An apparatus and method that utilizes partial ordering of ternary hierarchical addresses and their associated masks entries in both binary and ternary content addressable memories (CAMs) for providing fast searches and while reducing address table size used in the processing of communication system (e.g., Internet Protocol (IP), layer-3 switches and ATM switches using E.164 addressing) addresses for identifying the source and destination of each digital packet data.
19 Citations
32 Claims
-
1. A binary content addressable memory (CAM) for storing ternary hierarchical addresses of a communication system therein and wherein each ternary hierarchical address comprises a communication system address and associated communication system address mask, said binary CAM comprising a plurality of entries wherein:
-
each entry comprises; (1) a first value comprising the logically ANDed communication system address and its associated mask; and (2) a second value comprising the logically ANDed complement of said communication system address and its associated mask; and wherein each entry is positioned in said CAM based on the number of contiguous ones in said associated mask. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A binary content addressable memory (CAM) for storing ternary hierarchical addresses of a communication system therein and wherein each ternary hierarchical address comprises a communication system address and associated communication system address mask, said binary CAM comprising a plurality of entries wherein:
-
each entry comprises a two bit representation for each bit in said ternary hierarchical address; and wherein each entry is positioned in said CAM based on the number of contiguous ones in said associated mask. - View Dependent Claims (8, 9)
-
-
10. A method for storing ternary hierarchical addresses of a communication system in a binary CAM wherein each ternary hierarchical address comprises a communication system address and associated communication system address mask, said method comprising the steps of:
-
logically ANDing each communication system address and its associated mask to form a first value; logically ANDing the complement of each communication system address and its associated address mask to form a second value; and storing said first value and said second value in an entry in said binary CAM based on the number of contiguous ones in said address mask. - View Dependent Claims (11, 12, 13, 14, 15)
-
-
16. A method of storing for storing ternary hierarchical addresses of a communication system in a binary CAM wherein each ternary hierarchical address comprises a communication system address and associated communication system address mask, said method comprising the steps of:
-
(a) generating a CAM entry for each ternary hierarchical address by; (1) identifying that portion of each ternary hierarchical address that are don'"'"'t cares; (2) representing each bit in said ternary hierarchical address using bits in said CAM wherein; (i) a 1 in said ternary hierarchical address is represented as 10 in said CAM; (ii) a 0 in said ternary hierarchical address is represented as 01 in said CAM; and (iii) a don'"'"'t care in said ternary hierarchical address is represented as 00 in said CAM; (b) positioning each CAM entry in said CAM based on the number of contiguous ones in said associated mask. - View Dependent Claims (17)
-
-
18. A method of searching a binary CAM to find a match for a ternary hierarchical address of a communication system, said binary CAM comprising entries of ternary hierarchical addresses, each ternary hierarchical address entry comprising a communication system address and an associated communication system address mask, said entries of ternary hierarchical addresses being stored in said binary CAM as a first value and a second value, said first value comprising the communication system address logically ANDed with said address mask and said second value comprising the complement of said communication system address logically ANDed with said address mask, and wherein all of said entries are ordered in said binary CAM based on the number of contiguous ones in said mask, said method comprising the steps of:
-
(a) loading a first register with the communication system address to be searched along with the complement of the communication system address; (b) loading a second register with the communication system address to be searched along with the complement of the communication system address; (c) associating each bit of said first register with one bit of said second register and with one bit of each entry in said binary CAM; (d) determining whether a bit match occurs between corresponding bits of said first register and each entry in said binary CAM as qualified by said corresponding bit of said second register; and (e) obtaining a match between the desired ternary hierarchical address and one of said entries based on the greatest number of matches of corresponding bits of said first register and each entry in said binary CAM. - View Dependent Claims (19, 20, 21)
-
-
22. A method of searching a binary CAM to find a match for a ternary hierarchical address of a communication system, said binary CAM comprising entries of ternary hierarchical addresses, each ternary hierarchical address comprising a communication system address and an associated communication system address mask, each ternary hierarchical address entry being stored in said binary CAM whereby 10 is stored in said entry for every 1 in said ternary hierarchical address, 01 is stored in said entry for every 0 in said ternary hierarchical address, and 00 is stored in said entry for every don'"'"'t care in said ternary hierarchical address, and wherein all of said entries are ordered in said binary CAM based on the number of contiguous ones in said mask, said method comprising the steps of:
(a) loading a first register and second register with the communication system address to be searched by; (1) loading a 10 in said first and second registers for every 1 in the ternary hierarchical address to be searched; (2) loading a 01 in said first and second registers for every 0 in the ternary hierarchical address to be searched; (3) loading a 00 in said first and second registers for every don'"'"'t care in the ternary hierarchical address to be searched; (b) associating each bit of said first register with one bit of said second register and with one bit of each entry in said binary CAM; (c) declaring a bit match between corresponding bits of said first register and each entry in said binary CAM; (1) if the corresponding bit in said second register is a 1;
or(2) if the corresponding bit in said second register is a 0 and the corresponding bits of said first register and each entry in said binary CAM are identical; and (d) obtaining a match between the desired ternary hierarchical address and one of said entries based on the greatest number of matches of corresponding bits of said first register and each entry in said binary CAM.
-
23. A method for maintaining a sorted CAM to enable longest matches in a single search cycle when hierarchical addresses are added to, or deleted from, the CAM in a communication system utilizing hierarchical addresses and associated address masks, said method comprising the steps of:
-
(a) segmenting the CAM into blocks wherein each block corresponds to a single hierarchical mask and wherein said blocks are arranged in the CAM such that the lowest CAM addresses contain the highest hierarchical masks and the highest CAM addresses contain the lowest hierarchical masks; (b) storing hierarchical addresses according to said block having a corresponding hierarchical mask; and (c) tracking the first address and the next free address of each of said blocks and the size of each of said blocks.
-
-
24. A content addressable memory (CAM) of a communications system utilizing ternary hierarchical addressing and associated address masks, said CAM comprising:
a plurality of address entries and associated address masks that are arranged in said CAM by mask number, with address entries having the highest mask number being located at address entry locations at the top of the CAM and address entries having the lowest mask number being located at address entry locations at the bottom of the CAM, said mask number being defined as the number of contiguous ones in an associated address mask. - View Dependent Claims (27, 28)
-
25. An apparatus for storing a plurality of address entries and associated address masks in a communication system utilizing ternary hierarchical addressing and associated address masks, said apparatus comprising:
-
a binary CAM; a binary-encoded ternary converter coupled to said binary CAM wherein said binary-encoded ternary converter converts each ternary value into a corresponding binary-encoded ternary value to form said address entries; and wherein said plurality of address entries and associated address masks are arranged in said binary CAM in a plurality of address entry groups, each address entry group having a respective mask number, with said address entry group having the highest mask number being located at the highest location of the CAM and said address entry group having the lowest mask number being located at the lowest location of the CAM, said mask number being defined as the number of contiguous ones in an associated address mask. - View Dependent Claims (29)
-
-
26. A method for accelerating the routing of hierarchical addressing in a communication system which utilizes ternary hierarchical addressing and associated address masks, said method comprising the steps of:
-
(a) obtaining communication system hierarchical addresses and associated masks to form a plurality of address entries; and (b) storing said plurality of address entries in a content-addressable memory (CAM) device by mask number wherein said mask number is defined as the number of contiguous ones in an associated address mask and wherein address entries having the highest mask number are stored in address entry locations at the highest location of the CAM and address entries having the lowest mask number are stored at address entry locations at the lowest location of the CAM. - View Dependent Claims (30, 31, 32)
-
Specification