一种报文搜索方法及装置制造方法及图纸

技术编号:23084962 阅读:21 留言:0更新日期:2020-01-11 01:06
本申请公开了一种报文搜索方法及装置,在从主处理器获取若干主键值之后,将不同的主键值分别保存在缓存的不同地址中;再从保存有主键值的缓存地址中分别获取指定数量的键值数据,利用指定数量的键值数据段分别为每一个主键值生成一个对应的搜索键值;最后利用所有搜索键值同时进行搜索,获得每一个搜索键值对应的搜索结果。本申请的技术方案能够实现多个报文对应的搜索键值的并行搜索,提高报文搜索处理的速率,增强报文搜索性能。

A message search method and device

【技术实现步骤摘要】
一种报文搜索方法及装置
本申请涉及计算机
,尤其涉及一种报文搜索方法及装置。
技术介绍
目前已有的搜索引擎都采用TCAM(TernaryCAM,三态内容寻址存储器)来实现表项匹配的判断。一般的存储器中每一位的状态只有两个:0和1,而TCAM中每一位的状态有三个0、1和x(x为不关心),它是通过掩码来实现三态的,所有TCAM中每一个表项都是以<数据、掩码>的形式保存,在表项的匹配查找中,TCAM判断查找关键字和掩码做与后的数据是否与表项数据和掩码做与后的数据相等,如果相等表示关键字与该表项匹配;否则不匹配。然而,目前的搜索引擎采用传统的TCAM实现的都是单线程搜索。在单线程搜索中,搜索芯片在一个时钟周期只能处理一个搜索主键值,发起搜索的主处理器必须合并多个搜索键值为一个搜索主键值,再将搜索主键值发送给搜索引擎。但是由于搜索引擎采用TCAM,主处理器的流线架构无法把不同报文的搜索键值合并在同一搜索主键值内,导致从主处理器发出的多个报文的搜索在搜索处理器中必须串行执行,降低了有效搜索速率,最终降低主处理器和整个系统的性能。因此,如何提高多个报文在搜索处理器中的执行效率,成为本领域技术人员亟待解决的问题。
技术实现思路
本申请提供了一种报文搜索方法及装置,以解决目前主处理器发出的多个报文的搜索在搜索处理器中必须串行执行,降低了有效搜索速率的问题。第一方面,本申请实施例提供了一种报文搜索方法,包括:获取若干主键值,所述主键值是主处理器根据不同报文生成的搜索数据;将不同的主键值分别保存在缓存的不同地址中;从保存有主键值的缓存地址中分别获取指定数量的键值数据段,所述键值数据段是指缓存地址中不同长度和/或不同内容的一段数据;利用指定数量的键值数据段分别为每一个主键值生成一个对应的搜索键值;利用所有搜索键值同时进行搜索,获得每一个搜索键值对应的搜索结果。结合第一方面,在第一方面的一种可实现方式中,将不同的主键值分别保存在缓存的不同地址中的步骤,包括:检测不同的主键值是否已经分别存在于缓存中;将不存在于缓存中的主键值保存在缓存的地址中。结合第一方面,在第一方面的一种可实现方式中,从保存有主键值的缓存地址中分别获取指定数量的键值数据段的步骤,包括:获取搜索配置,所述搜索配置用于指定与主键值对应的每一个键值数据段在缓存地址中的起始字节和每一个键值数据段的长度;根据搜索配置,获取每一个主键值对应的指定数量的键值数据段,所述搜索配置与所述主键值一一对应。结合第一方面,在第一方面的一种可实现方式中,利用指定数量的键值数据段分别为每一个主键值生成一个对应的搜索键值的步骤,包括:根据键值数据段之间的逻辑关系,将每一个主键值对应的键值数据段按逻辑顺序组成一个搜索键值。结合第一方面,在第一方面的一种可实现方式中,利用所有搜索键值同时进行搜索,获得每一个搜索键值对应的搜索结果之后,还包括:将所有搜索结果一起打包处理;将打包后的数据发送给主处理器。第二方面,本申请实施例提供了一种报文搜索装置,包括:主键值获取模块,用于获取若干主键值,所述主键值是主处理器根据不同报文生成的搜索数据;主键值保存模块,用于将不同的主键值分别保存在缓存的不同地址中;数据段获取模块,用于从保存有主键值的缓存地址中分别获取指定数量的键值数据段,所述键值数据段是指缓存地址中不同长度和/或不同内容的一段数据;搜索键值生成模块,用于利用指定数量的键值数据段分别为每一个主键值生成一个对应的搜索键值;搜索模块,用于利用所有搜索键值同时进行搜索,获得每一个搜索键值对应的搜索结果。结合第二方面,在第二方面的一种可实现方式中,主键值保存模块包括:检测单元,用于检测不同的主键值是否已经分别存在于缓存中;将不存在于缓存中的主键值保存在缓存的地址中。结合第二方面,在第二方面的一种可实现方式中,数据段获取模块包括:配置获取单元,用于获取搜索配置,所述搜索配置用于指定与主键值对应的每一个键值数据段在缓存地址中的起始字节和每一个键值数据段的长度;数据段获取单元,用于根据搜索配置,获取每一个主键值对应的指定数量的键值数据段,所述搜索配置与所述主键值一一对应。结合第二方面,在第二方面的一种可实现方式中,搜索键值生成模块还用于:根据键值数据段之间的逻辑关系,将每一个主键值对应的键值数据段按逻辑顺序组成一个搜索键值。结合第二方面,在第二方面的一种可实现方式中,所述多线程搜索装置还包括:打包模块,用于将所有搜索结果一起打包处理;将打包后的数据发送给主处理器。由以上技术方案可知,本申请实施例提供了一种报文搜索方法及装置,在从主处理器获取若干主键值之后,将不同的主键值分别保存在缓存的不同地址中;再从保存有主键值的缓存地址中分别获取指定数量的键值数据,利用指定数量的键值数据段分别为每一个主键值生成一个对应的搜索键值;最后利用所有搜索键值同时进行搜索,获得每一个搜索键值对应的搜索结果。本申请的技术方案能够实现多个报文对应的搜索键值的并行搜索,提高报文搜索处理的速率,增强报文搜索性能。附图说明为了更清楚地说明本申请的技术方案,下面将对实施案例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本申请实施例提供的一种报文搜索方法的流程图;图2为本申请实施例提供的ContextBuffer的结构示意图;图3为本申请实施例提供的KPU内生成搜索键值的示意图;图4为本申请实施例提供的一种报文搜索装置的结构框图;图5为本申请实施例提供的搜索引擎处理器的应用结构示意图;图6为本申请实施例提供的另一种搜索引擎处理器的应用结构示意图。具体实施方式为了使本
的人员更好地理解本申请中的技术方案,下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述。图1为本申请实施例提供的一种报文搜索方法的流程图。如图1所示,本申请实施例提供的报文搜索方法的步骤如下:S101,获取若干主键值,所述主键值是主处理器根据不同报文生成的搜索数据。目前的报文搜索由于搜索引擎中的TCAM限制,无法同时处理多个报文,因而在主处理器中,都是将单独的IP地址或者MAC地址分别作为主键值进行串行搜索,但是本申请实施例中可以对不同报文的不同主键值同时并行处理,因此主处理器可以接收不同的报文生成不同的主键值,例如生成IP地址+MAC地址的主键值。S102,将不同的主键值分别保存在缓存的不同地址中。本申请的缓存采用contextbuffer,ContextBuffer是一个32kX80b的缓存,用于加载和存储从主处理器来的主键值。所有从主处理器写入的数据都存储在ContextBuff本文档来自技高网
...

【技术保护点】
1.一种报文搜索方法,其特征在于,包括:/n获取若干主键值,所述主键值是主处理器根据不同报文生成的搜索数据;/n将不同的主键值分别保存在缓存的不同地址中;/n从保存有主键值的缓存地址中分别获取指定数量的键值数据段,所述键值数据段是指缓存地址中不同长度和/或不同内容的一段数据;/n利用指定数量的键值数据段分别为每一个主键值生成一个对应的搜索键值;/n利用所有搜索键值同时进行搜索,获得每一个搜索键值对应的搜索结果。/n

【技术特征摘要】
1.一种报文搜索方法,其特征在于,包括:
获取若干主键值,所述主键值是主处理器根据不同报文生成的搜索数据;
将不同的主键值分别保存在缓存的不同地址中;
从保存有主键值的缓存地址中分别获取指定数量的键值数据段,所述键值数据段是指缓存地址中不同长度和/或不同内容的一段数据;
利用指定数量的键值数据段分别为每一个主键值生成一个对应的搜索键值;
利用所有搜索键值同时进行搜索,获得每一个搜索键值对应的搜索结果。


2.根据权利要求1所述的方法,其特征在于,将不同的主键值分别保存在缓存的不同地址中的步骤,包括:
检测不同的主键值是否已经分别存在于缓存中;
将不存在于缓存中的主键值保存在缓存的地址中。


3.根据权利要求1所述的方法,其特征在于,从保存有主键值的缓存地址中分别获取指定数量的键值数据段的步骤,包括:
获取搜索配置,所述搜索配置用于指定与主键值对应的每一个键值数据段在缓存地址中的起始字节和每一个键值数据段的长度;
根据搜索配置,获取每一个主键值对应的指定数量的键值数据段,所述搜索配置与所述主键值一一对应。


4.根据权利要求3所述的方法,其特征在于,利用指定数量的键值数据段分别为每一个主键值生成一个对应的搜索键值的步骤,包括:
根据键值数据段之间的逻辑关系,将每一个主键值对应的键值数据段按逻辑顺序组成一个搜索键值。


5.根据权利要求1所述的方法,其特征在于,利用所有搜索键值同时进行搜索,获得每一个搜索键值对应的搜索结果之后,还包括:
将所有搜索结果一起打包处理;
将打包后的数据发送...

【专利技术属性】
技术研发人员:闫振林熊冰史顺达温芝权
申请(专利权)人:苏州雄立科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1