提到存储介质,大家应该很容易想到ram。相比于ram,cam可能就显得有些陌生了。实际上,tcam对于交换芯片非常重要。比如了解openflow的人都知道流表,最典型的流表都是用tcam来做的。tcam,主要用于快速查找acl、路由等表项。
它到底是个什么东西,起到什么样的作用呢?接下来我们慢慢聊。
tip:
openflow,一种网络通信协议,属于数据链路层,能够控制网上交换器或路由器的转发平面(forwarding plane),借此改变网络数据包所走的网络路径。
什么是cam?
cam是content addressable memory的缩写,即“内容寻址存储器”的意思,它是在传统的存储技术的基础上实现的联想记忆存储器,关于cam的基本操作有三种:
1)写操作:输入地址和数据,将数据写到指定的地址上,写入速度与ram相同;
2)读操作:输入地址,返回该地址上的数据,读取速度与ram相同;
3)查找操作:输入待查数据,返回该数据被存储的地址。这也是cam的最主要用途,它能够从巨大的数据库中进行快速查找,并且返回最佳的匹配地址,最快查找速度能达到每秒一亿次以上。
cam和ram有何区别?
相对于cam,我们可能更加熟悉ram。sram、dram大家可能或多或少有所接触。
如果想了解更多关于存储相关的内容,可以查看我们的往期文章:
科普:什么是otp?什么是mtp?
科普:ram和rom有什么区别?
言归正传,在本文中,我们不再花费太多笔墨去阐释ram相关内容。我们将重点放在cam上。
那么,ram与cam,有什么区别呢?举个例子。
一个表(table)被放在ram中以便进行高速操作,提供一个地址并从表中获取与该地址相匹配的数据。然而,使用ram进行查找可能需要多个周期来完成,它的速度不是很理想。
因此,cam应运而生。在原理上,它反其道而行之,数据被当作搜索其所在地址的钥匙。根据cam设计的性质,搜索是并行的,这意味着查找可以在一个周期内完成。这使得cam更适合做数据表的查找,它的速度更快。
与具有简单存储单元的静态 ram (sram) 不同,全并行 cam 中的每个单独的存储位都必须具有与自身相关的比对电路,以检测存储位和输入位之间的匹配情况。此外,在使用 cam 时,必须将数据字中每个单元的匹配输出组合起来,才能产生完整的数据字匹配信号。
因而在搜索层面,cam具有性能优势,而代价则是需要更大的面积和更高的功耗。
cam的分类
我们通常使用两种不同类型的cam,分别为bcam(binary cam)和tcam(ternary cam)。
bcam,顾名思义,是指数据为二进制状态,即0或1,数据搜索必须完全匹配。它适用于具有唯一条目的数据查询,如mac地址查询。
而tcam是ternary content addressable memory的缩写,即“三态内容寻址存储器”的意思,它是从cam的基础上发展而来的。
这个“三态”,就非常有意思了。
一般的cam存储器中每个bit位的状态只有两个,“0”或“1”,而tcam中每个bit位有三种状态,除掉“0”和“1”外,还有一个“don’t care”状态,也可以称作“wildcard”,也可以表示为“x”,从中文理解,就是忽略的意思。所以称为“三态”,它是通过掩码来实现的。
正是tcam的这个第三种状态特征使其既能进行精确匹配查找,又能进行模糊匹配查找,而bcam没有第三种状态,所以只能进行精确匹配查找。
tcam的实现除了有asic芯片外,还可以在fpga上用ip核实现。
当涉及到路由时,“don’t care”的概念在很多方面都是有用的。
例如,当我们写下1.1.1.0/24时,它描述了从1.1.1.0到1.1.1.255的ip地址范围。数字24表示ip地址的前24位必须被匹配,而后8位是什么并不重要。
tip:
路由(routing)是指分组从源到目的地时,决定端到端路径的网络范围的进程。路由工作在osi参考模型第三层——网络层的数据包转发设备。路由器通过转发数据包来实现网络互连。
查找方式的对比:
基于sram的查找(传统查找方式)
1、线性查找
2、二叉树查找
3、hash查找
基于tcam的查找
基于硬件的实现,整个表空间database在同一时刻被查询
tcam之所以能做到一个bit表示三个值,原因是它的一条entry其实在物理上由两条entry组成,一条存放data,另外一条存放相应的mask。由此可以实现0/1/x的表示。有了tcam,就可以支持各种lookup key的任何组合查找,任意地mask掉任何不关心的字段,只有tcam可以做这样的事情,hash做不到。
tcam的查找特点
如果有多条tcam entry都能匹配上,tcam优先选择index最小的那一条。tcam的查找效率与深度无关,也就是说,无论表项多大,查找速度是一样的,这跟tcam的硬件实现方式有关。命中其中一条之后,就返回index,然后根据这个index去它对应的ram里面查找进一步的关联数据。
tcam在高端路由器中的应用及查找过程
为什么tcam都不会太大
tcam可以内置在芯片里面,也可以外挂在芯片之外,芯片通过接口去访问。但是内置tcam非常占芯片面积,如果芯片内部放了太大的tcam会导致芯片成本和功耗直线上升。所以一般芯片都不会内置太大tcam。这就是为什么基于tcam的流表做不大的原因。
外挂tcam的成本和功耗一样很大,甚至比asic芯片本身都贵,而且如果一个报文要访问外部tcam多次的话,受限于tcam接口速率,会导致无法线速。所以一般交换机也都不会使用外挂tcam。
tcam的优势
1、单周期查找;
2、平均查找速度是基于sram算法查找的6倍;
3、最好情况下,查找速度提高128倍。
总而言之,tcam实现了通用性和高速度。tcam的最大优势,就是速度。
tcam的缺点
tcam具有速度快、实现简单的优点,但是它也有三个不足之处:
1、与一般的随机存储器ram 相比,单位比特的tcam 更为昂贵,而且存储芯片的容量相对要小一些;
2、由于tcam 使用的是并行匹配比较方式,所以tcam 芯片的功耗较大。查找过程所有关键字表项都进行了比较,但是实际能够匹配上的关键字只是几项,因此大部分的比较操作都被浪费了;
3、 tcam 需要保证前缀较长的关键字保存在前缀较短的关键字之前,这种关键字之间的顺序关系使得tcam的关键字更新工作变得相对复杂了。当加入一条新的表项时,为了能够仍然保持关键字间的顺序关系,就需要移动一些前缀长度比新表项要长的一些表项,因此tcam 的更新操作较为复杂。
总结下来就是:成本高、功耗大、路由更新复杂。
关于tcam器件的应用
tcam器件在通信领域种有非常广泛的应用,主要有:
1、atm switching设备中的vci/vpi转发和atm-to-mpls or atm-to-tcp-flow地址映射表项的存储和查找;
2、ethernet switching设备中的二层mac地址、arp/rarp解析和三层ip路由表项的存储和查找;
3、emerging protocols and functions方面的mpls label表项的存储和查找;
4、packet classification业务中的enforce security、enforce departmental policies和qos检测表项的存储和查找;
5、安全防护设备中的fib/lbt、mfib及acl表项存储和查找。
tcam器件的硬件设计方式一般有三种:
关于acl
访问控制列表acl(access control list)是由一条或多条规则组成的集合。所谓规则,是指描述报文匹配条件的判断语句,这些条件可以是报文的源地址、目的地址、端口号等。
acl本质上是一种过滤器,规则是过滤器的滤芯。设备基于这些规则进行报文匹配,可以过滤出特定的报文,并根据应用acl的业务模块的处理策略来允许或阻止该报文通过。
访问控制列表被广泛地应用于路由器和三层交换机,借助于访问控制列表,可以有效地控制用户对网络的访问,从而最大程度地保障网络安全。
tip:
报文(message)是网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。
应用场景
-匹配ip流量(可基于源,目的ip地址,协议类型,端口号等类型)
-在traffic-fiter中被调用
-在nat中被调用
-在路由策略调用
-在ipsec vpn中被调用
-在防火墙的策略部署中被调用
-在qos中被调用
分类
目前遇到最多就是基本acl和高级acl,其他种类acl很少见。
acl/路由表/mac表跟tcam的关系
普通交换机中的acl功能必须使用tcam,所以内置tcam省不掉。而对于路由,以前的芯片也都用tcam来做(主机路由除外),所以路由表项也做不大。现在最新的商业芯片都已经使用算法来支持路由了,这样就可以使用ram来做路由。至于mac表,它的查找是根据mac+vlan进行精确匹配,可以用hash来做,所以跟路由一样,都存放在ram里面。
iOS10.3正式版更新释出!iPhone用户别错过6大新功能!
使用BGA开始PCB布局布线
恩智浦有线机顶盒(STB)硅调谐器TDA18250A
深度解读移动通信技术发展的文化传媒及未来趋势
Vive Pro迈凯轮限量版上线,售价12888元
CAM和TCAM区别和优势分析
图漾3D视觉托盘栈板识别方案
lvdt位移传感器工作原理和主要特点
快速开发MQTT(一)电子工程师眼中的MQTT
黄金打造奢华LED互动灯具
华为怎么了?华为荣耀8,竟然比华为荣耀V8还更贵了!
农业局农残检测仪器设备的特点是什么
到底是买华为P10还是三星S8?得好好想想
Visual Studio Code正在兴起,成为最受欢迎的编辑器
剖析NVIDIA DPU如何在HPC 集群上加速科学计算应用
74ls48引脚图及功能、真值表和典型应用电路分解
易于制作的叮咚门铃
物联网技术怎样改善智慧养老服务
智慧警务综合应用管理平台开发大数据研判系统开发
业财提效80%,中国金茂这样做财税一体化升级