CN101694664B - 一种查找内容可寻址存储器表项的方法和装置 - Google Patents
一种查找内容可寻址存储器表项的方法和装置 Download PDFInfo
- Publication number
- CN101694664B CN101694664B CN2009102100111A CN200910210011A CN101694664B CN 101694664 B CN101694664 B CN 101694664B CN 2009102100111 A CN2009102100111 A CN 2009102100111A CN 200910210011 A CN200910210011 A CN 200910210011A CN 101694664 B CN101694664 B CN 101694664B
- Authority
- CN
- China
- Prior art keywords
- list item
- activation
- cam
- activation list
- hit
- 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.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种查找内容可寻址存储器CAM表项的方法,应用于包括CAM的表项查找系统中,所述CAM中的表项包括激活表项集合中的表项和非激活表项集合中的表项,所述方法包括以下步骤:所述CAM接收到报文后,根据所述报文的特征信息在所述激活表项集合中查找与所述报文匹配的表项;如果在所述激活表项集合中查找到与所述报文匹配的表项,则结束流程;如果在所述激活表项集合中没有查找到与所述报文匹配的表项,则所述CAM在所述非激活表项集合中查找与所述报文匹配的表项。本发明降低了CAM的能耗,提高了CAM表项查找的效率和CAM搜索的速度,降低了硬件的转发时的负荷。本发明同样公开了一种应用上述方法的装置。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种查找内容可寻址存储器表项的方法和装置。
背景技术
CAM(Content-addressable memory,内容可寻址存储器),也叫做associativememory(关联存储器)、associative storage(关联贮存器)或者associative array(关联阵列),是一种用于高速搜索的特殊计算机存储器。CAM是为搜索时间敏感的应用提供的硬件搜索引擎,具有相对于使用算法的搜索方法更快的查找速度。
CAM包括两种基本形式:Binary CAM和Ternary CAM,其中,Binary CAM是一种最简单的CAM,支持二进制位(0或者1)的存储和搜索;Ternary CAM支持第三种匹配状态“不关心”,用于提供搜索的灵活性。例如,Ternary CAM存储了一个表项为″10XX0″,该表项将会匹配″10000″、″10010″、″10100″或者″10110″四个搜索字中的任何一个。相对于Binary CAM,Ternary CAM额外的搜索灵活性也伴随着额外的开销,内部存储单元必须可以编码3种可能的状态,而不是Binary CAM的两种状态,上述额外的状态通常通过给所有存储单元增加表示关心或不关心的掩码位来实现。
CAM的搜索时间敏感应用通常用于路由器/交换机中的报文转发和报文分类。Binary CAM是一种基于RAM技术的存储器,能够在一个硬件时钟周期内完成关键字的精确匹配查找,只要输入关键字的内容,CAM就会将该关键字与CAM中所有的表项同时进行匹配比较,最后返回索引地址。CAM技术可以实现快速的路由或ACL查找,但不能存储变长的路由前缀或位置灵活变化的ACL域,从而造成存储空间的浪费。Ternary CAM是为克服Binary CAM的上述缺点而提出的,Ternary CAM的优点是它所保存的表项在长度要求上非常灵活,即可以在同一个Ternary CAM芯片中保存任意长度的关键字表项。Ternary CAM中的每一个表项都是由内容项和掩码项两部分共同构成,可以对存储空间的每一位进行屏蔽,可以方便地屏蔽掉不需要处理的数据位,由此提高了处理速度。
用于IP封包转发的RAM查找技术包括,在RAM中存放端口的IP地址和其他相关表项,在执行查找的过程中,基于一定的软件算法,通过输入RAM中的地址得到地址中的数据,然后判断该数据是否为所需要的地址,如果判断结果为是,则直接从该地址输出对应的表项,其路由查找主要是基于软件的算法,通常由PP(Packet Processor,包处理器)来完成的。ACL(Access ControlList,访问控制列表)是一个有序的语句集,具有广泛的应用,是一个基于将规则与报文进行匹配,用来允许或拒绝报文流的排序表。传统的网络在ACL表查找方面主要通过软件或软硬件配合的方式完成,处理效率较低,已经逐渐成为设备性能的瓶颈。在交换设备中,多业务处理带来的频繁的对ACL表的访问,使得交换设备处理性能大大下降。
Ternary CAM在CAM领域的出现是因为路由的最长前缀匹配是Internet的标准,路由器和交换机转发IP封包时,转发引擎需要在路由表中查找该IP报文中目的地址所对应的路由信息,从而决定IP报文的转发方式。如表1所示,为转发IP报文时的简化路由表。
表1转发报文时的简化路由表
Entry No. | Address(Binary) | Output Port |
1 | 101XX | A |
2 | 0110X | B |
3 | 011XX | C |
4 | 10011 | D |
在报文转发的工作过程中,以路由查找过程最为关键,提高路由查找的速率也相应提高了路由器的性能。如图1、图2所示,分别为使用CAM实现路由查找的原理示意图和系统结构示意图。
Ternary CAM的容量通过深度和字宽来表示(深度×字宽),其中,深度表示所有表项的条数,字宽表示每个表项的位数。如图3所示,为基于NOR结构的4×5bit的Ternary CAM模块结构示意图,CAM核心单元被排列在四个水平的字中,每个字5个bit长。核心单元包含存贮电路和比较电路。Searchline延垂直方向运行,广播搜索数据给CAM核心单元;Match lines延水平方向穿过阵列并指示出搜索数据是否匹配这行的字。一个激活的Match line指示一个匹配表项,同时一个去激活的Match line指示一个不匹配表项。
Match line被输入到一个编码器,用于产生相应域匹配表项的地址。匹配地址的类型包括Binary Encoded、Single-match Unencoded和Multi-matchUnencoded,其中,Binary Encoded提供匹配地址的二进制形式输出,当存在多重匹配时,CAM返回最低或者最高匹配地址。Single-match Unencoded提供匹配地址的解码形式输出(one-hot),输出宽度等于CAM深度,并且输出的每一位对应CAM中的一个表项。当存在多重匹配时,CAM输出最低或者最高匹配地址对应的位。Multi-match Unencoded为多重地址匹配提供匹配地址的解码形式输出,输出宽度等于CAM深度,并且输出的每一位对应CAM中的一个表项。当存在多重匹配时,CAM在匹配地址对应的每一位有输出。
匹配地址被用于包含出端口列表的RAM的寻址,该CAM/RAM系统是一个地址查找引擎的完整实现。CAM匹配地址输出实际上是一个用于获取RAM相关数据的指针,该相关数据可以为出端口。使用CAM搜索大大提高了查询的速度,一般以每秒完成的最大查询次数来衡量搜索的效率,该参数与器件工作时钟和配置的存储数据宽度有关,使用CAM每秒可完成上百兆次的查询。因此,CAM通过大量并行激活的电路实现并行的查找,从而提供搜索速度。但是,随之而来的一个显著的问题是并行电路产生的高功耗;在不损失查找速度和内存密度的情况下,如何降低伴随大量并行激活电路产生的高功耗,成为业界CAM设计的一个重点和难点。
现有技术中,CAM低功耗设计技术主要包括电路级设计和架构级设计两类,其中,电路级设计包括低功耗matchline感知技术和searchline驱动方法,架构级设计包括bank选择、预计算法和改变CAM单元中存储数据的编码。
bank选择是一种直接的降低功耗的架构技术,在给定的周期只有CAM的一个子集被选择。bank选择的基本概念是将CAM划分为称之为banks的多个子集。如图4所示,为bank选择方案的框图,其中,两个额外的数据位称为bank选择位,将CAM划分为4块。数据存储时,bank选择位决定了四块中的哪一块用于存储该数据。数据搜索时,bank选择位决定了四块中的哪一块被激活用于搜索。由解码器提供到每块的使能信号完成选择。图4中,bank选择位为0x10,相应选中bank 2。bank选择也被称为Mini-Key,主要是只激活被查找的Block,而不被查找的Block处于非激活状态,以达到了节省功耗目的,每个Block都有4个Mini-Key,如果被搜索的Mini-Key与四个Mini-Key中的任何一个匹配以及被搜索宽度匹配Block表项宽度的话,该Block就被激活。bank选择相当于在搜索的过程中又用了一次索引,该索引的结果选择性地激活需要用到的Block,而不是用在所有的Block中进行关键字的匹配查找。如图5所示,为Mini-Key的块联系示意图,一个Block是72K*72bits,每个Block都有一个72bit的Mini-Key Register,如图6所示。其中,每个Mini-Key是8bit。bank选择按“1/块数”的比例减少整体的功率消耗,所以划分为4块相对于无bank选择的CAM理想情况下减少75%的功率消耗。
预计算法只适用于Binary CAM,将额外信息和用于查找操作的每个字一起存储来达到降低功耗的目的。从CAM存储字中获取的额外的bit用于搜索主关键字前的初始搜索。如果初始搜索失败,则CAM放弃下一步的搜索,因而降低了功耗。如图7所示,为PB-CAM(Pre-computation-Based CAM,基于预计算的CAM)结构示意图,额外的信息保存了存储在关键字中1的个数,当查找数据位0x10111,预计算电路计算1的个数(本例中是4),数字4和左手边保存的1的计数器比较,只有matchline ML01和ML04匹配,因为只有matchline ML01和ML04有4个1。在存贮关键字阶段,只有两个比较激活消耗功率,并且只有一个matchline结果匹配。PB-CAM的关键在于利用1的计数器简化了第二阶段的比较电路来获取结果,尽管1的计数比较电路使用常规的CAM单元,但是常规的存储字可以使用只有一条下拉电路的简化的CAM单元(只有2个下拉晶体管,而不是4个)。由于第二阶段不命中的搜索字和存储字总有相同个1,所以,尽管使用简化的单元,匹配结果仍然是正确的。不命中总会导致至少一个路径接地。匹配的情况没有任何路径接地,确保了正确的操作。
改变CAM单元中存储数据的编码的方案中,5-bit的Ternary CAM中存储表项0x101XX,该表项将匹配4个搜索数据字0x10100、0x10101、0x10110和0x10111,可以将在ternary CAM中存储的一个字视为多个表项。所以,0x00011、0x001XX和0x01000将会匹配从0x00011到0x01000范围内的任意字。有效的映射一组范围到一个存储的Ternary CAM字会减少应用需求的CAM的大小,减少表项的数目也有减少功率消耗的效果,因为CAM的功耗和阵列尺寸成正比。
发明人在实现本发明的过程中,发现现有技术至少存在以下缺点:
bank选择主要的缺点是bank溢出问题,由于CAM中存在输入的组合大于存储空间的情况,一个bank的存储空间可能会快速的溢出。例如,一个位宽72-bit(带一个额外的bank选择位)、深度32K的CAM被分为两个16K的bank。每个bank由16K的空间,但实际每bank有2^72个可能的表项。所以,需要添加的表项比bank空间的多的情况经常发生。上述溢出的情况需要额外的电路和多个bank同时激活,降低了节能的效果。
预计算法的主要缺点是只适用于Binary CAM,因为Ternary CAM引入不关心后,导致无法简单的根据1的个数对存储字进行分类,需要同时考虑不关心位的数量的分布。
改变CAM单元中存储数据的编码的缺陷在于,存储在Ternary CAM中的表项往往是不能够合并的。因为不同的表项,在实际应用中,往往对应这不同的报文分类转发动作。
发明内容
本发明提供了一种查找内容可寻址存储器表项的方法和装置,用于降低内容可寻址存储器的能耗。
本发明提供了一种查找内容可寻址存储器CAM表项的方法,应用于包括CAM的表项查找系统中,所述CAM中的表项包括激活表项集合中的表项和非激活表项集合中的表项,所述方法包括以下步骤:
所述CAM接收到报文后,根据所述报文的特征信息在所述激活表项集合中查找与所述报文匹配的表项;
如果在所述激活表项集合中查找到与所述报文匹配的表项,则结束流程;如果在所述激活表项集合中没有查找到与所述报文匹配的表项,则所述CAM在所述非激活表项集合中查找与所述报文匹配的表项。
优选地,所述CAM在激活表项集合中查找与报文匹配的表项之前,还包括:
判断所述CAM中的表项的激活状态标志为置位状态还是清除状态,如果所述激活状态标志为置位状态,则识别所述表项为激活表项,并根据所述识别出的激活表项构造所述激活表项集合;如果所述激活状态标志为清除状态,则识别所述表项为非激活表项,并根据所述识别出的非激活表项构造所述非激活表项集合。
优选地,所述CAM在非激活表项集合中查找与报文匹配的表项之后,还包括:
如果所述CAM在所述非激活表项集合查找到与所述报文匹配的非激活表项,则将所述非激活表项以及所述非激活表项集合中匹配优先级高于所述非激活表项的表项设置为激活表项。
优选地,所述的方法,还包括:
将所述CAM外的表项添加到所述CAM中时,判断所述激活表项集合中是否存在匹配优先级低于所述CAM外的表项的激活表项,如果存在,则将所述CAM外的表项设置为激活表项并添加到所述CAM中。
优选地,所述的方法,还包括:
如果所述激活表项集合中的激活表项在老化周期内未被命中,且在所述激活表项集合中不存在匹配优先级高于所述激活表项的表项时,则将所述激活表项设置为非激活表项,并将所述激活表项集合中匹配优先级高于所述激活表项、且在老化周期内未被命中的表项设置为非激活表项。
优选地,所述将CAM中的非激活表项设置为激活表项,具体为:
当所述非激活表项的命中hit位或保留rsv位被置位时,将所述非激活表项的激活状态标志设置为置位状态或将所述非激活表项移至激活CAM块;
所述将CAM外的表项设置为激活表项并添加到CAM中,具体为:
当所述CAM外的表项的hit位或rsv位被置位时,将所述CAM外的表项的激活状态标志设置为置位状态并添加到所述CAM中,或将所述CAM外的表项移至激活CAM块。
优选地,所述非激活表项的hit位或rsv位被置位,具体为:
当所述非激活表项被命中,且匹配优先级高于所述非激活表项的表项均为激活表项时,将所述非激活表项的hit位置位;或
当所述CAM中的匹配优先级低于所述非激活表项的表项被命中时,将所述非激活表项的rsv位置位;
所述CAM外的表项的hit位或rsv位被置位,具体为:
当所述CAM外的表项被命中时,将所述CAM外的表项的hit位置位;或
当所述激活表项集合中存在匹配优先级低于所述CAM外的表项的表项时,将所述CAM外的表项的rsv位置位。
优选地,所述将CAM中的激活表项设置为非激活表项,具体为:
当所述激活表项的hit位和rsv位均被复位时,将所述激活表项的激活状态标志设置为清除状态或将所述激活表项移出激活CAM块。
优选地,所述激活表项的hit位和rsv位均被复位,具体为:
当所述激活表项的hit位的老化时间超时,将所述激活表项的hit位复位;
如果所述CAM中的匹配优先级低于所述激活表项的表项均为非激活表项时,将所述激活表项的rsv位复位。
本发明提供了一种查找CAM表项的装置,应用于包括CAM的表项查找系统中,所述CAM中的表项包括激活表项集合中的表项和非激活表项集合中的表项,所述装置包括:
激活查找模块,用于接收到报文后,根据所述报文的特征信息在所述激活表项集合中查找与所述报文匹配的表项;
非激活查找模块,与所述激活查找模块连接,用于在所述激活查找模块没有在所述激活表项集合中查找到与所述报文匹配的表项时,在所述非激活表项集合中查找与所述报文匹配的表项。
优选地,所述的装置,还包括:
识别模块,与所述激活查找模块连接,用于判断所述CAM中的表项的激活状态标志为置位状态还是清除状态,如果所述激活状态标志为置位状态,则识别所述表项为激活表项,并根据所述识别出的激活表项构造所述激活表项集合;如果所述激活状态标志为清除状态,则识别所述表项为非激活表项,并根据所述识别出的非激活表项构造所述非激活表项集合。
优选地,所述的装置,还包括:
设置模块,与所述识别模块连接,用于在所述非激活查找模块在所述非激活表项集合查找到与所述报文匹配的非激活表项,则将所述非激活表项以及所述非激活表项集合中匹配优先级高于所述非激活表项的表项设置为激活表项;和/或
将所述CAM外的表项添加到所述CAM中时,判断所述激活表项集合中是否存在匹配优先级低于所述CAM外的表项的激活表项,如果存在,则将所述CAM外的表项设置为激活表项并添加到所述CAM中;和/或
如果所述激活表项集合中的激活表项在老化周期内未被命中,且在所述激活表项集合中不存在匹配优先级高于所述激活表项的表项时,则将所述激活表项设置为非激活表项,并将所述激活表项集合中匹配优先级高于所述激活表项、且在老化周期内未被命中的表项设置为非激活表项。
优选地,所述设置模块,具体用于当所述非激活表项的命中hit位或保留rsv位被置位时,将所述非激活表项的激活状态标志设置为置位状态或将所述非激活表项移至激活CAM块;
当所述CAM外的表项的hit位或rsv位被置位时,将所述CAM外的表项的激活状态标志设置为置位状态并添加到所述CAM中,或将所述CAM外的表项移至激活CAM块;
当所述激活表项的hit位和rsv位均被复位时,将所述激活表项的激活状态标志设置为清除状态或将所述激活表项移出激活CAM块。
与现有技术相比,本发明具有以下优点:本发明根据网络中流量的实时情况确定需要激活的mach lines或者将激活表项放到激活的CAM块中,达到降低CAM能耗的效果,并提高了CAM表项查找的效率,根据局部性原理,会提高CAM搜索的速度,降低硬件的转发时的负荷。
附图说明
图1为使用CAM实现路由查找的原理示意图;
图2为使用CAM实现路由查找的系统结构示意图;
图3为基于NOR结构的4×5bit的Ternary CAM模块结构示意图;
图4为bank选择方案的框图;
图5为Mini-Key的块联系示意图;
图6为Mini-Key Register示意图;
图7为PB-CAM结构示意图;
图8为本发明中的一种查找内容可寻址存储器表项的方法流程图;
图9为本发明应用场景中的查找CAM表项的方法流程图;
图10为本发明应用场景中初始状态下设备已建路由表结构示意图;
图11为本发明应用场景中路由查找中的一种rsv位维护的过程示意图;
图12为本发明应用场景中路由查找中的另一种rsv位维护的过程示意图;
图13为本发明应用场景中路由查找中的又一种rsv位维护的过程示意图;
图14为本发明应用场景中路由查找中的再一种rsv位维护的过程示意图;
图15为本发明应用场景中的查找内容可寻址存储器表项的过程示意图;
图16为本发明应用场景中的一种查找内容可寻址存储器表项的装置结构示意图。
具体实施方式
本发明提供的技术方案中,其核心思想为将CAM的查找分为两个阶段,第一阶段在激活表项集合(CAM Cache)中查找与接收到的报文匹配的表项,可选的第二个阶段在激活表项集合之外其余的表项集合中查找与接收到的报文匹配的表项,是否进行第二阶段查找取决于第一阶段查找是否有命中的表项,如果有命中的表项,则不再进行第二阶段的查找,如果没有命中的表项,则进行第二阶段的查找;同时,根据流量统计规则和表项应用特征,将CAM外的表项设置为激活表项并添加到CAM中、将CAM中的非激活表项设置为激活表项或将CAM中的激活表项设置为非激活表项。
下面将结合本发明中的附图,对本发明的技术方案进行清楚、完整地描述,如图8所示,为本发明中的一种查找CAM表项的方法流程图,应用于包括CAM的表项查找系统中,所述CAM中的表项包括激活表项集合中的表项和非激活表项集合中的表项,所述方法包括以下步骤:
步骤101,CAM接收到报文后,根据该报文的特征信息在激活表项集合中查找与该报文匹配的表项;如果在激活表项集合中查找到与该报文匹配的表项,则结束流程;如果在激活表项集合中没有查找到与该报文匹配的表项,则执行步骤102。
步骤102,CAM在非激活表项集合中查找与报文匹配的表项。
以下结合应用场景,对本发明中的查找CAM表项的方法进行详细、具体的描述。如图9所示,为本发明应用场景中的查找CAM表项的方法流程图,具体包括以下步骤:
步骤201,根据流量统计规则和表项应用特征,将CAM外的表项设置为激活表项并添加到CAM中、将CAM中的非激活表项设置为激活表项或将CAM中的激活表项设置为非激活表项。
其中,流量统计规则为根据流量统计特征确定表项是否被优先查找的规则,根据表项应用特征确定被优先查找的表项能够辅助根据流量统计规则确定被优先查找的表项完成表项的独立查找。
具体地,如果所述CAM在所述非激活表项集合查找到与所述报文匹配的非激活表项,则将所述非激活表项以及所述非激活表项集合中匹配优先级高于所述非激活表项的表项设置为激活表项。
将所述CAM外的表项添加到所述CAM中时,判断所述激活表项集合中是否存在匹配优先级低于所述CAM外的表项的激活表项,如果存在,则将所述CAM外的表项设置为激活表项并添加到所述CAM中。
如果所述激活表项集合中的激活表项在老化周期内未被命中,且在所述激活表项集合中不存在匹配优先级高于所述激活表项的表项时,则将所述激活表项设置为非激活表项,并将所述激活表项集合中匹配优先级高于所述激活表项、且在老化周期内未被命中的表项设置为非激活表项。
在具体的实现中,可以通过在CAM的表项中增加两个bit位设置表项是否处于激活状态,上述bit位包括hit(命中)位和rsv(保留)位,其中,hit位表示表项是否被命中;rsv位表示表项是否需要保留在激活CAM块中或者是否保持处于激活状态。
将CAM中的非激活表项设置为激活表项,具体为:当非激活表项的hit位或rsv位被置位时,将非激活表项的激活状态标志设置为置位状态或将所述非激活表项移至激活CAM块。将CAM外的表项设置为激活表项并添加到CAM中,具体为:当CAM外的表项的hit位或rsv位被置位时,将该CAM外的表项的激活状态标志设置为置位状态并添加到CAM中,或将该CAM外的表项移至激活CAM块。将CAM中的激活表项设置为非激活表项,具体为:当激活表项的hit位和rsv位均被复位时,将该激活表项的激活状态标志设置为清除状态或将该激活表项移出激活CAM块。
其中,hit位和rsv位可以按照如下方式进行维护:当非激活表项被命中,且匹配优先级高于该非激活表项的表项均为激活表项时,将该非激活表项的hit位置位;当CAM中的匹配优先级低于非激活表项的表项被命中时,将该非激活表项的rsv位置位;当CAM外的表项被命中时,将该CAM外的表项的hit位置位;当激活表项集合中存在匹配优先级低于CAM外的表项的表项时,将该CAM外的表项的rsv位置位。
当激活表项的hit位的老化时间超时,将该激活表项的hit位复位;如果CAM中的匹配优先级低于激活表项的表项均为非激活表项时,将该激活表项的rsv位复位。
以下举例说明rsv位的维护方法,如图10所示,为本发明应用场景中初始状态下设备已建路由表结构示意图,其中,灰色节点对应下发CAM中的表项,各个表项对应的hit位和rsv位均为0。当有目的IP为192.168.100.100的报文到达设备时,该报文会匹配路由192.0.0.0/8和192.168.0.0/14。经过最长前缀匹配查找,会找到192.168.0.0/14的路由表项,不仅使表项192.168.0.0/14的hit位置1,还会维护相应表项的rsv位。
以路由查找为例,rsv位可以按照如下方式维护:前缀长度为n的网段路由被添加时,如果激活表项集合中同时存在匹配本路由但前缀长度小于n的其他路由(更短的匹配或者优先级更低的匹配),将自身的rsv位置为1;前缀长度为n的网段路由被命中时,将rsv位为0、匹配该路由的、前缀长度大于n的路由(更长的匹配或者更优先的路由匹配)的rsv位置1,再将前缀长度为n的网段路由对应的hit位由0置为1;前缀长度为n的网段路由被老化导致自身的hit位从1变为0时,如果自身的rsv位为1,说明本路由及匹配本路由但前缀长度大于n的路由(更精确的路由)都需要保留,则不作任何处理;如果自身的rsv位为0,则以本路由为根节点按路由树遍历,将rsv位为1、hit位为0、匹配该路由的、前缀长度大于n的路由rsv位置0,同时注意遍历每个分支到hit位为1的节点为止,将该节点的rsv位置0,然后返回父节点继续遍历。
如图11所示,为本发明应用场景中路由查找中的一种rsv位维护的过程示意图,其中,各节点路由前面的有序对表示(rsv,hit)的状态。前缀长度为16的网段路由192.168.0.0/16被添加时,如果激活表项集合中同时存在匹配本路由但前缀长度小于16的其他路由(更短的匹配、或者优先级更低的匹配),即本例中的192.0.0.0/8,则将自身的rsv位置为1。前缀长度为14的网段路由192.168.0.0/14被命中时,将rsv位为0、匹配该路由的、前缀长度大于14的路由表项192.170.0.0/16、192.168.1.2/32、192.168.1.3/32的rsv位置1,再将网段路由192.168.0.0/14的hit位由0置为1,如图12所示。前缀长度为14的网段路由192.168.0.0/14被老化导致自身的hit位从1变为0时,如果自身的rsv位为1,说明本路由及匹配本路由但前缀长度大于14的路由(更精确的路由,即本例中的192.0.0.0/8)都需要保留,则不进行任何rsv位的处理,表项仍然保持激活状态,如图13所示;如果192.168.0.0/14本身rsv位为0,则以本路由为根节点按路由trie树遍历,将rsv位为1、hit位为0、匹配该路由的、前缀长度大于14的路由(如192.168.1.2/32)rsv位置0,同时注意遍历每个分支到hit位为1的节点为止,将该节点的rsv位置0(如192.168.1.3/32和192.170.0.0/16),然后返回父节点继续遍历,该节点(如192.170.0.0/16)以下的节点(如192.170.0.1/32和192.170.0.2/32)的rsv位不再作更新,保留原来的rsv位的状态,如图14所示。
类似地,ACL查找时的rsv位可以按照如下方式维护:优先级为n的ACL被添加时,如果激活表项集合中同时存在和本ACL在同一优先集合中,但优先级小于n的其他ACL(优先级更低的匹配),则将自身的rsv位置为1;优先级为n的ACL被命中时,将rsv位为0、和本ACL在同一优先集合中的、优先级大于n的路由rsv位置1,再将自身的hit为位由0置为1;优先级为n的ACL被老化导致自身的hit位从1变为0时,如果自身的rsv位为1,说明本ACL及和本ACL在同一优先集合中但优先级别大于n的ACL(优先级别更低的ACL)都需要保留,所以不作任何处理;如果本身rsv位为0,则以本ACL为起始,按ACL优先级别降序(优先级从高到低方向)遍历,将rsv位为1、hit位为0、和本ACL在同一优先集合中的、优先级小于n的ACL的rsv位置0,同时注意遍历到hit位为1的节点为止,将该节点rsv位置0,然后结束遍历。
步骤202,从CAM中的表项中识别激活表项,并根据所述识别出的激活表项构造所述激活表项集合。
具体地,从CAM中的所有表项中识别激活表项,具体包括:判断CAM中的表项的激活状态标志为置位状态还是清除状态,如果激活状态标志为置位状态,则识别该表项为激活表项;如果激活状态标志为清除状态,则识别该表项不是激活表项。
需要说明的是,本步骤为可选步骤,当根据表项的激活状态标志判断表项是否为激活表项时,可以执行本步骤;当根据表项是否位于激活CAM块中判断表项是否为激活表项时,可以不执行本步骤。
步骤203,CAM接收到报文后,根据该报文的特征信息在激活表项集合中查找与报文匹配的表项,如果在激活表项集合没有查找到与该报文匹配的表项,则执行步骤204;如果在激活表项集合查找到与该报文匹配的表项,则结束流程。
步骤204,CAM在激活表项集合之外的表项集合中查找与报文匹配的表项。
具体地,本发明应用场景中的查找内容可寻址存储器表项的过程,参照图15所示。在CAM中的激活表项集合中查找表项时,只有前缀长度为32的路由、前缀长度为24的路由和前缀长度为20的路由被激活,在激活的searchlines中查找表项,只有前缀长度为20的路由和前缀长度为24的路由两条表项命中,其中,前缀长度为24的路由对应地址为0001,前缀长度为20的路由对应地址为0010,编码器encoder按照最长匹配选择最低的匹配地址0001输出。
本发明根据网络中流量的实时情况确定需要激活的mach lines或者将激活表项放到激活的CAM块中,达到降低CAM能耗的效果,并提高了CAM表项查找的效率,根据局部性原理,会提高CAM搜索的速度,降低硬件的转发时的负荷。
本发明在上述实施方式中提供了查找内容可寻址存储器表项的方法,相应地,本发明还提供了应用上述查找内容可寻址存储器表项的方法的装置。
如图16所示,本发明应用场景中的一种查找CAM表项的装置结构示意图,应用于包括CAM的表项查找系统中,所述CAM中的表项包括激活表项集合中的表项和非激活表项集合中的表项,所述装置包括设置模块310、识别模块320、激活查找模块330和非激活查找模块340,其中,
设置模块310,与识别模块320连接,用于根据流量统计规则和表项应用特征,将所述CAM外的表项设置为激活表项并添加到所述CAM中或将所述CAM中的非激活表项设置为激活表项,或将所述CAM中的激活表项设置为非激活表项,供识别模块320识别。
其中,流量统计规则为根据流量统计特征确定表项是否被优先查找的规则,根据所述表项应用特征确定被优先查找的表项能够辅助根据所述流量统计规则确定被优先查找的表项完成表项的独立查找。
具体地,上述设置模块310具体用于在所述非激活查找模块在所述非激活表项集合查找到与所述报文匹配的非激活表项,则将所述非激活表项以及所述非激活表项集合中匹配优先级高于所述非激活表项的表项设置为激活表项;和/或
将所述CAM外的表项添加到所述CAM中时,判断所述激活表项集合中是否存在匹配优先级低于所述CAM外的表项的激活表项,如果存在,则将所述CAM外的表项设置为激活表项并添加到所述CAM中;和/或
如果所述激活表项集合中的激活表项在老化周期内未被命中,且在所述激活表项集合中不存在匹配优先级高于所述激活表项的表项时,则将所述激活表项设置为非激活表项,并将所述激活表项集合中匹配优先级高于所述激活表项、且在老化周期内未被命中的表项设置为非激活表项。
在具体的实现中,可以通过在CAM的表项中增加两个bit位设置表项是否处于激活状态,当所述非激活表项的命中hit位或保留rsv位被置位时,设置模块310将所述非激活表项的激活状态标志设置为置位状态或将所述非激活表项移至激活CAM块;当所述CAM外的表项的hit位或rsv位被置位时,设置模块310将所述CAM外的表项的激活状态标志设置为置位状态并添加到所述CAM中,或将所述CAM外的表项移至激活CAM块;当所述激活表项的hit位和rsv位均被复位时,设置模块310将所述激活表项的激活状态标志设置为清除状态或将所述激活表项移出激活CAM块。
其中,hit位和rsv位可以按照如下方式进行维护:当非激活表项被命中,且匹配优先级高于该非激活表项的表项均为激活表项时,将该非激活表项的hit位置位;当CAM中的匹配优先级低于非激活表项的表项被命中时,将该非激活表项的rsv位置位;当CAM外的表项被命中时,将该CAM外的表项的hit位置位;当激活表项集合中存在匹配优先级低于CAM外的表项的表项时,将该CAM外的表项的rsv位置位。
当激活表项的hit位的老化时间超时,将该激活表项的hit位复位;如果CAM中的匹配优先级低于激活表项的表项均为非激活表项时,将该激活表项的rsv位复位。
识别模块320,与激活查找模块330连接,用于从所述CAM中的表项中识别激活表项,并根据所述识别出的激活表项构造所述激活表项集合,供所述激活查找模块查找。
上述识别模块320,具体用于判断所述CAM中的表项的激活状态标志为置位状态还是清除状态,如果所述激活状态标志为置位状态,则识别所述表项为激活表项,将所述表项添加到所述激活表项集合中;如果所述激活状态标志为清除状态,则识别所述表项不是激活表项。
激活查找模块330,用于接收到报文后,根据所述报文的特征信息在激活表项集合中查找与所述报文匹配的表项;
非激活查找模块340,与激活查找模块330连接,用于在激活查找模块330没有在所述激活表项集合中查找到与所述报文匹配的表项时,在所述非激活表项集合中查找与所述报文匹配的表项。
本发明根据网络中流量的实时情况确定需要激活的mach lines或者将激活表项放到激活的CAM块中,达到降低CAM能耗的效果,并提高了CAM表项查找的效率,根据局部性原理,会提高CAM搜索的速度,降低硬件的转发时的负荷。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以集成于一体,也可以分离部署;可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (13)
1.一种查找内容可寻址存储器CAM表项的方法,应用于包括CAM的表项查找系统中,其特征在于,所述CAM中的表项包括激活表项集合中的表项和非激活表项集合中的表项,所述方法包括以下步骤:
所述CAM接收到报文后,根据所述报文的特征信息在所述激活表项集合中查找与所述报文匹配的表项;
如果在所述激活表项集合中查找到与所述报文匹配的表项,则结束流程;如果在所述激活表项集合中没有查找到与所述报文匹配的表项,则所述CAM在所述非激活表项集合中查找与所述报文匹配的表项。
2.如权利要求1所述的方法,其特征在于,所述CAM在激活表项集合中查找与报文匹配的表项之前,还包括:
判断所述CAM中的表项的激活状态标志为置位状态还是清除状态,如果所述激活状态标志为置位状态,则识别所述表项为激活表项,并根据所述识别出的激活表项构造所述激活表项集合;如果所述激活状态标志为清除状态,则识别所述表项为非激活表项,并根据所述识别出的非激活表项构造所述非激活表项集合。
3.如权利要求1所述的方法,其特征在于,所述CAM在非激活表项集合中查找与报文匹配的表项之后,还包括:
如果所述CAM在所述非激活表项集合查找到与所述报文匹配的非激活表项,则将所述非激活表项以及所述非激活表项集合中匹配优先级高于所述非激活表项的表项设置为激活表项。
4.如权利要求1所述的方法,其特征在于,还包括:
将所述CAM外的表项添加到所述CAM中时,判断所述激活表项集合中是否存在匹配优先级低于所述CAM外的表项的激活表项,如果存在,则将所述CAM外的表项设置为激活表项并添加到所述CAM中。
5.如权利要求3或4所述的方法,其特征在于,还包括:
如果所述激活表项集合中的激活表项在老化周期内未被命中,且在所述激活表项集合中不存在匹配优先级高于所述激活表项的表项时,则将所述激活表项设置为非激活表项,并将所述激活表项集合中匹配优先级高于所述激活表项、且在老化周期内未被命中的表项设置为非激活表项。
6.如权利要求3或4所述的方法,其特征在于,所述将CAM中的非激活表项设置为激活表项,具体为:
当所述非激活表项的命中hit位或保留rsv位被置位时,将所述非激活表项的激活状态标志设置为置位状态或将所述非激活表项移至激活CAM块;
所述将CAM外的表项设置为激活表项并添加到CAM中,具体为:
当所述CAM外的表项的hit位或rsv位被置位时,将所述CAM外的表项的激活状态标志设置为置位状态并添加到所述CAM中,或将所述CAM外的表项移至激活CAM块。
7.如权利要求6所述的方法,其特征在于,所述非激活表项的hit位或rsv位被置位,具体为:
当所述非激活表项被命中,且匹配优先级高于所述非激活表项的表项均为激活表项时,将所述非激活表项的hit位置位;或
当所述CAM中的匹配优先级低于所述非激活表项的表项被命中时,将所述非激活表项的rsv位置位;
所述CAM外的表项的hit位或rsv位被置位,具体为:
当所述CAM外的表项被命中时,将所述CAM外的表项的hit位置位;或
当所述激活表项集合中存在匹配优先级低于所述CAM外的表项的表项时,将所述CAM外的表项的rsv位置位。
8.如权利要求5所述的方法,其特征在于,所述将CAM中的激活表项设置为非激活表项,具体为:
当所述激活表项的hit位和rsv位均被复位时,将所述激活表项的激活状态标志设置为清除状态或将所述激活表项移出激活CAM块。
9.如权利要求8所述的方法,其特征在于,所述激活表项的hit位和rsv位均被复位,具体为:
当所述激活表项的hit位的老化时间超时,将所述激活表项的hit位复位;
如果所述CAM中的匹配优先级低于所述激活表项的表项均为非激活表项时,将所述激活表项的rsv位复位。
10.一种查找CAM表项的装置,应用于包括CAM的表项查找系统中,其特征在于,所述CAM中的表项包括激活表项集合中的表项和非激活表项集合中的表项,所述装置包括:
激活查找模块,用于接收到报文后,根据所述报文的特征信息在所述激活表项集合中查找与所述报文匹配的表项;
非激活查找模块,与所述激活查找模块连接,用于在所述激活查找模块没有在所述激活表项集合中查找到与所述报文匹配的表项时,在所述非激活表项集合中查找与所述报文匹配的表项。
11.如权利要求10所述的装置,其特征在于,还包括:
识别模块,与所述激活查找模块连接,用于判断所述CAM中的表项的激活状态标志为置位状态还是清除状态,如果所述激活状态标志为置位状态,则识别所述表项为激活表项,并根据所述识别出的激活表项构造所述激活表项集合;如果所述激活状态标志为清除状态,则识别所述表项为非激活表项,并根据所述识别出的非激活表项构造所述非激活表项集合。
12.如权利要求11所述的装置,其特征在于,还包括:
设置模块,与所述识别模块连接,用于在所述非激活查找模块在所述非激活表项集合查找到与所述报文匹配的非激活表项,则将所述非激活表项以及所述非激活表项集合中匹配优先级高于所述非激活表项的表项设置为激活表项;和/或
将所述CAM外的表项添加到所述CAM中时,判断所述激活表项集合中是否存在匹配优先级低于所述CAM外的表项的激活表项,如果存在,则将所述CAM外的表项设置为激活表项并添加到所述CAM中;和/或
如果所述激活表项集合中的激活表项在老化周期内未被命中,且在所述激活表项集合中不存在匹配优先级高于所述激活表项的表项时,则将所述激活表项设置为非激活表项,并将所述激活表项集合中匹配优先级高于所述激活表项、且在老化周期内未被命中的表项设置为非激活表项。
13.如权利要求12所述的装置,其特征在于,
所述设置模块,具体用于当所述非激活表项的命中hit位或保留rsv位被置位时,将所述非激活表项的激活状态标志设置为置位状态或将所述非激活表项移至激活CAM块;
当所述CAM外的表项的hit位或rsv位被置位时,将所述CAM外的表项的激活状态标志设置为置位状态并添加到所述CAM中,或将所述CAM外的表项移至激活CAM块;
当所述激活表项的hit位和rsv位均被复位时,将所述激活表项的激活状态标志设置为清除状态或将所述激活表项移出激活CAM块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102100111A CN101694664B (zh) | 2009-11-03 | 2009-11-03 | 一种查找内容可寻址存储器表项的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009102100111A CN101694664B (zh) | 2009-11-03 | 2009-11-03 | 一种查找内容可寻址存储器表项的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101694664A CN101694664A (zh) | 2010-04-14 |
CN101694664B true CN101694664B (zh) | 2012-07-11 |
Family
ID=42093637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009102100111A Active CN101694664B (zh) | 2009-11-03 | 2009-11-03 | 一种查找内容可寻址存储器表项的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101694664B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102456023A (zh) * | 2010-10-20 | 2012-05-16 | 北大方正集团有限公司 | 一种查找用户信息的方法及系统 |
CN102402611B (zh) * | 2011-12-12 | 2013-07-24 | 盛科网络(苏州)有限公司 | 一种用tcam实现关键字快速查找并读表的方法 |
CN104378295B (zh) * | 2013-08-12 | 2019-03-26 | 中兴通讯股份有限公司 | 表项管理装置及表项管理方法 |
CN105099918B (zh) * | 2014-05-13 | 2019-01-29 | 华为技术有限公司 | 一种数据查找匹配的方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1510931A (zh) * | 2002-12-26 | 2004-07-07 | ��Ϊ��������˾ | 一种改进的多级查找表的建立及查找方法 |
US7099170B1 (en) * | 2004-09-14 | 2006-08-29 | Netlogic Microsystems, Inc. | Reduced turn-on current content addressable memory (CAM) device and method |
-
2009
- 2009-11-03 CN CN2009102100111A patent/CN101694664B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1510931A (zh) * | 2002-12-26 | 2004-07-07 | ��Ϊ��������˾ | 一种改进的多级查找表的建立及查找方法 |
US7099170B1 (en) * | 2004-09-14 | 2006-08-29 | Netlogic Microsystems, Inc. | Reduced turn-on current content addressable memory (CAM) device and method |
Also Published As
Publication number | Publication date |
---|---|
CN101694664A (zh) | 2010-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102377664B (zh) | 一种基于tcam的区域匹配装置和方法 | |
US7581059B2 (en) | Controlling a searchable range within a network search engine | |
US8295286B2 (en) | Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware | |
CN102402611B (zh) | 一种用tcam实现关键字快速查找并读表的方法 | |
CN108875064A (zh) | 基于FPGA的OpenFlow多维数据匹配查找方法 | |
EP3270551B1 (en) | Retrieval device, retrieval method, program, and recording medium | |
CN101694664B (zh) | 一种查找内容可寻址存储器表项的方法和装置 | |
CN101620623A (zh) | 内容可寻址存储器表项管理方法和装置 | |
US8438330B2 (en) | Updating cam arrays using prefix length distribution prediction | |
CN102707788B (zh) | 用于保持其功耗低于指定功率限制的内容搜索系统及方法 | |
CN101848248B (zh) | 一种规则查找方法和装置 | |
US8639875B1 (en) | Content search system having multiple pipelines | |
US8180958B2 (en) | Key selection device and process for content-addressable memory | |
EP2512073B1 (en) | Method and apparatus for maintaining a routing table | |
CN101277252A (zh) | 多分支Trie树的遍历方法 | |
Sun et al. | A hybrid approach to CAM-based longest prefix matching for IP route lookup | |
CN110191057B (zh) | 路由查找方法及路由设备 | |
CN103973571A (zh) | 网络处理器及其路由查找方法 | |
US20050243587A1 (en) | Reading or writing while searching in a CAM | |
CN104301227B (zh) | 基于tcam的高速低功耗ip路由表查找方法 | |
US6934797B2 (en) | Counter in CAM word | |
CN103309950A (zh) | 一种键值搜索方法 | |
Soni et al. | FPGA implementation of content addressable memory based information detection system | |
Hsiao et al. | A high-throughput and high-capacity IPv6 routing lookup system | |
Kocak et al. | A power-efficient TCAM architecture for network forwarding tables |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |
|
CP03 | Change of name, title or address |