CN102868571B - 一种规则匹配方法和装置 - Google Patents
一种规则匹配方法和装置 Download PDFInfo
- Publication number
- CN102868571B CN102868571B CN201210278778.XA CN201210278778A CN102868571B CN 102868571 B CN102868571 B CN 102868571B CN 201210278778 A CN201210278778 A CN 201210278778A CN 102868571 B CN102868571 B CN 102868571B
- Authority
- CN
- China
- Prior art keywords
- rule
- group
- state machine
- value
- distinguishing characteristics
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 69
- 230000015654 memory Effects 0.000 claims abstract description 131
- 238000001514 detection method Methods 0.000 claims description 31
- 230000013011 mating Effects 0.000 claims description 27
- 230000008569 process Effects 0.000 claims description 19
- 238000005192 partition Methods 0.000 claims description 14
- 230000003068 static effect Effects 0.000 claims description 13
- 230000008878 coupling Effects 0.000 claims description 10
- 238000010168 coupling process Methods 0.000 claims description 10
- 238000005859 coupling reaction Methods 0.000 claims description 10
- 238000004148 unit process Methods 0.000 claims 1
- 238000005516 engineering process Methods 0.000 abstract description 13
- 238000007689 inspection Methods 0.000 abstract description 2
- 238000004891 communication Methods 0.000 abstract 1
- 230000006870 function Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000004880 explosion Methods 0.000 description 2
- 238000002203 pretreatment Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/027—Frames
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/02—Capturing of monitoring data
- H04L43/028—Capturing of monitoring data by filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/12—Protocol engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2101—Auditing as a secondary aspect
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种规则匹配方法和装置,涉及通信技术领域,解决现有技术存在着的基于DPI技术的产品的性能仍然有待提升的问题。方法包括:接收报文;检测报文内容中的特征信息,判断检测得到的报文中的特征信息是否符合预设的多个规则组中的一个规则组的分类特性;当符合时,将一个规则组对应的状态机确定为第一状态机;判断第一状态机是否存储在片内存储器,如果是,则使用第一状态机对报文进行匹配,得到匹配结果;如果不是,当片外存储器存储有第一状态机时,将第一状态机从片外存储器加载到片内存储器,使用第一状态机对报文进行匹配,得到匹配结果。本发明实施例可以让产品取得更好的性能。
Description
技术领域
本发明涉及网络技术领域,尤其涉及一种规则匹配方法和装置。
背景技术
DPI(Deep Packet Inspection,深度报文包检测)技术作为一种网络设备增强的过滤器,逐步将用户管理、安全控制、精细的业务控制等能力有机地集成在一起,实现各类业务的动态感知、策略控制、Qos(Quality of Service,服务质量)保障,以及网络与业务的安全保障等功能,降低运营商的资本性支出与运营支出,为运营商提供一个电信业务的基础运营平台。
DPI技术基本原理包括检测报文中高层协议(如应用层)中的一些特征字符,然后与状态机(由规则编译而成)进行匹配,判断检测得到特征字符是预定的一些关键字,并根据判断结果进行相应的处理。
DPI技术可以基于软件或硬件实现,软件相对比较灵活,但性能较差(如速度慢、支持规则数量少)。在实际应用中,为了提升性能,现有技术一般都使用硬件来实现,如使用FPGA(Field-ProgrammableGrate Array,现场可编程门阵列)来实现,但为了让产品取得更好的性能提升,找到一种更好的方法来提升性能一直是业界需要解决的问题。
发明内容
本发明的实施例提供一种规则匹配方法和装置,用于解决现有技术存在着的基于DPI技术的产品的性能仍然有待提升的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
一种规则匹配方法,包括:
接收报文;
检测所述报文内容中的特征信息,判断检测得到的所述报文中的特征信息是否符合预设的多个规则组中的一个规则组的分类特性,所述多个规则组中的每个规则组由一条或多条规则按预定的分类特性划分后得到,每个所述规则组编译后对应一个状态机,所述状态机用于对所述报文进行匹配,其中,匹配时常用的状态机存储在读写速度较快的片内存储器当中,其他状态机存储在读写速度较慢的片外存储器当中;
当检测得到的特征信息符合预设的多个规则组中的一个规则组的分类特性时,将所述一个规则组对应的状态机确定为第一状态机;判断所述第一状态机是否存储在片内存储器,如果是,则使用所述第一状态机对所述报文进行匹配,得到匹配结果;如果不是,当片外存储器存储有所述第一状态机时,将所述第一状态机从片外存储器加载到片内存储器,使用所述第一状态机对所述报文进行匹配,得到匹配结果。
一种规则匹配装置,包括:
接收单元,用于接收报文;
检测单元,检测所述接收单元接收的所述报文中的特征信息,判断检测得到的所述报文中的特征信息是否符合预设的多个规则组的一个规则组的分类特性,并将检测结果发送给匹配单元,其中,所述规则组为多个,由一条或多条规则按预定的分类特性划分后得到,每个所述规则组编译后对应一个状态机以及状态机标识,所述状态机用于对所述报文进行匹配,其中,匹配时常用的状态机存储在读写速度较快的片内存储器当中,其他状态机存储在读写速度较慢的片外存储器当中;
匹配单元,根据所述检测单元发送的所述检测结果得知当所述检测单元当检测得到的特征信息符合预设的多个规则组中的一个规则组的分类特性时,将所述一个规则组对应的状态机确定为第一状态机;判断所述第一状态机是否存储在片内存储器,如果是,则使用所述第一状态机对所述报文进行匹配,得到匹配结果;如果不是,当片外存储器存储有所述第一状态机时,将所述第一状态机从片外存储器加载到片内存储器,使用所述第一状态机对所述报文进行匹配,得到匹配结果。
本发明实施例提供的规则匹配方法和装置中,对规则进行了分组,这样可以避免规则***问题;将常用的状态机存储在片内存储器,匹配时优先使用片内存储器中的状态机进行匹配,可以缩短匹配时间(片内处理器读写速度快),提升产品性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中规则编译成NFA的结构图;
图2为现有技术中规则编译成DFA的结构图;
图3为本发明实施例1中一种规则匹配方法的流程图;
图4为本发明实施例2中一种规则匹配方法中,一种对规则进行分组的方法的流程图;
图5为本发明实施例2中基于图4的划分方法对应的检测方法的流程图;
图6为本发明实施例3中一种规则匹配方法中,一种对规则进行分组的方法的流程图;
图7为本发明实施例3中对规则进行分组的方法中生成的规则组一的特征表示例图;
图8为本发明实施例3中基于图6的划分方法对应的检测方法的流程图;
图9为本发明实施例3中对规则进行分组的方法中生成的规则组二的特征表示例图;
图10为本发明实施例3中对规则进行分组的方法中生成的规则组三的特征表示例图;
图11为本发明实施例3中一种规则匹配方法中逻辑与运算结果示例图;
图12为本发明实施例4中一种规则匹配装置的结构图;
图13为本发明实施例5中另一种规则匹配装置的结构图;
图14为本发明实施例6中又一种规则匹配装置的结构图;
图15为本发明实施例6中还又一种规则匹配装置的结构图;
图16为本发明实施例7中一种硬件架构结构图。
具体实施方式
下面结合附图对本发明实施例一种规则匹配方法和装置进行详细描述。
实施例1
本发明实施例提供一种规则匹配方法,如图3所示,该方法包括如下步骤:
301、接收报文;
302、检测所述报文内容中的特征信息,判断检测得到的所述报文中的特征信息是否符合预设的多个规则组中的一个规则组的分类特性,所述多个规则组中的每个规则组由一条或多条规则按预定的分类特性划分后得到,每个所述规则组编译后对应一个状态机,所述状态机用于对所述报文进行匹配,其中,匹配时常用的状态机存储在读写速度较快的片内存储器当中,其他状态机存储在读写速度较慢的片外存储器当中;
这里的片内存储器是指固化在处理芯片(如FPGA)内部的存储器,读写速度快,片外存储器是指独立与芯片内部的存储器(如DDRSDRAM,双倍速率同步动态随机存储器,或者flash存储器),读写速度相对于片内的较慢。为了取得更好的性能,本实施例优选使用FPGA内存的存储器作为片内存储器,选用DDR SDRAM作为片外存储器。如果对性能要求不高,也可以使用flash等速度相对慢一点的存储器作为片外存储器。FPGA芯片内部的存储器以及DDR SDRAM一般都是易失性存储器,所以需要在上电时将存储在其他存储介质中的状态机加载到这些存储器当中,然后如果片内外存储器为非易失性存储介质时(如片外为flash存储器时),也可以事先将状态机存储在那里。步骤302中,可以认为已经通过加载流程将存储在其他介质当中的状态机存储到了片内外存储器当中。
303、当检测得到的特征信息符合预设的多个规则组中的一个规则组的分类特性时,将所述一个规则组对应的状态机确定为第一状态机;判断所述第一状态机是否存储在片内存储器,如果是,则使用所述第一状态机对所述报文进行匹配,得到匹配结果;如果不是,当片外存储器存储有所述第一状态机时,将所述第一状态机从片外存储器加载到片内存储器,使用所述第一状态机对所述报文进行匹配,得到匹配结果。
可选的,片内存储器又可包括两种,一种是静态的,里面的内容不会在程序运行过程更新的存储器(这里称“静态片内存储器”),即只要加载状态后,就会一直存储在那里。另一种是动态的,里面的内容会在程序运行过程中更新的存储器,称为“cache”缓存区域,会根据状态机使用频率更新里面的内容,如有些状态机需要不断地从片外存储器加载进来,则会更新这些状态机到cache中,或者有些cache中的状态机很长一段时间内都没使用,则会将这些长期没被使用的状态机从cache中清除。
基于这种片内存储器架构,本实施例在判断第一状态机是否存储在片内存储器时,先判断是否存储在静态片内存储器,如果是,则判断是在片内,如果否,再判断是否在cache中,如果是,则也判断在片内,否则,判断在片外。当判断在片内存储器时,那么就可以使用存储在静态片内存储器或者cache中的状态机进行匹配。当判断在片外存储器时,将所述第一状态机从所述片外存储器加载到cache中进行匹配。
当然,如果片内存储器没有这种架构的话,那么只需要判断一次即可,这里不再赘述。
可选的,本实施例还可以基于多线程技术使用第一状态机进行匹配。例如,使用多线程中的一个线程来用第一状态机进行匹配,其他线程用其他状态机进行匹配,这样可以并发执行多个匹配,从而加快匹配速度。
本实施例将规则按多个规则按同一分类特性划分编译成状态机,从而可以避免出现规则***的情况;同时,按状态机的使用频率将状态机分别存储在片内外存储器,在匹配过程中先找片内的状态机进行匹配,再找片内的状态机进行匹配,可以满足大容量的存储需求(片内存储器容量较大),又兼顾了速度的要求(片内速度快),从而可以更好地提升了产品性能。
实施例2
在实施例1中,多个规则组中的每个规则组由一条或多条规则按预定的分类特性划分后得到,这种划分可以采用多种规则,本实施例将对其中一种规则具体的划分方法以及基于这种划分方法对应的检测方法进行具体介绍,需要说明的是,这种划分方法以及基于这种划分方法对应的检测方法并不一定限定在实施例1所在的应用场景,也可以应用在其他需要用到划分以及检测的场景中,即本实施例可以单独地存在并解决相应的技术问题,并非一定要依赖于实施例1。
如图4所示,本实施例将一条或多条规则按预定的分类特性划分成多个规则组包括如下步骤:
401、确定一条或多条规则中的每条规则的区别特征,使得一条或多条规则中存在尽可能多的不具备所述区别特征的其它规则,将具备相同区别特征的规则划分为一组,其中,区别特征为规则中从一个偏移量开始的一个或多个预定数量的连续字符;
这里如果只有“一条”规则,那么显然单独划分为一组就可以了,这里为了说明方便,将这种例外与“多条”情况一起描述,针对“一条”的情况,本步骤中的“其他规则”理解为没有规则即可。
上述方案的意思也可以理解为将一条或多条与其他尽可能多的规则相比具备不同区别特征的规则分为一组,其中,所述区别特征为从一个偏移量开始的一个或多个预定数量的连续字符;
如何确定区别特征,使得一条或多条规则中存在尽可能多的不具备该区别特征的其它规则,并将具备相同区别特征的规则划分为一组的具体实现为本领域技术人员所公知的技术,即本领域技术人员可以很容易通过技术手段来实现这个结果。例如可以是确定一个规则的区别特征,然后遍历一遍其他的规则是否具有该特征,如果都没有,那么显然可以满足“使得一条或多条规则中存在尽可能多的不具备该区别特征的其它规则”的要求,将具备该区别特征规则单独分成一组即可,如果还有其他规则也具备该区别特征,那么就可以换个区别特征,如换一下连续字符的偏移量或者预定数量。如果仍然有其他规则跟具备该区别特征,那么就确定一个区别特征,能够使得一条或多条规则中存在“尽可能多”的不具备该区别特征的其它规则即可,如总共4条规则,规则1有3个区别特征,对于规则1的区别特征1,其他规则中存在2条不具备区别特征1的规则;对于规则1的区别特征2,其他规则中存在2条不具备区别特征2的规则;对于规则1的区别特征3,其他规则中存在1条不具备区别特征3的规则,此时,就可以选区别特征1或2作为分组的依据。
除了上述先定初值,再遍历的确定区别特征方式外,本领域技术人员也可以采用其他算法来实现最后的区别特征确定及规则组的划分,这里并不进行详细说明,只描述最后划分后的结果,即如果一条规则与其他尽可能多的规则(如其他全部规则)相比,具备独有的区别特征,那么将这条规则单独分为一组。
举个例子,假设区别特征中连续字符的预定数量为2,偏移量从0开始算,并假设有如下4个规则:
规则1:Abcce;
规则2:Abced;
规则3:Bbcde;
规则4:Bbced;
可以看到,规则1中,从偏移量2开始,2个连续的字符为“cc”,这两个连续的字符与其他规则中从该偏移量开始的2个连续字符都不相同(第2条规则中为“ce”,第3条规则中为“cd”,第4条规则中也是“cd”),那么就可以将规则1单独划分为一组,因为存在与其他所有规则相比,都不同的区别特征,符合“尽可能多”原则。
如果找不出与其他所有规则(假设其他规则总共N条规则)相比都具有不同的区别特征的一条规则,那么“尽可能多”的意思就是退一步,找是否与其他N-1条规则相比具有不同的区别特征。
例如,仍然针对上述4条规则,可以看到规则2并不具备与其他3条规则相比都有区别的区别特征(偏移量0开始的2个字符“ab”与规则1中的字符重复,偏移量1,2,3开始的2个字符“bc”,“ce”,“ed”分别与规则3,4,4中的字符重复),因此,退一步,找与其他2条规则(原来是3条,现在减1条)不同的区别特征,例如,规则2在从偏移量2开始的2个字符“ce”仅仅与规则4中对应偏移量上的两个字符的相同,与规则1,3这两条规则中的都不同,则可以将这个作为自己的区别特征,将规则2划分为一个规则组。需要说明的是,此时,也有可能存在其他的规则也具有该区别特征,如规则4中,从偏移量2开始的2个字符也是“ce”,则也可以将规则4与规则2一起划分成一组。
总而言之,本实施例中的分组原则为尽量将一些具有“独特”的区别特征的规则分为一组,这里的“独特”最好是指该区别特征其他规则都不具备的;如果不满足时,可以放松限定,选“尽量独特”的区别特征,即具备这个区别特征的其他规则最少最好。需要说明的是,上述方式是一种优选方式,实际应用中,如果有一条或多条规则不满足严格的“独特”(如一开始就不找与其他所有规则不同,而找其他所有规则减1条规则不同),也是可以的,可以认为这是一种等同的实现手段。
402、将所述区别特征中预定数量的连续字符作为所述规则组的关键字,并将所述关键字存储在所述偏移量对应的存储空间。
其中,当一条或多条规则存在多个区别特征时,选取所述多个区别特征中其中一个区别特征中预定数量的连续字符作为所述规则组的关键字,其中,选取的所述其中一个区别特征中的偏移量对应的存储空间中存储的关键字数量相比于所述多个区别特征中除所述其中一个区别特征外其他区别特征中的偏移量对应的存储空间中存储的关键字尽量少。
例如,如果规则组在偏移量0存在区别特征,偏移量3也存在区别特征,如果在偏移量0的存储空间相对于偏移量3的存储空间要小时,则将偏移量3上的区别特征作为所述规则组的关键字。
403、对所述规则组的关键字进行哈希运算,得到对应于所述规则组的预定哈希值,在与所述预定哈希值对应的存储地址上存储所述关键字,其中,所述预定哈希值与所述存储地址符合预定对应关系。
如图5所示,基于上述规则组分类方法,相应的“检测所述报文内容中的特征信息,判断检测得到的所述报文中的特征信息是否符合预设的多个规则组中的一个规则组的分类特性”包括如下步骤:
501、计算所述报文中每一个偏移量上所述预定数量的连续字符的当前哈希值;
502、查找与所述当前哈希值对应的当前存储地址是否有所述预定数量的连续字符,其中,所述当前哈希值与所述当前存储地址符合所述预定对应关系;
503、如果有,则判断检测得到的所述报文中的特征信息符合预设的多个规则组中的一个规则组的分类特性;
504、如果没有,则判断检测得到的所述报文中的特征信息不符合预设的规则组的分类特性。
本实施例通过特定的划分方法以及基于哈希表查找的方法可以根据报文中的特征信息快速地判断得到使用哪个状态机对报文进行匹配。
实施例3
本实施例将对其中另一种规则具体的划分方法以及基于这种划分方法对应的检测方法进行具体介绍,与实施例2类似,这种划分方法以及基于这种划分方法对应的检测方法并不一定限定在实施例1所在的应用场景,也可以应用在其他需要用到划分以及检测的场景中,即本实施例可以单独地存在并解决相应的技术问题,并非一定要依赖于实施例1以及实施例2。
参见图6,具体分组方法以及基于该分组方法执行的一些其他预处理步骤如下:
601、将从相同偏移量开始,具有尽量多相同字符的一个或多个规则划分为一组。
可选的,在进行分组之前,根据是协议类型和/或是否是热规则将对规则进行划分,得到一个或多个规则集,然后将每个规则集中从相同偏移量开始,具有尽量多相同字符的一个或多个规则划分为一组。
例如协议识别中的协议规则本身是TCP/UDP(TransmissionControl Protocol/User Datagram Protocol传输控制协议/用户数据包协议),是否为该设备上的热规则,所述热规则即经常被匹配到的规则。
获得的规则组要保证在编译生成状态机之后,状态机所占用的空间不能超过预设值,所述预设值是该状态机最终在外存中所占用的空间。
在对规则进行分组时,从相同偏移量开始,要尽量将尽量多相同字符的一个或多个规则划分为一组。其中,所述尽量多相同字符,就是从相同偏移量开始,连续有尽量多相同字符的规则分为一组。例如以下规则:
规则1:.abcd
规则2:.abcdmn
规则3:.abmn
规则4:.....abcd
其中规则1和2在偏移量为1到4的时候,字符信息都是a、b、c、d。而规则4虽然与规则1有完全相同的字符信息,但是没有在相同的偏移量上。另外虽然规则3与规则1、2在偏移量为1和2上,具有相同的字符信息a和b,但是以尽量多相同字符为准则,将规则1和2分为一组,规则3分到另外一组,规则4也分到另外的一组。
对于在整个规则集中经常出现的字符COMMON_CHAR(常用字符),例如协议识别中的0x00,分组时需要特别处理,不要让太多组里同时出现每个位置都有COMMON_CHAR的情况。
而且在分组之后,对一些比较小的规则组或者分类特性很接近的规则组可以合并在一起,以降低规则组的个数,便于减小步骤602生成的每个规则组对应特征表的大小。
602、生成与每个规则组对应的特征表,特征表包括多个二维表项,每个二维表项包括偏移量以及字符,当规则组中的有规则在特定偏移量有特定字符时,设置对应于特定偏移量及特定字符的二维表项的值为有效值;当规则组中没有规则在特定偏移量有特定字符时,设置对应于特定偏移量及特定字符的二维表项的值为无效值;
具体的,二维表项的具体实现形式可以采用二维数组,如定义如下的特征表:
table[0][‘a’]
table[0][‘b’]
table[0][‘A’]
其中,table[0][‘a’]为一个二维表项,table为表项名,可自定义;该二维表项包括偏移量(0)以及字符(a),为了表示方便,这里用‘a’表示这个字符a被转化成一个ASC II码后的数值,但实际上,这个ASC II码仍然对应着a这个字符,即仍可认为二维数据包括字符a。
参见图7,为了表示方便,本实施例使用二维图表来表示逻辑意义上的特征表,图7中,横轴为偏移量信息(从0开始数),纵轴为字符信息,每个横轴纵轴交叉的格子等同于上述所说的二维表项,每个交叉格子值就是二维表项对应的值。例如,图7中第二排从左数起(从1开始数)第2个标记为1的方格,由于对应的横轴是偏移量1,对应的字符是b,因此,该交叉格就等同于table[1][‘b’],该表项对应的值为1。
图7中,示出了0-4共5个偏移量,实际当中,每条规则的长度不同,这里的偏移量也会有所不同,这里并不限定。同理,纵轴中的字符个数这里也不限定,实际当中,一般都会对应所有ASC II中的字符,但是如果实际应用中确定只需要使用其中一部分字符,那么也可以仅包括这部分字符。
图7中的每个交叉格(二维表项)需要对应一个有效值或无效值,为了表示方便,本实施例用1表示有效值,0表示无效值。填写的依据是看规则组中是否有规则在特定偏移量上有特定字符,如果有,则填1,否则,填0。例如,图7为一个规则组对应的特征表,该规则组包括:abc.s,abxyt,ab.mn三条规则,那么,对于二维表项table[0][‘a’],由于第1个规则(abc.s)中在偏移量0上有字符a,因此,table[0][‘a’]置为1,即图7中横轴为0,纵轴为a的交叉格置1,需要说明的是,这里是依据第1个规则来置1,实际中,也可以利用第2个或者第3个规则来置偏移量0,字符为0的二维表项对应值为1,因为这些规则偏移量0上的字符都是a,即,只要有任何一个规则符合条件,都可以将二维表项table[0][‘a’]置1。
同理,偏移量为2,字符为c的二维表项table[2][‘c’]也为1;偏移量为2,字符为x的二维表项table[2][‘x’]也为1。而由于三个规则中,并没有符合偏移量为1,字符为a(三个规则在偏移量1上都是字符b),因此,二维表项table[1][a]对应的值为0,即图7中横轴为1,纵轴b的交叉格的值为1。
此外,规则中可以会出现一些通配符,例如‘.’可以表示匹配任何字符,对于规则abc.s,在偏移量为3的位置上,有一个通配符‘.’,即表示在该偏移量位置可以是任何字符,因此,对应于该偏移量的二维表项(如table[3][‘a’],table[3][‘b’],table[3][‘c’]……)都置1。
603、生成与每个规则组对应的结果比特位。
基于上述规则组分类方法以及一些预处理步骤(如602),参见图8,相应的“检测所述报文内容中的特征信息,判断检测得到的所述报文中的特征信息是否符合预设的多个规则组中的一个规则组的分类特性”包括如下步骤:
801、将所述报文中的每个偏移量上的每个字符与每个规则组中对应的特征表中的二维表项进行匹配,如果包括当前偏移量以及当前字符的二维表项对应的值为有效值,则匹配成功,否则,匹配失败;
802、当为第一次匹配时,将对应于用于匹配的规则组的结果比特位的值设置为匹配结果的值,其中,当匹配成功时,所述匹配结果为1,匹配失败时,匹配结果为0;当不为第一次匹配时,更新对应于用于匹配的规则组的结果比特位的值,更新后的值为先前的值与所述匹配结果进行“与”运算后得到的值;
803、当所述结果比特位最后为1时,确定所述报文中的特征信息符合预设的多个规则组中的一个规则组的分类特性;当所述结果比特位最后为0时,确定所述报文中的特征信息不符合预设的规则组的分类特性。
下面通过具体的例子进行介绍。
例如所述报文内的字符信息为tamny,规则组一中的规则为abc.s,abxyt,ab.mn,特征表如图7所示;规则组二中的规则为..mny,stmny,特征表如图9所示;规则组三中的规则为xxxxy,x.bxy,特征表如图10所示。将“tamny”与上述三个规则组对应的特征表中的对应偏移量上的字符信息进行匹配,各个规则组分别对应一个生成的结果比特位,具体流程如下:
a)将报文中每个偏移量上每个字符与规则组中的二维表项匹配;
即对于报文中的tamny,将各个偏移量上的字符与各个规则组进行匹配,可以一个一个匹配,也可以一次同时匹配三个;
如果包括当前偏移量以及当前字符的二维表项对应的值为有效值,则认为匹配成功,否则,匹配失败。例如,报文中偏移量为0的字符为t,各规则中,只有规则组二中二维表项table2[0][‘t’]对应的值为有效值(1),则认为匹配成功;如果为无效值,则认为匹配失败;
b)当为第一次匹配时,将对应于用于匹配的规则组的结果比特位的值设置为匹配结果的值,其中,当匹配成功时,所述匹配结果为1,匹配失败时,匹配结果为0;
对于报文tamny,第一次匹配可以从偏移量为0的t开始,由于规则组二对应的table2[0][‘t’]对应的值为1,则认为匹配成功,匹配结果为1,将规则组二对应的结果比特位bit2的值设置为匹配结果的值,即bit2=1。反之,由于table1[0][‘t’],table3[0][‘t’]对应的值都为0,所以认为匹配失败,匹配结果为0,将规则组一、三分别对应的结果比特位bit1,bit3分别置0。
c)当不为第一次匹配时,更新对应于用于匹配的规则组的结果比特位的值,更新后的值为先前的值与所述匹配结果进行与运算后得到的值;
例如,报文中偏移量为1的字符为a,规则组二中的二维表项table2[1][‘a’]对应的值为1,则匹配成功,匹配结果为1,则更新规则组二对应的结果比特位bit2,更新后的值为先前的值(1)与匹配结果(1)进行与运算后得到的值,1与1后结果仍为1,因此,更新后的bit2值为1。对于bit1,table1[1][‘a’]对应的值为0,匹配失败,匹配结果为0,0与先前的结果比特位的值0进行与运算后,最后bit1结果为0;对于bit3,table3[1][‘a’]对应的值为1,匹配结果为1,1与先前的结果比特位的值0进行与运算后,最后bit3结果为0。
进行多次与运算后,看各结果比特位最后的结果,如果为1,则认为符合分类特性,否则,如果为0,则认为不符合分类特性。
参见图11,为上述例子匹配过程中,各结果比特位变化示意图,规则组一、二、三分别对应于图中所示比特位bit1,bit2,bit3。
在偏移量为0时,报文tamny中的t与规则组一、三不匹配与规则组二匹配,因此,置bit1、bit3为0,置bit2为1;
在偏移量为1时,报文tamny中的a与规则组一不匹配,与规则组二、三匹配,匹配结果为分别为011,与前次结果比特位010相与后,更新后的各结果比特位010;
在偏移量为2时,报文tamny中的m与规则组一、二匹配,与规则组三不匹配,匹配结果分别为110,前与次结果比特位010相与后,更新后的各结果比特位为010;
后面依次按上述方法运算,最后各结果比特位为010,即bit1=0,bit2=1,bit3=0,即报文中的特征信息符合规则组二分类特性,不符合规则组一、三分类特性。
需要说明的是,上述比特运算的实现方式并不唯一,本领域技术人员在实现时,可以如图11所示的一次对多个结果比特位进行运算,也可以将这些结果比特位分别运算。此外,本领域技术人员也容易注意到,由于无论0或1,只要与0相与,最后的结果一定为0,因此,如果匹配结果中有0,可直接置该结果比特位最终结果为0,这些方式或其他类似的方式都可视为本实施例等同方式。通过本实施例,可以统一对各规则组对应的结果比特位进行处理,便于软件实现。
本实施例通过特定的划分方法以及基于比特位运算可以根据报文中的特征信息快速地判断得到使用哪个状态机对报文进行匹配。
实施例4
基于上述各实施例,本实施例提供了一种规则匹配装置12,用于执行上述各实施例的方法流程,参见图12,包括:
接收单元121,用于接收报文;
检测单元122,检测接收单元121接收的报文中的特征信息,判断检测得到的报文中的特征信息是否符合预设的多个规则组的一个规则组的分类特性,并将检测结果发送给匹配单元,其中,规则组为多个,由一条或多条规则按预定的分类特性划分后得到,每个规则组编译后对应一个状态机以及状态机标识,状态机用于对报文进行匹配,其中,匹配时常用的状态机存储在读写速度较快的片内存储器当中,其他状态机存储在读写速度较慢的片外存储器当中;
匹配单元123,根据检测单元122发送的检测结果得知当检测单元当检测得到的特征信息符合预设的多个规则组中的一个规则组的分类特性时,将一个规则组对应的状态机确定为第一状态机;判断第一状态机是否存储在片内存储器,如果是,则使用第一状态机对报文进行匹配,得到匹配结果;如果不是,当片外存储器存储有第一状态机时,将第一状态机从片外存储器加载到片内存储器,使用第一状态机对报文进行匹配,得到匹配结果。
本实施例检测单元以及匹配单元具体可以基于FPGA实现,片内存储器使用FPGA自带的存储器,片外存储器使用DDR SDRAM,以取得更好的性能。如何基于FPGA实现上述功能模块属于本领域技术人员公知的技术,这里不再赘述。
实施例5
基于实施例4,如图13所示,本实施例的规则匹配装置12还包括第一分组单元123,用于确定一条或多条规则中的每条规则的区别特征,使得一条或多条规则中存在尽可能多的不具备该区别特征的其它规则,将具备相同区别特征的规则划分为一组,其中,区别特征为规则中从一个偏移量开始的一个或多个预定数量的连续字符。
第一分组单元的功能可以基于现有的编译器实现。
本实施例的规则匹配装置12还可以包括:
关键字处理单元124,用于将区别特征中预定数量的连续字符作为规则组的关键字,并将关键字存储在偏移量对应的存储空间。
该单元也可以基于现有的编译器实现。这里的存储空间为片内的存储空间,如果片内存储器是易失性的,则可以事先存储在其他介质,然后运行的时候拷贝到片内存储器,事先生成的空间地址与最终拷贝到片内存储空间的地址一一对应。
哈希值计算单元125,用于对关键字处理单元124处理得到的规则组的关键字进行哈希运算,得到对应于规则组的预定哈希值,在与预定哈希值对应的存储地址上存储关键字,其中,预定哈希值与存储地址符合预定对应关系。本单元具体可以基于FPGA实现。
检测单元122具体包括:
哈希值计算子单元1221,用于计算报文中每一个偏移量上预定数量的连续字符的当前哈希值;
查找单元1222,用于查找与哈希值计算子单元计算得到的当前哈希值对应的当前存储地址是否有预定数量的连续字符,其中,当前哈希值与当前存储地址符合预定对应关系;
第一判断单元1223,如果有,则判断检测得到的报文中的特征信息符合预设的多个规则组中的一个规则组的分类特性;如果没有,则判断检测得到的报文中的特征信息不符合预设的规则组的分类特性。
其中,本实施例中的第一分组单元123还用于,当一条或多条规则存在多个区别特征时,选取多个区别特征中其中一个区别特征中预定数量的连续字符作为规则组的关键字,其中,选取的其中一个区别特征中的偏移量对应的存储空间中存储的关键字数量相比于多个区别特征中除其中一个区别特征外其他区别特征中的偏移量对应的存储空间中存储的关键字尽量少。
实施例6
基于实施例4,如图14所示,本实施例的规则匹配装置还包括第二分组单元126,用于将从相同偏移量开始具有尽量多相同字符的一个或多个规则划分为一组。
本实施例的规则匹配装置还包括第三分组单元127,用于根据是否是协议类型和/或是否是热规则将对规则进行划分,得到一个或多个规则集,一个规则集包含一个或多个规则;将每个规则集中包含的规则中从相同偏移量开始,具有尽量多相同字符的一个或多个规则划分为一组。
上述两个分组单元是并列的关系,即可以只包括其中一个,该两个单元都可以基于现有的编译器实现。
本实施例的规则匹配装置还可以包括:
特征表生成单元128,用于生成与每个规则组对应的特征表,特征表包括多个二维表项,每个二维表项包括偏移量以及字符,当规则组中的有规则在特定偏移量有特定字符时,设置对应于特定偏移量及特定字符的二维表项的值为有效值;当规则组中没有规则在特定偏移量有特定字符时,设置对应于特定偏移量及特定字符的二维表项的值为无效值。本单元可以基于现有的编译器实现。
结果比特位生成单元129,用于生成与每个规则组对应的结果比特位.本单元可以基于FPGA实现。
检测单元122包括:
特征表匹配单元1224,用于将报文中的每个偏移量上的每个字符与每个规则组中对应的特征表中的二维表项进行匹配,如果包括当前偏移量以及当前字符的二维表项对应的值为有效值,则匹配成功,否则,匹配失败;
结果比特位设置单元1225,用于当为第一次匹配时,将对应于用于匹配的规则组的结果比特位生成单元生成的结果比特位的值设置为匹配结果的值,其中,当特征表匹配单元判断匹配成功时,匹配结果为1,当特征表匹配单元判断匹配失败时,匹配结果为0;当不为第一次匹配时,更新对应于用于匹配的规则组的结果比特位的值,更新后的值为先前的值与匹配结果进行“与”运算后得到的值;
第二判断单元1226,用于当经过结果比特位设置单元处理后,结果比特位最后为1时,确定报文中的特征信息符合预设的多个规则组中的一个规则组的分类特性;当结果比特位最后为0时,确定报文中的特征信息不符合预设的规则组的分类特性。
基于上述实施例4-6,各实施例中的片内存储器包括静态片内存储器以及cache,静态片内存储器中的内容不会在程序运行过程中更新,cache中的内容会在程序运行过程当中更新;
则如图15所示的规则匹配装置中检测单元122包括:
存储器判断单元1227,用于判断是否存储在静态片内存储器,如果是,则判断是在片内;如果否,再判断是否在cache中,如果是,则判断在片内,否则,判断在片外。
此外,基于上述实施例4-6中的匹配单元基于多线程技术使用第一状态机对所述报文进行匹配。
上述装置可以取得方法实施例中相应的有益效果,对于各个单元具体执行步骤的描述,可以参考相应的实施例,这里不再赘述。本实施例为了取得更好地性能,使用FPGA这种硬件处理器来处理,本领域技术人员也可以根据实际对性能方面的要求使用其他类似的处理器来实现,这里不进行具体介绍。
实施例7
基于上述各实施例,本实施例介绍一种典型的硬件架构来实现上述各实施例中的方法或各功能模块,如图16所示,包括:
FPGA芯片161,编译器162。
其中,FPGA芯片161用于完成运行过程当中的处理功能;
编译器162主要用于完成分组、编译、以及一些运行时需要运行的数据的生成(如上述实施例介绍的特征表生成,关键字存储等)。
编译器可以基于现有的编译器(一般使用软件处理)实现,即在现有的编译器上增加一些软件功能模块来实现本实施例所需的方法流程及功能模块,这些技术为本领域技术人员所公知的技术,这里不再赘述。
以上各实施例,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (18)
1.一种规则匹配方法,其特征在于,包括:
接收报文;
检测所述报文内容中的特征信息,判断检测得到的所述报文中的特征信息是否符合预设的多个规则组中的一个规则组的分类特性,所述多个规则组中的每个规则组由一条或多条规则按预定的分类特性划分后得到,每个所述规则组编译后对应一个状态机,所述状态机用于对所述报文进行匹配,其中,匹配时常用的状态机存储在读写速度较快的片内存储器当中,其他状态机存储在读写速度较慢的片外存储器当中;
其中,所述预定的分类特性包括:具备相同区别特征;或者,从相同偏移量开始,具有尽量多相同字符;
当检测得到的特征信息符合预设的多个规则组中的一个规则组的分类特性时,将所述一个规则组对应的状态机确定为第一状态机;判断所述第一状态机是否存储在片内存储器,如果是,则使用所述第一状态机对所述报文进行匹配,得到匹配结果;如果不是,当片外存储器存储有所述第一状态机时,将所述第一状态机从片外存储器加载到片内存储器,使用所述第一状态机对所述报文进行匹配,得到匹配结果。
2.根据权利要求1所述的方法,其特征在于,若所述预定的分类特性为具备相同区别特征,所述按预定的分类特性划分包括:
确定一条或多条规则中的每条规则的区别特征,使得所述一条或多条规则中存在尽可能多的不具备所述区别特征的其它规则,将具备相同区别特征的规则划分为一组,其中,所述区别特征为规则中从一个偏移量开始的一个或多个预定数量的连续字符。
3.根据权利要求2所述的方法,其特征在于,还包括:
将所述区别特征中预定数量的连续字符作为所述规则组的关键字,并将所述关键字存储在所述偏移量对应的存储空间;
对所述规则组的关键字进行哈希运算,得到对应于所述规则组的预定哈希值,在与所述预定哈希值对应的存储地址上存储所述关键字,其中,所述预定哈希值与所述存储地址符合预定对应关系;
所述检测所述报文内容中的特征信息,判断检测得到的所述报文中的特征信息是否符合预设的多个规则组中的一个规则组的分类特性包括:
计算所述报文中每一个偏移量上所述预定数量的连续字符的当前哈希值;
查找与所述当前哈希值对应的当前存储地址是否有所述预定数量的连续字符,其中,所述当前哈希值与所述当前存储地址符合所述预定对应关系;
如果有,则判断检测得到的所述报文中的特征信息符合预设的多个规则组中的一个规则组的分类特性;
如果没有,则判断检测得到的所述报文中的特征信息不符合预设的规则组的分类特性。
4.根据权利要求3所述的方法,其特征在于,还包括:
当一条或多条规则存在多个区别特征时,选取所述多个区别特征中其中一个区别特征中预定数量的连续字符作为所述规则组的关键字,其中,选取的所述其中一个区别特征中的偏移量对应的存储空间中存储的关键字数量相比与所述多个区别特征中除所述其中一个区别特征外其他区别特征中的偏移量对应的存储空间中存储的关键字尽量少。
5.根据权利要求1所述的方法,其特征在于,若所述预定的分类特性为从相同偏移量开始,具有尽量多相同字符,所述按预定的分类特性划分包括:
将从相同偏移量开始,具有尽量多相同字符的一个或多个规则划分为一组。
6.根据权利要求1所述的方法,其特征在于,若所述预定的分类特性为从相同偏移量开始,具有尽量多相同字符,所述按预定的分类特性划分包括:
根据是否是协议类型和/或是否是热规则将对规则进行划分,得到一个或多个规则集,一个规则集包含一个或多个规则;
将每个规则集中包含的规则中从相同偏移量开始,具有尽量多相同字符的一个或多个规则划分为一组。
7.根据权利要求5或6所述的方法,其特征在于,所述方法还包括:
生成与每个规则组对应的特征表,所述特征表包括多个二维表项,每个二维表项包括偏移量以及字符,当所述规则组中有规则在特定偏移量有特定字符时,设置对应于所述特定偏移量及特定字符的二维表项的值为有效值;当所述规则组中没有规则在特定偏移量有特定字符时,设置对应于所述特定偏移量及特定字符的二维表项的值为无效值;
生成与每个规则组对应的结果比特位;
所述检测所述报文内容中的特征信息,判断检测得到的所述报文中的特征信息是否符合预设的多个规则组中的一个规则组的分类特性包括:
将所述报文中的每个偏移量上的每个字符与每个规则组中对应的特征表中的二维表项进行匹配,如果包括当前偏移量以及当前字符的二维表项对应的值为有效值,则匹配成功,否则,匹配失败;
当为第一次匹配时,将对应于用于匹配的规则组的结果比特位的值设置为匹配结果的值,其中,当匹配成功时,所述匹配结果为1,匹配失败时,匹配结果为0;当不为第一次匹配时,更新对应于用于匹配的规则组的结果比特位的值,更新后的值为先前的值与所述匹配结果进行“与”运算后得到的值;
当所述结果比特位最后为1时,确定所述报文中的特征信息符合预设的多个规则组中的一个规则组的分类特性;
当所述结果比特位最后为0时,确定所述报文中的特征信息不符合预设的规则组的分类特性。
8.根据权利要求1-6任一所述的方法,其特征在于,所述片内存储器包括静态片内存储器以及缓存区域cache,所述静态片内存储器中的内容不会在程序运行过程中更新,所述cache中的内容会在程序运行过程当中更新;
所述判断所述第一状态机是否存储在片内存储器包括:
判断所述第一状态机是否存储在静态片内存储器,如果是,则判断是在片内;
如果否,再判断是否在cache中,如果是,则判断在片内,否则,判断在片外。
9.根据权利要求1-6任一所述的方法,其特征在于:
所述使用所述第一状态机对所述报文进行匹配包括:基于多线程技术使用所述第一状态机对所述报文进行匹配。
10.一种规则匹配装置,其特征在于,包括:
接收单元,用于接收报文;
检测单元,检测所述接收单元接收的所述报文中的特征信息,判断检测得到的所述报文中的特征信息是否符合预设的多个规则组的一个规则组的分类特性,并将检测结果发送给匹配单元,其中,所述规则组为多个,由一条或多条规则按预定的分类特性划分后得到,每个所述规则组编译后对应一个状态机以及状态机标识,所述状态机用于对所述报文进行匹配,其中,匹配时常用的状态机存储在读写速度较快的片内存储器当中,其他状态机存储在读写速度较慢的片外存储器当中;
其中,所述预定的分类特性包括:具备相同区别特征;或者,从相同偏移量开始,具有尽量多相同字符;
匹配单元,根据所述检测单元发送的所述检测结果得知当所述检测单元当检测得到的特征信息符合预设的多个规则组中的一个规则组的分类特性时,将所述一个规则组对应的状态机确定为第一状态机;判断所述第一状态机是否存储在片内存储器,如果是,则使用所述第一状态机对所述报文进行匹配,得到匹配结果;如果不是,当片外存储器存储有所述第一状态机时,将所述第一状态机从片外存储器加载到片内存储器,使用所述第一状态机对所述报文进行匹配,得到匹配结果。
11.根据权利要求10所述的装置,其特征在于,若所述预定的分类特性为具备相同区别特征,所述装置还包括第一分组单元,所述第一分组单元用于:
确定一条或多条规则中的每条规则的区别特征,使得所述一条或多条规则中存在尽可能多的不具备该区别特征的其它规则,将具备相同区别特征的规则划分为一组,其中,所述区别特征为规则中从一个偏移量开始的一个或多个预定数量的连续字符。
12.根据权利要求11所述的装置,其特征在于,还包括:
关键字处理单元,用于将所述区别特征中预定数量的连续字符作为所述规则组的关键字,并将所述关键字存储在所述偏移量对应的存储空间;
哈希值计算单元,用于对关键字处理单元处理得到的所述规则组的关键字进行哈希运算,得到对应于所述规则组的预定哈希值,在与所述预定哈希值对应的存储地址上存储所述关键字,其中,所述预定哈希值与所述存储地址符合预定对应关系;
所述检测单元具体包括:
哈希值计算子单元,用于计算所述报文中每一个偏移量上所述预定数量的连续字符的当前哈希值;
查找单元,用于查找与所述哈希值计算子单元计算得到的所述当前哈希值对应的当前存储地址是否有所述预定数量的连续字符,其中,所述当前哈希值与所述当前存储地址符合所述预定对应关系;
第一判断单元,如果有,则判断检测得到的所述报文中的特征信息符合预设的多个规则组中的一个规则组的分类特性;如果没有,则判断检测得到的所述报文中的特征信息不符合预设的规则组的分类特性。
13.根据权利要求12所述的装置,其特征在于,所述第一分组单元还用于,当一条或多条规则存在多个区别特征时,选取所述多个区别特征中其中一个区别特征中预定数量的连续字符作为所述规则组的关键字,其中,选取的所述其中一个区别特征中的偏移量对应的存储空间中存储的关键字数量相比于所述多个区别特征中除所述其中一个区别特征外其他区别特征中的偏移量对应的存储空间中存储的关键字尽量少。
14.根据权利要求10所述的装置,其特征在于,若所述预定的分类特性为从相同偏移量开始,具有尽量多相同字符,所述装置还包括第二分组单元,用于将从相同偏移量开始,具有尽量多相同字符的一个或多个规则划分为一组。
15.根据权利要求10所述的装置,其特征在于,若所述预定的分类特性为从相同偏移量开始,具有尽量多相同字符,所述装置还包括第三分组单元,用于根据是否是协议类型和/或是否是热规则将对规则进行划分,得到一个或多个规则集,一个规则集包含一个或多个规则;将每个规则集中包含的规则中从相同偏移量开始,具有尽量多相同字符的一个或多个规则划分为一组。
16.根据权利要求14或15所述的装置,其特征在于,还包括:
特征表生成单元,用于生成与每个规则组对应的特征表,所述特征表包括多个二维表项,每个二维表项包括偏移量以及字符,当所述规则组中的有规则在特定偏移量有特定字符时,设置对应于所述特定偏移量及特定字符的二维表项的值为有效值;当所述规则组中没有规则在特定偏移量有特定字符时,设置对应于所述特定偏移量及特定字符的二维表项的值为无效值;
结果比特位生成单元,用于生成与每个规则组对应的结果比特位;
所述检测单元包括:
特征表匹配单元,用于将所述报文中的每个偏移量上的每个字符与每个规则组中对应的特征表中的二维表项进行匹配,如果包括当前偏移量以及当前字符的二维表项对应的值为有效值,则匹配成功,否则,匹配失败;
结果比特位设置单元,用于当为第一次匹配时,将对应于用于匹配的规则组的所述结果比特位生成单元生成的结果比特位的值设置为匹配结果的值,其中,当所述特征表匹配单元判断匹配成功时,所述匹配结果为1,当所述特征表匹配单元判断匹配失败时,匹配结果为0;当不为第一次匹配时,更新对应于用于匹配的规则组的结果比特位的值,更新后的值为先前的值与所述匹配结果进行“与”运算后得到的值;
第二判断单元,用于当经过所述结果比特位设置单元处理后,所述结果比特位最后为1时,确定所述报文中的特征信息符合预设的多个规则组中的一个规则组的分类特性;当所述结果比特位最后为0时,确定所述报文中的特征信息不符合预设的规则组的分类特性。
17.根据权利要求10-15任一所述的装置,其特征在于,所述片内存储器包括静态片内存储器以及cache,所述静态片内存储器中的内容不会在程序运行过程中更新,所述cache中的内容会在程序运行过程当中更新;
所述检测单元包括:
存储器判断单元,用于判断所述第一状态机是否存储在静态片内存储器,如果是,则判断是在片内;如果否,再判断是否在cache中,如果是,则判断在片内,否则,判断在片外。
18.根据权利要求10-15任一所述的装置,其特征在于,所述匹配单元基于多线程技术使用所述第一状态机对所述报文进行匹配。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210278778.XA CN102868571B (zh) | 2012-08-07 | 2012-08-07 | 一种规则匹配方法和装置 |
EP13827093.9A EP2830260B1 (en) | 2012-08-07 | 2013-01-14 | Rule matching method and device |
PCT/CN2013/070434 WO2014023091A1 (zh) | 2012-08-07 | 2013-01-14 | 一种规则匹配方法和装置 |
US14/552,052 US9811777B2 (en) | 2012-08-07 | 2014-11-24 | Rule matching method and apparatus for deep packet inspection |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210278778.XA CN102868571B (zh) | 2012-08-07 | 2012-08-07 | 一种规则匹配方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102868571A CN102868571A (zh) | 2013-01-09 |
CN102868571B true CN102868571B (zh) | 2015-04-08 |
Family
ID=47447176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210278778.XA Active CN102868571B (zh) | 2012-08-07 | 2012-08-07 | 一种规则匹配方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9811777B2 (zh) |
EP (1) | EP2830260B1 (zh) |
CN (1) | CN102868571B (zh) |
WO (1) | WO2014023091A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102868571B (zh) * | 2012-08-07 | 2015-04-08 | 华为技术有限公司 | 一种规则匹配方法和装置 |
CN103414701B (zh) * | 2013-07-25 | 2017-03-01 | 华为技术有限公司 | 一种规则匹配方法及设备 |
CN103973684B (zh) * | 2014-05-07 | 2017-05-24 | 北京神州绿盟信息安全科技股份有限公司 | 规则编译匹配方法及装置 |
CN104780080B (zh) * | 2015-04-13 | 2018-09-25 | 苏州迈科网络安全技术股份有限公司 | 深度报文检测方法及*** |
CN105635170B (zh) * | 2016-01-26 | 2018-12-18 | 宝利九章(北京)数据技术有限公司 | 基于规则对网络数据包进行识别的方法和装置 |
CN106708956B (zh) * | 2016-11-29 | 2019-08-16 | 中国人民解放军国防科学技术大学 | 一种基于多url规则集的http数据匹配方法 |
KR20200053318A (ko) | 2018-11-08 | 2020-05-18 | 삼성전자주식회사 | 인공 신경망의 연산 처리 그래프를 관리하는 시스템 및 이를 이용한 연산 처리 그래프를 관리하는 방법 |
CN110311835B (zh) * | 2019-07-09 | 2021-05-14 | 国网甘肃省电力公司电力科学研究院 | 一种基于内容模板的电力iec协议符合性验证方法 |
CN111628935B (zh) * | 2020-05-26 | 2021-02-12 | 清华大学 | 适用于软件定义网络的数据包分类方法及装置 |
CN114039928B (zh) * | 2021-11-02 | 2024-07-02 | 恒安嘉新(北京)科技股份公司 | 网络流量的识别方法、装置、设备及存储介质 |
CN114338102B (zh) * | 2021-12-14 | 2024-03-19 | 北京安天网络安全技术有限公司 | 安全检测方法、装置、电子设备及存储介质 |
CN114584482B (zh) * | 2022-02-14 | 2023-09-08 | 阿里巴巴(中国)有限公司 | 基于内存存储检测数据的方法、装置以及网卡 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101764718A (zh) * | 2008-12-25 | 2010-06-30 | 华为技术有限公司 | 一种深度报文检测方法及装置 |
CN101841546A (zh) * | 2010-05-17 | 2010-09-22 | 华为技术有限公司 | 一种规则匹配方法、装置及*** |
CN102006216A (zh) * | 2009-09-02 | 2011-04-06 | 中兴通讯股份有限公司 | 一种深度报文检测***及报文处理方法 |
CN102075430A (zh) * | 2011-01-25 | 2011-05-25 | 无锡网芯科技有限公司 | 深度报文检测dfa状态转移表的压缩与报文匹配方法 |
US8214305B1 (en) * | 2008-11-24 | 2012-07-03 | Netlogic Microsystems, Inc. | Pattern matching system and method for data streams, including deep packet inspection |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7519070B2 (en) * | 2002-09-12 | 2009-04-14 | International Business Machines Corporation | Method and apparatus for deep packet processing |
US7356663B2 (en) | 2004-11-08 | 2008-04-08 | Intruguard Devices, Inc. | Layered memory architecture for deterministic finite automaton based string matching useful in network intrusion detection and prevention systems and apparatuses |
US8631483B2 (en) * | 2005-06-14 | 2014-01-14 | Texas Instruments Incorporated | Packet processors and packet filter processes, circuits, devices, and systems |
US7962434B2 (en) | 2007-02-15 | 2011-06-14 | Wisconsin Alumni Research Foundation | Extended finite state automata and systems and methods for recognizing patterns in a data stream using extended finite state automata |
US8018940B2 (en) * | 2008-08-13 | 2011-09-13 | Alcatel Lucent | Network address lookup based on bloom filters |
CN102148803B (zh) * | 2010-02-04 | 2014-04-30 | 华为技术有限公司 | 一种报文匹配方法和设备 |
US8477611B2 (en) * | 2010-03-03 | 2013-07-02 | Ewha University Industry Collaboration Foundation | Method and apparatus for packet classification using bloom filter |
CN102868571B (zh) * | 2012-08-07 | 2015-04-08 | 华为技术有限公司 | 一种规则匹配方法和装置 |
-
2012
- 2012-08-07 CN CN201210278778.XA patent/CN102868571B/zh active Active
-
2013
- 2013-01-14 WO PCT/CN2013/070434 patent/WO2014023091A1/zh active Application Filing
- 2013-01-14 EP EP13827093.9A patent/EP2830260B1/en active Active
-
2014
- 2014-11-24 US US14/552,052 patent/US9811777B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8214305B1 (en) * | 2008-11-24 | 2012-07-03 | Netlogic Microsystems, Inc. | Pattern matching system and method for data streams, including deep packet inspection |
CN101764718A (zh) * | 2008-12-25 | 2010-06-30 | 华为技术有限公司 | 一种深度报文检测方法及装置 |
CN102006216A (zh) * | 2009-09-02 | 2011-04-06 | 中兴通讯股份有限公司 | 一种深度报文检测***及报文处理方法 |
CN101841546A (zh) * | 2010-05-17 | 2010-09-22 | 华为技术有限公司 | 一种规则匹配方法、装置及*** |
CN102075430A (zh) * | 2011-01-25 | 2011-05-25 | 无锡网芯科技有限公司 | 深度报文检测dfa状态转移表的压缩与报文匹配方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2014023091A1 (zh) | 2014-02-13 |
EP2830260A1 (en) | 2015-01-28 |
EP2830260A4 (en) | 2015-07-01 |
US9811777B2 (en) | 2017-11-07 |
EP2830260B1 (en) | 2016-09-21 |
US20150081612A1 (en) | 2015-03-19 |
CN102868571A (zh) | 2013-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102868571B (zh) | 一种规则匹配方法和装置 | |
US11163861B2 (en) | Machine learning model with watermarked weights | |
US9509809B2 (en) | Packet classification using multiple processing units | |
CN105739971B (zh) | 校验文件的生成、使用方法及装置 | |
CN112074818A (zh) | 用于能够在区块链网络中访问过去的交易的方法及节点 | |
US20200104754A1 (en) | Method for managing a machine learning model | |
CN105577806B (zh) | 一种分布式缓存方法及*** | |
CN106878370A (zh) | 一种本地缓存的更新方法和设备 | |
CN107506310A (zh) | 一种地址查找、关键字存储方法及设备 | |
CN112579595A (zh) | 数据处理方法、装置、电子设备及可读存储介质 | |
US7337230B2 (en) | Method and system for eliminating redundant rules from a rule set | |
CN104253754A (zh) | 一种acl快速匹配的方法和设备 | |
CN105989276B (zh) | Rbac权限体系中的角色优化方法和装置 | |
CN110580171A (zh) | App分类方法、相关装置及产品 | |
CN103905310A (zh) | 报文处理的方法及转发设备 | |
CN112306951A (zh) | 一种基于fpga的cnn-svm资源高效型加速架构 | |
US20110314045A1 (en) | Fast set intersection | |
CN116361153A (zh) | 固件代码的测试方法、装置、电子设备、存储介质 | |
CN101854341B (zh) | 用于数据流的模式匹配方法和装置 | |
CN105635159B (zh) | 基于关键字的封堵方法及*** | |
Li et al. | Deterministic and efficient hash table lookup using discriminated vectors | |
CN107729323A (zh) | 网络文章相似度检测方法和装置、服务器及存储介质 | |
KR101902213B1 (ko) | 유사이미지 검색을 위한 해시코드 생성장치 및 방법 | |
CN102243656A (zh) | 基于散列的串匹配方法及其选择模式串子窗口的方法 | |
CN110019232B (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 |
Effective date of registration: 20211222 Address after: 450046 Floor 9, building 1, Zhengshang Boya Plaza, Longzihu wisdom Island, Zhengdong New Area, Zhengzhou City, Henan Province Patentee after: xFusion Digital Technologies Co., Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |