基于tcam的查表处理方法及装置制造方法

文档序号:6504430阅读:268来源:国知局
基于tcam的查表处理方法及装置制造方法【专利摘要】本发明提供了一种基于TCAM的查表处理方法及装置,其中,上述方法包括:执行用于查询TCAM表项的第一查询过程;在执行所述第一查询过程中,执行用于查询除所述TCAM表项之外的其它表项的第二查询过程,其中,所述第一查询过程和所述第二查询过程是独立运行的;通过所述第一查询过程和所述第二查询过程分别获取第一查询结果和第二查询结果。采用本发明提供的上述技术方案,解决了相关技术中,基于TCAM的查表方式导致的报文处理时间较长,进而影响到报文的转发性能等技术问题,进而减少了报文处理的时间,从而提高了报文的转发性能。【专利说明】基于TCAM的查表处理方法及装置【
技术领域
】[0001]本发明涉及通信领域,尤其是涉及一种基于TCAM的查表处理方法及装置。【
背景技术
】[0002]基于三态内容寻址存储器(TernaryContentAddressableMemory,简称为TCAM)的查表方式,方便快捷,支持长键值和掩码的查表类型。在需要支持大量访问控制列表(AccessControlList,简称为ACL)或者大量路由的时候,一般交换机的设备商都会选择TCAM来实现ACL或者路由的查表。[0003]目前TCAM芯片的查表架构是确定的,TCAM查表返回的结果只能是条目索引号,而不能得到最终的结果。一个表项如果要通过TCAM来实现,需要设计成:组装好的键值去查TCAM,TCAM返回条目索引号,然后再使用这个条目索引号查一张直接表,得到最终查表结果。也就是表项设计成TCAM查表类型,就必须要查一张TCAM表和一张直接表。[0004]开发者使用TCAM查表,都是先将控制字和键值发送给TCAM,然后等待TCAM查表结束将结果(result)返回。最后再用返回的result中的索引(index)查直接表,得到想要的结果。TCAM查表的过程中,因为芯片中查表结果存放的寄存器是唯一的,因此不能再去查其他的表项,只能空等待。如图1所示,相关技术中的TCAM查表方案包括如下步骤:[0005]步骤S102:准备TCAM的查表键值,准备完之后执行步骤S104;[0006]步骤S104:使用准备好的查表键值查TCAM表,然后执行步骤S106;[0007]步骤S106:判断TCAM查表是否已经返回结果(result),如果已经返回,执行步骤S108;如果没有返回,继续执行步骤S106,也就是一个等待的过程;[0008]步骤S108:使用返回的result中的index查直接表;[0009]步骤SllO:得到想要的查表结果,结束。[0010]从上面的查表步骤中可以看到:步骤S106花费的时间就是一次TCAM查表的时间,在这段时间内,因为交换机中查表结果存放的寄存器是固定的,因此不能再去查其他的表项,只能空等待。[0011]因此,TCAM查表会消耗大量的查表性能,在业务转发流程复杂的情况下,会导致业务达不到转发要求。使用TCAM作为表项存储的业务,虽然TCAM查表简单快捷,但是转发性能是一大难点。[0012]针对相关技术中的上述问题,目如尚未提出有效的解决方案。【
发明内容】[0013]针对相关技术中,基于TCAM的查表方式导致的报文处理时间较长,进而影响到报文的转发性能等技术问题,本发明提供了一种基于TCAM的查表处理及装置,以至少解决上述问题。[0014]根据本发明的一个方面,提供了一种基于TCAM的查表处理方法,包括:执行用于查询TCAM表项的第一查询过程;在执行所述第一查询过程中,执行用于查询除所述TCAM表项之外的其它表项的第二查询过程,其中,所述第一查询过程和所述第二查询过程是独立运行的;通过所述第一查询过程和所述第二查询过程分别获取第一查询结果和第二查询结果。[0015]优选地,通过所述第一查询过程获取第一查询结果,包括:将从TCAM查询到的第一查询结果存储至除查表引擎专用寄存器之外的指定寄存器;将所述第一查询结果从所述指定寄存器读取至所述查表引擎专用寄存器;从所述查询引擎专用寄存器中获取所述第一查询结果。[0016]优选地,将所述第一查询结果从所述指定寄存器读取至所述查表引擎专用寄存器之前,包括:判断所述第二查询过程是否结束,其中,在判断为结束的情况下,将所述第一查询结果从所述指定寄存器读取至所述查表引擎专用寄存器。[0017]优选地,判断所述第二查询过程是否结束,包括:判断所述其它表项中的待查询表项是否已经遍历查询完成。[0018]优选地,通过所述第二查询过程获取所述第二查询结果,包括:将通过所述第二查询过程查找到的所述第二查询结果存储至所述查表引擎专用寄存器;从所述查询引擎专用寄存器中获取所述第二查询结果。[0019]优选地,执行用于查询除所述TCAM表项之外的其它表项的第二查询过程,包括:在根据用于查询TCAM表项的查询消息触发执行所述第一查询过程后,执行所述第二查询过程。[0020]根据本发明的另一个方面,提供了一种基于TCAM的查表处理装置,包括:第一执行模块,用于执行用于查询TCAM表项的第一查询过程;第二执行模块,用于在执行所述第一查询过程中,执行用于查询除所述TCAM表项之外的其它表项的第二查询过程,其中,所述第一查询过程和所述第二查询过程是独立运行的;获取模块,用于通过所述第一查询过程和所述第二查询过程分别获取第一查询结果和第二查询结果。[0021]优选地,所述获取模块包括:第一存储单元,用于将从TCAM查询到的第一查询结果存储至除查表引擎专用寄存器之外的指定寄存器;读取单元,用于将所述第一查询结果从所述指定寄存器读取至所述查表引擎专用寄存器;第一获取单元,用于从所述查询引擎专用寄存器中获取所述第一查询结果。[0022]优选地,所述获取模块包括:第二存储单元,用于将通过所述第二查询过程查找到的所述第二查询结果存储至所述查表引擎专用寄存器;第二获取单元,用于从所述查询引擎专用寄存器中获取所述第二查询结果。[0023]优选地,所述第二执行模块,用于在根据用于查询TCAM表项的查询消息触发执行所述第一查询过程后,执行所述第二查询过程。[0024]通过本发明,采用在执行用于查询TCAM表项的第一查询过程中,执行用于查询除所述TCAM表项之外的其它表项的第二查询过程的技术手段,解决了相关技术中,基于TCAM的查表方式导致的报文处理时间较长,进而影响到报文的转发性能等技术问题,进而减少了报文处理的时间,从而提高了报文的转发性能。【专利附图】【附图说明】[0025]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:[0026]图1为根据相关技术的TCAM查表方法的流程图;[0027]图2为根据本发明实施例的基于TCAM的查表处理方法的流程图;[0028]图3为根据本发明实施例的基于TCAM的查表处理装置的结构框图;[0029]图4为根据本发明实施例的基于TCAM的查表处理装置的另一结构框图;[0030]图5为根据本发明优选实施例的基于TCAM的查表处理方法的流程图;[0031]图6为根据本发明优选实施例的基于TCAM的查表处理方法的流程图。【具体实施方式】[0032]下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。[0033]实施例1[0034]图2为根据本发明实施例的基于TCAM的查表处理方法的流程图。如图2所示,该方法包括:[0035]步骤S202,执行用于查询TCAM表项的第一查询过程;[0036]步骤S204,在执行第一查询过程中,执行用于查询除TCAM表项之外的其它表项的第二查询过程,其中,第一查询过程和第二查询过程是独立运行的;[0037]步骤S206,通过第一查询过程和第二查询过程分别获取第一查询结果和第二查询结果。[0038]通过上述各个处理步骤,由于在执行用于查询TCAM表项的第一查询过程中,执行了用于查询除所述TCAM表项之外的其它表项的第二查询过程,充分利用了上述第一查询过程中用于等待查询结果的等待时间,从而有效减少了报文处理的时间,进而提高了报文的转发性能。[0039]本实施例中,为了不影响正常TCAM查表,在通过第一查询过程获取第一查询结果的过程中,需要设置一个和查表引擎专用寄存器不同的指定寄存器存储返回的查询结果,具体实现过程如下:将从TCAM查询到的第一查询结果存储至除查表引擎专用寄存器之外的指定寄存器;将第一查询结果从指定寄存器读取至查表引擎专用寄存器;从查询引擎专用寄存器中获取第一查询结果。[0040]在本实施例中,将第一查询结果从指定寄存器读取至查表引擎专用寄存器之前,需要判断第二查询过程是否结束,其中,在判断为结束的情况下,将第一查询结果从指定寄存器读取至查表引擎专用寄存器。[0041]在上述其它表项为多个时,上述判断过程可以表现为以下方式:判断其它表项中的待查询表项是否已经遍历查询完成。[0042]上述第二查询过程可以通过以下方式实现:将通过第二查询过程查找到的第二查询结果存储至查表引擎专用寄存器;从查询引擎专用寄存器中获取第二查询结果。[0043]执行用于查询除TCAM表项之外的其它表项的第二查询过程的时机可以选择在第二查询过程中的任意时机,具体根据实际情况而定,在本实施例的一个优选实施方式中,可以在根据用于查询TCAM表项的查询消息触发执行第一查询过程后,执行第二查询过程。[0044]在本实施例中还提供了一种基于TCAM的查表处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述,下面对该装置中涉及到的模块进行说明。如以下所使用的,术语"模块"可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图3为根据本发明实施例的基于TCAM的查表处理装置的结构框图。如图3所示,该装置包括:[0045]第一执行模块30,连接至第二执行模块32和获取模块34,用于执行用于查询TCAM表项的第一查询过程;[0046]第二执行模块32,连接至获取模块34,用于在执行第一查询过程中,执行用于查询除TCAM表项之外的其它表项的第二查询过程,其中,第一查询过程和第二查询过程是独立运行的;[0047]获取模块34,用于通过第一查询过程和第二查询过程分别获取第一查询结果和第_查询结果。[0048]通过上述各个模块实现的功能,同样可以充分利用上述第一查询过程中用于等待查询结果的等待时间,从而有效减少报文处理的时间,进而提高报文的转发性能。[0049]优选地,如图4所示,上述获取模块34包括:第一存储单元340,连接至读取单元342,用于将从TCAM查询到的第一查询结果存储至除查表引擎专用寄存器之外的指定寄存器;读取单元342,连接至第一获取单元344,用于将第一查询结果从指定寄存器读取至查表引擎专用寄存器;第一获取单元344,用于从查询引擎专用寄存器中获取第一查询结果。[0050]优选地,如图4所示,上述获取模块34包括:第二存储单元346,连接至第二获取单元348,用于将通过第二查询过程查找到的第二查询结果存储至查表引擎专用寄存器;第二获取单元348,用于从查询引擎专用寄存器中获取第二查询结果。[0051]优选地,上述第二执行模块32,用于在根据用于查询TCAM表项的查询消息触发执行第一查询过程后,执行第二查询过程。[0052]为了更好地理解上述实施例,以下结合上述实施例的优选实施例1-2详细说明。[0053]实施例1[0054]本实施例提供一种基于TCAM的查表处理方法,在TCAM查表等待结果的过程中,力口入了其他表项的查找,从而减少了报文处理的时间,提高了报文的转发性能。[0055]为实现上述目的,本实施例采用的技术方案如下:充分利用相关技术中(如图1所示的方案)空等待的时间,穿插查找其他的需要查找的表项(如查一张哈希表),查找完成之后,再判断TCAM查表是否已完成,如果完成,再查一张直接表,没有完成则等待。[0056]如图5所示,该方法包括以下处理步骤:[0057]步骤S502:准备TCAM的查表键值,准备完之后执行步骤S504;[0058]步骤S504:使用准备好的查表键值查TCAM表。[0059]在此需要强调的是:TCAM查表和其他的普通查表不一样,TCAM查表是数据处理芯片将控制字和键值发送给TCAM,TCAM独自进行查表的过程。[0060]数据处理芯片只需要给TCAM查表指定一个返回寄存器(该返回寄存器不占用查表引擎专用寄存器,而查表引擎专用寄存器又可以读取到返回寄存器中的TCAM返回值),然后在TCAM查表等待的过程中,数据处理芯片就可以再去查找其他的表项。[0061]于是在步骤S504中,数据处理芯片必须指定TCAM查表结束,result返回到一个返回寄存器,而非查表引擎专用寄存器。[0062]TCAM查表命令执行完成之后(也就是将控制字和键值发送给TCAM之后),执行步骤3。[0063]步骤S506:看有没有需要并行查找的表项,也就是和TCAM查找结果无关的表项。如果有的话,就穿插在TCAM等待的间隙查找,即并行查找,并行查表结束之后,执行步骤S508;[0064]步骤S508:读取TCAM返回值寄存器,将TCAM查找result读取到查表引擎专用寄存器中;执行步骤S510;[0065]步骤S510:判断TCAM查表是否已经返回result,如果返回,执行步骤S512;如果没有返回,继续执行步骤S510,也就是一个等待的过程,即使等待也是一个很短的时间;[0066]步骤S512:使用返回的result中的index查直接表,得到真正想要的查表结果。结束。[0067]本实施例中的上述方案适用于对各种类型的TCAM查表。[0068]实施例2[0069]本实施例给出了一个简单的报文处理的实例。见表1,一共需要查四张表:其中tablel是一张独立的表项,什么时候查都无所谓;table2_table4必须顺序查,table4依赖table3,table3依赖table2。【权利要求】1.一种基于三态内容寻址存储器TCAM的查表处理方法,其特征在于,包括:执行用于查询TCAM表项的第一查询过程;在执行所述第一查询过程中,执行用于查询除所述TCAM表项之外的其它表项的第二查询过程,其中,所述第一查询过程和所述第二查询过程是独立运行的;通过所述第一查询过程和所述第二查询过程分别获取第一查询结果和第二查询结果。2.根据权利要求1所述的方法,其特征在于,通过所述第一查询过程获取第一查询结果,包括:将从TCAM查询到的第一查询结果存储至除查表引擎专用寄存器之外的指定寄存器;将所述第一查询结果从所述指定寄存器读取至所述查表引擎专用寄存器;从所述查询引擎专用寄存器中获取所述第一查询结果。3.根据权利要求2所述的方法,其特征在于,将所述第一查询结果从所述指定寄存器读取至所述查表引擎专用寄存器之前,包括:判断所述第二查询过程是否结束,其中,在判断为结束的情况下,将所述第一查询结果从所述指定寄存器读取至所述查表引擎专用寄存器。4.根据权利要求3所述的方法,其特征在于,判断所述第二查询过程是否结束,包括:判断所述其它表项中的待查询表项是否已经遍历查询完成。5.根据权利要求1所述的方法,其特征在于,通过所述第二查询过程获取所述第二查询结果,包括:将通过所述第二查询过程查找到的所述第二查询结果存储至所述查表引擎专用寄存器;从所述查询引擎专用寄存器中获取所述第二查询结果。6.根据权利要求1至5任一项所述的方法,其特征在于,执行用于查询除所述TCAM表项之外的其它表项的第二查询过程,包括:在根据用于查询TCAM表项的查询消息触发执行所述第一查询过程后,执行所述第二查询过程。7.-种基于三态内容寻址存储器TCAM的查表处理装置,其特征在于,包括:第一执行模块,用于执行用于查询TCAM表项的第一查询过程;第二执行模块,用于在执行所述第一查询过程中,执行用于查询除所述TCAM表项之外的其它表项的第二查询过程,其中,所述第一查询过程和所述第二查询过程是独立运行的;获取模块,用于通过所述第一查询过程和所述第二查询过程分别获取第一查询结果和第二查询结果。8.根据权利要求7所述的装置,其特征在于,所述获取模块包括:第一存储单元,用于将从TCAM查询到的第一查询结果存储至除查表引擎专用寄存器之外的指定寄存器;读取单元,用于将所述第一查询结果从所述指定寄存器读取至所述查表引擎专用寄存器;第一获取单元,用于从所述查询引擎专用寄存器中获取所述第一查询结果。9.根据权利要求7所述的装置,其特征在于,所述获取模块包括:第二存储单元,用于将通过所述第二查询过程查找到的所述第二查询结果存储至所述查表引擎专用寄存器;第二获取单元,用于从所述查询引擎专用寄存器中获取所述第二查询结果。10.根据权利要求7至9任一项所述的装置,其特征在于,所述第二执行模块,用于在根据用于查询TCAM表项的查询消息触发执行所述第一查询过程后,执行所述第二查询过程。【文档编号】G06F17/30GK104239337SQ201310244525【公开日】2014年12月24日申请日期:2013年6月19日优先权日:2013年6月19日【发明者】顾霞,张启申申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1