CN104952484A - 利用分组来实现三重内容可寻址存储器的方法及装置 - Google Patents
利用分组来实现三重内容可寻址存储器的方法及装置 Download PDFInfo
- Publication number
- CN104952484A CN104952484A CN201410125556.3A CN201410125556A CN104952484A CN 104952484 A CN104952484 A CN 104952484A CN 201410125556 A CN201410125556 A CN 201410125556A CN 104952484 A CN104952484 A CN 104952484A
- Authority
- CN
- China
- Prior art keywords
- tcam
- group
- mask
- grouping
- entries
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种利用分组来实现TCAM的方法及装置,以较小的成本和功耗实现大容量的TCAM。其特征在于按TCAM条目的掩码把所有的TCAM条目分组,有多少个不同的掩码,就分多少组。掩码相同的条目分在同一组中。每一个条目组有一个对应的hash表以方便查询。本发明也揭示了一个利用这个方法的具体的装置。通过加入常规的TCAM分流一些条目少的分组,这个装置能够给SDN交换机等提供一个可直接使用的大规模TCAM的实现。
Description
所属技术领域
本发明涉及通信、高速网络下的数据查找匹配或芯片设计技术领域,具体地说是一种利用分组来实现三重内容可寻址存储器TCAM(Ternary Content Addressable Memory)的方法及装置。
背景技术
在互联网发展进入云计算时代以后,互联网新业务上线频繁、业务流量不可预测性增强,云计算的虚拟机迁移等问题都带来流量的动态变化,而网络的结构与业务流量的变化相匹配才能发挥最高的效率。由此催生了SDN(Software Defined Networking)的理念和实践,并成为企业网络、运营商网络、科研网络、大型数据中心托管、云服务商、设备制造商甚至芯片制造商的热门话题。SDN现在主要的通讯协议标准是OpenFlow,而标准中规定的流表(FlowTable)严格意义上来讲只能用TCAM来实现。TCAM在传统交换机,路由器中也有广泛的应用,例如快速查找ACL、路由等表项,
TCAM是一种专用三重内容可寻址存储器,可以进行快速大量并行搜索。搜索的时候,存储器中所有的条目同时与搜索关键字比较,搜索结果就是匹配项的物理地址。在进行条目匹配时,条目的每个位可以是0、1、x三种状态,如果是x,那么该位不参与比较,默认是成功,否则关键字和条目的相应位进行比较,如果相同则成功否则失败。在比较过程中,如果某位不匹配,那么该条目匹配失败;如果所有位都匹配,那么该条目匹配成功。TCAM的三态特性,使得它很适合做流表的实现和ACL/QoS等规则匹配。条目一般也用内容项和掩码项来表示,掩码项的位为0时,条目的所对应位是x状态;掩码项的位为1时,条目的所对应位的状态由内容项决定。内容项和掩码项共同决定了一个独立的条目,内容和掩码都相同的条目是重复的,多余的。
然而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,多个组查找引擎(每个引擎又包括多个组掩码,一个hash值生产器和一个hash表)。
在图2中,描述了添加条目的总流程。首先根据输入掩码是否与某个已有组的掩码相同,来确定是否可以直接加入某个已有组。如果没有完全相同的,则看是否有某个已有组的掩码与输入掩码只相差少数的几位。例如某个已有组的掩码是111100,而输入掩码是111000,也就是说输入掩码“不关心”位(值为0的位)比已有组的都一位。这种情况可以将输入内容(假设是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表中该位置的组标记和组优先级填入候选结果集;如果是冲突,则将所对应的冲突表位置的组标记和组优先级填入候选结果集。
本专利系统的瓶颈在于条目组的查询。每次TCAM的查询都需要针对每个条目组做一次hash表的查询。hash表一般放在外部的SRAM中,数据宽度是有限的。提高性能主要从两方面入手,减少条目组数量和增加SRAM数据通路容量。所以本专利系统除了采用相似的掩码共享一个表项组外,还可以添加一个小容量的普通TCAM以分流条目少的组,以减少条目组的数量。例如一个容量是64条的普通TCAM最多可分流64个单条表项的表项组。
由于每个SRAM芯片的数据宽度和频率上限是固定的,增加SRAM的数据通路容量主要在于增加芯片数量。性能最高的方案是每个表项组独享一个hash表,而每个hash表独享一个sram芯片。这样最理想的情况下,其余的操作都可序列化,而sram也可以在一个时钟周期完成一个读操作,那么整个TCAM的效率达到最高,每个时钟周期可以处理一个查询。
本专利系统的对外的接口可以保持标准的接口不变,以方便用户使用。由于不管是条目的分组还是分流到普通TCAM,都可以封装在内部实现中,对外的接口都可以保持标准的接口如TCAM接口,或sdn的openflow接口,这样终端用户不需要做任何调整就可以从老的实现迁移到本专利所描述的新的实现。
Claims (3)
1.一种利用分组来实现TCAM的方法,其特征在于按TCAM条目的掩码把所有的TCAM条目分组,有多少个不同的掩码,就分多少组。掩码相同的条目分在同一组中。每一个条目组有一个对应的hash表以方便查询。相似的掩码可以共享一个表项组。TCAM的结果可以是多选的。不同的表项组可以共享同一个hash表。
2.根据权利要求1所述的方法,其特征在于,查找程序流程如下:查找数据和组的掩码经过“与”操作后生成一个hash值,通过这个hash值就可以得到当初填入其中的TCAM条目的地址。
3.一个利用分组来实现TCAM的具体的装置。其特征在于,主要部分采用分组来实现TCAM的方法,但也通过加入常规的TCAM分流一些条目少的分组。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410125556.3A CN104952484A (zh) | 2014-03-31 | 2014-03-31 | 利用分组来实现三重内容可寻址存储器的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410125556.3A CN104952484A (zh) | 2014-03-31 | 2014-03-31 | 利用分组来实现三重内容可寻址存储器的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104952484A true CN104952484A (zh) | 2015-09-30 |
Family
ID=54167090
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410125556.3A Pending CN104952484A (zh) | 2014-03-31 | 2014-03-31 | 利用分组来实现三重内容可寻址存储器的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104952484A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111966284A (zh) * | 2020-07-16 | 2020-11-20 | 长沙理工大学 | 一种OpenFlow大规模流表弹性节能与高效查找架构及方法 |
CN115297056A (zh) * | 2022-09-28 | 2022-11-04 | 杭州芯旗电子技术有限公司 | 一种基于fpga实现的掩码匹配方法及系统 |
-
2014
- 2014-03-31 CN CN201410125556.3A patent/CN104952484A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111966284A (zh) * | 2020-07-16 | 2020-11-20 | 长沙理工大学 | 一种OpenFlow大规模流表弹性节能与高效查找架构及方法 |
CN111966284B (zh) * | 2020-07-16 | 2022-06-03 | 长沙理工大学 | 一种OpenFlow大规模流表弹性节能与高效查找系统及方法 |
CN115297056A (zh) * | 2022-09-28 | 2022-11-04 | 杭州芯旗电子技术有限公司 | 一种基于fpga实现的掩码匹配方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9569561B2 (en) | Label masked addressable memory | |
US7668160B2 (en) | Methods for performing packet classification | |
US20200159654A1 (en) | Pipelined hash table with reduced collisions | |
US20150127900A1 (en) | Ternary content addressable memory utilizing common masks and hash lookups | |
US10880109B2 (en) | Forwarding multicast data packet | |
Bando et al. | FlashTrie: beyond 100-Gb/s IP route lookup using hash-based prefix-compressed trie | |
CN108259328B (zh) | 报文转发方法及装置 | |
EP2297905B1 (en) | Cascaded memory tables for searching | |
CN105591914B (zh) | 一种openflow流表的查表方法和装置 | |
CN107276916A (zh) | 基于协议无感知转发技术的交换机流表管理方法 | |
CN112667526B (zh) | 一种访问控制列表电路实现方法及其电路 | |
CN106453091B (zh) | 路由器转发平面的等价路由管理方法和装置 | |
CN103338152A (zh) | 一种组播报文转发方法和主控板 | |
CN106487769B (zh) | 一种访问控制列表acl的实现方法及装置 | |
CN109981464A (zh) | 一种在fpga中实现的tcam电路结构及其匹配方法 | |
CN103441927A (zh) | 报文处理方法及装置 | |
WO2024067746A1 (zh) | 一种基于fpga实现的掩码匹配方法及系统 | |
CN100472427C (zh) | 一种数据包递归流分类方法 | |
CN104253754A (zh) | 一种acl快速匹配的方法和设备 | |
CN104952484A (zh) | 利用分组来实现三重内容可寻址存储器的方法及装置 | |
CN105939266B (zh) | 一种报文的传输方法和装置 | |
CN112187636B (zh) | Ecmp路由的存储方法及装置 | |
WO2024037243A1 (zh) | 一种数据处理方法、装置和系统 | |
CN109039911B (zh) | 一种基于hash查找方式共享ram的方法及系统 | |
EP3534576B1 (en) | Packet transmission |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150930 |