当前位置: 首页 > 专利查询>何少鹏专利>正文

利用分组来实现三重内容可寻址存储器的方法及装置制造方法及图纸

技术编号:12147287 阅读:100 留言:0更新日期:2015-10-03 03:33
本发明专利技术公开了一种利用分组来实现TCAM的方法及装置,以较小的成本和功耗实现大容量的TCAM。其特征在于按TCAM条目的掩码把所有的TCAM条目分组,有多少个不同的掩码,就分多少组。掩码相同的条目分在同一组中。每一个条目组有一个对应的hash表以方便查询。本发明专利技术也揭示了一个利用这个方法的具体的装置。通过加入常规的TCAM分流一些条目少的分组,这个装置能够给SDN交换机等提供一个可直接使用的大规模TCAM的实现。

【技术实现步骤摘要】
【专利说明】所属
本专利技术涉及通信、高速网络下的数据查找匹配或芯片设计
,具体地说是一种利用分组来实现三重内容可寻址存储器TCAM(Ternary Content AddressableMemory)的方法及装置。
技术介绍
在互联网发展进入云计算时代以后,互联网新业务上线频繁、业务流量不可预测性增强,云计算的虚拟机迁移等问题都带来流量的动态变化,而网络的结构与业务流量的变化相匹配才能发挥最高的效率。由此催生了 SDN(Software Defined Networking)的理念和实践,并成为企业网络、运营商网络、科研网络、大型数据中心托管、云服务商、设备制造商甚至芯片制造商的热门话题。SDN现在主要的通讯协议标准是OpenFlow,而标准中规定的流表(Flow Table)严格意义上来讲只能用TCAM来实现。TCAM在传统交换机,路由器中也有广泛的应用,例如快速查找ACL、路由等表项,TCAM是一种专用三重内容可寻址存储器,可以进行快速大量并行搜索。搜索的时候,存储器中所有的条目同时与搜索关键字比较,搜索结果就是匹配项的物理地址。在进行条目匹配时,条目的每个位可以是O、l、x三种状态,如果是X,那么该位不参与比较,默认是成功,否则关键字和条目的相应位进行比较,如果相同则成功否则失败。在比较过程中,如果某位不匹配,那么该条目匹配失败;如果所有位都匹配,那么该条目匹配成功。TCAM的三态特性,使得它很适合做流表的实现和ACL/QoS等规则匹配。条目一般也用内容项和掩码项来表示,掩码项的位为O时,条目的所对应位是X状态;掩码项的位为I时,条目的所对应位的状态由内容项决定。内容项和掩码项共同决定了一个独立的条目,内容和掩码都相同的条目是重复的,多余的。然而TCAM是一种昂贵的资源,具体表现在占用芯片面积大(一条TCAM条目相当于五六条DRAM条目)和功耗大,而占用芯片面积大直接导致芯片成本高以及整机电路板设计成本高,功耗大导致整机散热成本和能耗成本上升。如果按照很多客户的要求,动辄要几十KB甚至上百KB的流表要求,至少需要20Mbit的TCAM,远远超过目前市场上容量最大的交换芯片的TCAM大小。
技术实现思路
本专利技术的目的在于克服TCAM现有技术的缺陷,提供一种利用分组来实现TCAM的方法及装置,以较小的成本和功耗实现大容量的TCAM。为实现上述目的,本专利技术提出如下技术方案:一种利用分组来实现TCAM的方法,本专利技术按掩码把所有的TCAM条目分组,有多少个不同的掩码,就分多少组。掩码相同的条目分在同一组中。每一个条目组有一个对应的hash表以方便查询。hash表的关键字是由该表对应的TCAM条目组中每个条目的内容和组的掩码经过“与”操作后生成的hash值;hash表的值是代表对应TCAM条目的一个值或冲突指针。查找程序流程如下:查找数据和组的掩码经过“与”操作后生成一个hash值,通过这个hash值就可以得到当初填入其中的TCAM条目的地址。本专利技术也揭示了一个利用这个方法的具体的装置。通过加入常规的TCAM分流,这个装置能够给SDN交换机等提供一个可直接使用的大规模TCAM的实现。本专利技术装置主要包括条目组控制器,分流用的小规模常规TCAM,多个组查找引擎(每个引擎又包括多个组掩码,一个hash值生产器和一个hash表)。本专利技术的有益效果是:基于分组方式可以实现出比现有常规的容量大几十倍,上百倍的TCAM。由于主要采用SRAM实现,查找的功耗也比常规的TCAM要小的多。使用这个TCAM可以大规模提高SDN交换机等的性能,减少运行的功耗。【附图说明】下面结合附图和实施例对基于分组的TCAM进一步说明。图1是功能框图。 图2是添加条目总流程图。图3是添加条目中加入组的流程图。图4是查询流程图。【具体实施方式】在图1中,上方的输入条目是用来,输入TCAM的条目信息,包括内容和掩码。左面的输入是用来做TCAM的查询的。本专利技术装置主要包括条目组控制器,分流用的小规模常规TCAM,多个组查找弓I擎(每个弓I擎又包括多个组掩码,一个hash值生产器和一个hash表)。在图2中,描述了添加条目的总流程。首先根据输入掩码是否与某个已有组的掩码相同,来确定是否可以直接加入某个已有组。如果没有完全相同的,则看是否有某个已有组的掩码与输入掩码只相差少数的几位。例如某个已有组的掩码是111100,而输入掩码是111000,也就是说输入掩码“不关心”位(值为O的位)比已有组的都一位。这种情况可以将输入内容(假设是101011),分解成101011和101111两项,这两项和组的掩码111100配合起来的效果是和输入的条件是相同的。所以可以用把这两项加入组111100中,以代替新建一个111000的组。如果也没有相似的组,则看看是否还有空余的组。如果还有的话,就在空余组的位置新建一个组,把输入掩码复制给这个组,并加入这个组。如果没有空余的组了,则看看常规TCAM是否还有空位,如果有的话,就加入常规TCAM,如果没有返回条目加入失败。虽然该条目加入失败了,但其他的条目,如与已有组掩码相同,仍有可能加入成功。在图3中,详细描述了添加条目中加入组的流程。从添加条目的总流程中,或者某个已有组的掩码与输入掩码完全相同,或者相似,或者有空余的组,都会走到这个加入组的流程。首先清除“不关心”位的影响,将输入内容和组掩码做“与”操作。如果该组是和别的组一起共享一个Hash表的话,还要把该组在Hash表中的编号加在内容的前面。然后对内容做一次Hash运算,产生一个Hash关键字。Hash表中Hash值分为两部分:标记位:空闲,占用,冲突内容位:占有时是组标记和组优先级,冲突时是冲突表的指针如果该关键字在Hash表中的状态是空闲,则将该关键字值对应的Hash表位置位标为占有,把组标记和组优先级作为Hash值内容位,并且将状态改为占用。如果该关键字在Hash表中的状态是占用,则在冲突表中,寻找一个空闲的位置,将组标记和组优先级填入该位置,并把位置指针回填到Hash表中,并且将状态改为冲突。冲突表是一个按组优先级排列的链表结构,可以容纳多个冲突值。如果该关键字在Hash表中的状态是冲突,则将组标记和组优先级,按优先级,加入冲突表指针指向的冲突表位置链表中。在图4中,详细描述了查询的流程。每一个查询必须在所有的组中,和常规TCAM中都搜索一遍,然后根据需要返回一个或多个结果,或者查询失败没有有效结果。基于硬件设计,主要是SRAM芯片的多少,可以同时开始一个或多个组的并行搜索。常规TCAM总归是可以与其他的组搜索并行的。常规TCAM的搜索是标准的,就不再这里详述了,搜索的结果(包括TCAM的条目地址和优先级)填入候选结果集,等待其他组的结果一并处理。每个组的搜索,从清除“不关心”位的影响开始。将输入内容和组掩码相做“与”操作,如果该组是和别的组一起共享一个Hash表的话,还要把该组在Hash表中的编号加在内容的前面。如果该关键字在Hash表中的状态是空闲,则直接略过。如果是占用,将Hash表中该位置的组标记和组优先级填入候选结果集;如果是冲突,则将所对应的冲突表位置的组标记和组优先级填入候选结果集。本专利系统的瓶颈在于条目组的查询。每次TCA本文档来自技高网
...

【技术保护点】
一种利用分组来实现TCAM的方法,其特征在于按TCAM条目的掩码把所有的TCAM条目分组,有多少个不同的掩码,就分多少组。掩码相同的条目分在同一组中。每一个条目组有一个对应的hash表以方便查询。相似的掩码可以共享一个表项组。TCAM的结果可以是多选的。不同的表项组可以共享同一个hash表。

【技术特征摘要】

【专利技术属性】
技术研发人员:何少鹏何泽宇
申请(专利权)人:何少鹏
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1