掌桥专利:专业的专利平台
掌桥专利
首页

一种数据查询方法和设备

文献发布时间:2023-06-19 10:35:20


一种数据查询方法和设备

技术领域

本申请涉及数据查询领域,更具体地,涉及一种数据查询方法和设备。

背景技术

TCAM(ternary content addressable memory)是一种三态内容寻址存储器,主要用于快速查找ACL(Access Control Lists,访问控制列表)、路由等表项。TCAM有以下特点:

1、TCAM表内所有表项都可以并行访问,比如,如果有100条ACL,TCAM能一次就能对比这100条ACL进行对比操作,过去如果有100条ACL的话,需要第一条ACL对比完后再对比第二条,然后第三条,直至N条,效率很明显没有TCAM高。

2、TCAM得结构已经经过了优化,支持更抽象的操作,通常是基于二进制关键字匹配,查询相当快。正因为有上边的这些特性,所以无论表内有多少条数目,性能都不会减弱。

3、TCAM包含多组的Mask与Value对应关系,对应比例为1:8,一个Mask可对应8个Value。最长掩码位于TCAM顶部,如255.255.255.255位于最顶部,用于最长匹配,提升查找速率。

4、Mask用于表示Value的匹配方法,1为必须比较并匹配,0为不用比较。

5、TCAM的可用掩码、值模式、LOU表项有限,如果访问列表很大或需要很多第四层运算,TCAM表和寄存器很可能溢出。

6、TCAM成本比较高,存储空间的单位价格高于普通的sram,而且耗能也远远高于sram。

7、由于TCAM的并行查找特性和三态,存储必须以前缀形式来存储,比如一个range需要拆分成几个更小的可以表示成前缀形式的range才可以存储在TCAM中1。

如上所述,TCAM的查询速度相当快,但是成本却比较高,因此,如何降低查询成本,让同样大小的的TCAM能够支持更多的表项,是本领域有待解决的技术问题。

发明内容

本发明提供一种数据查询方法,用以解决现有技术中TCAM查询中成本过高的技术问题,应用于包括TCAM表、DDR映射表及DDR共享表的计算机系统中,所述方法包括:

接收网络数据;

当所述网络数据中的数据与所述TCAM表中的第一表项中的数据匹配时,基于所述DDR映射表中的第二表项的数据与所述DDR共享表的第三表项的数据进行查询,所述第一表项的行数与所述第二表项的行数相同;

当所述网络中的数据与所述TCAM表中的第一表项中的数据不匹配时,则未查询到所述网络数据,并退出查询。

优选地,在接收网络数据之前,还包括:

基于预设初始表项的长度将预设原始表项进行简化处理;

将简化处理后的表项作为所述第一表项存入所述TCAM表中;

当所述预设初始表项为多条,则将第一条所述预设初始表项作为所述第二表项存入所述DDR映射表,并将其他所述预设初始表项作为所述第三表项存入所述DDR共享表;

当所述预设初始表项为一条,则将所述预设初始表项作为所述第二表项存入所述DDR映射表。

优选地,当所述网络数据中的数据与所述TCAM表中的第一表项中的数据匹配时,基于所述DDR映射表中的第二表项的数据与所述DDR共享表的第三表项的数据进行查询,具体为:

当所述网络数据中的数据与所述TCAM表中的第一表项中的数据匹配时,判断所述TCAM表中的第一表项中的数据与所述DDR映射表中的第二表项的数据是否一致;

若一致,则查询到所述网络数据并退出查询;

若不一致,则基于所述DDR映射表中的第二表项的数据与所述DDR共享表的第三表项的数据对所述网络数据进行匹配。

优选地,基于所述DDR映射表中的第二表项的数据与所述DDR共享表的第三表项的数据对所述网络数据进行匹配,具体为:

当所述DDR映射表中的第二表项的数据与所述网络数据匹配时,则查询到所述网络数据并退出查询;

当所述DDR映射表中的第二表项的数据与所述网络数据不匹配时,则根据所述DDR共享表的第三表项的数据对所述网络数据进行匹配。

优选地,根据所述DDR共享表的第三表项的数据对所述网络数据进行匹配,具体为:

判断所述DDR共享表的第三表项的数据是否与所述网络数据匹配,直到所述DDR共享表中的第三表项的数据与所述网络数据全部匹配完毕。

相应的,本发明还提出了一种数据查询设备,应用于包括TCAM表、DDR映射表及DDR共享表的计算机系统中,所述设备包括:

接收模块,用于接收网络数据;

查询模块,用于当所述网络数据中的数据与所述TCAM表中的第一表项中的数据匹配时,基于所述DDR映射表中的第二表项的数据与所述DDR共享表的第三表项的数据进行查询,所述第一表项的行数与所述第二表项的行数相同;

结束模块,用于当所述网络中的数据与所述TCAM表中的第一表项中的数据不匹配时,则未查询到所述网络数据,并退出查询。

优选地,所述查询模块,还用于:

基于预设初始表项的长度将预设原始表项进行简化处理;

将简化处理后的表项作为所述第一表项存入所述TCAM表中;

当所述预设初始表项为多条,则将第一条所述预设初始表项作为所述第二表项存入所述DDR映射表,并将其他所述预设初始表项作为所述第三表项存入所述DDR共享表;

当所述预设初始表项为一条,则将所述预设初始表项作为所述第二表项存入所述DDR映射表。

优选地,所述查询模块,具体用于:

当所述网络数据中的数据与所述TCAM表中的第一表项中的数据匹配时,判断所述TCAM表中的第一表项中的数据与所述DDR映射表中的第二表项的数据是否一致;

若一致,则查询到所述网络数据并退出查询;

若不一致,则基于所述DDR映射表中的第二表项的数据与所述DDR共享表的第三表项的数据对所述网络数据进行匹配。

优选地,所述查询模块,具体用于:

当所述DDR映射表中的第二表项的数据与所述网络数据匹配时,则查询到所述网络数据并退出查询;

当所述DDR映射表中的第二表项的数据与所述网络数据不匹配时,则根据所述DDR共享表的第三表项的数据对所述网络数据进行匹配。

优选地,所述查询模块,具体用于:

判断所述DDR共享表的第三表项的数据是否与所述网络数据匹配,直到所述DDR共享表中的第三表项的数据与所述网络数据全部匹配完毕。

与现有技术相比,本发明具备以下有益效果:

本发明公开了一种数据查询方法和设备,应用于包括TCAM表、DDR映射表及DDR共享表的计算机系统中,该方法包括:接收网络数据,当所述网络数据中的数据与所述TCAM表中的第一表项中的数据匹配时,基于所述DDR映射表中的第二表项的数据与所述DDR共享表的第三表项的数据进行查询,所述第一表项的行数与所述第二表项的行数相同,当所述网络中的数据与所述TCAM表中的第一表项中的数据不匹配时,则未查询到所述网络数据,并退出查询,从而达到降低查询成本,让同样大小的TCAM支持更多的表项,提高了用户的使用体验。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了本发明实施例提出的一种数据查询方法的流程示意图;

图2示出了本发明另一实施例提出的一种数据查询方法的流程示意图;

图3示出了本发明实施例提出的一种数据查询设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

如背景技术中所述,现有的大容量高速数据筛选查询方法主要是通过TCAM进行处理,TCAM表内的所有表项都可以并行访问,查询速度快,但其可用掩码、值模式、LOU表项有限,如果访问列表很大或需要很多第四层运算,TCAM表和寄存器很可能会溢出,且TCAM成本较高,存储空间的单位价格高于普通的静态随机存取存储器,而且能耗也远远高于静态随机存取存储器。

因此,本申请提出了一种查询方法和设备,用以解决现有技术中利用TCAM表进行查询时成本过高的技术问题。

如图1所示为本发明实施例提出的一种数据查询方法的流程示意图,该方法包括以下步骤:

步骤S101、接收网络数据。

步骤S102、当所述网络数据中的数据与所述TCAM表中的第一表项中的数据匹配时,基于所述DDR映射表中的第二表项的数据与所述DDR共享表的第三表项的数据进行查询,所述第一表项的行数与所述第二表项的行数相同。

具体的,本申请方案中接收到需要查询的网络数据时,需要先将网络中的数据与TCAM表中的第一表项中的数据进行匹配,当匹配上时,再基于DDR映射表中的第二表项的数据与DDR共享表的第三表项的数据进行查询,需要说明的是,该第一表项的行数与第二表项的行数相同。

为了更准确的对网络数据进行查询,在本申请实施例中,在接收网络数据之前,还包括:

基于预设初始表项的长度将预设原始表项进行简化处理;

将简化处理后的表项作为所述第一表项存入所述TCAM表中;

当所述预设初始表项为多条,则将第一条所述预设初始表项作为所述第二表项存入所述DDR映射表,并将其他所述预设初始表项作为所述第三表项存入所述DDR共享表;

当所述预设初始表项为一条,则将所述预设初始表项作为所述第二表项存入所述DDR映射表。

具体的,首先将预设原始表项进行简化处理,可根据预设初始表项的长度将预设原始表项进行简化,以使相同大小的TCAM能支持更多数量的表项,并将简化处理后的表项作为第一表项存入TCAM表中,如果预设初始表项为多条表项,则将第一条预设初始表项作为第二表项存入DDR映射表中,将其他预设初始表项作为第三表项存入DDR共享表中,如果预设初始表项为为一条表项,则将预设初始表项作为第二表项存入DDR映射表中。

需要说明的是,本领域技术人员可根据实际情况选择不同的方法将预设原始表项进行简化处理,这并不影响本申请的保护范围。

为了提高数据查询的效率,在本申请实施例中,当所述网络数据中的数据与所述TCAM表中的第一表项中的数据匹配时,基于所述DDR映射表中的第二表项的数据与所述DDR共享表的第三表项的数据进行查询,具体为:

当所述网络数据中的数据与所述TCAM表中的第一表项中的数据匹配时,判断所述TCAM表中的第一表项中的数据与所述DDR映射表中的第二表项的数据是否一致;

若一致,则查询到所述网络数据并退出查询;

若不一致,则基于所述DDR映射表中的第二表项的数据与所述DDR共享表的第三表项的数据对所述网络数据进行匹配。

具体的,在查询网络数据时,先将网络数据中的数据与第一表项中的数据进行匹配,若匹配,则判断第一表项中的数据与DDR映射表中第二表项中的数据是否一致,若一致,则确定查询到对应的网络数据,并退出结束查询,若不一致,则根据第二表项的数据和DDR共享表中的第三表项的数据对网络数据进行查询匹配。

为了更准确的根据第二表项的数据和第三表项的数据对网络数据进行查询,在本申请实施例中,基于所述DDR映射表中的第二表项的数据与所述DDR共享表的第三表项的数据对所述网络数据进行匹配,具体为:

当所述DDR映射表中的第二表项的数据与所述网络数据匹配时,则查询到所述网络数据并退出查询;

当所述DDR映射表中的第二表项的数据与所述网络数据不匹配时,则根据所述DDR共享表的第三表项的数据对所述网络数据进行匹配。

具体的,首先将网络数据与第二表项中的数据进行匹配,若匹配,则确定查询到网络数据并退出结束查询,若不匹配,则将第三表项中的数据对网络数据进行匹配。

为了在第三表项中查询网络数据,在本申请实施例中,根据所述DDR共享表的第三表项的数据对所述网络数据进行匹配,具体为:

判断所述DDR共享表的第三表项的数据是否与所述网络数据匹配,直到所述DDR共享表中的第三表项的数据与所述网络数据全部匹配完毕。

具体的,判断第三表项的数据是否与网络数据匹配,且需要将第三表项的数据与网络数据进行全部匹配。

步骤S103、当所述网络中的数据与所述TCAM表中的第一表项中的数据不匹配时,则未查询到所述网络数据,并退出查询。

本发明公开了一种数据查询方法,应用于包括TCAM表、DDR映射表及DDR共享表的计算机系统中,该方法包括:接收网络数据,当所述网络数据中的数据与所述TCAM表中的第一表项中的数据匹配时,基于所述DDR映射表中的第二表项的数据与所述DDR共享表的第三表项的数据进行查询,所述第一表项的行数与所述第二表项的行数相同,当所述网络中的数据与所述TCAM表中的第一表项中的数据不匹配时,则未查询到所述网络数据,并退出查询,从而达到降低查询成本,让同样大小的TCAM支持更多的表项,提高了用户的使用体验。

请参阅图2,本申请另一实施例提供一种数据查询方法,应用于包括TCAM表、DDR映射表及DDR共享表的计算机系统中,所述方法包括:

步骤S201、对预设原始表项进行简化处理。

需要先说明的是,应用的系统包含TCAM表、DDR映射表和DDR共享表,而TCAM表的行数与DDR映射表的行数相同,各表项也是一一对应关系,但TCAM表中的表项除了与DDR映射表中对应的表项外,还存在其他表项,当TCAM表命中时,需要确认是否需要继续查询DDR表,DDR映射表则继续指示是否要访问后续链表(位于DDR共享表)从而精准命中每个表项。DDR映射表和DDR共享表的表项数据结构完全相同。

首先根据预设初始表项的长度将预设原始表项进行简化,并将简化后的表项作为第一表项依次填充TCAM,对应的预设原始表项填入对应的DDR映射表,若对应的预设原始表项不止一条,则将第二条表项以及更多表项依次存入DDR共享表中,其中,DDR映射表中保存有更多预设原始表项指示,以及指向该条DDR共享表的链接,而DDR共享表中保存有下一条DDR共享表的链接,TCAM表中的每一项对应DDR映射表中的每一项。如果一条简化表项和原始表项相同,那么只需要查询TCAM表;如果不是,则需要到DDR映射表中查询是否真实命中;如果简化表项对应多个原始表项,当TCAM表命中后,需要查询DDR映射表和DDR共享表,判断是否真实命中。

其中,IPV6、字符串等表项因为长度较长,表项将阶段存储在TCAM中,这样多个表项将对应同一条TCAM,将这些表项存储在对应的DDR映射表中。

步骤S202、数据查询。

具体的,先获取网络数据,同时,网络数据进入TCAM表中,若TCAM表中不匹配数据则表示不命中没有查询到数据,退出结束查询。

若TCAM表中匹配数据,根据指示确定是否继续查询DDR映射表(TCAM简化表项同预设原始表项相同,不需要查询DDR映射表),若指示不需要查询DDR映射表,则退出结束查询。

若需要查询DDR映射表,则将DDR映射表保存的原始数据同对应位置的网络数据做比较,如果数据匹配,则表示命中查询到结果,然后退出结束查询,如果不匹配,则直接查询下一条DDR共享表中的原始数据,遍历DDR共享表链接的后继表项,在DDR共享表中查询到匹配的数据时,退出结束查询,没有查询到匹配的数据时,表示未查询结果,也退出结束查询。

也即是说,网络数据处理后进入TCAM表,TCAM表快速匹配,筛选出符合TCAM表的数据,此时数据量已经大大减少。如果需要进一步查询DDR映射表,则查询DDR映射表并确认是否匹配预设原始表项,如果匹配结束流程。如果不匹配,则继续查询DDR共享表,确认是否匹配其他预设原始表项,直到该TCAM表对应的原始表项全部查询完毕。

步骤S203、反馈查询结果。

具体的,将查询的结果,匹配的数据或未匹配到相应数据反馈给用户。

本方案将TCAM进行简化处理,使得相同大小的TCAM能支持更多数量的表项,从而使支持大容量表项得以实现,而且,TCAM的查询速度较快,即使只是一部分进行匹配,也能实现快速的预筛,提高整个系统的性能,可将此时的TCAM看作一个高速的预筛器,另外,使用快速DDR或其他方式存储有相同字段的表项,虽然速度降低,但因为数量不多,牺牲少量的效率换来支持大容量表项,从系统的角度看,整体效率得到大大提升。

为了达到以上技术目的,本申请实施例还提出了一种数据查询设备,应用于包括TCAM表、DDR映射表及DDR共享表的计算机系统中,如图3所示,所述设备包括:

接收模块301,用于接收网络数据;

查询模块302,用于当所述网络数据中的数据与所述TCAM表中的第一表项中的数据匹配时,基于所述DDR映射表中的第二表项的数据与所述DDR共享表的第三表项的数据进行查询,所述第一表项的行数与所述第二表项的行数相同;

结束模块303,用于当所述网络中的数据与所述TCAM表中的第一表项中的数据不匹配时,则未查询到所述网络数据,并退出查询。

在具体的应用场景中,所述查询模块302,还用于:

基于预设初始表项的长度将预设原始表项进行简化处理;

将简化处理后的表项作为所述第一表项存入所述TCAM表中;

当所述预设初始表项为多条,则将第一条所述预设初始表项作为所述第二表项存入所述DDR映射表,并将其他所述预设初始表项作为所述第三表项存入所述DDR共享表;

当所述预设初始表项为一条,则将所述预设初始表项作为所述第二表项存入所述DDR映射表。

在具体的应用场景中,所述查询模块302,具体用于:

当所述网络数据中的数据与所述TCAM表中的第一表项中的数据匹配时,判断所述TCAM表中的第一表项中的数据与所述DDR映射表中的第二表项的数据是否一致;

若一致,则查询到所述网络数据并退出查询;

若不一致,则基于所述DDR映射表中的第二表项的数据与所述DDR共享表的第三表项的数据对所述网络数据进行匹配。

在具体的应用场景中,所述查询模块302,具体用于:

当所述DDR映射表中的第二表项的数据与所述网络数据匹配时,则查询到所述网络数据并退出查询;

当所述DDR映射表中的第二表项的数据与所述网络数据不匹配时,则根据所述DDR共享表的第三表项的数据对所述网络数据进行匹配。

在具体的应用场景中,所述查询模块302,具体用于:

判断所述DDR共享表的第三表项的数据是否与所述网络数据匹配,直到所述DDR共享表中的第三表项的数据与所述网络数据全部匹配完毕。

本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本发明所必须的。

本领域技术人员可以理解装置中的模块可以按照实施场景描述分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。

最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

相关技术
  • 数据处理方法、装置、设备及系统、数据查询方法、装置及设备
  • 数据表的数据存储方法、数据查询方法及电子设备
技术分类

06120112608028