CN102148805A - 特征匹配方法和装置 - Google Patents
特征匹配方法和装置 Download PDFInfo
- Publication number
- CN102148805A CN102148805A CN2010101095890A CN201010109589A CN102148805A CN 102148805 A CN102148805 A CN 102148805A CN 2010101095890 A CN2010101095890 A CN 2010101095890A CN 201010109589 A CN201010109589 A CN 201010109589A CN 102148805 A CN102148805 A CN 102148805A
- Authority
- CN
- China
- Prior art keywords
- feature
- class
- state machine
- state
- characteristic
- 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
技术领域
本发明实施例涉及通信技术领域,特别涉及一种特征匹配方法和装置。
背景技术
随着互联网的飞速发展,网络的业务种类越来越多,新业务层出不穷且越来越复杂,给电信运营商带来机遇的同时也带来了挑战,如何有效管理,控制和运营网络成为重要问题。深度包解析(Deep Packet Inspection;简称:DPI)技术越来越占据重要位置。DPI技术正逐步将用户管理、安全控制、精细的业务控制等能力集成在一起,实现各类业务的动态感知、策略控制、以及网络与业务的安全保障等功能,降低运营商的管理成本,丰富业务内容和收入增长模式,为运营商提供一个电信业务的基础运营平台。
特征匹配是DPI技术的关键。随着业务发展,协议类型越来越多,流量越来越大,协议特征越来越复杂,规则数量越来越多。如何保证特征匹配性能、减少所需存储空间成为亟待解决的问题。如图1所示,为现有DPI技术中特征匹配的示意图,如图1所示,编译器11将特征库编译成不确定性有限(non-determinate finite automaton;简称:NFA)状态机或确定性有限(determinate finite automaton;简称:DFA)状态机,存储在存储器中;匹配引擎13接收输入数据,从片外存储器12如:双倍速率同步动态随机处理器(Double Data Rate;简称:DDR)内存、同步动态随机处理器(SynchronousDynamic Random Access Memory;简称:SDRAM)、四倍速率(Quad Date Rate;简称:QDR)内存等一次读入单个特征数据(状态机状态),然后对输入数据逐个字符进行单特征匹配,输出匹配结果。
现有DPI技术中的特征库很大,生成的DFA状态机,占用大量的存储空间,多存放在片外存储器,在匹配过程中匹配引擎需要频繁访问片外存储器;如果生成NFA状态机,存储量减少了,但匹配过程中被同时激活的状态从几个到上万不等,激活状态不可控,特征匹配性能低;因此,现有特征匹配速度低。
发明内容
本发明实施例提供一种特征匹配方法和装置,用以解决现有技术特征匹配速度低的问题,提高特征匹配的速度。
本发明实施例提供一种特征匹配方法包括:
对原特征库的特征编译成的原状态机进行分离和删除回跳边的预处理,得到新特征库;
根据所述新特征库和当前匹配信息,预测所述新特征库中与匹配相关的状态和从输入数据中每次取出的待匹配字符的数量;
根据所述新特征库中与匹配相关的状态从所述新特征库中获取特征数据,对所述特征数据与从所述输入数据中每次取出的所述数量的待匹配字符进行匹配。
本发明实施例又提供一种特征匹配装置,包括:
预处理模块,用于对原特征库的特征编译成的原状态机进行分离和删除回跳边的预处理,得到新特征库;
特征预测模块,用于根据所述新特征库和匹配引擎中的当前匹配信息,预测所述新特征库中与匹配相关的状态和从输入数据中每次取出的待匹配字符的数量;
特征预取模块,用于根据所述新特征库中与匹配相关的状态从所述新特征库中获取特征数据;
匹配引擎,用于对所述特征数据与从所述输入数据中每次取出的所述数量的待匹配字符进行匹配。
本发明实施例提供的特征匹配方法和装置,通过对原特征库的特征编译成的原状态机进行分离和删除回跳边的预处理,得到新特征库,从而新特征库与原特征库相比存储量低,且激活状态可控,降低了特征匹配的复杂程度,根据预测得到的新特征库中与匹配相关的状态预先从新特征库中提取特征数据后,匹配引擎可以根据特征数据对从输入数据中每次取出的待匹配字符进行匹配,实现了多字符匹配,提高了特征匹配的速度。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有DPI技术中特征匹配的示意图;
图2为本发明特征匹配方法第一实施例的流程图;
图3a为本发明特征匹配方法第二实施例的流程图;
图3b为本发明特征匹配方法第二实施例中预处理的示意图;
图3c为本发明特征匹配方法第二实施例中原状态机的一种场景的示意图;
图3d为本发明特征匹配方法第二实施例中新状态机的一种场景的示意图;
图3e为本发明特征匹配方法第二实施例中信息指示结构的示意图;
图4a为本发明特征匹配方法第三实施例中原特征库生成的原状态机的一种场景的示意图;
图4b为本发明特征匹配方法第三实施例中新状态机的一种场景的示意图;
图4c为本发明特征匹配方法第三实施例中未分割的原状态机的一种场景的示意图;
图4d本发明特征匹配方法第三实施例中分割后的原状态机的一种场景的示意图;
图4e为本发明特征匹配方法第三实施例中未分割的原状态机的另一种场景的示意图;
图4f本发明特征匹配方法第三实施例中分割后的原状态机的另一种场景的示意图;
图5为本发明特征匹配装置第一实施例的结构示意图;
图6为本发明特征匹配装置第二实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图2为本发明特征匹配方法第一实施例的流程图,如图2所示,该特征匹配方法包括:
S101、对原特征库的特征编译成的原状态机进行分离和删除回跳边的预处理,得到新特征库;
特征匹配装置的原特征库中包括从网络报文中提取出的特征规则,一般是采用模式串和正则表达式等来描述的特征规则的集合,特征匹配装置可以对原特征库进行预处理,得到新特征库,具体方法为:
对所述原特征库中的特征编译成的原状态机进行分离,得到类非确定性有限状态机部分和类确定性有限状态机部分;
将分离后的原状态机中的回跳边删除,获得新状态机,所述回跳边为从所述类确定性有限状态机部分返回到所述类非确定性有限状态机部分的跳转边;
将所述新状态机存储为所述新特征库。
其中,类非确定性有限(NFA)状态机部分同一时间可以有多个状态激活,且第一个状态始终激活,这与NFA状态机的工作机制相同;与NFA状态机不同的是,类NFA状态机部分的激活状态的数量可控,因此称为类NFA状态机部分。类确定性有限(DFA)状态机部分同一时间只有一个状态激活,这与DFA状态机的工作机制相同,与DFA状态机不同的是,本发明实施例中的类DFA状态机部分为线性,且进行了删除回跳边的处理。
其中,对所述原特征库中的特征编译成的原状态机进行分离的方法具体可以包括:
根据所述原特征库中的特征编译成的原状态机中的回跳边数量和回跳边占所有跳转边的比例,确定所述原特征库的类非确定性有限状态机部分的深度;
根据所述类非确定性有限状态机部分的深度,将所述原状态机分离为类非确定性有限状态机部分和类确定性有限状态机部分;
对所述类确定性有限状态机部分的具有回跳边或多个跳转边的状态进行分割,使所述类确定性有限状态机部分的状态线性化。
S102、根据所述新特征库和当前匹配信息,预测所述新特征库中与匹配相关的状态和从输入数据中每次取出的待匹配字符的数量;
在生成新特征库后,S102具体可以包括:
获取包括当前激活状态、输入数据和信息指示结构的当前匹配信息;
根据所述当前激活状态和信息指示结构对所述输入数据进行分析,预测所述新特征库中与匹配相关的状态和从输入数据中每次取出的待匹配字符的数量。
其中,与匹配相关的状态可以包括匹配过程中所有的当前激活状态的下一状态或随后的几个状态,信息指示结构可以包括新特征库保存的新状态机中的每个状态对应的状态号、跳转边索引、读取的输入数据的字符数、跳转边指示和跳转记录。获取当前激活状态的方法例如:当前激活的状态,然后查找各个激活状态的信息指示结构,再对照输入数据的字符和字符数等信息,可以得到每次需要读取的输入数据的待匹配字符的数量以及需要从新特征库中预取的特征数据。
S103、根据所述新特征库中与匹配相关的状态从所述新特征库中获取特征数据,对所述特征数据与从所述输入数据中每次取出的所述数量的待匹配字符进行匹配。
具体地,特征匹配装置可以将从所述新特征库中获取的所述特征数据存入缓存;然后,从所述缓存中读取所述特征数据,判断所述特征数据与从输入数据中每次取出的所述数量的待匹配字符是否匹配。
本实施例新特征库与原特征库相比存储量低,激活状态可控,线性化程度高,降低了特征匹配的复杂程度,根据预测得到的新特征库中与匹配相关的状态和预先从新特征库中提取特征数据,匹配引擎可以根据特征数据对输入数据进行匹配,从而提高特征匹配的速度;特征数据可以保存在缓存中,进一步提高了匹配速度;且预测得到了从输入数据中每次取出的待匹配字符的数量,可以实现多字符匹配,匹配方式灵活。
在利用特征匹配进行协议识别例如:HTTP和RTSP协议识别的过程中,需要通过从输入的协议报文数据中匹配到各协议的方法(method)来识别对应协议,每个协议对应多种方法(即字符串),这些方法就是构成原特征库的特征。协议的特征的特点是:特征个数多,但特征字符串的长度短。特征字符串之间出现相同子串的情况少,而且子串长度短。如果直接构造原状态机作单字符匹配,则原状态机数量大,匹配性能低。
特征匹配装置包括:预处理模块、特征预测模块、特征预取模块、匹配引擎和存储管理模块等。图3a为本发明特征匹配方法第二实施例的流程图,如图3a所示,以协议识别为例,该特征匹配方法可以包括以下步骤:
S201、预处理模块将原特征库中的特征编译成的原状态机进行分离、删除回跳边等处理之后,得到新状态机。
S202、存储管理模块将得到的新状态机的相关联的状态,存储在连续的空间中。
上述的S201和S202是对原特征库中的各个协议的特征进行预处理的过程。
S203、生成并存储新特征库。
S204、特征预测模块从匹配引擎中获取当前匹配信息,预测所述新特征库中与匹配相关的状态和从输入的协议报文中每次取出的待匹配字符的数量。
S205、特征预取模块根据新特征库中与匹配相关的状态从新特征库中获取特征数据,保存在缓存中。
S206、匹配引擎从缓存中读取上一步特征数据,根据从输入的协议报文中每次取出的待匹配字符的数量,从输入的协议报文数据中取出待匹配字符进行匹配。
上述的S203到S206是根据新特征库对输入数据进行预测和匹配的过程。
S207、输出协议识别结果。
图3b为本发明特征匹配方法第二实施例中预处理的示意图,如图3b所示,假设可控的最大可激活状态数为K,根据最大可激活状态数K可以选择存储的深度N,例如:深度N等于K。预处理模块将原状态机分离成深度小于等于N的状态(类非确定性有限状态机部分)和深度大于N的状态(类确定性有限状态机部分)。类非确定性有限状态机部分使用类似非确定性有限状态机的工作机制,类确定性有限状态机部分使用类似确定性有限状态机的工作机制。综合考虑两个部分的状态机以及匹配实现的复杂度可以确定类非确定性有限状态机部分的层数即深度的选择。
确定前后两部分后,删除回跳边,由于回跳边占原状态机中的所有跳转边的比例很大,删除回跳边可以节省和压缩很大的存储空间。回跳边为从类确定性有限状态机部分跳转到类非确定性有限状态机部分的跳转边,在图3b中,回跳边为深度大于N的状态往回跳转到深度小于等于N的状态的跳转边,例如:从状态m到状态n的跳转边,从状态j到状态h的跳转边等。后面的类DFA状态机部分的被删除的回跳边可以通过在前面的类NFA状态机部分完成等价跳转,不会遗失这些跳转信息,这是由于:类NFA状态机部分的第一个状态始终激活,每次可以有多个状态激活,这与NFA状态机的工作机制相同,但类NFA状态机部分的同时激活的状态数量可控,且类NFA状态机部分在类DFA状态机部分的匹配过程中也一直在运行,当类DFA状态机部分因删除了回跳边而跳转失败时,可以自动跳到类NFA状态机部分的未删除回跳边时需要跳转到达的状态,继续进行正确匹配。
图3c为本发明特征匹配方法第二实施例中原状态机的一种场景的示意图,图3d为本发明特征匹配方法第二实施例中新状态机的一种场景的示意图,假设原特征库中有三条协议规则:“abcabdedfg”、“edjxks”和“dfb”,可以将规则“abcabdedfg”、“edjxks”和“dfb”编译成如图3c所示的原状态机。
计算由图3c中的原状态机生成新特征库时,确定新特征库的类NFA状态机部分的层数的方法如下:特征匹配装置自动计算和统计回跳边和基本跳转边个数;根据回跳边占总跳转边比例情况选择原状态机分离界线的层,一般选择除跳转边(restart transition)外占比例最大的层的下一层作为分离界线。如图3c中,回跳到第三层的状态3和状态16的回跳边最多,占的比例最大,因此可以选择第三层与第四层之间作为分离界线,将原特征库的原状态机分成如图3d所示的类NFA状态机部分和类DFA状态机部分;从而得出类NFA状态机部分的层数即深度N=3;同时得到选择可控的最大可激活状态数K等于N,即可以控制的同时激活状态个数为3。类NFA状态机部分的工作方式类似NFA状态机,其初始状态(即图3c中状态0)一直处于激活,当类DFA状态机部分在匹配动作时,类NFA状态机部分也一起进行匹配动作。
将原状态机分离后,将从类DFA状态机部分到类NFA状态机部分的所有回跳边删除,可以得到如图3d所示的新状态机。删除回跳边后不会缺失跳转信息,具体示例如下:
假设待匹配的协议报文数据为“abcabdedjxks”,在采用图3c中的原状态机对“abcabdedjxks”进行匹配时,匹配过程经过的状态如下:
状态0->状态1->状态2->状态3->状态4->状态5->状态6->状态7->状态8->状态16->状态17->状态18->状态19,最后到达接受状态19,得出匹配结果为规则“edjxks”。
在采用通过删除回跳边后的图3d的新状态机对“abcabdedjxks”进行匹配时,匹配过程经过的状态如下:
状态0->状态1->状态2->状态3->状态4(此时进入类DFA状态机部分)->状态5->状态6->状态7(此时激活类NFA状态机部分的状态14)->状态8(此时激活类NFA状态机部分的状态15)->状态16->状态17->状态18->状态19;
由于在匹配过程中,类NFA状态机部分和类DFA状态机部分同时进行匹配动作,且类NFA状态机部分的状态0一直激活。因此,当在类DFA状态机部分中匹配到状态6后,下面继续待匹配的字符“e”将使类DFA状态机部分跳转到状态7且同时激活了类NFA状态机部分的状态14;同样接下来的字符“d”使类DFA状态机部分跳转到状态8,且激活了类NFA状态机部分的状态15(此时类NFA状态机部分的状态14已经被去激活,而且状态11被激活);在从状态8后,接下来的待匹配的字符是“j”,在类DFA状态机部分当前的状态8没有字符“j”的跳转边(因为原状态机中j字符的回跳边已被删除),但是在类NFA状态机部分的当前激活的状态0、状态15和状态11中,状态15有字符“j”的跳转边跳到状态16,因此从状态8自动跳到类NFA状态机部分的状态15,对字符“j”进行匹配;接下来继续匹配下面的字符“x”、“k”、“s”,经过状态16、状态17、状态18,最后到达接受状态19,得到匹配结果“edjxks”,可以达到等效匹配,不会缺失跳转信息。
经过上面的预处理得到的状态机可以使深度大于N的状态为线性,可以称为变步长线性状态机。存储管理模块可以将新状态机的各个状态存储到连续的空间,完成新特征库的创建和存储。
然后,特征预测模块根据新特征库可以从匹配引擎中获取当前匹配信息,实时跟踪匹配引擎中当前激活的状态,由于每个状态在编译的过程中都预先保存了所有跳转边的信息指示结构,图3e为本发明特征匹配方法第二实施例中信息指示结构的示意图,如图3e所示,信息指示结构可以包括新特征库保存的新状态机中的每个状态对应的状态号、跳转边索引、读取的输入数据的字符数、跳转边指示和跳转记录。对于线性状态,编译器预先把尽可能多的状态信息保存到信息指示结构中的前四个字段,并且每个状态都有信息指示结构。信息指示结构中最后一个字段跳转记录字段,记录该状态的各跳转边的跳转出现次数和占所有跳转边的比例,作为历史记录进行保存,匹配引擎实时更新当前各个状态的信息指示结构,并进行老化管理。特征预测模块获取信息指示结构后,分析当前待匹配数据中的字符及数量,对一次读取字符个数以及从新特征库中特征数据进行预测,并将预测得到的新特征库中与匹配相关的状态和从输入数据中每次取出的待匹配字符的数量发到特征预取模块。
特征预取模块从新特征库中获取多个特征数据后,保存到缓存中,匹配引擎从缓存中获取多个特征数据,可以并行的与读取的输入数据进行多字符特征匹配。
本实施例中,对原特征库进行分离和删除回跳边处理后得到的新特征库与原特征库相比存储量低,且激活状态可控,降低了特征匹配的复杂程度,根据预测得到的新特征库中与匹配相关的状态预先从新特征库中提取了特征数据后,匹配引擎可以根据特征数据可以对输入数据进行匹配,从而提高特征匹配的速度;特征数据可以保存在缓存中,匹配引擎从缓存中获得特征数据,与从外部的存储器取出特征数据的方法相比,进一步提高了匹配引擎的匹配速度;由于可以预测到从输入数据中每次取出的待匹配字符的数量,实现了多字符匹配,匹配方式灵活。
本发明实施例的特征匹配方法可以处理特征库庞大、相同子特征很长的情况。以统一资源定位符(Uniform/Universal Resource Locator;简称:URL)为例,URL匹配是DPI设备中的核心之一。通过匹配URL,可以过滤有害网站,可以根据访问内容收费等。由于网络的信息瞬息万变,一个可以捕捉实时信息的URL特征库往往是自动生成的。特征库庞大,但特征格式统一,一般为“host+path”组合。自动生成的特征库中,相同host或者相同path的特征很多,相同部分(子特征)的长度从几个到十几个字符不等。假设特征库中最长相同子特征的长度为L。如果直接由原特征库构造一个线性状态机,需要将所有L层以下的状态分离保存,并在匹配过程中同时处理L个激活态。对于每个状态有多条跳转边的状态,即非线性状态,状态数随着层数的递增呈级数增长。因此,需要尽可能的降低存储层数,对于减少预取信息量、实现片上存储并提高匹配速度,有重要意义。本发明实施例中预处理模块可以根据片上存储资源的多少和可控的最大可激活状态数,对原URL特征库进行预处理。假设最大可激活状态数和深度都为N,所有长度大于N的相同子特征将从原特征中分离出来。
图4a为本发明特征匹配方法第三实施例中原特征库生成的原状态机的一种场景的示意图,如图4a所示,相同子特征可能出现在原特征的头部(如状态n后开始分叉),也可能出现在中间或者尾端(如状态m后出现回跳边)。对图4a中的原状态机进行分离,可以得到深度小于等于N的类NFA状态机部分,以及深度大于N的类DFA状态机部分。显然,如果按原特征库构造出的原状态机,深度N以上存在大量的非线性状态例如:状态n、状态m,特征预取模块无法判断并一次取出有效状态做匹配。图4b为本发明特征匹配方法第三实施例中新状态机的一种场景的示意图,如图4b所示,对原特征库进行预处理后得到的新特征库中类DFA状态机部分即深度大于N的状态全部为线性,生成新状态机,如图4b所示,状态n的子树可以被添加到根状态下,状态m的子树可以被合并到状态m’。经过多次分割后,类DFA状态机部分只留下了线性状态。
下面以具体例子介绍对URL的原状态机进行分割的过程,一般可以分为以下情况:
情况一、URL的原状态机中由于相同头子串而出现分叉。
假设有两条URL为“www.sina.com”和“www.hotmai1.com”,图4c为本发明特征匹配方法第三实施例中未分割的原状态机的一种场景的示意图,图4d本发明特征匹配方法第三实施例中分割后的原状态机的一种场景的示意图,如图4c所示,“www”后的第一个″.″对应的状态与图4b中的状态n类似,都是从具有相同头子串并随后开始分叉;将“www.sina.com”和“www.hotmail.com”切割后的新状态机;如图4d所示,可以将原来的URL切割为三条子串后,分别为“www”、“.sina.com”和“.hotmail.com”。生成的新状态机根据这三条子串的匹配结果进行偏移量分析并上报,将″.″添加到根状态0下。其中,偏移量分析是指:分析特征中指明的匹配到的子串在输入数据中的位置与该子串实际在输入数据中的位置是否一样,如果一样,则偏移量分析为匹配成功,否则,偏移量分析为匹配不成功。
情况二、URL的原状态机中由于部分子串与头子串相同而出现分叉。
假设有两条URL为“news.sina.com”和“www.sohu.com/newstoday”,图4e为本发明特征匹配方法第三实施例中未分割的原状态机的另一种场景的示意图,图4f本发明特征匹配方法第三实施例中分割后的原状态机的另一种场景的示意图,如图4e所示,从“.”到“s”的回跳边表示的在匹配完子串“www.sohu.com/news”后,如果匹配到字符“.”,则往下匹配第一条URL的“.sina.com”部分;否则,如果匹配到“t”,则继续匹配第二条URL的“today”部分。如图4f所示,原来的URL被切割为三条子串:“news.sina.com”、“www.sohu.com/”和“newstoday”重构后的新状态机根据这三条子串的匹配结果结合偏移量分析并上报,将″t″合并“news”中的“s”之后。
进一步地,存储管理模块可以将新状态机中线性化的关联的状态保存到关联的存储空间中例如:地址连续存储空间,便于快速读取。特征预测模块从匹配引擎中获取当前匹配信息后,预测所述新特征库中与匹配相关的状态和从输入数据中每次取出的待匹配字符的数量。特征预取单元从新特征库中预取多个特征数据保存到缓存中,匹配引擎从缓存中获取预取的多个特征数据,并行的与当前读取的输入数据进行多字符匹配,最终的特征匹配结果可以综合分离后的子特征匹配结果上报。
本实施例根据预测得到的新特征库中与匹配相关的状态预先从新特征库中提取了特征数据,匹配引擎可以根据特征数据可以对输入数据进行匹配,从而提高特征匹配的速度;特征数据可以保存在缓存中,匹配引擎从缓存中获得特征数据,与从外部的存储器取出特征数据的方法相比,进一步提高了匹配引擎的匹配速度;并且由于可以预测到从输入数据中每次取出的待匹配字符的数量,因此可以实现多字符匹配,匹配方式灵活;并且新特征库与原特征库相比既降低了存储量,又实现了激活状态可控,因此降低了特征匹配的复杂程度,提高了匹配性能和匹配速度。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
图5为本发明特征匹配装置第一实施例的结构示意图,如图5所示,该特征匹配装置包括:
预处理模块40,用于对原特征库的特征编译成的原状态机进行分离和删除回跳边的预处理,得到新特征库;
特征预测模块41,用于根据所述新特征库和匹配引擎43中的当前匹配信息,预测所述新特征库中与匹配相关的状态和从输入数据中每次取出的待匹配字符的数量;
特征预取模块42,用于根据所述新特征库中与匹配相关的状态从所述新特征库中获取特征数据;
匹配引擎43,用于对所述特征数据与从所述输入数据中每次取出的所述数量的待匹配字符进行匹配。
具体地,对原特征库中的特征编译成的原状态机进行预处理,可以得到新特征库,特征预测模块41根据新特征库和匹配引擎43中的当前匹配信息,预测得到新特征库中与匹配相关的状态和从输入数据中每次取出的待匹配字符的数量后,特征预取模块42可以根据新特征库中与匹配相关的状态从新特征库中获取特征数据;然后匹配引擎43根据从输入数据中每次取出的待匹配字符的数量从输入数据中取出待匹配字符,再对特征数据与从输入数据中取出的所述数量的待匹配字符进行匹配。具体方法可以参照本发明特征匹配方法第一实施例的相关描述。
本实施例预处理模块对原特征库进行分离和删除回跳边处理后得到的新特征库与原特征库相比存储量低,且激活状态可控,降低了特征匹配的复杂程度,特征预取模块根据特征预测模块得到的新特征库中与匹配相关的状态,预先从新特征库中提取特征数据,匹配引擎可以根据从输入数据中每次取出的待匹配字符的数量从输入数据中取出待匹配字符,然后特征数据与从输入数据中取出该数量待匹配字符进行匹配,实现了多字符匹配,提高了特征匹配的速度。
图6为本发明特征匹配装置第二实施例的结构示意图,在本发明特征匹配装置第一实施例的基础上,如图6所示,预处理模块40具体可以包括:分离子模块51和回跳边处理子模块52。
其中,分离子模块51,用于对所述原特征库中的特征编译成的原状态机进行分离,得到类非确定性有限状态机部分和类确定性有限状态机部分;
回跳边处理子模块52,用于将分离后的原状态机中的回跳边删除,获得新状态机,所述回跳边为从所述类确定性有限状态机部分返回到所述类非确定性有限状态机部分的跳转边。
此外,在对所述原特征库中的特征编译成的原状态机进行分离时,分离子模块51还可以包括:深度确定单元511、分离单元512和分割单元513。
深度确定单元511,用于根据所述原特征库中的特征编译成的原状态机中回跳边数量和回跳边占所有跳转边的比例,确定所述原特征库的类非确定性有限状态机部分的深度;
分离单元512,用于根据所述类非确定性有限状态机部分的深度,将所述原状态机分离为类非确定性有限状态机部分和类确定性有限状态机部分;
分割单元513,用于对所述类确定性有限状态机部分的具有回跳边或多个跳转边的状态进行分割,使所述类确定性有限状态机部分的状态线性化。预处理模块对原状态机进行分离的过程可以参照本发明特征匹配方法第二、第三实施例的相关描述以及图3a-图3d、图4a-图4f。
进一步地,该特征匹配装置还可以包括:存储管理模块45,用于将所述新状态机存储为所述新特征库。
在预处理模块40对原状态机进行预处理,生成新特征库之后,特征预取模块42还用于,将从所述新特征库中获取的所述特征数据存入缓存;
匹配引擎43还用于,从所述缓存中读取所述特征数据,判断所述特征数据与从所述输入数据中每次取出的所述数量的待匹配字符是否匹配。
再进一步地,特征预测模块41具体包括:获取子模块53和预测子模块54。
其中,获取子模块53,用于从所述匹配引擎中获取包括当前激活状态、输入数据和信息指示结构的当前匹配信息;
预测子模块54,用于根据所述当前激活状态和信息指示结构对所述输入数据进行分析,预测所述新特征库中与匹配相关的状态和从输入数据中每次取出的待匹配字符的数量。其中,信息指示结构可以参照本发明特征匹配方法第二实施例的相关描述以及图3e。
本实施例预处理模块对原特征库进行分离和删除回跳边处理后得到的新特征库与原特征库相比存储量低,且激活状态可控,降低了特征匹配的复杂程度,特征预取模块根据特征预测模块预测得到的新特征库中与匹配相关的状态和从输入数据中每次取出的待匹配字符的数量,预先从新特征库中提取了特征数据,匹配引擎可以根据特征数据可以对输入数据进行匹配,从而提高特征匹配的速度;特征预取模块可以将特征数据保存在缓存中,匹配引擎从缓存中获得特征数据,与从外部的存储器取出特征数据的方法相比,进一步提高了匹配引擎的匹配速度;由于可以预测得到每次读取的输入数据的字符数量,从而实现了多字符匹配,匹配方式灵活。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种特征匹配方法,其特征在于,包括:
对原特征库的特征编译成的原状态机进行分离和删除回跳边的预处理,得到新特征库;
根据所述新特征库和当前匹配信息,预测所述新特征库中与匹配相关的状态和从输入数据中每次取出的待匹配字符的数量;
根据所述新特征库中与匹配相关的状态从所述新特征库中获取特征数据,对所述特征数据与从所述输入数据中每次取出的所述数量的待匹配字符进行匹配。
2.根据权利要求1所述的特征匹配方法,其特征在于,所述对原特征库的特征编译成的原状态机进行分离和删除回跳边的预处理,得到新特征库,包括:
对所述原特征库中的特征编译成的原状态机进行分离,得到类非确定性有限状态机部分和类确定性有限状态机部分;
将分离后的原状态机中的回跳边删除,获得新状态机,所述回跳边为从所述类确定性有限状态机部分返回到所述类非确定性有限状态机部分的跳转边;
将所述新状态机存储为所述新特征库。
3.根据权利要求2所述的特征匹配方法,其特征在于,所述对所述原特征库中的特征编译成的原状态机进行分离,包括:
根据所述原特征库中的特征编译成的原状态机中回跳边数量和回跳边占所有跳转边的比例,确定所述原特征库的类非确定性有限状态机部分的深度;
根据所述类非确定性有限状态机部分的深度,将所述原状态机分离为类非确定性有限状态机部分和类确定性有限状态机部分;
对所述类确定性有限状态机部分的具有回跳边或多个跳转边的状态进行分割,使所述类确定性有限状态机部分的状态线性化。
4.根据权利要求1所述的特征匹配方法,其特征在于,所述根据由原特征库预处理后得到的新特征库和当前匹配信息,预测所述新特征库中与匹配相关的状态和从输入数据中每次取出的待匹配字符的数量,包括:
获取包括当前激活状态、输入数据和信息指示结构的当前匹配信息;
根据所述当前激活状态和信息指示结构对所述输入数据进行分析,预测所述新特征库中与匹配相关的状态和从输入数据中每次取出的待匹配字符的数量。
5.根据权利要求1所述的特征匹配方法,其特征在于,所述根据所述新特征库中与匹配相关的状态从所述新特征库中获取特征数据,对所述特征数据与从所述输入数据中每次取出的所述数量的待匹配字符进行匹配,包括:
将从所述新特征库中获取的所述特征数据存入缓存;
从所述缓存中读取所述特征数据;
判断所述特征数据与从所述输入数据中每次取出的所述数量的待匹配字符是否匹配。
6.一种特征匹配装置,其特征在于,包括:
预处理模块,用于对原特征库的特征编译成的原状态机进行分离和删除回跳边的预处理,得到新特征库;
特征预测模块,用于根据所述新特征库和匹配引擎中的当前匹配信息,预测所述新特征库中与匹配相关的状态和从输入数据中每次取出的待匹配字符的数量;
特征预取模块,用于根据所述新特征库中与匹配相关的状态从所述新特征库中获取特征数据;
匹配引擎,用于对所述特征数据与从所述输入数据中每次取出的所述数量的待匹配字符进行匹配。
7.根据权利要求6所述的特征匹配装置,其特征在于,所述预处理模块包括:
分离子模块,用于对所述原特征库中的特征编译成的原状态机进行分离,得到类非确定性有限状态机部分和类确定性有限状态机部分;
回跳边处理子模块,用于将分离后的原状态机中的回跳边删除,获得新状态机,所述回跳边为从所述类确定性有限状态机部分返回到所述类非确定性有限状态机部分的跳转边。
8.根据权利要求7所述的特征匹配装置,其特征在于,所述分离子模块包括:
深度确定单元,用于根据所述原特征库中的特征编译成的原状态机中回跳边数量和回跳边占所有跳转边的比例,确定所述原特征库的类非确定性有限状态机部分的深度;
分离单元,用于根据所述类非确定性有限状态机部分的深度,将所述原状态机分离为类非确定性有限状态机部分和类确定性有限状态机部分;
分割单元,用于对所述类确定性有限状态机部分的具有回跳边或多个跳转边的状态进行分割,使所述类确定性有限状态机部分的状态线性化。
9.根据权利要求6所述的特征匹配装置,其特征在于,所述特征匹配装置还包括:
存储管理模块,用于将所述新状态机存储为所述新特征库;
所述特征预取模块还用于,将从所述新特征库中获取的所述特征数据存入缓存;
所述匹配引擎还用于,从所述缓存中读取所述特征数据,判断所述特征数据与从所述输入数据中每次取出的所述数量的待匹配字符是否匹配。
10.根据权利要求6所述的特征匹配装置,其特征在于,所述特征预测模块包括:
获取子模块,用于从所述匹配引擎中获取包括当前激活状态、输入数据和信息指示结构的当前匹配信息;
预测子模块,用于根据所述当前激活状态和信息指示结构对所述输入数据进行分析,预测所述新特征库中与匹配相关的状态和从输入数据中每次取出的待匹配字符的数量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010109589.0A CN102148805B (zh) | 2010-02-09 | 2010-02-09 | 特征匹配方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010109589.0A CN102148805B (zh) | 2010-02-09 | 2010-02-09 | 特征匹配方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102148805A true CN102148805A (zh) | 2011-08-10 |
CN102148805B CN102148805B (zh) | 2015-04-08 |
Family
ID=44422808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010109589.0A Active CN102148805B (zh) | 2010-02-09 | 2010-02-09 | 特征匹配方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102148805B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103188267A (zh) * | 2013-03-27 | 2013-07-03 | 中国科学院声学研究所 | 一种基于dfa的协议解析方法 |
CN103984538A (zh) * | 2014-03-27 | 2014-08-13 | 华为技术有限公司 | 应用场景的识别方法、功耗管理方法、装置及终端设备 |
CN104426911A (zh) * | 2013-08-30 | 2015-03-18 | 凯为公司 | 用于编译有限自动机的方法和装置 |
CN104426910A (zh) * | 2013-08-30 | 2015-03-18 | 凯为公司 | 用于处理有限自动机的方法和装置 |
CN104486143A (zh) * | 2014-12-01 | 2015-04-01 | 中国联合网络通信集团有限公司 | 一种深度报文检测方法、检测系统 |
CN105554152A (zh) * | 2015-12-30 | 2016-05-04 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据特征提取的方法及装置 |
CN106161072A (zh) * | 2015-04-20 | 2016-11-23 | 中国移动通信集团重庆有限公司 | 一种特征库的配置方法、特征配置管理平台及特征插件 |
US9762544B2 (en) | 2011-11-23 | 2017-09-12 | Cavium, Inc. | Reverse NFA generation and processing |
US9785403B2 (en) | 2013-08-30 | 2017-10-10 | Cavium, Inc. | Engine architecture for processing finite automata |
US9904630B2 (en) | 2014-01-31 | 2018-02-27 | Cavium, Inc. | Finite automata processing based on a top of stack (TOS) memory |
US10002326B2 (en) | 2014-04-14 | 2018-06-19 | Cavium, Inc. | Compilation of finite automata based on memory hierarchy |
US10110558B2 (en) | 2014-04-14 | 2018-10-23 | Cavium, Inc. | Processing of finite automata based on memory hierarchy |
CN118113728A (zh) * | 2024-04-30 | 2024-05-31 | 浪潮电子信息产业股份有限公司 | 一种数据查询方法、系统、装置、设备、可读存储介质 |
CN118113728B (zh) * | 2024-04-30 | 2024-07-02 | 浪潮电子信息产业股份有限公司 | 一种数据查询方法、系统、装置、设备、可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101035132A (zh) * | 2006-03-09 | 2007-09-12 | 国际商业机器公司 | 用于rss内容管理的方法和系统 |
US20080140991A1 (en) * | 2006-12-08 | 2008-06-12 | Pandya Ashish A | Dynamic Programmable Intelligent Search Memory |
CN101605129A (zh) * | 2009-06-23 | 2009-12-16 | 北京理工大学 | 一种用于url过滤系统的url查找方法 |
CN101639861A (zh) * | 2009-09-02 | 2010-02-03 | 福建星网锐捷网络有限公司 | 一种基于有限状态自动机的字符串匹配方法及装置 |
-
2010
- 2010-02-09 CN CN201010109589.0A patent/CN102148805B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101035132A (zh) * | 2006-03-09 | 2007-09-12 | 国际商业机器公司 | 用于rss内容管理的方法和系统 |
US20080140991A1 (en) * | 2006-12-08 | 2008-06-12 | Pandya Ashish A | Dynamic Programmable Intelligent Search Memory |
CN101605129A (zh) * | 2009-06-23 | 2009-12-16 | 北京理工大学 | 一种用于url过滤系统的url查找方法 |
CN101639861A (zh) * | 2009-09-02 | 2010-02-03 | 福建星网锐捷网络有限公司 | 一种基于有限状态自动机的字符串匹配方法及装置 |
Non-Patent Citations (1)
Title |
---|
王杰等: "一种快速高效的模式匹配算法的应用研究", 《计算机工程与应用》 * |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9762544B2 (en) | 2011-11-23 | 2017-09-12 | Cavium, Inc. | Reverse NFA generation and processing |
CN103188267B (zh) * | 2013-03-27 | 2015-12-09 | 中国科学院声学研究所 | 一种基于dfa的协议解析方法 |
CN103188267A (zh) * | 2013-03-27 | 2013-07-03 | 中国科学院声学研究所 | 一种基于dfa的协议解析方法 |
US9785403B2 (en) | 2013-08-30 | 2017-10-10 | Cavium, Inc. | Engine architecture for processing finite automata |
US9823895B2 (en) | 2013-08-30 | 2017-11-21 | Cavium, Inc. | Memory management for finite automata processing |
CN104426910A (zh) * | 2013-08-30 | 2015-03-18 | 凯为公司 | 用于处理有限自动机的方法和装置 |
US10466964B2 (en) | 2013-08-30 | 2019-11-05 | Cavium, Llc | Engine architecture for processing finite automata |
CN104426910B (zh) * | 2013-08-30 | 2018-11-13 | 凯为公司 | 用于处理有限自动机的方法和装置 |
CN104426911B (zh) * | 2013-08-30 | 2018-03-23 | 凯为公司 | 用于编译有限自动机的方法和装置 |
CN104426911A (zh) * | 2013-08-30 | 2015-03-18 | 凯为公司 | 用于编译有限自动机的方法和装置 |
US9904630B2 (en) | 2014-01-31 | 2018-02-27 | Cavium, Inc. | Finite automata processing based on a top of stack (TOS) memory |
CN103984538B (zh) * | 2014-03-27 | 2017-04-26 | 华为技术有限公司 | 应用场景的识别方法、功耗管理方法、装置及终端设备 |
US9813297B2 (en) | 2014-03-27 | 2017-11-07 | Huawei Technologies Co., Ltd. | Application scenario identification method, power consumption management method, apparatus, and terminal device |
CN103984538A (zh) * | 2014-03-27 | 2014-08-13 | 华为技术有限公司 | 应用场景的识别方法、功耗管理方法、装置及终端设备 |
US10002326B2 (en) | 2014-04-14 | 2018-06-19 | Cavium, Inc. | Compilation of finite automata based on memory hierarchy |
US10110558B2 (en) | 2014-04-14 | 2018-10-23 | Cavium, Inc. | Processing of finite automata based on memory hierarchy |
CN104486143A (zh) * | 2014-12-01 | 2015-04-01 | 中国联合网络通信集团有限公司 | 一种深度报文检测方法、检测系统 |
CN104486143B (zh) * | 2014-12-01 | 2018-07-06 | 中国联合网络通信集团有限公司 | 一种深度报文检测方法、检测系统 |
CN106161072A (zh) * | 2015-04-20 | 2016-11-23 | 中国移动通信集团重庆有限公司 | 一种特征库的配置方法、特征配置管理平台及特征插件 |
CN106161072B (zh) * | 2015-04-20 | 2019-11-08 | 中国移动通信集团重庆有限公司 | 一种特征库的配置方法、特征配置管理平台及特征插件 |
CN105554152A (zh) * | 2015-12-30 | 2016-05-04 | 北京神州绿盟信息安全科技股份有限公司 | 一种数据特征提取的方法及装置 |
CN118113728A (zh) * | 2024-04-30 | 2024-05-31 | 浪潮电子信息产业股份有限公司 | 一种数据查询方法、系统、装置、设备、可读存储介质 |
CN118113728B (zh) * | 2024-04-30 | 2024-07-02 | 浪潮电子信息产业股份有限公司 | 一种数据查询方法、系统、装置、设备、可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102148805B (zh) | 2015-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102148805B (zh) | 特征匹配方法和装置 | |
CN108304378B (zh) | 文本相似度计算方法、装置、计算机设备和存储介质 | |
CN110020422B (zh) | 特征词的确定方法、装置和服务器 | |
CN109241274B (zh) | 文本聚类方法及装置 | |
CN110362370A (zh) | 一种网页语言的切换方法、装置及终端设备 | |
CN107257390B (zh) | 一种url地址的解析方法和系统 | |
CN103593371B (zh) | 推荐搜索关键词的方法和装置 | |
CN106844640A (zh) | 一种网页数据分析处理方法 | |
CN109726281A (zh) | 一种文本摘要生成方法、智能终端及存储介质 | |
CN107633081A (zh) | 一种失信用户信息的查询方法及系统 | |
CN105930527A (zh) | 搜索方法及装置 | |
CN103077163A (zh) | 数据预处理方法、装置及系统 | |
CN110427404A (zh) | 一种区块链跨链数据检索系统 | |
CN111061837A (zh) | 话题识别方法、装置、设备及介质 | |
CN101685502A (zh) | 模式匹配方法及装置 | |
CN103823892A (zh) | 确定网页聚类模式的方法及装置 | |
CN112612761A (zh) | 一种数据清洗方法、装置、设备及存储介质 | |
CN101673263B (zh) | 视频内容的搜索方法 | |
CN114970475A (zh) | excel表格解析方法、系统、设备及存储介质 | |
CN104809234A (zh) | 浏览器书签的处理方法及终端 | |
CN110297994A (zh) | 网页数据的采集方法、装置、计算机设备和存储介质 | |
CN110134846A (zh) | 文本的专有名词处理方法、装置和计算机设备 | |
CN109347873A (zh) | 一种命令注入攻击的检测方法、装置及计算机设备 | |
CN116226681B (zh) | 一种文本相似性判定方法、装置、计算机设备和存储介质 | |
CN109558735A (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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20170607 Address after: 518057, Guangdong Shenzhen Nanshan District hi tech North District, 7 North Road, Lang Shan Electronics Engineering R & D building, room 205 Patentee after: Shenzhen Zhenai Information Technology Co., Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: Huawei Technologies Co., Ltd. |