一种匹配器生成的方法和设备与流程

文档序号:12278487阅读:166来源:国知局
一种匹配器生成的方法和设备与流程

本发明涉及通信技术领域,特别涉及一种匹配器生成的方法和设备。



背景技术:

目前,通信网络主要以IP数据包交换网络为主。IP数据包交换网络本质上是基于报文特征统计复用建立转发的网络,其中,利用二进制掩码和特征值对报文分类的方案如下:预先针对不同类别的报文设定不同的处理方式,并为每种报文类别创建相应的匹配规则,每个匹配规则对应一个或多个匹配器,每个匹配器由一个二进制掩码和特征值组成;当设备收到一个报文时,遍历各匹配规则对应的匹配器与报文进行匹配以确定出该报文所属的类别,进而按照所确定类别对应的处理方式来处理该报文。

采用上述方案,匹配器是针对报文字段所可能包含的所有字段值创建的,有多少可能的字段值就对应多少匹配器,会浪费较多的匹配器资源,且会因匹配器数目较多,进而降低了报文类别的识别速度。

综上,现有的报文分类方案中匹配器资源占用较多,同时较多的匹配器资源使得报文识别速度较低。



技术实现要素:

本发明提供一种匹配器生成的方法和设备,用以解决现有技术中报文分类方案中匹配器资源占用较多,同时较多的匹配器资源使得报文识别速度较低的问题。

本发明提供一种匹配器生成的方法,该方法包括:

从报文字段集合中选择一个数字;

根据选择的数字,判断已有的匹配器中是否有需要更新掩码和特征值的目标匹配器;如果有,则根据选择的数字对所述目标匹配器的掩码和特征值进行更新;否则生成所述数字对应的匹配器;

将所述报文字段集合中已有的匹配器对应的数字剔除,并返回从所述报文字段集合中选择一个数字的步骤,直到所述报文字段集合中没有数字为止。

本发明提供一种匹配器生成的设备,该设备包括:

选择模块,用于从报文字段集合中选择一个数字;

判断模块,用于根据选择的数字,判断已有的匹配器中是否有需要更新掩码和特征值的目标匹配器;如果有,则根据选择的数字对所述目标匹配器的掩码和特征值进行更新;否则生成所述数字对应的匹配器;

处理模块,用于将所述报文字段集合中已有的匹配器对应的数字剔除,并触发所述选择模块重新从报文字段集合中选择一个数字,直到所述报文字段集合中没有数字为止。

本发明实施例从报文字段集合中选择一个数字;根据选择的数字,判断已有的匹配器中是否有需要更新掩码和特征值的目标匹配器;如果有,则根据选择的数字对所述目标匹配器的掩码和特征值进行更新;否则生成所述数字对应的匹配器;将所述报文字段集合中已有的匹配器对应的数字剔除,并返回从报文字段集合中选择一个数字的步骤,直到所述报文字段集合中没有数字为止,采用本发明实施例的方式,针对报文字段集合中的数字在确定当前已有匹配器无需要更新掩码和特征值的目标匹配器才生成新的匹配器,且多个数字可以由一个匹配器进行识别,进而提高现有匹配器资源的利用率,减少浪费,报文的识别速度也有所提高。

附图说明

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

图1为本发明实施例匹配器生成的方法的流程示意图;

图2为本发明实施例第一种获得跳变数字集合的示意图;

图3为本发明实施例第二种获得跳变数字集合的示意图;

图4为本发明实施例第三种获得跳变数字集合的示意图;

图5为本发明实施例第四种获得跳变数字集合的示意图;

图6为本发明实施例匹配器生成的方法的过程示意图;

图7为本发明实施例匹配器生成方法的应用示意图;

图8为本发明实施例匹配器生成的设备的结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

如图1所示,本发明实施例中一种匹配器生成的方法,该方法包括:

步骤101:从报文字段集合中选择一个数字;

步骤102:根据选择的数字,判断已有的匹配器中是否有需要更新掩码和特征值的目标匹配器;如果有,则根据选择的数字对所述目标匹配器的掩码和特征值进行更新;否则生成所述数字对应的匹配器;

步骤103:将所述报文字段集合中已有的匹配器对应的数字剔除,并返回从所述报文字段集合中选择一个数字的步骤,直到所述报文字段集合中没有数字为止。

需要说明的是报文字段集合是报文中需要与匹配器进行匹配的所有可能的字段值的集合,每一个可能的报文字段值为一个数字,报文数字集合可以是系统设定也可以人为根据实际需要进行设定。

若当前没有匹配器,则从报文字段集合中选择一个数字,生成选择的数字对应的匹配器;该对应的匹配器中,可以设置掩码值为全1的二进制数值,特征值为选择的数字对应的二进制数值,也可以将掩码值和特征值设为其他二进制数值,只要该选择的数字对应的二进制数值与匹配器的掩码进行与运算后与匹配器的特征值一致即可作为该数值对应的匹配器;以选择的数字为3,若当前没有匹配器,则生成的与3对应的匹配器的掩码为1111,特征值为0011,也可以设置掩码值为1100,对应的特征值为0000。

需要说明的是,匹配器的掩码值和特征值有多种生成方式,只要可以生成与数字对应的匹配器的方式均适用于本发明实施例。

确定当前存在匹配器后,选取报文字段集合中的一个数字,根据当前选择的数字判断已有的匹配器中是否有需要更新掩码和特征值的目标匹配器,具体过程如下:

从所述已有的匹配器中选择一个未进行判断的匹配器;

根据选择的数字、选择的匹配器的掩码和特征值确定第一跳变掩码和跳变特征值;

根据所述第一跳变掩码和所述跳变特征值,确定跳变数字集合;

判断所述跳变数字集合是否为所述报文字段集合的子集,如果是,则确定所述选择的匹配器为目标匹配器,否则返回从所述已有的匹配器中选择一个未进行判断的匹配器。

其中,第一跳变掩码和跳变特征值的确定方式如下:

将所述选择的数字对应的二进制数值与所述选择的匹配器的掩码进行与运算后与所述选择的匹配器的特征值进行异或运算,得到所述第一跳变掩码;以及将所述第一跳变掩码进行非运算后与所述选择的匹配器的特征值进行和运算,得到所述跳变特征值。

例如,当前选择的数字为12,当前选择的匹配器的特征值为1111,掩码为1111,将所述选择的数字12对应的二进制数值1100与所述选择的匹配器的掩码1111进行与运算后为1100,之后与所述选择的匹配器的特征值1111进行异或运算后为0011,所述第一跳变掩码为0011;将所述第一跳变掩码0011进行非运算后为1100,之后与所述选择的匹配器的特征值1100进行和运算得1100,所述跳变特征值即为1100。

例如,当前选择的数字为13,当前选择的匹配器的特征值为0001,掩码为1001,将所述选择的数字13对应的二进制数值1101与所述选择的匹配器的掩码1001进行与运算后为1001,之后与所述选择的匹配器的特征值0001进行异或运算后为1000,所述第一跳变掩码为1000;将所述第一跳变掩码1000进行非运算后为0111,之后与所述选择的匹配器的特征值0001进行和运算得0001,所述跳变特征值即为0001。

其中,确定跳变数字集合的过程如下:

确定所述第一跳变掩码中为1的位置;

同时对每个确定的位置进行置位处理,得到所有的二进制数值,其中所述置位处理为设置为0或1,所述所有的二进制数值为根据置位处理后的结果能够得到的所有的二进制数值;

针对得到的任意一个二进制数值,将该二进制数值与所述跳变特征值进行或运算得到新的二进制数值;

将得到的所有新的二进制数值对应的数字组成的数字集合作为跳变数字集合。

若所述选择的匹配器的掩码进行非运算后不为零,将所述选择的匹配器的掩码取反后作为第二跳变掩码;

确定所述第二跳变掩码中为1的位置;

同时对每个确定的位置进行置位处理,得到所有的二进制数值,其中所述置位处理为设置为0或1,所述所有的二进制数值为根据置位处理后的结果能够得到的所有的二进制数值;

针对得到的任意一个二进制数值,将该二进制数值与所述跳变数字集合中的各个数字对应的二进制数值进行或运算的获得新的二进制数值;

将得到的所有新的二进制数值对应的数字替换所述跳变数字集合中的所有数字。

需要说明的是,对每个确定的位置进行置位处理后得到所有的二进制数值是根据第一跳变掩码和第二跳变掩码中为1的位置所决定的,例如第一跳变掩码中为1的位置为2个,则其置位处理时对应的置位方式就有四种,处理后就可得到4种二进制数值,这4种二进制数值即为所有的二进制数值;第一跳变掩码中为1的位置为3个,则其置位处理时对应的置位方式就有6种,处理后就可得到6种二进制数值,这6种二进制数值即为所有的二进制数值。

在确定跳变数字集合的过程中,可能会存在需要设置第二跳变掩码的情况,下面分别就不需要设置第二跳变掩码和需要设置第二跳变掩码的情况进行举例说明确定跳变数字集合的方法。

情况一,不需要设置第二跳变掩码;

确定所述第一跳变掩码中为1的位置;

同时对每个确定的位置进行置位处理,得到所有的二进制数值,其中所述置位处理为设置为0或1,所述所有的二进制数值为根据置位处理后的结果能够得到的所有的二进制数值;

针对得到的任意一个二进制数值,将该二进制数值与所述跳变特征值进行或运算得到新的二进制数值;

若所述选择的匹配器的掩码进行非运算后为零,将得到的所有新的二进制数值对应的数字组成的数字集合作为跳变数字集合。

例如,当前选择的数字为12,当前选择的匹配器的特征值为1111,掩码为1111,根据当前选择的数字12对应的二进制数值1100,与当前选择的匹配器的特征值和掩码得出第一跳变掩码为0011,跳变特征值为1100;在获得第一跳变掩码和跳变特征值后可以通过以下方式获得跳变数字集合:

方式一:采用穷举法的方式获得跳变数字集合;

同时将第一跳变掩码位置为1的位置进行置位处理得到所有的二进制数值;

确定第一跳变掩码为1的位置为第3位和第4位,同时对第3位比特和第4位比特进行置位处理,也即存在四种可能的置位处理方式:1、对第3位比特置1,对第4位比特置1;2、对第3位比特置1,对第4位比特置0;3、对第3位比特置0,对第4位比特置1;4、对第3位比特置0,对第4位比特置0;得到所有的二进制数值为0011,0010,0001,0000。

将获得的可能的二进制数值分别与跳变特征值进行或运算获得跳变数字集合;

将跳变特征值1100分别与上述四种二进制数值进行或运算,获得的四个数值为1111,1110,1101,1100;这四个二进制数值对应的数字组成的数字集合即为跳变数字集合,其对应的数字为15,14,13,12;

此时,选择的匹配器的掩码为1111,取反后为0000,是为零的数值,故不需要设置第二跳变掩码,这四个二进制数值对应的数字组成的数字集合即为最终的跳变数字集合。

方式二,为了便于统计可以采用二叉树跳变递归枚举的方式获得跳变数字集合,为了便于理解下面结合实例和图示进行说明;

如图2所示,对第一跳变掩码的第四位比特分别置0和置1后获得二进制数值0000和0001,之后对其中一个二进制数值0000的第三位比特置1和置0,获得两个二进制数值分别为0010,0000;对另一个二进制数值0001的第三位比特置1和置0,获得两个二进制数值分别为0011,0001;得到的所有二进制数值分别为0010,0000,0011,0001;所得到的四个二进制数值与跳变特征值进行或运算获得的四个二进制数值分别为1110,1100,1111,1101;对应的十进制数分别为14,12,15,13。

此时,选择的匹配器的掩码为1111,取反后为0000,是为零的数值,故不需要设置第二跳变掩码,这四个二进制数值对应的数字组成的数字集合即为最终的跳变数字集合。

上述两种方式确定跳变数字集合的方式仅是举例说明,事实上确定跳变数字集合的方式有很多,凡是可以确定跳变数字集合的方式均适用于本发明实施例。

情况二,需要设置第二跳变掩码;

确定所述第一跳变掩码中为1的位置;

同时对每个确定的位置进行置位处理,得到所有的二进制数值,其中所述置位处理为设置为0或1,所述所有的二进制数值为根据置位处理后的结果能够得到的所有的二进制数值;

针对得到的任意一个二进制数值,将该二进制数值与所述跳变特征值进行或运算得到新的二进制数值;

若所述选择的匹配器的掩码进行非运算后不为零,将所述选择的匹配器的掩码取反后作为第二跳变掩码;

确定所述第二跳变掩码中为1的位置;

同时对每个确定的位置进行置位处理,得到所有的二进制数值,其中所述置位处理为设置为0或1,所述所有的二进制数值为根据置位处理后的结果能够得到的所有的二进制数值;

针对得到的任意一个二进制数值,将该二进制数值与所述跳变数字集合中的各个数字对应的二进制数值进行或运算的获得新的二进制数值;

将得到的所有新的二进制数值对应的数字替换所述跳变数字集合中的所有数字。

例如,当前选择的数字为13,当前选择的匹配器的特征值为0001,掩码为1001,根据当前选择的数字13对应的二进制数值1101,可以通过以下方式获得跳变数字集合:

方式一:采用穷举法的方式获得跳变数字集合;

根据当前选择的数值13的二进制数1101与当前选择的匹配器的特征值和掩码得出第一跳变掩码为1000,跳变特征值为0001。

同时将第一跳变掩码位置为1的位置进行置位处理得到所有的二进制数值;

第一跳变掩码的位置为第1位,对第1位比特置0,获得二进制数值0000,对第1位比特置1,获得二进制数值1000,也即获得两种二进制数值0000和1000。

得到的所有二进制数值分别与跳变特征值进行或运算获得跳变数字集合;

将跳变特征值0001分别与上述两种二进制数值进行或运算,获得的两个二进制数值为0001和1001,这两个二进制数值对应的数字1、9组成的数字集合为跳变数字集合。

此时,所述选择的匹配器的掩码为1001,,取反为0110,是不为零的数值,故需要设置第二跳变掩码;

第二跳变掩码为述选择的匹配器的掩码1001取反后的二进制数值,也即第二跳变掩码为0110;

同时将第二跳变掩码位置为1的位置进行置位处理得到所有的二进制数值;

确定第二跳变掩码为1的位置为第3位和第2位,同时对3位比特和第2位比特进行置位处理,也即存在四种可能的置位处理方式:1、对第3位比特置0,对第2位比特置0;2、对第3位比特置0,对第2位比特置1;3、对第3位比特置1,对第4位比特置0;4、对第3位比特置1,对第4位比特置1;得到所有的二进制数值为0000,0010,0100,0110。

将获得所有的二进制数值分别与跳变数字集合中的各个数字对应的二进制数值进行或运算获得新的跳变数字结合;

跳变数字集合中的一个数字为1其对应的二进制数值为0001,将0001分别与获得四种二进制数值进行或运算,获得的四个二进制数值为0001,0011,0101,0111;跳变数字集合中的另一个数字为9其对应的二进制数值为1001,将1001分别与获得四种二进制数值进行或运算,获得的四个二进制数值为1001,1011,1101,1111;

将进行或运算后获得这八个二进制数值对应的数字替换所述跳变数字集合中的所有数字。此时跳变数字集合中的数字为1,3,5,7,9,11,13,15,其对应的二进制数值为0001,0011,0101,0111,1001,1011,1101,1111。

方式二,为了便于统计可以采用二叉树跳变递归枚举的方式获得跳变数字集合,为了便于理解下面结合举例和图示进行说明;

如图3所示,对第一跳变掩码的第1位比特分别置0和置1后获得二进制数值0000和1000;两个二进制数值0000和1000与跳变特征值0001进行或运算获得的两个二进制数值分别为0001和1001,这两个二进制数值对应的数字1、9组成的数字集合为跳变数字集合;

此时,所述选择的匹配器的掩码为1001,取反为0110,是不为零的数值,故此时需要设置第二跳变掩码;

第二跳变掩码为选择的匹配器的掩码1001取反后的二进制数值,也即第二跳变掩码为0110;

如图4所示,对第二跳变掩码的第3位比特分别置0和置1后获得二进制数值0000和0100,之后对其中一个二进制数值0000第2位比特置1和置0,获得两个二进制数值分别为0000,0010;对另一个二进制数值0100第2位比特置1和置0,获得两个二进制数值分别为0100,0110;得到的所有二进制数值分别为0000,0010,0100,0110;所得到的四个二进制数值与跳变数字集合中1所对应的二进制数值0001进行或运算获得的四个二进制数值分别为0001,0011,0101,0111。

如图5所示,对第二跳变掩码的第3位比特分别置0和置1后获得二进制数值0000和0100,之后对其中一个二进制数值0000第2位比特置1和置0,获得两个二进制数值分别为0000,0010;对另一个二进制数值0100第2位比特置1和置0,获得两个二进制数值分别为0100,0110;得到的所有二进制数值分别为0000,0010,0100,0110;所得到的四个二进制数值与跳变数字集合中9所对应的二进制数值1001进行或运算获得的四个二进制数值分别为1001,1011,1101,1111。

将与跳变数字集合中的数字进行或运算后获得这八个二进制数值对应的数字替换所述跳变数字集合中的所有数字。此时跳变数字集合中的数字为1,3,5,7,9,11,13,15,其对应的二进制数值为0001,0011,0101,0111,1001,1011,1101,1111。

在获取跳变数字集合后需要判断跳变数字集合与报文字段集合的关系,如果所述跳变数字集合为所述报文字段集合的子集,则确定所述选择的匹配器为目标匹配器,所述跳变数字集合中的所有数字为所述目标匹配器对应的数字;并根据选择的数字对所述目标匹配器的掩码和特征值进行更新,新的掩码和特征值的确定方式如下:

将所述第一跳变掩码取反后,与所述目标匹配器的掩码进行与运算得到所述目标匹配器的新的掩码;以及将所述第一跳变掩码取反后,与所述目标匹配器的特征值进行与运算后的得到所述目标匹配器的新的特征值。

所述跳变数字集合不是所述报文字段集合的子集,则返回从所述已有的匹配器中选择一个未进行判断的匹配器,判断是否为需要更新掩码和特征值的目标匹配器。

例如,以上述情况一中当前选择的数字为12,当前选择的匹配器的特征值为1111,掩码为1111为例,其获得的跳变数字集合为15,14,13,12,若报文字段集合中的数字为9,10,15,14,13,12,11,此时跳变数字集合是报文字段集合的子集,则确定所述选择的匹配器为目标匹配器,并更新目标匹配器的掩码和特征值,也即所述第一跳变掩码0011取反后为1100,与所述目标匹配器的掩码1111进行与运算得到1100,将1100作为所述目标匹配器的新的掩码;所述第一跳变掩码0011取反后为1100,与所述目标匹配器的特征值1111进行与运算后的得到1100,将1100作为所述目标匹配器的新的特征值;

需要说明的是,如果所述跳变数字集合为所述报文字段集合的子集,则将所述报文字段集合中已有的匹配器对应的数字剔除,并返回从所述报文字段集合中选择一个数字的步骤,直到所述报文字段集合中没有数字为止,如上述举例中,报文字段集合中将跳变数字集合包含的数字15,14,13,12剔除,也即此时剩余的报文字段集合中的数字为9,10,11,之后继续从剩余的报文字段集合中选取一个数字判断已有的匹配器中是否有需要更新掩码和特征值的目标匹配器,直到所述报文字段集合中没有数字为止。

若报文字段集合中的数字为9,10,15,13,12,11,由于报文字段集合中不存在14,此时跳变数字集合不是报文字段集合的子集,则返回从所述已有的匹配器中选择一个未进行判断的匹配器;

需要说明的是,返回从所述已有的匹配器中选择一个未进行判断的匹配器时没有未进行判断的匹配器,也即现有的所有匹配器均已经进行了判断,且已有的匹配器中没有需要更新掩码和特征值的目标匹配器,则生成与选择的数字对应的匹配器,其对应的匹配器的掩码可以设为全1的数值,特征值可设置为当前选择的数字对应的二进制数值。

例如,以上述情况二中当前选择的数字为13,当前选择的匹配器的特征值为0001,掩码为1001为例,其获得的跳变数字集合对应的十进制数字为1,3,5,7,9,11,13,15,若报文字段集合中的数字为1,3,5,7,9,10,11,12,13,15,此时跳变数字集合是报文字段集合的子集,则确定所述选择的匹配器为目标匹配器,并更新目标匹配器的掩码和特征值,也即所述第一跳变掩码1000取反后为0111,与所述目标匹配器的掩码1001进行与运算得到0001,将0001作为所述目标匹配器的新的掩码;所述第一跳变掩码1000取反后为0111,与所述目标匹配器的特征值0001进行与运算后的得到0001,将0001作为所述目标匹配器的新的特征值;

若报文字段集合中的数字为1,3,5,7,9,10,11,12,13,由于报文字段集合中不存在15,此时跳变数字集合不是报文字段集合的子集,则返回从所述已有的匹配器中选择一个未进行判断的匹配器。

在根据所述报文字段集合在生成所有的匹配器后,根据生成的匹配器对当前使用的匹配器列表进行更新;

也即若当前的匹配器列表未更新时,可以采用当前更新前的匹配器列表对报文进行识别分类;可以在更新匹配器列表前对当前的匹配器列表进行备份,当需要更新匹配器列表时,采用备份的匹配器列表对报文进行识别分类。

采用本发明实施例的方式其对应的算法的时间复杂度为O(n×log2(n)),时间复杂度最大时为O(n2),此时生成的匹配器个数与报文字段集合中的数字的个数一致,空间复杂度分析:O(n);其中n为报文字段集合中的数字的个数。

如图6所示,本发明实施例生成匹配器的方法的过程流程图,该方法包括:

步骤601:设备确定报文字段集合;

步骤602:设备判断当前是否存在匹配器,如果是则执行步骤603,否则执行步骤616;

步骤603:设备从报文字段集合中选择一个数字;

步骤604:设备从所述已有的匹配器中选择一个未进行判断的匹配器;

步骤605:设备根据选择的数字、选择的匹配器的掩码和特征值确定第一跳变掩码和跳变特征值;

步骤606:设备根据所述第一跳变掩码和所述跳变特征值,确定跳变数字集合;

步骤607:设备判断所述选择的匹配器的掩码进行非运算后是否不为零,如果是,则执行步骤608,否则执行步骤611;

步骤608:设备将所述选择的匹配器的掩码取反后作为第二跳变掩码;

步骤609:设备根据第二跳变掩码和所述跳变数字集合中的数字获取新的二进制数值;

步骤610:设备将得到的所有新的二进制数值对应的数字替换所述跳变数字集合中的所有数字;

步骤611:设备判断所述跳变数字集合是否为所述报文字段集合的子集,如果是,则执行步骤612,否则执行613;

步骤612:设备根据选择的数字对所述目标匹配器的掩码和特征值进行更新;

步骤613:设备判断是否存在未进行判断的匹配器,如果是,则执行步骤604,否则执行614;

步骤614:设备生成所述数字对应的匹配器;

步骤615:设备将所述报文字段集合中已有的匹配器对应的数字剔除;

步骤616:设备从报文字段集合中选择一个数字,生成选择的数字对应的匹配器。

如图7所示,为本发明实施例中匹配器生成的方法的应用示意图,本发明实施例匹配器生成的方法可以由控制层与数据层结合完成。

在控制层中,可以根据业务类型生成对应的匹配器列表,并控制数据层根据生成的匹配器对数据进行匹配分类,其中需要说明的是业务类型可以是多种不同的业务类型,如基于VLAN(Virtual Local Area Network,虚拟局域网)特征添加VLAN TAG(标签),灵活QINQ(VLAN Stacking,封装VLAN)功能;基于VLAN,COS(Class of Service,服务等级)特征进行带宽控制,带宽控制功能;基于端口和VLAN特征进行业务封装进入MPLS(Multi-Protocol Label Switching,多协议标签交换)网络;QOS(Quality of Service,服务质量)策略功能等。

在数据层中,根据生成的匹配器类别对报文进行分类,根据匹配器对应的处理方式,对报文进行处理,当匹配器列表需要更新时,为了保证报文分类处理过程不会的中断,在更新匹配器列表之前对当前使用的匹配器列表进行备份,在更新匹配器列表的过程中,使用备份来对报文进行分类。

基于同一发明构思,本发现实施例还提供了一种匹配器生成的设备。由于该设备解决问题的原理与本发明实施例匹配器生成的方法相似,因此该设备的实施可以参见方法的实施,重复之处不再赘述。

如图8所示,本发明实施例中一种匹配器生成的设备,该设备包括选择模块800,判断模块801和处理模块802:

选择模块800,用于从报文字段集合中选择一个数字;

判断模块801,用于根据选择的数字,判断已有的匹配器中是否有需要更新掩码和特征值的目标匹配器;如果有,则根据选择的数字对所述目标匹配器的掩码和特征值进行更新;否则生成所述数字对应的匹配器;

处理模块802,用于将所述报文字段集合中已有的匹配器对应的数字剔除,并触发所述选择模块800重新从报文字段集合中选择一个数字,直到所述报文字段集合中没有数字为止。

需要说明的是报文字段集合是报文中需要与匹配器进行匹配的所有可能的字段值的集合,每一个可能的报文字段值为一个数字,报文数字集合可以是系统设定也可以人为根据实际需要进行设定。

若当前没有匹配器,则选择模块800从报文字段集合中选择一个数字,生成选择的数字对应的匹配器;该对应的匹配器中,可以设置掩码值为全1的二进制数值,特征值为选择的数字对应的二进制数值,也可以将掩码值和特征值设为其他二进制数值,只要该选择的数字对应的二进制数值与匹配器的掩码进行与运算后与匹配器的特征值一致即可作为该数值对应的匹配。

需要说明的是,匹配器的掩码值和特征值有多种生成方式,只要可以生成与数字对应的匹配器的方式均适用于本发明实施例。

判断模块801确定当前存在匹配器后,选取报文字段集合中的一个数字,根据当前选择的数字判断已有的匹配器中是否有需要更新掩码和特征值的目标匹配器,具体过程如下:

从所述已有的匹配器中选择一个未进行判断的匹配器;

根据选择的数字、选择的匹配器的掩码和特征值确定第一跳变掩码和跳变特征值;

根据所述第一跳变掩码和所述跳变特征值,确定跳变数字集合;

判断所述跳变数字集合是否为所述报文字段集合的子集,如果是,则确定所述选择的匹配器为目标匹配器,否则返回从所述已有的匹配器中选择一个未进行判断的匹配器。

其中,第一跳变掩码和跳变特征值的确定方式如下:

判断模块801将所述选择的数字对应的二进制数值与所述选择的匹配器的掩码进行与运算后与所述选择的匹配器的特征值进行异或运算,得到所述第一跳变掩码;以及判断模块801将所述第一跳变掩码进行非运算后与所述选择的匹配器的特征值进行和运算,得到所述跳变特征值。

其中,判断模块801确定跳变数字集合的过程如下:

确定所述第一跳变掩码中为1的位置;

同时对每个确定的位置进行置位处理,得到所有的二进制数值,其中所述置位处理为设置为0或1,所述所有的二进制数值为根据置位处理后的结果能够得到的所有的二进制数值;

针对得到的任意一个二进制数值,将该二进制数值与所述跳变特征值进行或运算得到新的二进制数值;

将得到的所有新的二进制数值对应的数字组成的数字集合作为跳变数字集合。

若所述选择的匹配器的掩码进行非运算后不为零,将所述选择的匹配器的掩码取反后作为第二跳变掩码;

确定所述第二跳变掩码中为1的位置;

同时对每个确定的位置进行置位处理,得到所有的二进制数值,其中所述置位处理为设置为0或1,所述所有的二进制数值为根据置位处理后的结果能够得到的所有的二进制数值;

针对得到的任意一个二进制数值,将该二进制数值与所述跳变数字集合中的各个数字对应的二进制数值进行或运算的获得新的二进制数值;

将得到的所有新的二进制数值对应的数字替换所述跳变数字集合中的所有数字。

在确定跳变数字集合的过程中,可能会存在需要设置第二跳变掩码的情况,下面分别就不需要设置第二跳变掩码和需要设置第二跳变掩码的情况进行距离说明确定跳变数字集合的方法。

情况一,不需要设置第二跳变掩码;

确定所述第一跳变掩码中为1的位置;

同时对每个确定的位置进行置位处理,得到所有的二进制数值,其中所述置位处理为设置为0或1,所述所有的二进制数值为根据置位处理后的结果能够得到的所有的二进制数值;

针对得到的任意一个二进制数值,将该二进制数值与所述跳变特征值进行或运算得到新的二进制数值;

若所述选择的匹配器的掩码进行非运算后为零,将得到的所有新的二进制数值对应的数字组成的数字集合作为跳变数字集合。

其中,跳变数字集合可以采用如下两种方式获得:

方式一:采用穷举法的方式获得跳变数字集合;

方式二,为了便于统计可以采用二叉树跳变递归枚举的方式获得跳变数字集合。

上述两种方式确定跳变数字集合的方式仅是举例说明,事实上确定跳变数字集合的方式有很多,凡是可以确定跳变数字集合的方式均适用于本发明实施例。

情况二,需要设置第二跳变掩码;

确定所述第一跳变掩码中为1的位置;

同时对每个确定的位置进行置位处理,得到所有的二进制数值,其中所述置位处理为设置为0或1,所述所有的二进制数值为根据置位处理后的结果能够得到的所有的二进制数值;

针对得到的任意一个二进制数值,将该二进制数值与所述跳变特征值进行或运算得到新的二进制数值;

若所述选择的匹配器的掩码进行非运算后不为零,将所述选择的匹配器的掩码取反后作为第二跳变掩码;

确定所述第二跳变掩码中为1的位置;

同时对每个确定的位置进行置位处理,得到所有的二进制数值,其中所述置位处理为设置为0或1,所述所有的二进制数值为根据置位处理后的结果能够得到的所有的二进制数值;

针对得到的任意一个二进制数值,将该二进制数值与所述跳变数字集合中的各个数字对应的二进制数值进行或运算的获得新的二进制数值;

将得到的所有新的二进制数值对应的数字替换所述跳变数字集合中的所有数字。

其中,跳变数字集合可以采用如下两种方式获得:

方式一:采用穷举法的方式获得跳变数字集合;

方式二,为了便于统计可以采用二叉树跳变递归枚举的方式获得跳变数字集合。

判断模块801获取跳变数字集合后需要判断跳变数字集合与报文字段集合的关系,如果所述跳变数字集合为所述报文字段集合的子集,则判断模块801确定所述选择的匹配器为目标匹配器,所述跳变数字集合中的所有数字为所述目标匹配器对应的数字;并根据选择的数字对所述目标匹配器的掩码和特征值进行更新,新的掩码和特征值的确定方式如下:

将所述第一跳变掩码取反后,与所述目标匹配器的掩码进行与运算得到所述目标匹配器的新的掩码;以及将所述第一跳变掩码取反后,与所述目标匹配器的特征值进行与运算后的得到所述目标匹配器的新的特征值。

所述跳变数字集合不是所述报文字段集合的子集,则返回从所述已有的匹配器中选择一个未进行判断的匹配器,判断是否为需要更新掩码和特征值的目标匹配器。

需要说明的是,如果所述跳变数字集合为所述报文字段集合的子集,则处理模块802将所述报文字段集合中已有的匹配器对应的数字剔除,并触发所述选择模块800重新从用于表示报文字段的数字集合中选择一个数字的步骤,直到所述报文字段集合中没有数字为止。

需要说明的是,返回从所述已有的匹配器中选择一个未进行判断的匹配器时没有未进行判断的匹配器,也即现有的所有匹配器均已经进行了判断,且已有的匹配器中没有需要更新掩码和特征值的目标匹配器,则判断模块801生成与选择的数字对应的匹配器,其对应的匹配器的掩码可以设为全1的数值,特征值可设置为当前选择的数字对应的二进制数值。

处理模块802在根据所述报文字段集合在生成所有的匹配器后,根据生成的匹配器对当前使用的匹配器列表进行更新;

也即若当前的匹配器列表未更新时,可以采用当前更新前的匹配器列表对报文进行识别分类;可以在更新匹配器列表前对当前的匹配器列表进行备份,当需要更新匹配器列表时,采用备份的匹配器列表对报文进行识别分类。

以上参照示出根据本申请实施例的方法、装置(系统)和/或计算机程序产品的框图和/或流程图描述本申请。应理解,可以通过计算机程序指令来实现框图和/或流程图示图的一个块以及框图和/或流程图示图的块的组合。可以将这些计算机程序指令提供给通用计算机、专用计算机的处理器和/或其它可编程数据处理装置,以产生机器,使得经由计算机处理器和/或其它可编程数据处理装置执行的指令创建用于实现框图和/或流程图块中所指定的功能/动作的方法。

相应地,还可以用硬件和/或软件(包括固件、驻留软件、微码等)来实施本申请。更进一步地,本申请可以采取计算机可使用或计算机可读存储介质上的计算机程序产品的形式,其具有在介质中实现的计算机可使用或计算机可读程序代码,以由指令执行系统来使用或结合指令执行系统而使用。在本申请上下文中,计算机可使用或计算机可读介质可以是任意介质,其可以包含、存储、通信、传输、或传送程序,以由指令执行系统、装置或设备使用,或结合指令执行系统、装置或设备使用。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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