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

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

    关注

    455

    文章

    50775

    浏览量

    423437
  • 路由器
    +关注

    关注

    22

    文章

    3729

    浏览量

    113749
  • CAM
    CAM
    +关注

    关注

    5

    文章

    200

    浏览量

    42983
  • MPLS
    +关注

    关注

    0

    文章

    131

    浏览量

    24143
  • TCAM
    +关注

    关注

    0

    文章

    19

    浏览量

    14064

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

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

收藏 人收藏

    评论

    相关推荐

    品质管理基础知识

    品质管理基础知识
    的头像 发表于 11-01 11:08 351次阅读
    品质管理<b class='flag-5'>基础知识</b>

    Verilog HDL的基础知识

    本文继续介绍Verilog HDL基础知识,重点介绍赋值语句、阻塞与非阻塞、循环语句、同步与异步、函数与任务语法知识
    的头像 发表于 10-24 15:00 368次阅读
    Verilog HDL的<b class='flag-5'>基础知识</b>

    负载开关基础知识

    电子发烧友网站提供《负载开关基础知识.pdf》资料免费下载
    发表于 10-08 09:56 1次下载
    负载开关<b class='flag-5'>基础知识</b>

    全新的半导体基础知识

    《全新的半导体基础知识》首先对流行于电子书刊上数十年之久的经典半导体基础知识中存在的谬误进行了全方位的讨论,然后以半导体内部结构为抓手,以G型半导体(客供电子型半导体)、H型半导体(主供电子型半导体
    的头像 发表于 09-20 11:30 1223次阅读
    全新的半导体<b class='flag-5'>基础知识</b>

    超声波传感基础知识

    电子发烧友网站提供《超声波传感基础知识.pdf》资料免费下载
    发表于 09-04 10:21 0次下载
    超声波传感<b class='flag-5'>基础知识</b>

    探索巅峰性能 | 迅为RK3588开发板深度剖析

    探索巅峰性能 | 迅为RK3588开发板深度剖析
    的头像 发表于 08-12 14:07 852次阅读
    探索巅峰性能 | 迅为RK3588开发板<b class='flag-5'>深度</b><b class='flag-5'>剖析</b>

    C++语言基础知识

    电子发烧友网站提供《C++语言基础知识.pdf》资料免费下载
    发表于 07-19 10:58 7次下载

    哪有FPGA的verilog编程基础知识

    没接触过FPGA开发,那个verilog编程有什么入门基础知识学习的?
    发表于 04-29 23:09

    电子元件基础知识介绍

    电子发烧友网站提供《电子元件基础知识介绍.pptx》资料免费下载
    发表于 03-15 16:48 84次下载

    光纤通信技术基础知识

    电子发烧友网站提供《光纤通信技术基础知识.ppt》资料免费下载
    发表于 03-06 15:53 0次下载

    FPGA基础知识介绍

    电子发烧友网站提供《FPGA基础知识介绍.pdf》资料免费下载
    发表于 02-23 09:45 30次下载

    鸿蒙开发【设备开发基础知识

    鸿蒙开发基础知识讲解
    的头像 发表于 01-29 18:44 1016次阅读
    鸿蒙开发【设备开发<b class='flag-5'>基础知识</b>】

    射频与微波基础知识

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

    Access数据库基础知识介绍

    电子发烧友网站提供《Access数据库基础知识介绍.pdf》资料免费下载
    发表于 01-02 10:24 3次下载

    深度剖析汽车内部结构和原理

    很多人都想了解更多的汽车知识,以加深对汽车的了解,只是无奈汽车结构之复杂,机械知识之乏味,都一一放弃了。下面给大家准备了一组图解汽车文章,结合图片剖析汽车内部结构,让复杂的原理变得通俗易懂。
    的头像 发表于 12-28 10:31 1197次阅读
    <b class='flag-5'>深度</b><b class='flag-5'>剖析</b>汽车内部结构和原理