数据查找方法、装置、计算机设备和存储介质与流程

文档序号:13983140阅读:263来源:国知局
数据查找方法、装置、计算机设备和存储介质与流程

本发明涉及计算机网络技术,特别是涉及数据查找方法、装置、计算机设备和存储介质。



背景技术:

交换机作为重要的二层交换网络设备,其性能直接影响着所在网络的整体网络速度.随着高速网络的发展,流量和网络端口的激增,需要交换机设备具有高速和线性处理能力。为了应付高速的数据流量,需要用网络芯片来实现查找逻辑。网络芯片当前包括asic(applicationspecificintegratedcircuit,专用集成电路)和np(networkprocessor,网络处理器)两大类。网络处理器凭借其高速处理及灵活的可编程性,已成为当今网络中数据处理的有效解决方案,而网络处理器中有不同的例如cam(contentaddressablememory,内容寻址存储器)和tcam(ternarycontentaddressablememory,三态内容寻址存储器)。tcam中的每一个bit的状态可以是“0”或“1”,或者是第三种状态“不关心态”,所以称为“三态”。这个特点使得tcam对所查找的数据的位域具有筛选的功能。

tcam的主要特点是快速并行查找,现有tcam的查询方式为:np从报文提取信息,整理成和tcam查找表相同的格式。称为键值(key),然后将键值(key)送到tcam查找表中与所有表项进行对照,返回匹配度最高的一项对应的地址索引(index),然后根据地址索引(index)查找sram(staticrandomaccessmemory,随机存取存储器)的数据,最后将sram查找的数据结果返回np,完成一次查找工作。

但是当tcam查找表中出现大量掩码,使用tcam表项进行查找时,实际上只有少数字段进行了查找,而又因为tcam表项长度是固定的,浪费tcam的资源。



技术实现要素:

基于此,有必要针对tcam查找表出现大量掩码,使用tcam表项进行查找时,浪费tcam资源的问题,提供一种可以节约tcam资源的数据查找方法,装置,计算机设备和存储介质。

一种数据查找方法,包括步骤:

接收报文,从所述报文中提取出查找关键字,将所述查找关键字拆分为第一字段组合和第二字段组合,所述第一字段组合需要掩码查找,所述第二字段组合不需要掩码查找;

根据预设的tcam查找表项,对所述第一字段组合进行tcam查找,获得查找结果,所述预设的tcam查找表项为缩减后的tcam表项;

对所述第二字段组合用哈希算法进行计算,获得计算结果;

根据所述查找结果和所述计算结果查找预设于sram表项中的关联数据,获取目标关联数据。本申请通过只对查找关键字中需要掩码查找的字段组合进行tcam查找,有效地节约了tcam的资源。

在其中一个实施例中,所述接收报文,从所述报文中提取出查找关键字,将所述查找关键字拆分为第一字段组合和第二字段组合的步骤之前还包括步骤:

根据与tcam查找表项对应的预设关键字中需要掩码查找的字段组合将所述tcam查找表项进行缩减。

在其中一个实施例中,所述接收报文,从所述报文中提取出查找关键字,将所述查找关键字拆分为第一字段组合和第二字段组合的步骤之前还包括步骤:

根据与tcam查找表项对应的预设关键字中需要掩码查找的字段组合将所述tcam查找表项进行缩减,缩减后的所述tcam查找表项的长度与所述预设关键字中需要掩码查找的字段组合的长度相等。

在其中一个实施例中,所述sram表项中存储有与各关联数据对应的不需掩码查找的字段组合,所述不需要掩码查找的字段组合由与各关联数据对应的预设关键字拆分形成,所述获取关联数据后,还包括,

判断所述报文对应的所述第二字段组合与所述目标关联数据对应的字段组合是否相同;

若相同,则判定本次数据查找成功;

若不相同,则判定本次数据查找失败。

在其中一个实施例中,所述关联数据在sram表项存放的数据地址包括基础地址和地址偏移量,

所述根据所述查找结果和所述计算结果,查找存放在sram表项中的关联数据的步骤包括:

根据所述查找结果确定sram表项中的基础地址;

根据所述计算结果确定sram表项中的地址偏移量;

根据确定的基础地址和确定的地址偏移量,查找存放在sram表项中的关联数据。

一种数据查找装置,包括:

提取模块,用于接收报文,从所述报文中提取出查找关键字;

拆分模块,用于将所述查找关键字拆分为第一字段组合和第二字段组合,所述第一字段组合需要掩码查找,所述第二字段组合不需要掩码查找;

查找模块,用于根据预设的tcam查找表项,对所述第一字段组合进行tcam查找,获得查找结果;

计算模块,用于对所述第二字段组合用哈希算法进行计算,获得计算结果;数据获取模块,用于根据查找结果和运算结果查找存放在sram表项中的关联数据,获取目标关联数据。

在其中一个实施例中,所述数据查找装置还包括:

缩减模块,用于在查找模块对所述第一字段组合进行tcam查找前,将tcam查找表项缩减,所述缩减是按预设关键字中需要掩码查找的字段组合进行的,所述预设关键字与所述tcam查找表项对应,缩减后的所述tcam查找表项的长度与所述需要掩码查找的字段组合的长度相等。

在其中一个实施例中,所述sram表项中存储有与各关联数据对应的不需掩码查找的字段组合,所述不需要掩码查找的字段组合由与各关联数据对应的预设关键字拆分形成,所述数据查找装置还包括,

验证模块,用于判断所述报文对应的所述第二字段组合与所述目标关联数据对应的第二字段组合是否相同;

若相同,则判定本次数据查找成功;

若不相同,则判定本次数据查找失败。

一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现上述任意一项方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述任意一项方法的步骤。

上述方法,装置,计算机设备,计算机可读存储介质通过只对查找关键字中需要掩码查找的字段组合进行tcam查找,有效地节约了tcam的资源。

附图说明

图1为本申请数据查找方法其中一个实施例的应用环境图;

图2为本申请数据查找方法其中一个实施例的流程示意图;

图3为本申请数据查找方法其中一个实施例的流程示意图;

图4为本申请数据查找方法其中一个实施例的流程示意图;

图5为本申请数据查找装置其中一个实施例的结构示意图;

图6为本申请数据查找装置其中一个实施例的结构示意图;

图7为本申请数据查找装置其中一个实施例的结构示意图;

图8为本申请计算机设备其中一个实施例的结构图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

图1为一个实施例中数据查找方法的应用环境图。参照图1,该查找方法应用于np。该np包括用于系统管理维护和复杂数据处理的处理核心,用于快速数据处理的转发引擎,以及sram,tcam,sdram(synchronousdynamicrandomaccessmemory,同步动态随机存储器)等多种不同存储器,这些存储器中存放着各种业务表项,如端口表,mac表,路由表。除此之外,该np还各种接口单元,包括物理链路接口、交换接口,存储器接口及其他外部处理单元接口。

如图2所示,在一个实施例中,提供了一种数据查找方法,本实施例主要以该方法应用于上述图1中的网络处理器。图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。该数据查找方法具体包括如下步骤:

s200,网络处理器接收报文,从报文中提取出查找关键字,将查找关键字拆分为第一字段组合和第二字段组合,第一字段组合需要掩码查找,第二字段组合不需要掩码查找。

其中,报文是网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。报文里面包含有报文类型,报文版本,报文长度,报文实体等等信息。提取查找关键字是指网络处理器从报文提取信息,然后将信息整理成和网络处理器内tcam的tcam查找表项格式相同数据即查找关键字的过程。是否需要掩码查找为tcam查找的特点,一般在tcam表项中存储有“0”和“1”来表示匹配,但是同时还可以设置表项掩码来标识第三种状态,可以称为“不关心态”,即不关心状态,当tcam的表项掩码的某个bit为“1”时,则表示此表项在查找时不关心这个bit。根据tcam表项的这个特点,将与其对应查找关键字拆分为需要使用表项掩码查找的第一字段组合和不需要表项掩码查找的第二字段组合。

s300,根据预设的tcam查找表项,对第一字段组合进行tcam查找,获得查找结果。

根据预先设定好的tcam查找表项,对从报文中提取出来查找关键字中需要掩码查找的部分即第一字段组合进行tcam查找,获得查找结果。预设的tcam查找表项为将原tcam查找表项按与其对应的查找关键字中需要掩码查找的制度组合进行缩减。使用缩减后的tcam查找表项对第一字段组合进行tcam查找,可以有效节约tcam查找的硬件成本,降低硬件功耗。

s400,对第二字段组合用哈希算法进行计算,获得计算结果;

使用哈希算法对不需要掩码查找的第二字段进行查找,获得计算来辅助查找。哈希算法为将任意长度的二进制值映射为较短的固定长度的二进制值。由于对tcam查找表项进行了缩减,为了确保查找的准确性,使用哈希算法对第二字段组合进行辅助查找。

s500,根据查找结果和计算结果查找预设于sram表项中的关联数据,获取目标关联数据。

根据前面查找生成的查找结果与计算生成的计算结果获得与查找关键字对应的关键数据的数据地址。再根据数据地址查找预先存放在sram表项内的关联数据,获取该与查找关键字对应的关联数据,此处预设指的是根据该关联数据对应的查找关键字的特点,将关联数据存放在sram表项的指定位置。

根据数据地址查找预先存放在sram表项内的关联数据,获取该与查找关键字对应的关联数据,此处预设指的是根据该关联数据对应的查找关键字的特点,将关联数据存放在sram表项的指定位置。

上述数据查找方法,通过只对查找关键字中需要掩码查找的字段组合进行tcam查找,减少了tcam查找中不关心匹配的产生,有效地节约了tcam的资源。

如图3所示,在其中一个实施例中,根据预设的tcam查找表项,对第一字段组合进行tcam查找,获得查找结果的步骤之前,还包括步骤s100:将tcam查找表项缩减,此处的缩减是指按预设关键字中需要掩码查找的字段组合进行的,预设关键字与tcam查找表项对应。根据缩减tcam查找表项只对第一字段组合进行tcam查找,有效地节约了tcam的资源。

在另外一个实施例中,根据预设的tcam查找表项,对第一字段组合进行tcam查找,获得查找结果的步骤之前,还包括步骤:将tcam查找表项缩减,缩减是按预设关键字中需要掩码查找的字段组合进行的,预设关键字与tcam查找表项对应,缩减后的tcam查找表项的长度与需要掩码查找的字段组合的长度相等。限定缩减后的tcam查找表项的长度与需要掩码查找的字段组合长度相等,可以有效提高tcam查找的精度。

如图4所示,在其中一个实施例中,所述sram表项中存储有与各关联数据对应的不需掩码查找的字段组合,所述不需要掩码查找的字段组合由与各关联数据对应的预设关键字拆分形成,获取关联数据后,还包括步骤s600:判断报文对应的第二字段组合与目标关联数据对应的第二字段组合是否相同,若相同,则进行步骤s700,判定本次数据查找成功;若不相同,则进行步骤s800,判定本次数据查找失败。在预设存储关联数据时,将关联数据与和关联数据对应的查找关键字的第二字段组合一起存放在同一个sram表项内。在查找完成后,判断从报文中提取的查找关键字的第二字段组合与存储在sram表项内第二字段组合是否相同。如果两者相同,则说明数据查找所查找到的关联数据是与查找关键字对应的,查找成功。如果两者不相同,则说明数据查找所查找到的目标关联数据与查找关键字不对应,查找失败。通过验证报文中提取出的第二字段组合与目标关联数据内存储的第二字段组合相同,有效提高查找的准确性。

在其中一个实施例中,关联数据在sram表项内的存储地址包括基础地址和地址偏移量。其中基础地址可以通过对预设关键字中需要掩码查找的字段组合进行tcam查找获得,地址偏移量可以通过对预设关键字中不需要掩码的字段组合进行tcam查找获得,预设关键字与关联数据对应。根据所述查找结果和所述计算结果查找预设的关联数据以及目标关联数据对应的第二字段组合,获取目标关联数据的步骤具体包括:

根据所述查找结果确定sram表项中的基础地址;

根据所述计算结果确定sram表项中的地址偏移量;

根据确定的基础地址和确定的地址偏移量,查找存放在sram表项中的关联数据。使用基础地址加地址偏移量的方式存储数据并以此方式对所存储的数据进行查找,更加方便快捷。

在其中一个具体实施例中,所述数据查找方法包括:

将tcam查找表项缩减,此处的缩减是指按预设关键字中需要掩码查找的字段组合进行的,预设关键字与tcam查找表项对应,缩减后的tcam表项长度与预设关键字中需要掩码查找的字段组合的长度相等。

将与预设关键字对应的关键数据存放在sram表项,sram表项内还存储有预设关键字中不需要掩码查找的字段组合。关联数据在sram表项内的存储地址包括基础地址和地址偏移量。其中基础地址可以通过对预设关键字中需要掩码查找的字段组合进行tcam查找获得,地址偏移量可以通过对预设关键字中不需要掩码的字段组合进行tcam查找获得。

接收报文,从报文中提取出查找关键字,再将查找拆分为第一字段组合和第二字段组合,其中第一字段组合需要掩码查找,第二字段组合不需要掩码查找。

根据缩减后的tcam查找表项对第一查找字段组合进行tcam查找,获得查找结果,并根据查找结果确定关联数据的基础地址。

对第二查找字段组合使用哈希算法进行计算,获得计算结果,并根据计算结果确定关联数据的地址偏移量。

根据基础地址与地址偏移量获得查找关键字对应目标关联数据的数据地址。

根据数据地址查找预存在sram表项中的关联数据,获得目标关联数据。

判断目标关联数据所在的sram表项中存储的字段组合和报文对应的第二字段组合是否相同,若两者相同,则判定本次查找成功,若两者不相同,则判定本次查找失败。

上述数据查找方法,通过只对查找关键字中需要掩码查找的字段组合进行tcam查找,缩减了tcam表项的长度,有效地节约了tcam的资源。同时本申请的数据查找方法使用哈希算法对第二字段组合进行计算后也只需要读取sram一次,因此可以保证查找效率。

如图5所示,本申请还提供一种数据查找装置,包括:

提取模块220,用于接收报文,从报文中提取出查找关键字;

拆分模块240,用于将查找关键字拆分为第一字段组合和第二字段组合,其中第一字段组合需要掩码查找,第二字段组合不需要掩码查找;

查找模块300,用于根据预设的tcam查找表项,对第一字段组合进行tcam查找,获得查找结果;

计算模块400,用于对第二字段组合用哈希算法进行计算,获得计算结果;

数据获取模块500,用于根据查找结果和运算结果查找存放在sram表项中的关联数据,获取目标关联数据。

上述数据查找装置,通过只对查找关键字中需要掩码查找的字段组合进行tcam查找,有效地节约了tcam的资源。

如图6所示,在其中一个实施例中,数据查找装置还包括缩减模块100,缩减模块,用于在查找模块对所述第一字段组合进行tcam查找前,将tcam查找表项缩减,所述缩减是按预设关键字中需要掩码查找的字段组合进行的,所述预设关键字与所述tcam查找表项对应,缩减后的所述tcam查找表项的长度与所述需要掩码查找的字段组合的长度相等。缩减tcam表项的长度,用于对查找关键字中需要掩码查找的部分进行tcam查找,有效地节约tcam的资源。并且让缩减后的tcam表项的长度与预设关键字中需要掩码查找的字段组合长度相等,可以提高tcam查找的精度。

如图7所示,在其中一个实施例中,所述sram表项中存储有与各关联数据对应的不需掩码查找的字段组合,所述不需要掩码查找的字段组合由与各关联数据对应的预设关键字拆分形成,所述数据查找装置还包括验证模块600,验证模块600用于判断报文对应的第二字段组合与目标关联数据对应的第二字段组合是否相同;若相同,则判定本次数据查找成功;若不相同,则判定本次数据查找失败。在查找完成后,判断从报文中提取的查找关键字的第二字段组合与存储在sram表项内第二字段组合是否相同。如果两者相同,则说明数据查找所查找到的关联数据是与查找关键字对应的,查找成功。如果两者不相同,则说明数据查找所查找到的目标关联数据与查找关键字不对应,查找失败。通过验证报文中提取出的第二字段组合与目标关联数据内存储的第二字段组合相同,有效提高查找的准确性。

图8示出了一个实施例中计算机设备的内部结构图。如图8所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现上述任意一种数据查找方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行上述任意一种数据查找方法。计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成的,程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述任意一项方法的步骤。

以上实施例的各技术特一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述任意一项方法的步骤。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1