TCAM学习笔记
一、基本定义
TCAM是一种三态内容寻址存储器,主要用于快速查找ACL、路由等表项。它是从CAM(Content-Addressable Memory)的基础上发展而来的,但与CAM相比,TCAM的每个bit位有三种状态:“0”、“1”和“don’t care”(或表示为“X”)。
二、核心组件
- 存储单元:TCAM由多个存储单元组成,每个存储单元都包含一个标签(即用于匹配的关键字)和对应的数据。
- 掩码(Mask):TCAM中的“don’t care”状态是通过掩码来实现的。掩码用于指示哪些bit位在匹配过程中应该被忽略(即“don’t care”状态)。
三、工作原理
- 数据输入:当需要查找某个数据时,将查询数据(称为Key)输入到TCAM中。
- 并行比较:TCAM中的所有存储单元都会与输入的Key进行并行比较。这种并行比较的特性使得TCAM能够在单个时钟周期内完成整个查找过程。
- 匹配结果输出:如果找到匹配的存储单元,TCAM会输出该存储单元对应的数据(即匹配结果)。
四、特点
- 快速查找:由于TCAM采用并行比较的方式,因此具有极快的查找速度。
- 三态逻辑:TCAM中的每个bit位都有三种状态,使其能够支持更灵活的匹配操作,如模糊匹配。
- 可编程性:TCAM的标签和数据都可以根据需要进行编程设置,以适应不同的应用场景。
五、典型应用场景
- 路由查找:在路由器中,TCAM用于快速查找路由表结果,以实现高效的数据包转发。
- 访问控制列表(ACL)匹配:在防火墙等安全设备中,TCAM用于匹配ACL规则,以实施安全策略。
- ATM Switching设备中的VCI/VPI转发和ATM-to-MPLS or ATM-to-TCP-Flow地址映射表项的存储和查找
- Ethernet Switching设备中的二层MAC地址、ARP/RARP解析和三层IP路由表项的存储和查找;
- Emerging Protocols and functions方面的MPLS label表项的存储和查找;
- Packet Classification业务中的Enforce security、Enforce departmental policies和QOS检测表项的存储和查找
- 安全防护设备中的FIB/LBT、MFIB及ACL表项存储和查找。
六、传统方法的局限性
传统的表项查找方法有很多,主要有:线型查找法、二叉树查找法、哈希表查找等,这些查找方法都是基于SRAM的软件查找方法,共同特点是查找速度慢。
(1)线型查找法需要遍历表中的所有表项;
(2)二叉树查找法需要遍历树中大多数节点,而且查找速度受树的深度影响较大;
(3)哈希表查找法是软件查找中较快的一种方法,它是根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位置称为哈希地址或散列地址。虽然哈希表查找法相对来说比较快,但还是满足不了高速实时通信系统(如40G/100G POS)的极速查找需求。
七、TCAM的优势
基于硬件的TCAM查找法正是在这种背景下提出的,用此方法进行查找时,整个表项空间的所有数据在同一时刻被查询,查找速度不受表项空间数据大小影响,每个时钟周期完成一次查找,平均查找速度是基于SRAM算法查找的6倍,最坏情况下,能达到128倍。
八、典型的TCAM子系统
网络处理器NP从报文头中把需要查找的信息提取出来,这个待查找的信息要整理成跟TCAM所存表项的格式一致,称之为KEY。KEY作为TCAM的输入数据,经过与表项对照,如果有匹配的表项,就把该表项所在的地址作为输出,称之为Index。然后将Index作为RAM的地址输入,从RAM里得到所需查找的信息,称之为Data。最后将Data返回给发起查找操作的NP,至此完成一次查找操作。
九、表项
表项掩码(三态的实现方式/模糊匹配):
TCAM的基本单元为待查找的表项,每个表项包括合法位Valid,表项数据Data Word、表项掩码Local Mask。 Local Mask某位为1(有的厂商规定是0)时,相对应的Data Word位被屏蔽,不参与比较。
精确匹配:
不使用掩码,所有的掩码位是0,进行精确匹配。
十、最高优先级匹配
由于有“don’t care”即三态的存在,所以一个Key值可能有多个匹配。
当一个Key存在多个匹配的时候,匹配经过逻辑单元比较返回匹配程度最高的表项。(在IPV4路由中经常出现)