芯片设计:TCAM基础知识
发布时间:2023-07-24来源: FPGA自习室
随着路由器接口速率的提高,传统的软件路由查找机制已经不能满足要求。目前常见的硬件解决方案是采用TCAM实现高速路由查找。由于路由查找具有最长前缀匹配的特点,因此采用TCAM 需要解决路由表如何存储和管理等问题。
一、TCAM原理:
TCAM (ternary content addressable memory)是一种三态内容寻址存储器,主要用于快速查找ACL、路由等表项。
它是从CAM的基础上发展而来的。一般的CAM存储器中每个bit位的状态只有两个,“0”或“1”,而TCAM中每个bit位有三种状态,除掉“0”和“1”外,还有一个“don’t care”状态,所以称为“三态”,它是通过掩码来实现的,正是TCAM的这个第三种状态特征使其既能进行精确匹配查找,又能进行模糊匹配查找,而CAM没有第三种状态,所以只能进行精确匹配查找。
图1 CAM 基本存储单元
图2 TCAM 基本存储单元
二、TCAM的应用范围
1、 ATM (Asynchronous Transfer Mode) 交换:
1)虚拟路径的标识符(VPI)、虚拟通道的标识符(VCI)翻译
2)ATM-to-MLPS 或者 ATM-to-TCP -Flow 映射
2、 以太网交换:
1)转发2层MAC地址查找
2)地址解析协议
3、 新兴协议和功能:
1)多协议标签交换(MPLS)标签搜索
4、 包分类:
1)强制执行安全性
2)强制执行不同的策略
3)服务质量
三、典型应用场景实例
典型的TCAM子系统查找过程:
准备查找:
NP从报文头提取信息,整理成与TCAM中待查表一致的数据格式,称为Key。
查找:
将Key送入TCAM与待查表中的所有表象对照,匹配到后将对应地址INDEX送到RAM中。
查找后处理:
最后RAM将对该报文的处理信息DATA返回NP.
3.1 典型应用之路由查找
3.2 典型应用之包分类
包的分类可以决定这个包是否应该被转发,如果要被转发,要给予什么样的优先级。
四、查找方法对比:
4.1 传统的查找方法
传统的查找方法主要有:线型查找法、二叉树查找法、哈希表查找等,这些查找方法都是基于SRAM的软件查找方法,共同特点是查找速度慢。
线型查找法需要遍历表中的所有表项;二叉树查找法需要遍历树中大多数节点,而且查找速度受树的深度影响较大;哈希表查找法是软件查找中计较快的一种方法,它是根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位置称为哈希地址或散列地址。虽然哈希表查找法相对来说比较快,但还是满足不了高速实时通信系统(如40G/100G POS)的极速查找需求。
4.2 基于CAM查找方法
CAM 能够在一个硬件时钟周期内完成关键字的精确匹配查找。我们常用的随机存储器通过输入地址来返回该地址处所对应的数据信息,但是CAM 的访问方式不同,它只需要输入关键字的内容,CAM 就会将此关键字与CAM 中所有的表项同时进行匹配比较,最后返回匹配表项在CAM 中所对应的地址。它是一种精确匹配,不使用掩码。
传统CAM只能执行精确匹配,一般不适用于IP路由表。如果要使用CAM来进行最长前缀匹配路由查找,可以让每一类可能的地址前缀长度使用一个CAM,每个CAM保存对应长度的所有前缀的集合。对于IPv4来说(IP地址位宽为32bit,IPv6地址位宽为128bit),则一共需要使用32个CAM。这种方法有一个明显缺点,即在对地址前缀长度具体分布没有准确了解之前,为了保证能够存W个前缀的表项,每个CAM都需要有W个表项的空间,因此,CAM存储空间的利用率较低。
4.3 基于TCAM查找方法
为了能够克服CAM的缺点,又提出了一种CAM 实现机制TCAM (ternary CAM) ,TCAM 的优点是它所保存的表项在长度要求上非常灵活,可以在同一个TCAM 芯片中保存任意长度的关键字表项。
TCAM 中每一个表项都是以<数据、掩码>序偶的形式保存,假设地址关键字的长度范围从1 到W,那么数据和掩码分别占用W 比特。与传统CAM的区别是,后者表项的各个比特位只能是0或1,而前者的则有三个状态:0,1或X。X是一种无关态,可以是“0”或“1”,它由局部掩码来实现,而且可以表示可变长前缀。可以利用此性质对路由表进行压缩,减少对TCAM的占用。
最高优先级匹配:我们就需要保证在TCAM 的低地址存储前缀较长的关键字表项,而在地址高的区域存储前缀较短的关键字表项。由于有”don’t care” 即有三态的存在,所以key值可能有多个匹配,当一个key存在多个匹配的时候,匹配经过逻辑单元比较返回匹配程度最高的表项(在ipv4经常遇到)
五、结论
基于硬件的TCAM查找法,整个表项空间的所有数据在同一时刻被查询,查找速度不受表项空间数据大小影响,每个时钟周期完成一次查找,平均查找速度是基于SRAM算法查找的6倍,最坏情况下,能达到128倍。
TCAM 具有速度快、实现简单的优点,但是它也具有三个不足之处:
第一、与一般的随机存储器RAM 相比, 单位比特的TCAM 更为昂贵,而且存储芯片的容量相对要小一些;
第二、由于TCAM 使用的是 并行匹配比较方式,所以TCAM 芯片的 功耗较大。 查找过程所有关键字表项都进行了比较,但是实际能够匹配上的关键字只是几项,因此 大部分的比较操作都被浪费了;
第三、 TCAM 需要保证前缀较长的关键字保存在前缀较短的关键字之前,这种关键字之间的顺序关系使得TCAM的关键字更新工作变得相对复杂了。例如,当加入一条新的表项时,为了能够仍然保持关键字间的顺序关系,就需要移动一些前缀长度比新表项要长的一些表项,因此TCAM 的更新操作较为复杂(具体地址管理方法此处不详细说明)。
【免责声明】:本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
- 原文标题:
- 芯片设计:TCAM基础知识
- 文章来源:
- FPGA自习室