CN101500012A - 一种报文分类方法和*** - Google Patents
一种报文分类方法和*** Download PDFInfo
- Publication number
- CN101500012A CN101500012A CNA2009101186401A CN200910118640A CN101500012A CN 101500012 A CN101500012 A CN 101500012A CN A2009101186401 A CNA2009101186401 A CN A2009101186401A CN 200910118640 A CN200910118640 A CN 200910118640A CN 101500012 A CN101500012 A CN 101500012A
- Authority
- CN
- China
- Prior art keywords
- tuple
- territory
- vector
- aggregation
- inquiry
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种报文分类方法和***,其中,所述方法为:利用所述域搜索引擎对待查询报文进行分域处理;利用所述聚合网络对分域处理结果进行逐级聚合,直至终结点,其中逐级聚合时,每个聚合节点通过两级匹配逻辑进行聚合;根据所述终结点命中的元组确定所述待查询报文匹配的分类规则,本发明实施例通过将规则库转换为分域元组库,大大降低了聚合网络的内存消耗,使得本发明实施例所提供的方法能够广泛地适应大型分类规则库。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种报文分类方法和***。
背景技术
报文是网络中交换与传输的数据单元,其中包含了将要发送的完整的数据信息,同时,报文也是网络传输的单位,传输过程中会不断的封装成分组、包或帧来传输。互联网业务的多样化和差异化要求网络设备能够根据网络中报文的相关信息对报文进行差异化处理。报文分类就是为了满足网络的这种应用趋势产生的。
报文分类是根据报文头部信息的关键字的对报文进行分类,使网络设备针对不同类别的报文可以采用不同的操作。
报文分类技术在多种网络设备和网络业务中具有极其重要的应用。近年来,国内外很多专家学者针对报文分类进行了大量研究,取得了许多研究成果。
华盛顿大学的Taylor D E和Turner J S共同提出一种对Cross-Producting改进的算法DCFL(分布式域标签叉级)。DCFL算法通过分布式地而非一次性地形成各个域不同值的Cross-producting,从而避免了Cross-Producting算法的空间***问题。该算法的扩展性良好,在过滤规则维数增加或过滤规则库规模增大时仍能保持较快的分类速度。
来自威斯康星大学的Qunfeng Dong和Suman Banerjee提出一种不使用TCAM实现线速报文分类方法Smart Rule Cache(智能规则缓存)。该方法使用附加的寄存器来缓存保持原规则语义的进化规则(evolving rules),使用附加的逻辑门电路实现报文与规则的匹配。
发明人通过对现有技术的研究发现,核心路由器、边缘路由器、防火墙等设备中的规则库均具有不同的特征,现有的各种技术各有特点,但是并没有对各种场景进行综合考虑,扩展性差,不能很好地适应各类规则库结构的变化。
发明内容
有鉴于此,本发明实施例的目的在于提供一种报文分类方法和***,提高了规则库规模和维度的可扩展性。
为实现上述目的,本发明实施例提供了如下技术方案:
一种报文分类方法,将原始分类规则库中的各条规则按域划分成分域规则库,然后将所述分域规则库中的规则用元组表示形成分域元组库,将所述分域元组库存储到域搜索引擎;在聚合网络的每一个聚合节点中,计算并存储原始规则库中真实存在的元组组合形成各个聚合节点的匹配向量;在对待查询的报文进行报文分类时该方法包括:
利用所述域搜索引擎对待查询报文进行分域处理;
利用所述聚合网络对分域处理结果进行逐级聚合,直至终结点,其中逐级聚合时,每个聚合节点通过两级匹配逻辑进行聚合;
根据所述终结点命中的元组确定所述待查询报文匹配的分类规则。
利用所述域搜索引擎对待查询的报文进行分域处理包括:
将待查询的报文按匹配域分解成报文元组;
获取与所述报文元组匹配的规则子集所对应的规则元组;
根据所述规则元组形成与所述报文元组匹配的分域处理结果。
所述每个聚合节点通过两级匹配逻辑进行聚合包括:
聚合节点将输入项中的元素进行交叉组合,获得当前聚合节点的查询元组集合,其中,所述输入项包括某一分域处理结果或者当前聚合节点的上一级聚合节点的聚合结果;
根据所述查询元组集合获取当前节点的查询元组向量集合;
将所述查询元组向量集合中的查询元组向量分别与当前聚合节点的第一级匹配向量进行第一级逻辑判断;
根据通过第一级逻辑判断的查询元组向量查找当前聚合节点的第二级匹配向量的地址,获取第二级匹配向量;
将所述通过第一级逻辑判断的查询元组向量与所述第二级匹配向量进行第二级逻辑判断;
将通过第二级逻辑判断的查询元组向量对应的查询元组加入当前聚合节点的输出结果中。
根据所述查询元组向量查找当前聚合节点的第二级匹配向量的地址包括:
对所述查询元组向量做hash寻址,查找到的地址即为当前聚合节点第二级匹配向量的地址。
所述聚合节点的输入项为两项。
当某一域处理结果当前没有聚合对象时,则对其进行缓存;当聚合对象到来时,将缓存的分域处理结果输与聚合对象进行聚合。
上述方法还包括:对所述原始规则库进行更新操作。
所述更新操作包括:
当更新请求队列中的更新请求数量超过预设的更新阈值时,复制当前使用的数据结构作为备份缓存,当前的数据结构为当前缓存,所述更新请求的内容包括:更新的规则信息和更新操作的类型,所述更新操作的类型包括添加规则的操作和删除规则的操作;
从所述更新请求队列中提取更新请求,按照更新操作的类型对所述备份缓存中的数据结构进行更新;
更新完成后,将所述备份缓存切换成当前缓存,同时将完成更新的更新请求从所述更新请求队列中删除。
所述将各个分域规则库中的规则用元组表示包括:
按照各字段的前缀长度或者潜嵌套深度将各个分域规则库中的规则用元组表示。
一种报文分类***,包括:
构造单元,用于将原始分类规则库按匹配域划分为分域规则库,将各个分域规则库中的规则用元组表示,形成分域元组库,将所述分域元组库存储到域搜索引擎;在聚合网络的每一个聚合节点中,计算并存储原始规则库中真实存在的元组组合形成各个聚合节点的匹配向量;
分域处理单元,用于利用所述域搜索引擎对待查询报文进行分域处理;
聚合单元,用于利用所述聚合网络对分域处理结果进行逐级聚合,直至终结点,其中逐级聚合时,每个聚合节点通过两级匹配逻辑进行聚合;
分类单元,用于根据所述终结点命中的元组确定所述待查询报文匹配的分类规则。
上述***还包括:
缓存单元,用于在某一分域处理单元输出的分域处理结果当前没有聚合对象时,则对其进行缓存;当聚合对象到来时,将缓存的分域处理结果输送给对应的聚合单元。
所述分域处理单元包括:
分解模块,用于将待查询的报文按匹配域分解成报文元组;
获取模块,用于获取与所述报文元组匹配的规则子集所对应的规则元组;
处理模块,用于根据所述规则元组形成与所述报文元组匹配的分域处理结果。
所述聚合单元包括:
存储单元,用于存储匹配向量,所述匹配向量包括第一级匹配向量和第二级匹配向量;
组合模块,用于将输入项中的元素进行交叉组合,获得当前聚合节点的查询元组集合,其中,所述输入项包括某一分域处理结果或者当前聚合单元的上一级聚合单元的聚合结果;
获取模块,用于根据所述组合模块得到的查询元组集合获取当前节点的查询元组向量集合;
第一匹配模块,用于将获取模块获取的所述查询元组向量集合中的查询元组向量分别与存储单元中保存的第一级匹配向量进行第一级逻辑判断;
查找模块,用于根据所述第一匹配模块输出的通过第一级逻辑判断的查询元组向量查找存储单元中第二级匹配向量的地址,获取第二级匹配向量;
第二匹配模块,用于将所述第一匹配模块输出的通过第一级逻辑判断的查询元组向量与所述查找模块查找到的第二级匹配向量进行第二级逻辑判断;
输出模块,用于将所述第二匹配模块输出的通过第二级逻辑判断的查询元组向量对应的查询元组加入当前聚合节点的输出结果中。
该***还包括:
更新单元,用于对原始规则库进行更新。
所述更新单元包括:
记录模块,用于记录更新请求,形成更新请求队列;
复制模块,用于当所述更新请求队列中的更新请求数量超过预设的更新阈值时,复制当前使用的数据结构作为备份缓存,当前的数据结构为当前缓存,所述更新请求的内容包括:更新的规则信息和更新操作的类型,所述更新操作的类型包括添加规则的操作和删除规则的操作;
更新模块,用于从所述更新请求队列中提取更新请求,按照更新操作的类型对所述复制模块复制得到的备份缓存中的数据结构进行更新;
更换模块,用于在更新模块更新完成后,将所述备份缓存更换成当前缓存;
删除模块,用于将完成更新的更新请求从记录模块中删除。
可见,在本发明实施例中,将原始分类规则库中的各条规则按域划分成分域规则库,然后将所述分域规则库中的规则用元组表示形成分域元组库,将所述分域元组库存储到域搜索引擎;在聚合网络的每一个聚合节点中,计算并存储原始规则库中真实存在的元组组合形成各个聚合节点的匹配向量;在对待查询的报文进行报文分类时该方法包括:利用所述域搜索引擎对待查询报文进行分域处理;利用所述聚合网络对分域处理结果进行逐级聚合,直至终结点,其中逐级聚合时,每个聚合节点通过两级匹配逻辑进行聚合;根据所述终结点命中的元组确定所述待查询报文匹配的分类规则,通过将规则库转换为分域元组库,大大降低了聚合网络的内存消耗,使得本发明实施例所提供的方法能够广泛地适应大型分类规则库。
附图说明
图1为本发明一实施例所提供的方法的流程图;
图2为本发明一实施例所提供的方法的示意图;
图3为本发明一实施例所提供的方法的一步骤的流程图;
图4为本发明一实施例所提供的方法中一步骤的示意图;
图5为本发明一实施例所提供的方法中另一步骤的示意图;
图6为本发明一实施例所提供的***的结构示意图;
图7为本发明一实施例所提供的***中一单元的结构示意图;
图8为本发明另一实施例所提供的系中一单元的结构示意图;
图9为本发明一实施例所提供的***中另一单元的结构示意图。
具体实施方式
本发明实施例公开了一种报文分类方法和***,为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。
参见图1,在本发明一实施例中,实现本发明实施例所提供的方法包括以下步骤:
步骤101:采用元组表示分类规则,获得分域元组库。
每条过滤分类规则都含有多个匹配域;每个域都对应报文的一个头字段,在用元组表示处理规则时,首先将原始分类规则库中的规则按匹配域划分为分域规则库。然后按照各字段的前缀长度或者潜嵌套深度将各个分域规则库中的规则用元组表示,每一个元组都包含若干规则。这些元组形成元组空间,原始分类规则库转化为分域元组库。
例如,某条分类规则为{11*,0110*,*,1111*,011*},每部分的元组取其有效特征长度表示,如字段的前缀长度,具体为[2],[4],[0],[4],[3],头三个字域的元组表示为[2,4,0],整条规则的元组表示为[2,4,0,4,3]。
步骤102:将所述分域元组库存储到域搜索引擎;在聚合网络的每一个聚合节点中,计算并存储根据原始规则库中真实存在的元组组合形成的聚合节点的匹配向量。
步骤101和步骤102是本发明实施例所提供的方法的准备工作,实际上实现了原始分类规则库向分域元组库的转换。当准备工作完成后,对待查询的报文进行报文分类时,本发明实施例所提供的方法包括:
步骤103:利用所述域搜索引擎对待查询报文进行分域处理。
所述分域处理具体包括:
S1、将待查询的报文按匹配域分解成报文元组。
其中所述报文元组即通过分域处理后获得的报文的各个域。
S2、获取与所述报文元组匹配的规则子集所对应的规则元组。
所述规则元组与某规则的某个域相对应。
S3、根据所述规则元组形成与所述报文元组匹配的分域处理结果。
图2是本发明实施例所提供的方法的一个示意图,图中,第一部分为分域处理,待查询的报文被分解成五个报文元组x0~x4,域搜索引擎根据报文元组xi(i=0~4)获取与xi匹配的规则子集Ri所对应的规则元组Ti,根据所述规则元组T0~T4形成与所述报文元组x0~x4匹配的分域处理结果T0(x0)~T4(x4)。
步骤104:利用所述聚合网络对分域处理结果进行逐级聚合,直至终结点,其中逐级聚合时,每个聚合节点通过两级匹配逻辑进行聚合。
图2中的第二部分为逐级聚合过程。聚合节点将Ti(xi)与Ti+1(xi+1)进行交叉组合,得到查询元组集合Tquery(xi,xi+1),然后将Tquery(xi,xi+1)与Ti,i+1的交集提取出来作为当前聚合节点的聚合结果Ti,i+1(xi,xi+1)输出到下一级聚合节点,其中Ti,i+1表示原规则库第i域与第i+1域中真实存在的元组集合。经过逐级聚合到达终节点。
为实现流水线操作,报文元组x4分域处理后的结果T4(x4)需要经过一个二级缓存。缓存允许域搜索引擎在每个流水线周期执行一次新的查找,得到的分域匹配元组集合被延迟到合适的流水线周期,以使其与从其它聚合节点的匹配元组集合同步到达下一级聚合节点。图2所示结构的总延迟仅为2个流水线周期,考虑到流水线周期是10ns级别,所以这一延时是完全可以容忍的。
由于一次性聚合多个项会增加计算复杂度、降低效率,所以在本发明实施例所提供的方法中,在一个节点只聚合两项。除此之外,聚合网络的构成方式还必须遵循一个原则,即尽可能减少存储空间,所以将相关性大的两项进行聚合,例如将源IP与目的IP聚合在一起。
步骤105:根据所述终结点命中的元组确定所述待查询报文匹配的分类规则。
将终节点命中元组与其对应的规则表相连,每当查询到匹配元组时,只需要提取出报文对应该元组的关键字,经哈希索引后只需要一次访存就可以查询到该元组包含的匹配规则。
本发明实施例所提供的方法,将规则库转化元组库,由于一个元组包含多个规则为,所以这一转化能够大大降低聚合网络的内存消耗,使得该技术能够适应大型分类规则库。
图2所示的方法中,为聚合分域处理结果,需要在每一级聚合节点采用一种快速高效的匹配方法得到我们需要的聚合结果。在本发明实施例中,选用哈希技术作为聚合节点的匹配工具,具体地,选择Bloom filter作为哈希工具。
Bloom filter的原理是利用m比特向量v表示n元素集合S={x1,x2,...,xn},并用k个独立的哈希函数h1,h2,...,hk将向量v的下列比特置1:h1(x),h2(x),...,hk(x),其中x∈S,hi(x)∈{1,2,...,M},i∈{1,2,...,k}。当检查某元素y是否包含于S时,只需要检查hi(y),i∈{1,2,...,k}是否全被置1即可,但是由于使用了k个哈希函数,使得每个元素会出现在k个哈希桶中,这就需要对每个元素存储k次,造成空间浪费。
为降低内存消耗,本发明采用了向量阵列的方法,具体做法是:在聚合节点存储一个k比特位宽的向量阵列,每个向量只存储1个真实元组的Bloomhash值。
参见图3,所述聚合过程具体包括:
步骤301:聚合节点将输入项中的元素进行交叉组合,获得当前聚合节点的查询元组集合,其中,所述输入项包括某一分域处理结果或者当前聚合节点的上一级聚合节点的聚合结果;
步骤302:根据所述查询元组集合获取当前节点的查询元组向量集合;
步骤303:将所述查询元组向量集合中的查询元组向量分别与当前聚合节点的第一级匹配向量进行第一级逻辑判断;
步骤304:根据通过第一级逻辑判断的查询元组向量查找当前聚合节点的第二级匹配向量的地址,获取第二级匹配向量;
步骤305:将所述通过第一级逻辑判断的查询元组向量与所述第二级匹配向量进行第二级逻辑判断;
步骤306:将通过第二级逻辑判断的查询元组向量对应的查询元组加入当前聚合节点的输出结果中。
为了使上述过程更加清楚明了,下面,参见图4,通过一个聚合节点的聚合实例对上述聚合过程进行描述。
图4以聚合节点2为例,将来自聚合节点1的元组集合T0,1(x0,x1)与T2的分域处理结果T2(x2)交叉组合成该节点的查询元组集合Tquery。从图中可以看到,T0,1(x0,x1)为{[2,1],[3,5],[6,4]},T2(x2)为{5,8,9},两者交叉组合即两个集合中的元素交叉结合得到节点2的查询元组集合Tquery,所以Tquery为{[2,1,5],[3,5,5],[6,4,5],[2,1,8],[3,5,8],[6,4,8][2,1,9],[3,5,9],[6,4,9]},然后由Tquery中的元组利用k个独立hash函数生成m比特的查询元组向量vquery。V1表示节点2对应的真实元组集合生成的m比特的第一级匹配向量。接下来,第一级匹配逻辑将vquery与v1作逻辑判断:若vquery的所有置1位在v2中也全被置1,那么将对应元组送往向量阵列继续比较;否则,直接丢弃。
接下来将通过第一匹配逻辑的查询元组向量vquery作hash寻址,将索引到的第二级匹配向量v2送往第二级匹配逻辑再次与vquery作匹配判断,如果匹配成功就将vquery对应的元组加入到集合T0,1,2(x0,x1,x2)中。在处理完所有vquery后,将T0,1,2(x0,x1,x2)送往下一级聚合节点。从图中可知,经过两级匹配逻辑判断后,最后第二节点的输出结果T0,1,2(x0,x1,x2)为{[3,5,5],[6,4,8],[6,4,9]}。
每个聚合节点中都有一个匹配元组集合V且均不相同,通过上述对聚合节点聚合过程的描述可知,匹配元组集合所包含的元组个数|V|直接决定了查询时的访存次数。另一方面,改变聚合网络的结构可以起到优化匹配元组个数|V|的作用。由此可见,如何选择分域处理结果的聚合顺序是减少算法开销的一个关键。
对于某结构的聚合网络Ai,它包含多个匹配元组,令在最差情况下包含元组数目最多的匹配元组集合所包含的元组数为Ai的开销,用cost(Ai)表示。则最小开销聚合网络定义如下:
Amin=cost(A)=min{cost(Ai),i≥0} (1)
cost(Ai)=max{|V|,对所有V0,...,V0,...,d-1∈Ai},(2)
整个网络计算过程如下:
1、i=1,j←get(numA);
2、get(A0);
3、Amin←A0,cost(Amin)←cost(A0);
4、while i<j-1;
5、get(Ai);
6、Amin←A:cost(A)=min{cost(Ai),cost(Amin)};
7、i++;
8、Amin→output()。
上述定义的具体含义为:
首先,计算得到聚合网络的数量;
然后,选取第一种聚合网络A0,并令最小开销聚合网络Amin等于A0,那么cost(Amin)就等于cost(A0);
接着,循环比较所有聚合网络结构的开销,得到最优网络,具体循环比较如下:①选取第二种聚合网络A1;②比较cost(Amin)与cost(A1),如果cost(Amin)>cost(A1),那么令Amin=A1且令cost(Amin)=cost(A1);反之,cost(Amin)和Amin保持不变;③继续选取下一个聚合网络A2,直至比较完所有的网络。
最后,输出该网络结构。
在本发明的另一实施例中,本发明实施例所提供的方法还包括:
对原始规则库进行更新。下面对更新过程进行详细描述。
所述更新包括从原始规则库中***规则或者删除原有规则。
对于向规则库***一条规则的情况,首先将规则用元组形式表示并按域化分,然后将该规则每个域的元组***到相应的域搜索引擎的输入缓存中,由域搜索引擎并行地执行更新操作,其过程与执行搜索操作类似。域搜索引擎将完成分域元组在各域元组数据结构中的搜索,如果数据结构中没有包含该分域元组,那么我们将其添加到数据结构中,同时将该元组的计数值加1。接下来,每个域搜索引擎返回一个规则对应该域的分域元组。在下一个流水线周期,域搜索引擎将更新操作以及分域元组传递给聚合网络。
从逻辑上看,域搜索引擎和聚合节点使用相同的***操作,没有本质区别。需要注意的是,对于每一次更新,域搜索引擎和聚合节点只传递一个分域元组或者合成元组,所以每个聚合节点只对一个合成元组操作。聚合节点接收“***”命令以及上级节点的合成元组,如果该合成元组不在聚合节点的元组集合中,那么将其添加到该节点的元组集合中,同时将该元组的计数值加1并将其传递给下一聚合节点。最后一个聚合节点将合成元组传递给优先级判决模块,由后者负责将元组按照其优先级添加到数据结构中,同时将被添加的规则索引到该元组。经过添加操作后,如果新的规则隶属于已经存在的某元组,那么最后一个节点会输出该元组,只需要将规则添加到该元组的哈希表中即可。
从规则库移除一条规则的过程与添加操作类似。域搜索引擎和聚合节点执行相同的逻辑删除操作。首先找到分域元组,然后将其计数值减1。当某分域元组的计数值为0时就将其删除。该元组被传递到聚合网络执行相同的操作。终节点将元组传递给优先级判决模块,由后者完成将规则或者元组从数据结构删除的任务。
注意域搜索引擎的添加、删除操作指发生在计数值从0变为1或者从1变为0时。真实规则库中,每个域中不同元组的数量是有限的。我们期望一次更新只会改变一个域搜索引擎的数据结构和一个聚合节点的数据结构。在最差情况下,一次***或者删除操作会产生d个域搜索引擎数据结构和d-1个聚合节点数据结构的更新,其中d是规则的维数。
进行更新时,本方案的分类处理技术不但要修改各个节点的查询元组表,而且还要根据修改后的表项修改Bloom哈希桶。尽管可以采用规则重排序等优化措施,但是仍有可能对几乎所有节点的数据结构进行修改,这将花费较长的时间。因此对于更新频率较快的应用,可能出现这样一种情况:需要不断的对数据结构进行更新,导致后续报文不能及时进行分类。如图5所示,以一个聚合节点的规则库更新为例,说明本发明实施例所提供的更新方法。具体包括:
1)配置更新请求队列Qup,并设置更新阈值为δ;
2)当进行更新时将更新请求放入Qup中。Qup除了记录规则信息外,还需要记录更新操作的类型,即添加规则还是删除规则。
3)当Qup中的更新请求个数大于δ值时,开始更新操作。首先复制当前使用的数据结构。将正在用于分类的数据结构称为当前缓存,复制的数据结构称为备份缓存。然后从Qup中读出δ个更新请求,按照更新操作的类型对备份缓存中的数据结构进行更新。处理完毕后,将备份缓存切换成当前缓存,并删除这δ个更新请求。其中,切换过程和删除更新请求都是原子操作。
与方法实施例相对应,本发明实施例还提供用于报文分类***,参见图6,该***包括:
构造单元601,用于将原始分类规则库按匹配域划分为分域规则库,将各个分域规则库中的规则用元组表示,形成分域元组库,将所述分域元组库存储到域搜索引擎;在聚合网络的每一个聚合节点中,计算并存储原始规则库中真实存在的元组组合形成各个聚合节点的匹配向量。
分域处理单元602,用于利用所述域搜索引擎对待查询报文进行分域处理。
聚合单元603,用于利用所述聚合网络对分域处理结果进行逐级聚合,直至终结点,其中逐级聚合时,每个聚合节点通过两级匹配逻辑进行聚合。
在本发明实施例所提供的***中,包含多个聚合单元,这些聚合单元级联在一起组成聚合网络,实现逐级聚合。
分类单元604,用于根据所述终结点命中的元组确定所述待查询报文匹配的分类规则。
缓存单元605,用于在某一分域处理单元输出的分域处理结果当前没有聚合对象时,则对其进行缓存;当聚合对象到来时,将缓存的分域处理结果输送给对应的聚合单元。
图6中是一个三元组的报文分类***的结构示意图,其中,两个聚合单元603a和603b的结构相同,构成聚合网络。603a为第一级聚合节点,603b为第二级聚合节点。从图中可以看出,构造单元与分域处理单元和所有的聚合单元相连,从而保证所述构造单元对分域处理单元和聚合单元中规则库设置。为实现流水线操作,分域处理单元输出的一个结果需要经过缓存单元进行缓存,将缓存的分域处理结果延迟到合适的流水线周期再送入第二级聚合节点中。
参见图7,所述分域处理单元602包括:
分解模块6021,用于将待查询的报文按匹配域分解成报文元组;
获取模块6022,用于获取与所述报文元组匹配的规则子集所对应的规则元组;
处理模块6023,用于根据所述规则元组形成与所述报文元组匹配的分域处理结果。
参见图8,所述聚合单元603包括:
存储模块6031,用于存储匹配向量,所述匹配向量包括第一级匹配向量和第二级匹配向量;
组合模块6032,用于将输入项中的元素进行交叉组合,获得当前聚合节点的查询元组集合,其中,所述输入项包括某一分域处理结果或者当前聚合单元的上一级聚合单元的聚合结果;
获取模块6033,用于根据所述组合模块得到的查询元组集合从所述存储模块中获取当前节点的查询元组向量集合;
第一匹配模块6034,用于将获取模块获取的所述查询元组向量集合中的查询元组向量分别与存储单元中保存的第一级匹配向量进行第一级逻辑判断;
查找模块6035,用于根据所述第一匹配模块输出的通过第一级逻辑判断的查询元组向量查找存储单元中第二级匹配向量的地址,获取第二级匹配向量;
第二匹配模块6036,用于将所述第一匹配模块输出的通过第一级逻辑判断的查询元组向量与所述查找模块查找到的第二级匹配向量进行第二级逻辑判断;
输出模块6037,用于将所述第二匹配模块输出的通过第二级逻辑判断的查询元组向量对应的查询元组加入当前聚合节点的输出结果中。
优选地,在其他实施例中,图6所示的***还包括:
更新单元606,用于对原始规则库进行更新。
参见图9,所述更新单元606包括:
记录模块6061,用于记录更新请求,形成更新请求队列;
复制模块6062,用于当所述更新请求队列中的更新请求数量超过预设的更新阈值时,复制当前使用的数据结构作为备份缓存,当前的数据结构为当前缓存,所述更新请求的内容包括:更新的规则信息和更新操作的类型,所述更新操作的类型包括添加规则的操作和删除规则的操作;
更新模块6063,用于从所述更新请求队列中提取更新请求,按照更新操作的类型对所述复制模块复制得到的备份缓存中的数据结构进行更新;
更换模块6064,用于在更新模块更新完成后,将所述备份缓存更换成当前缓存;
删除模块6065,用于将完成更新的更新请求从记录模块中删除。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (15)
1、一种报文分类方法,其特征在于,将原始分类规则库中的各条规则按域划分成分域规则库,然后将所述分域规则库中的规则用元组表示形成分域元组库,将所述分域元组库存储到域搜索引擎;在聚合网络的每一个聚合节点中,计算并存储原始规则库中真实存在的元组组合形成各个聚合节点的匹配向量;在对待查询的报文进行报文分类时该方法包括:
利用所述域搜索引擎对待查询报文进行分域处理;
利用所述聚合网络对分域处理结果进行逐级聚合,直至终结点,其中逐级聚合时,每个聚合节点通过两级匹配逻辑进行聚合;
根据所述终结点命中的元组确定所述待查询报文匹配的分类规则。
2、根据权利要求1所述的方法,其特征在于,利用所述域搜索引擎对待查询的报文进行分域处理包括:
将待查询的报文按匹配域分解成报文元组;
获取与所述报文元组匹配的规则子集所对应的规则元组;
根据所述规则元组形成与所述报文元组匹配的分域处理结果。
3、根据权利要求1所述的方法,其特征在于,所述每个聚合节点通过两级匹配逻辑进行聚合包括:
聚合节点将输入项中的元素进行交叉组合,获得当前聚合节点的查询元组集合,其中,所述输入项包括某一分域处理结果和/或当前聚合节点的上一级聚合节点的聚合结果;
根据所述查询元组集合获取当前节点的查询元组向量集合;
将所述查询元组向量集合中的查询元组向量分别与当前聚合节点的第一级匹配向量进行第一级逻辑判断;
根据通过第一级逻辑判断的查询元组向量查找当前聚合节点的第二级匹配向量的地址,获取第二级匹配向量;
将所述通过第一级逻辑判断的查询元组向量与所述第二级匹配向量进行第二级逻辑判断;
将通过第二级逻辑判断的查询元组向量对应的查询元组加入当前聚合节点的输出结果中。
4、根据权利要求3所述的方法,其特征在于,根据所述查询元组向量查找当前聚合节点的第二级匹配向量的地址包括:
对所述查询元组向量做hash寻址,查找到的地址即为当前聚合节点第二级匹配向量的地址。
5、根据权利要求3所述的方法,其特征在于,所述聚合节点的输入项为两项。
6、根据权利要求3所述的方法,其特征在于,当某一域处理结果当前没有聚合对象时,则对其进行缓存;当聚合对象到来时,将缓存的分域处理结果输与聚合对象进行聚合。
7、根据权利要求1所述的方法,其特征在于,还包括:对所述原始规则库进行更新操作。
8、根据权利要求7所述的方法,其特征在于,所述更新操作包括:
当更新请求队列中的更新请求数量超过预设的更新阈值时,复制当前使用的数据结构作为备份缓存,当前的数据结构为当前缓存,所述更新请求的内容包括:更新的规则信息和更新操作的类型,所述更新操作的类型包括添加规则的操作和删除规则的操作;
从所述更新请求队列中提取更新请求,按照更新操作的类型对所述备份缓存中的数据结构进行更新;
更新完成后,将所述备份缓存切换为当前缓存,同时将完成更新的更新请求从所述更新请求队列中删除。
9、根据权利要求1~8任意一项所述的方法,其特征在于,所述将各个分域规则库中的规则用元组表示包括:
按照各字段的前缀长度或者潜嵌套深度将各个分域规则库中的规则用元组表示。
10、一种报文分类***。其特征在于,包括:
构造单元,用于将原始分类规则库按匹配域划分为分域规则库,将各个分域规则库中的规则用元组表示,形成分域元组库,将所述分域元组库存储到域搜索引擎;在聚合网络的每一个聚合节点中,计算并存储原始规则库中真实存在的元组组合形成各个聚合节点的匹配向量;
分域处理单元,用于利用所述域搜索引擎对待查询报文进行分域处理;
聚合单元,用于利用所述聚合网络对分域处理结果进行逐级聚合,直至终结点,其中逐级聚合时,每个聚合节点通过两级匹配逻辑进行聚合;
分类单元,用于根据所述终结点命中的元组确定所述待查询报文匹配的分类规则。
11、根据权利要求10所述的***,其特征在于,还包括:
缓存单元,用于在某一分域处理单元输出的分域处理结果当前没有聚合对象时,则对其进行缓存;当聚合对象到来时,将缓存的分域处理结果输送给对应的聚合单元。
12、根据权利要求10或11所述的***,其特征在于,所述分域处理单元包括:
分解模块,用于将待查询的报文按匹配域分解成报文元组;
获取模块,用于获取与所述报文元组匹配的规则子集所对应的规则元组;
处理模块,用于根据所述规则元组形成与所述报文元组匹配的分域处理结果。
13、根据权利要求10或11所述的***,其特征在于,所述聚合单元包括:
存储单元,用于存储匹配向量,所述匹配向量包括第一级匹配向量和第二级匹配向量;
组合模块,用于将输入项中的元素进行交叉组合,获得当前聚合节点的查询元组集合,其中,所述输入项包括某一分域处理结果或者当前聚合单元的上一级聚合单元的聚合结果;
获取模块,用于根据所述组合模块得到的查询元组集合获取当前节点的查询元组向量集合;
第一匹配模块,用于将获取模块获取的所述查询元组向量集合中的查询元组向量分别与存储单元中保存的第一级匹配向量进行第一级逻辑判断;
查找模块,用于根据所述第一匹配模块输出的通过第一级逻辑判断的查询元组向量查找存储单元中第二级匹配向量的地址,获取第二级匹配向量;
第二匹配模块,用于将所述第一匹配模块输出的通过第一级逻辑判断的查询元组向量与所述查找模块查找到的第二级匹配向量进行第二级逻辑判断;
输出模块,用于将所述第二匹配模块输出的通过第二级逻辑判断的查询元组向量对应的查询元组加入当前聚合节点的输出结果中。
14、根据权利要求10所述的***,其特征在于,还包括:
更新单元,用于对原始规则库进行更新。
15、根据权利要求14所述的***,其特征在于,所述更新单元包括:
记录模块,用于记录更新请求,形成更新请求队列;
复制模块,用于当所述更新请求队列中的更新请求数量超过预设的更新阈值时,复制当前使用的数据结构作为备份缓存,当前的数据结构为当前缓存,所述更新请求的内容包括:更新的规则信息和更新操作的类型,所述更新操作的类型包括添加规则的操作和删除规则的操作;
更新模块,用于从所述更新请求队列中提取更新请求,按照更新操作的类型对所述复制模块复制得到的备份缓存中的数据结构进行更新;
更换模块,用于在更新模块更新完成后,将所述备份缓存更换成当前缓存;
删除模块,用于将完成更新的更新请求从记录模块中删除。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101186401A CN101500012B (zh) | 2009-02-27 | 2009-02-27 | 一种报文分类方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101186401A CN101500012B (zh) | 2009-02-27 | 2009-02-27 | 一种报文分类方法和*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101500012A true CN101500012A (zh) | 2009-08-05 |
CN101500012B CN101500012B (zh) | 2012-08-22 |
Family
ID=40946891
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101186401A Expired - Fee Related CN101500012B (zh) | 2009-02-27 | 2009-02-27 | 一种报文分类方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101500012B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104954200A (zh) * | 2015-06-17 | 2015-09-30 | 国家计算机网络与信息安全管理中心 | 一种网络数据包的多类型规则高速匹配方法及装置 |
CN108255871A (zh) * | 2016-12-29 | 2018-07-06 | 华为技术有限公司 | 一种数据查询方法及数据查询节点 |
CN108449226A (zh) * | 2018-02-28 | 2018-08-24 | 华青融天(北京)技术股份有限公司 | 信息快速分类的方法和*** |
CN108595511A (zh) * | 2018-03-23 | 2018-09-28 | 中国人民解放军91977部队 | 一种多样化气象水文数据分类存储处理方法和*** |
CN112148750A (zh) * | 2020-10-20 | 2020-12-29 | 成都中科大旗软件股份有限公司 | 一种数据集成方法及*** |
CN114840724A (zh) * | 2022-04-26 | 2022-08-02 | 北京百度网讯科技有限公司 | 一种查询方法、装置、电子设备及存储介质 |
CN117439898A (zh) * | 2023-12-22 | 2024-01-23 | 深圳万物安全科技有限公司 | 网络设备识别方法、网络设备识别设备和存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7093280B2 (en) * | 2001-03-30 | 2006-08-15 | Juniper Networks, Inc. | Internet security system |
CN100472427C (zh) * | 2002-08-20 | 2009-03-25 | 中兴通讯股份有限公司 | 一种数据包递归流分类方法 |
CN101340363B (zh) * | 2007-12-24 | 2012-09-19 | 中国科学技术大学 | 一种实现多元数据包分类的方法及设备 |
CN101345707B (zh) * | 2008-08-06 | 2010-12-08 | 北京邮电大学 | 一种实现IPv6报文分类的方法及设备 |
-
2009
- 2009-02-27 CN CN2009101186401A patent/CN101500012B/zh not_active Expired - Fee Related
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104954200A (zh) * | 2015-06-17 | 2015-09-30 | 国家计算机网络与信息安全管理中心 | 一种网络数据包的多类型规则高速匹配方法及装置 |
CN108255871A (zh) * | 2016-12-29 | 2018-07-06 | 华为技术有限公司 | 一种数据查询方法及数据查询节点 |
CN108255871B (zh) * | 2016-12-29 | 2022-01-28 | 华为技术有限公司 | 一种数据查询方法及数据查询节点 |
CN108449226A (zh) * | 2018-02-28 | 2018-08-24 | 华青融天(北京)技术股份有限公司 | 信息快速分类的方法和*** |
CN108595511A (zh) * | 2018-03-23 | 2018-09-28 | 中国人民解放军91977部队 | 一种多样化气象水文数据分类存储处理方法和*** |
CN108595511B (zh) * | 2018-03-23 | 2022-04-01 | 中国人民解放军91977部队 | 一种多样化气象水文数据分类存储处理方法和*** |
CN112148750A (zh) * | 2020-10-20 | 2020-12-29 | 成都中科大旗软件股份有限公司 | 一种数据集成方法及*** |
CN112148750B (zh) * | 2020-10-20 | 2023-04-25 | 成都中科大旗软件股份有限公司 | 一种数据集成方法及*** |
CN114840724A (zh) * | 2022-04-26 | 2022-08-02 | 北京百度网讯科技有限公司 | 一种查询方法、装置、电子设备及存储介质 |
CN117439898A (zh) * | 2023-12-22 | 2024-01-23 | 深圳万物安全科技有限公司 | 网络设备识别方法、网络设备识别设备和存储介质 |
CN117439898B (zh) * | 2023-12-22 | 2024-03-12 | 深圳万物安全科技有限公司 | 网络设备识别方法、网络设备识别设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101500012B (zh) | 2012-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101500012B (zh) | 一种报文分类方法和*** | |
CN101827137B (zh) | 一种基于哈希表和扩展存储器的高性能IPv6地址查找方法 | |
CN104866502B (zh) | 数据匹配的方法及装置 | |
CN101388030B (zh) | 数据库和数据库处理方法 | |
US8295286B2 (en) | Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware | |
US7565343B2 (en) | Search apparatus and search management method for fixed-length data | |
CN102377664B (zh) | 一种基于tcam的区域匹配装置和方法 | |
CN100445999C (zh) | 一种数据存储及搜索方法 | |
CN102333036B (zh) | 一种实现高速路由查找的方法和*** | |
CN101577662A (zh) | 一种基于树形数据结构的最长前缀匹配方法和装置 | |
CN102110171B (zh) | 基于树形结构的布鲁姆过滤器的查询与更新方法 | |
CN104904167A (zh) | 通信网络中对于分组处理的高性能基于哈希的查找 | |
CN100385880C (zh) | 分组分类装置和使用字段级特里结构的方法 | |
CN104462609A (zh) | 结合星型图编码的rdf数据存储与查询方法 | |
CN104392010A (zh) | 一种子图匹配的查询方法 | |
US20080133494A1 (en) | Method and apparatus for searching forwarding table | |
CN104572983A (zh) | 基于内存的散列表的构建方法、文本查找方法及相应装置 | |
CN103020054A (zh) | 模糊查询方法及*** | |
CN105264525A (zh) | 内部搜索引擎架构 | |
US20140114995A1 (en) | Scalable high speed relational processor for databases and networks | |
CN114884877B (zh) | 一种哈希表和HOT相结合的IPv6路由查找方法 | |
CN101277252A (zh) | 多分支Trie树的遍历方法 | |
CN110191057B (zh) | 路由查找方法及路由设备 | |
Xin et al. | FPGA-based updatable packet classification using TSS-combined bit-selecting tree | |
CN104125146B (zh) | 一种业务处理方法及装置 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120822 Termination date: 20200227 |
|
CF01 | Termination of patent right due to non-payment of annual fee |