TCAM

TCAM 是三态内容可寻址存储器(Ternary Content Addressable Memory)的缩写。它是一种特殊的 RAM,使用内容而不是地址进行搜索。在TCAM中,每个存储位有三种状态:“0”,“1”和“don’t care”。这使得TCAM可以进行更复杂的搜索操作,例如范围查询或前缀匹配。,可以同时比较多个输入和输出位,从而在非常短的时间内确定匹配结果。 TCAM 的优势在于其高速的匹配能力和并行比较的能力。它可以快速地进行字符串匹配、前缀匹配等操作,这对于路由器中的路由表查找、ACL(访问控制列表)匹配等场景非常重要。

TCAM中每一个表项都是以 <数据、掩码> 序偶的形式保存,假设地址关键字的长度范围从1到N,那么数据和掩码分别占用N比特。对于关键字长度为Y(1≤Y≤N)的表项来说,它的地址后N-Y个比特可以是0或1;它的掩码的前Y个比特为1,剩下的N-Y个比特为01。

在进行前缀匹配时,TCAM可以利用这种特性。例如,假设我们有一个IP地址前缀10*,我们可以用 <10000,11000> 来表示这个前缀1。当我们需要查找一个IP地址时,我们将这个IP地址作为关键字输入到TCAM中。TCAM会将这个关键字与所有的表项进行匹配。如果一个表项的数据部分和关键字匹配,并且该表项的掩码部分对应的关键字位是1,那么这个表项就被认为是匹配的1。

由于可能有多个表项与输入的关键字匹配,因此TCAM规定在所有匹配的表项中选取地址最低的表项作为最后结果。而为了符合最长前缀路由的查找,在TCAM的低地址存储前缀较长的关键字,在高地址存储前缀较短的关键字1