0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

深度剖析TCAM基础知识

FPGA自习室 来源:FPGA自习室 作者:FPGA自习室 2021-06-15 16:49 次阅读

引言:

随着路由器接口速率的提高,传统的软件路由查找机制已经不能满足要求。目前常见的硬件解决方案是采用TCAM实现高速路由查找。由于路由查找具有最长前缀匹配的特点,因此采用TCAM 需要解决路由表如何存储和管理等问题。

一、TCAM原理:

TCAM (ternary content addressable memory)是一种三态内容寻址存储器,主要用于快速查找ACL、路由等表项。

它是从CAM的基础上发展而来的。一般的CAM存储器中每个bit位的状态只有两个,“0”或“1”,而TCAM中每个bit位有三种状态,除掉“0”和“1”外,还有一个“don’t care”状态,所以称为“三态”,它是通过掩码来实现的,正是TCAM的这个第三种状态特征使其既能进行精确匹配查找,又能进行模糊匹配查找,而CAM没有第三种状态,所以只能进行精确匹配查找。

二、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)服务质量

三、典型应用场景实例

准备查找:

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 的更新操作较为复杂(具体地址管理方法此处不详细说明)。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    447

    文章

    47816

    浏览量

    409191
  • 路由器
    +关注

    关注

    22

    文章

    3505

    浏览量

    111345
  • CAM
    CAM
    +关注

    关注

    5

    文章

    198

    浏览量

    42584
  • MPLS
    +关注

    关注

    0

    文章

    127

    浏览量

    23933
  • TCAM
    +关注

    关注

    0

    文章

    19

    浏览量

    14005

原文标题:芯片设计:TCAM基础知识

文章出处:【微信号:FPGA_Study,微信公众号:FPGA自习室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    射频与微波基础知识

    射频与微波基础知识
    的头像 发表于 01-16 10:05 272次阅读
    射频与微波<b class='flag-5'>基础知识</b>

    电气技术基础知识

    电气技术基础知识
    的头像 发表于 12-14 09:11 748次阅读
    电气技术<b class='flag-5'>基础知识</b>

    电子元器件的基础知识

    电子元器件的基础知识
    的头像 发表于 12-04 10:42 2700次阅读
    电子元器件的<b class='flag-5'>基础知识</b>

    深度剖析 IGBT 栅极驱动注意事项

    深度剖析 IGBT 栅极驱动注意事项
    的头像 发表于 11-24 14:48 312次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>剖析</b> IGBT 栅极驱动注意事项

    红外热成像基础知识

    电子发烧友网站提供《红外热成像基础知识.pdf》资料免费下载
    发表于 11-01 09:44 3次下载
    红外热成像<b class='flag-5'>基础知识</b>

    电路基础知识总结

    电路基础知识介绍
    的头像 发表于 08-30 09:49 3706次阅读
    电路<b class='flag-5'>基础知识</b>总结

    运放-2. 基础知识

    运放基础知识
    的头像 发表于 08-18 10:59 1842次阅读
    运放-2. <b class='flag-5'>基础知识</b>

    无功补偿原理基础知识详解

    无功补偿原理基础知识详解
    的头像 发表于 08-11 09:48 536次阅读
    无功补偿原理<b class='flag-5'>基础知识</b>详解

    EMC基础知识讲解解析

    EMC基础知识分享
    发表于 06-30 15:37 10次下载

    讲解电路的基础知识

    下文总结了电路基础知识点。
    的头像 发表于 06-27 17:12 1080次阅读
    讲解电路的<b class='flag-5'>基础知识</b>

    C语言基础知识(5)--循环语句

    C语言基础知识(5)--循环语句
    的头像 发表于 06-15 10:18 1391次阅读
    C语言<b class='flag-5'>基础知识</b>(5)--循环语句

    电工基础知识100问

    电工基础知识100问,20年的电工都不一定全清楚!
    的头像 发表于 06-06 10:39 3636次阅读
    电工<b class='flag-5'>基础知识</b>100问

    被动元件基础知识

    被动元器件基础知识介绍
    发表于 06-02 17:12 12次下载

    关于MOS管的基础知识

    文章主要是讲一下关于MOS管的基础知识,例如:MOS管工作原理、MOS管封装等知识
    发表于 05-23 10:09 959次阅读
    关于MOS管的<b class='flag-5'>基础知识</b>

    MOS管的基础知识介绍

    文章主要是讲一下关于mos管的基础知识,例如:mos管工作原理、mos管封装等知识
    的头像 发表于 05-18 10:38 2030次阅读
    MOS管的<b class='flag-5'>基础知识</b>介绍