CN112784127A - 多字符串模式匹配方法、装置、计算机设备及存储介质 - Google Patents
多字符串模式匹配方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN112784127A CN112784127A CN202110270270.4A CN202110270270A CN112784127A CN 112784127 A CN112784127 A CN 112784127A CN 202110270270 A CN202110270270 A CN 202110270270A CN 112784127 A CN112784127 A CN 112784127A
- Authority
- CN
- China
- Prior art keywords
- matching
- state
- string
- fail
- character
- 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
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000012546 transfer Methods 0.000 claims abstract description 127
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 63
- 230000007704 transition Effects 0.000 claims abstract description 45
- 230000014509 gene expression Effects 0.000 claims description 19
- 230000009471 action Effects 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 15
- 238000010276 construction Methods 0.000 claims description 12
- 238000006243 chemical reaction Methods 0.000 claims description 7
- 238000000605 extraction Methods 0.000 claims description 3
- 238000004364 calculation method Methods 0.000 abstract description 5
- 239000013598 vector Substances 0.000 description 16
- 230000008569 process Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000005457 optimization Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 2
- ZPUCINDJVBIVPJ-LJISPDSOSA-N cocaine Chemical compound O([C@H]1C[C@@H]2CC[C@@H](N2C)[C@H]1C(=O)OC)C(=O)C1=CC=CC=C1 ZPUCINDJVBIVPJ-LJISPDSOSA-N 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000725 suspension Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 241001501944 Suricata Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种多字符串模式匹配方法、装置、计算机设备及存储介质,该方法包括:获取字符串匹配的规则集;提取字符模式串集合及其逻辑关系;基于自动机算法,根据字符模式串集合,构建无条件转移表及失效转移表;对转移表的状态进行编码,为转移表的每一状态分配三元码及精确码;根据转移表,构建非确定有限状态自动机匹配表;根据字符模式串集合及逻辑关系,构建策略匹配表;根据匹配表对字符串进行匹配,输出匹配结果;以实现自动机算法中非确定有限状态自动机完整语意的同时,保证了表项数量等于无条件转移表的状态转移表项数量,大大节省了存储空间,克服可编程交换机计算模型和存储资源的限制,增大每次匹配所处理的字符数以增大吞吐。
Description
技术领域
本发明涉及计算机匹配算法技术领域,特别涉及一种多字符串模式匹配方法、装置、计算机设备及存储介质。
背景技术
字符串匹配算法是一个在网络安全应用中被广泛使用的算法。它可以被形式化地表述为,给定字母表Σ,一个输入字符串T=t1t2…tn和一个模式串集合P={Pi},其中Pi=p1、p2…pm,且任意ti,pi∈Σ。多字符串模式匹配算法应输出模式串Pi在T中作为子字符串的所有位置的集合。
Aho-Corasick(自动机)算法,简称为AC算法,其是一种多字符串模式匹配的有效方法。它通过由模式串集合构成的字典树(trie)构造goto(无条件转移)状态转移表来构建非确定性有限自动机(NFA,Nondeterministic Finite Automata),并在有公共前缀的节点之间构建failure(失效)状态转移表。AC算法的执行流程为,对当前状态和输入字符串中的字符,首先查找goto转移表,如果有合法状态转移便转移到新状态,并处理下一字符;如果没有则递归地按照failure转移表,更改状态,直到有一个状态可以按照goto表中规定的,消耗当前输入字符并进行状态转移。AC算法的复杂度是O(n+m+z),其中z为匹配的次数。AC算法的高效性,使得它成为了多字符串模式匹配的标准算法之一,并广泛应用在当今网络安全应用中,比如Snort、Suricata等。
由于网络设备中的字符串模式匹配算法必须检查数据包的每个字节,以判断是否匹配模式串集合中的某个模式串,因此它通常成为整个网络安全应用程序的瓶颈。目前有许多通过算法优化或通过硬件加速来致力于减轻这一性能瓶颈的工作,但都存在一些问题。
具体的,基于软件的算法优化往往尝试减小存储占用,或增大每次状态转移消耗的字符数以增大吞吐,从而提高效率。然而,软件方法的数据包处理性能在本质上是受到限制的,因为服务器上的CPU(central processing unit,中央处理器)并非专门为高速数据包处理设计。即使使用高度优化的服务器,模式匹配引擎仍无法有效达到20Gbps。尽管可以通过部署更多服务器的方式实现更高的带宽,但此种方式会显著增加资金和操作成本,这是与现在急速增长的网络带宽和流量是不相对称的。
除了软件的解决方案,使用专有硬件来加速字符串模式匹配也引起了学术界关注。GPU(Graphics Processing Unit,图形处理器)因为有着比CPU更高的并行性,其单一指令多线程(SMIT)架构可以高效率的并行执行算法,可以提供约40Gbps的吞吐。基于FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)的解决方案也利用并行性来加速多字符串模式匹配,甚至加速正则表达式,从而实现高吞吐量。但是,这些硬件替代产品往往有着高昂的成本,而且吞吐也很难超过40Gbps。此外,硬件替代品通常通过PCI-E连接到服务器,由于PCI-E带宽有限,因此难以充分挖掘其潜力。
总而言之,算法优化解决方案和硬件加速解决方案都无法提供理想的吞吐量或资金成本,从而无法赶上网络流量和网络带宽的急剧增长。因此,目前迫切需要高吞吐、低成本的多字符串模式匹配引擎。
发明内容
基于此,有必要针对上述技术问题,提供一种多字符串模式匹配方法、装置、计算机设备及存储介质。
例如,一种多字符串模式匹配方法,该方法包括:
获取字符串匹配的规则集;
从所述规则集中提取字符模式串集合及字符模式串的逻辑关系;
基于自动机算法,根据所述字符模式串集合,构建无条件转移表及失效转移表;
对所述失效转移表的状态进行编码,为所述失效转移表的每一状态分配三元码及精确码,得到编码后的所述失效转移表;
根据所述无条件转移表及编码后的所述失效转移表,构建非确定有限状态自动机匹配表;
根据所述字符模式串集合及所述逻辑关系,构建策略匹配表;
根据所述非确定有限状态自动机匹配表及所述策略匹配表对字符串进行匹配,输出匹配结果。
在其中一个实施例中,对所述失效转移表的状态进行编码,为所述失效转移表的每一状态分配三元码及精确码,得到编码后的所述失效转移表的步骤,包括:
基于阴影编码算法,对所述失效转移表的状态进行编码,为所述失效转移表的每一状态分配在匹配字段中的所述三元码及在动作字段中的所述精确码,得到编码后的所述失效转移表。
在其中一个实施例中,所述对所述失效转移表的状态进行编码的步骤,包括:
从所述失效转移表转中构建失效转移树;
对所述失效转移树的状态进行编码。
在其中一个实施例中,所述根据所述无条件转移表及编码后的所述失效转移表,构建非确定有限状态自动机匹配表的步骤,包括:
将所述无条件转移表的转移边转化成表项,并对所述表项赋予优先级,得到转化后的所述无条件转移表;
根据转化后的所述无条件转移表及编码后的所述失效转移表,构建所述非确定有限状态自动机匹配表。
在其中一个实施例中,所述根据所述字符模式串集合及所述逻辑关系,构建策略匹配表的步骤,包括:
将所述字符模式串集合及所述逻辑关系转换成布尔表达式;
将所述布尔表达式转换成合取范式,构建所述策略匹配表。
在其中一个实施例中,所述根据所述非确定有限状态自动机匹配表及所述策略匹配表对字符串进行匹配,输出匹配结果的步骤,包括:
对所述非确定有限状态自动机匹配表中状态的步长进行扩大,得到扩大后的所述非确定有限状态自动机匹配表;
根据扩大后的非确定有限状态自动机匹配表及所述策略匹配表对字符串进行匹配,输出匹配结果。
在其中一个实施例中,所述非确定有限状态自动机匹配表包括初始状态和非初始状态;
所述对所述非确定有限状态自动机匹配表的步长进行扩大,得到扩大后的所述非确定有限状态自动机匹配表的步骤,包括:
根据所述无条件转移表,对所述非初始状态的步长进行扩大;
通过增加通配符方式,对所述初始状态的步长进行扩大,得到扩大后的所述非确定有限状态自动机匹配表。
在其中一个实施例中,提供一种多字符串模式匹配装置,该装置包括:
获取模块,用于获取字符串匹配的规则集;
提取模块,用于从所述规则集中提取字符模式串集合及字符模式串的逻辑关系;
转移表构建模块,用于基于自动机算法,根据所述字符模式串集合,构建无条件转移表及失效转移表;
编码模块,用于对所述失效转移表的状态进行编码,为所述失效转移表的每一状态分配三元码及精确码,得到编码后的所述失效转移表;
第一构建模块,用于根据所述无条件转移表及编码后的所述失效转移表,构建非确定有限状态自动机匹配表;
第二构建模块,用于根据所述字符模式串集合及所述逻辑关系,构建策略匹配表;
匹配模块,用于根据所述非确定有限状态自动机匹配表及所述策略匹配表对字符串进行匹配,输出匹配结果。
在其中一个实施例中,一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一实施例中所述方法的步骤。
在其中一个实施例中,一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例中所述的方法的步骤。
上述多字符模式串匹配方法、装置、计算机设备及存储介质,通过用户定义字符串匹配的规则集,从规则集中提取字符模式串集合及字符模式串的逻辑关系,基于自动机算法构建非确定有限状态自动机匹配表及策略匹配表,根据非确定有限状态自动机匹配表及策略匹配表实现对字符串根据设定的规则集进行匹配;由于在构建非确定有限状态自动机匹配表的过程中,通过所述失效转移表的状态进行编码进行三元编码,并为不同的表项设置不同的优先级,以实现自动机算法中非确定有限状态自动机完整语意的同时,保证了表项数量等于无条件转移表的状态转移表项数量,大大节省了存储空间,克服可编程交换机计算模型和存储资源的限制,增大每次匹配所处理的字符数以增大吞吐。
附图说明
图1为本发明一个实施例中多字符串模式匹配方法的流程示意图;
图2为本发明一个实施例中多字符串模式匹配方法的工作流程示意图;
图3为本发明一个实施例中NFA匹配表生成的示意图;
图4为本发明一个实施例中NFA匹配表步长扩大优化示意图;
图5为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供了一种多字符串模式匹配方法,该方法包括:
获取字符串匹配的规则集;
从所述规则集中提取字符模式串集合及字符模式串的逻辑关系;
基于自动机算法,根据所述字符模式串集合,构建无条件转移表及失效转移表;
对所述失效转移表的状态进行编码,为所述失效转移表的每一状态分配三元码及精确码,得到编码后的所述失效转移表;
根据所述无条件转移表及编码后的所述失效转移表,构建非确定有限状态自动机匹配表;
根据所述字符模式串集合及所述逻辑关系,构建策略匹配表;
根据所述非确定有限状态自动机匹配表及所述策略匹配表对字符串进行匹配,输出匹配结果。
上述多字符串模式匹配方法,通过用户定义字符串匹配的规则集,从规则集中提取字符模式串集合及字符模式串的逻辑关系,基于自动机算法构建非确定有限状态自动机匹配表及策略匹配表,根据非确定有限状态自动机匹配表及策略匹配表实现对字符串根据设定的规则集进行匹配;由于在构建非确定有限状态自动机匹配表的过程中,通过所述失效转移表的状态进行编码进行三元编码,并为不同的表项设置不同的优先级,以实现自动机算法中非确定有限状态自动机完整语义的同时,保证了表项数量等于无条件转移表的状态转移表项数量,大大节省了存储空间,克服可编程交换机计算模型和存储资源的限制,增大每次匹配所处理的字符数以增大吞吐。
请参阅图1,在其中一个实施例中,提供一种多字符串模式匹配方法,该方法包括:
S110,获取字符串匹配的规则集。
具体的,用户根据自身需求定义字符串匹配规则集,从而获得字符串匹配的规则集。该规则集可以包含多条匹配规则及规则之间的逻辑关系。在其中一个实施例中,所述规则集为snort规则(入侵检测规则)。
S120,从所述规则集中提取字符模式串集合及字符模式串的逻辑关系。
具体的,所述规则集中包含规则所规定的多个字符模式串及多个字符模式串之间逻辑关系,通过对多个字符模式串的字符进行提取,从而可以得到字符模式串集合。如此通过对所述规则集进行提取,以获得字符模式串集合及字符模式串的逻辑关系。在其中一个实施例中,所述逻辑关系包括“与”、“或”、“非”中的至少一种。
具体的,例如规则集中包含规则一及规则二,规则一限定匹配字符模式串she且不匹配her,规则二限定匹配字符模式串he。则she、her及he所包含的字符即为字符模式串集合;其中的且为逻辑关系,本实施例中的且相当于即“与”逻辑关系。
S130,基于自动机(AC)算法,根据所述字符模式串集合,构建无条件(goto)转移表及失效(failure)转移表;
具体的,Aho-Corasick(自动机)算法,简称为AC算法,其是一种多字符串模式匹配的有效方法。它通过由模式串集合构成的字典树(trie)构造goto(无条件)转移表来构建非确定性有限自动机(NFA,Nondeterministic FiniteAutomata),并在有公共前缀的节点之间构建failure(失效)转移表。goto转移表也可以称为goto状态转移表,同理failure转移表也可以称为failure状态转移表。
S140,对所述失效转移表的状态进行编码,为所述失效转移表的每一状态分配三元码及精确码,得到编码后的所述失效转移表。
可以理解的是,failure转移表即failure状态转移表,对所述failure转移表的状态进行编码,为每一状态一个赋予一个三元码及精确码。对于failure转移表的每一个状态,三元码与且仅与自身的精确码以及failure树中的后代节点的精确码相匹配。本实施例中的精确码是指精确的二进制编码,每一状态都用一个精确的二进制编码表示,以实现一一对应关系;而三元码是指在二进制编码的基础上引入通配符,所述通配符用*表示,二进制编码用“0”和“1”表示,该通配符可以匹配任意取值“0”和“1”,例如10*既可以匹配二进制字符串101,也可以匹配二进制字符串100,从而可以使用较少存储而容纳更多的表项。
S150,根据所述无条件转移表及编码后的所述失效转移表,构建非确定有限状态自动机匹配表。
具体的,非确定性有限自动机(NFA,non-deterministic finite automaton)匹配表,基于AC算法根据所述goto转移表及编码后的所述failure转移表,构建NFA匹配表。
S160,根据所述字符模式串集合及所述逻辑关系,构建策略匹配表。
本步骤中,用户根据字符模式串集合及逻辑关系,建立当所识别的字符串满足设定规则时,执行相应的策略,从而构建策略匹配表。例如,匹配规则一执行向控制平面转发报文的动作。
S170,根据所述非确定有限状态自动机匹配表及所述策略匹配表对字符串进行匹配,输出匹配结果。
具体的,根据所述NFA匹配表及所述策略匹配表对字符串进行匹配,即根据所述NFA匹配表及所述策略匹配表对用户输入的字符串进行匹配,以使用户输入的字符串可以根据预设的规则集进行匹配,从而输出匹配结果。例如,查看数据包符合哪些规则,并执行相应的操作。该相应操作可以是丢弃、正常转发或告警。需说明的是,本申请重点是如何实现字符串的匹配,而对于匹配结果后续相应操作非本申请发明点,可按照常规技术手段执行操作即可。
上述多字符串模式匹配方法,通过用户定义字符串匹配的规则集,从规则集中提取字符模式串集合及字符模式串的逻辑关系,基于自动机算法构建非确定有限状态自动机匹配表及策略匹配表,根据非确定有限状态自动机匹配表及策略匹配表实现对字符串根据设定的规则集进行匹配;由于在构建非确定有限状态自动机匹配表的过程中,通过所述失效转移表的状态进行编码进行三元编码,并为不同的表项设置不同的优先级,以实现自动机算法中非确定有限状态自动机完整语义的同时,保证了表项数量等于goto转移表的状态转移表项数量,大大节省了存储空间,克服可编程交换机计算模型和存储资源的限制,增大每次匹配所处理的字符数以增大吞吐。
在其中一个实施例中,所述对所述失效转移表的状态进行编码的步骤,包括:
从所述失效转移表转中构建失效转移树;
对所述失效转移树的状态进行编码。
具体的,从AC算法所构建的failure转移表中构建一个failure转移树。该failure转移树满足以下属性:每个节点代表AC的一个状态,且在运行AC算法中,每个节点会递归转移到该节点的祖先节点以寻找是否有可供状态转移的goto转移边。例如,如图3所示,图3中S2具有祖先S4和S0,根据failure转移表,有f(S2)=S4,f(S4)=S0。显然,初始状态S0是failure转移树的根,因为每个状态最终都将根据failure转移表最终移动到S0。如此,通过将failure转移表构建转移树,能够更直观的对failure转移表项中的状态进行编码。
在其中一个实施例中,所述对所述失效转移表的状态进行编码,为所述失效转移表的每一状态分配三元码及精确码,得到编码后的所述失效转移表的步骤,包括:
基于阴影编码算法,对所述失效转移表的状态进行编码,为所述失效转移表的每一状态分配在匹配字段中的所述三元码及在动作字段中的所述精确码,得到编码后的所述失效转移表。
本实施例中,采用阴影编码(shadow encoding)算法对所述failure转移表的状态进行编码。阴影编码算法最初是在D2FA(Delay-input DFA,延迟输入DFA)中提出的,旨在减少DFA的条目数。该阴影编码算法的输入是状态集合和一棵延迟树,输出为每个状态分配一个三元码和一个二进制精确码,从而可以忽略不计地增加状态代码的宽度。
在其中一个实施例中,所述对所述失效转移表的状态进行编码,为所述失效转移表的每一状态分配三元码及精确码,得到编码后的所述失效转移表的步骤,包括:从所述失效转移表转中构建失效转移树;
对所述失效转移树的状态进行编码,为所述失效转移表的每一状态分配三元码及精确码,得到编码后的所述失效转移表。
在其中一个实施例中,所述根据所述无条件转移表及编码后的所述失效转移表,构建非确定有限状态自动机匹配表的步骤,包括:
将所述无条件转移表的转移边转化成表项,并对所述表项赋予优先级,得到转化后的所述无条件转移表;
根据转化后的所述无条件转移表及编码后的所述失效转移表,构建所述非确定有限状态自动机匹配表。
具体的,如图3所示,将每个goto转移边转化为一个表项,并赋予优先级。设表项格式为(SrcState,Char)→DstState,其中,SrcState表示匹配域中的当前状态,Char表示匹配域中的输入字符,DstState表示动作域中执行状态转移动作后的新状态。将每个状态的三元码置于SrcState中,以匹配该状态自身或该状态在failure树的子节点。并且对failure转移树的节点进行后序排列,并降序分配条目优先级,以使子节点对应状态的表项优先级高于其父母的优先级,从而实现AC算法中failure转移树的子节点逐次转移到祖先节点寻求goto表的匹配的逻辑。根据AC算法中的NFA,可以得到AC字典树中的goto状态转移表,如(S2,e)→S3和(S4,e)→S5。对于(S2,e)→S3,设置表项(110,e)→000和(11*,e)→001。对于这两条表项的优先级,由于S2是S4的子节点,因此S2的表项(110,e)→000优先级高于S4的表项(11*,e)→001。而S0的条目优先级最低,因为S0是failure转移树中所有其他状态的祖先节点。通过此种编码方式,可以得到与goto转移边的表项数量相同的状态转移表,实现了完整的AC算法,且所得到的NFA匹配表存储占用远低于基于DFA的匹配方式。
在其中一个实施例中,所述根据所述非确定有限状态自动机匹配表及所述策略匹配表对字符串进行匹配,输出匹配结果的步骤,包括:
对所述非确定有限状态自动机匹配表中状态的步长进行扩大,得到扩大后的所述非确定有限状态自动机匹配表;
根据扩大后的非确定有限状态自动机匹配表及所述策略匹配表对字符串进行匹配,输出匹配结果。
具体的,在生成NFA匹配表项后,需要对NFA匹配表进行步长的优化,以增加平均吞吐量,同时确保存储空间占用的增加速度可以接受,避免指数级别的增长。
在其中一个实施例中,所述非确定有限状态自动机匹配表包括初始状态和非初始状态;
所述对所述非确定有限状态自动机匹配表的步长进行扩大,得到扩大后的所述非确定有限状态自动机匹配表的步骤,包括:
根据所述无条件转移表,对所述非初始状态的步长进行扩大;
通过增加通配符方式,对所述初始状态的步长进行扩大,得到扩大后的所述非确定有限状态自动机匹配表。
具体的,如图3和图4所示,初始状态是指转移树的根的状态,即S0,而非初始状态是指除初始状态以外的其他状态。针对非初始状态,依照AC算法建立的字典树进行步长扩大,直至目的状态为中止状态时,停止对该状态的表项步长的扩大;其中,字典树即goto转移表。即在增大步长至目的状态为终止状态时停止对该状态的表项步长的扩大,也就是匹配到完整模式串时停止对该状态的表项步长扩大。因为继续增大步长导致中间节点存在一个或多个接受状态时会引起新状态和表项的增加,从而导致内存占用的快速增加。对于初始状态S0,通过增加通配符的方式展开AC算法的NFA在goto转移表中初始状态S0的自循环。
对初始状态扩大步长的方法具体为,首先按照如对非初始状态的步长扩大的方式将初始状态的步长扩展为k,然后迭代地右移匹配域中的字符串,并在该状态前面加上通配符,通配符用*表示。通过采用这种方法将步长增加到了k,而表项数量仅增加O(k),从而可以在增加表项数量较少的情况下,增大每次匹配的平均步长,即平均每次匹配所消耗的字符。以图4为例,图4中左半部分表示为步长为1的goto转移表,即未对步长进行扩大的goto转移表。设步长k=2,通过上述方法得到图4中右半部分的变步长表项。
在其中一个实施例中,一种多字符串模式匹配方法,该方法包括:
获取字符串匹配的规则集;
从所述规则集中提取字符模式串集合及字符模式串的逻辑关系;
基于自动机算法,根据所述字符模式串集合,构建无条件转移表及失效转移表;
从所述失效转移表转中构建失效转移树;
基于阴影编码算法,对所述失效转移表的状态进行编码,为所述失效转移表的每一状态分配在匹配字段中的所述三元码及在动作字段中的所述精确码,得到编码后的所述失效转移表;
将所述无条件转移表的转移边转化成表项,并对所述表项赋予优先级,得到转化后的所述无条件转移表;
根据转化后的所述无条件转移表及编码后的所述失效转移表,构建所述非确定有限状态自动机匹配表;
对所述非确定有限状态自动机匹配表中状态的步长进行扩大,得到扩大后的所述非确定有限状态自动机匹配表;
根据所述字符模式串集合及所述逻辑关系,构建策略匹配表;
根据扩大后的非确定有限状态自动机匹配表及所述策略匹配表对字符串进行匹配,输出匹配结果。
其中,所述非确定有限状态自动机匹配表包括初始状态和非初始状态;
所述对所述非确定有限状态自动机匹配表的步长进行扩大,得到扩大后的所述非确定有限状态自动机匹配表的步骤,包括:
根据所述无条件转移表,对所述非初始状态的步长进行扩大;
通过增加通配符方式,对所述初始状态的步长进行扩大,得到扩大后的所述非确定有限状态自动机匹配表。
在其中一个实施例中,所述根据所述字符模式串集合及所述逻辑关系,构建策略匹配表的步骤,包括:
将所述字符模式串集合及所述逻辑关系转换成布尔表达式;
将所述布尔表达式转换成合取范式,构建所述策略匹配表。
在其中一个实施例中,所述将所述布尔表达式转换成合取范式,构建所述策略匹配表的步骤,包括:
将所述布尔表达式转换成所述合取范式;
设定一位向量表示所述字符模式串的匹配情况;
根据所述合取范式及位向量,构建所述策略匹配表。
本步骤中,首先将规则中的每个字符串模式映射到一个布尔变量中,以指示该字符串模式是否在报文中匹配。然后,从每个规则中提取一个布尔表达式,其中每个布尔变量指示相应的字符串是否与此规则匹配。其次,将每个布尔表达式标准化为更通用和更具表现力的合取范式。使用一个位向量来表示各个模式串的匹配情况,从而使用位向量每个特定取值来表示各个规则的匹配情况,从而执行不同的策略。
在图2中,将每个单个字符串模式映射到布尔变量后,每条规则可以由合取式表示,例如、规则一限定匹配模式串she且不匹配模式串her,规则一由第一个合取范式表示,规则二限定匹配模式串he,规则二由第二个合取范式p3表示。定义一个长度等于模式数量的位向量,使得每个位都可以表示某个模式是否匹配,比如规则一和规则二包含三个模式串,可以由三位的位向量表示,从高位到低位每比特分别表示p1,p2,p3的匹配状况。此时,位向量取值10*表示p1,匹配,p2不匹配,而对于p3则不关心,该位向量即对应于规则一的匹配。规则二对应的表项也可以以相同的方式生成位向量**1。之后可生成匹配表的不同表项。例如,匹配规则一执行向控制平面转发报文的动作,则可在策略匹配表中生成匹配域为10*,动作为向控制平面转发报文的表项。
以下是一具体实施例,一种多字符模式串匹配方法,该方法包括:
获取字符串匹配的规则集;
从所述规则集中提取字符模式串集合及字符模式串的逻辑关系;
基于AC算法,根据所述字符模式串集合,构建goto转移表及failure转移表;
从所述failure转移表转中构建failure转移树;
基于阴影编码算法,对所述failure转移表的状态进行编码,为所述failure转移表的每一状态分配在匹配字段中的所述三元码及在动作字段中的所述精确码,得到编码后的所述failure转移表;
将所述goto转移表的转移边转化成表项,并对所述表项赋予优先级,得到转化后的所述goto转移表;
根据转化后的所述goto转移表及编码后的所述failure转移表,构建所述NFA匹配表;
对所述NFA匹配表中状态的步长进行扩大,得到扩大后的所述NFA匹配表;
将所述字符模式串集合及所述逻辑关系转换成布尔表达式;
将所述布尔表达式转换成合取范式,构建所述策略匹配表;
根据扩大后的NFA匹配表及所述策略匹配表对字符串进行匹配,输出匹配结果。
其中,所述NFA匹配表包括初始状态和非初始状态;
所述对所述NFA匹配表的步长进行扩大,得到扩大后的所述NFA匹配表的步骤,包括:
根据所述无条件转移表,对所述非初始状态的步长进行扩大;
通过增加通配符方式,对所述初始状态的步长进行扩大,得到扩大后的所述NFA匹配表。
具体的,请参阅图2至图4,管理人员需要定义匹配规则集;控制器从匹配规则中提取字符模式串集合和模式串间的逻辑关系,例如,“与”,“或”,“非”逻辑关系。对于从规则集中提取的字符串模式集合,控制器使用AC算法构造NFA,并对NFA进行编码,具体编码方式主要包括以下三部分:
(1)基于failure状态转移表建立一棵节点为NFA中状态构成的failure转移树,表示由failure转移表定义的延迟匹配关系。
(2)使用阴影编码方案对状态进行编码,该方案为每个状态分配在匹配字段中的三元编码代码和在动作字段中的精确代码。
(3)将goto表中的边转换为表项,为每个表项分配不同的优先级,以实现AC NFA的完整语义。
具体的,从AC算法所构建的failure转移表中构建一个failure转移树。该failure转移树满足以下属性:每个节点代表AC的一个状态,且在运行AC算法中,每个节点会递归转移到该节点的祖先节点以寻找是否有可供状态转移的goto转移边。例如,如图3所示,图中S2具有祖先S4和S0,根据failure转移表,有f(S2)=S4,f(S4)=S0。显然,初始状态S0是failure转移树的根,因为每个状态最终都将根据failure转移表最终移动到S0。如此,通过将failure转移表构建转移树,能够更直观的对failure转移表项中的状态进行编码。
基于failure转移树,对状态编码,为每个状态分配一个三元码和一个二进制精确码。对于每个节点,三元码与且仅与自身的精确码以及failure树中的后代节点的精确码相匹配。采用阴影编码算法对所述failure转移表的状态进行编码。阴影编码算法最初是在D2FA中提出的,旨在减少DFA的条目数。该阴影编码算法的输入是状态集合和一棵延迟树,输出为每个状态分配一个三元码和一个二进制精确码,从而可以忽略不计地增加状态代码的宽度。
将每个goto转移边转化为一个表项,并赋予优先级。设表项格式为(SrcState,Char))→DstState,其中,SrcState表示匹配域中的当前状态,Char表示匹配域中的输入字符,DstState表示动作域中执行状态转移动作后的新状态。将每个状态的三元码置于SrcState中,以匹配该状态自身或该状态在failure树的子节点。并且对failure转移树的节点进行后序排列,并降序分配条目优先级,以使子节点对应状态的表项优先级高于其父母的优先级,从而实现AC算法中failure转移树的子节点逐次转移到祖先节点寻求goto表的匹配的逻辑。根据AC算法中的NFA,可以得到AC字典树中的goto状态转移表,如(S2,e)→S3和(S4,e)→S5。对于(S2,e)→S3,设置表项(110,e)→000和(11*,e)→001。对于这两条表项的优先级,由于S2是S4的子节点,因此S2的表项(110,e)→000优先级高于S4的表项(11*,e)→001。而S0的条目优先级最低,因为S0是failure转移树中所有其他状态的祖先节点。通过此种编码方式,可以得到与goto转移边的表项数量相同的状态转移表,实现了完整的AC算法,且所得到的NFA匹配表存储占用远低于基于DFA的匹配方式。
在生成NFA匹配表项后,需要对NFA进行步长的优化,以增加平均吞吐量,同时确保存储空间占用的增加速度可以接受,避免指数级别的增长。本实施例中针对初始状态S0的表项和其他状态的表项分别进行处理。
如图4所示,初始状态是指转移树的根的状态,即S0,而非初始状态是指除初始状态以外的其他状态。针对非初始状态,依照AC算法建立的字典树进行步长扩大,直至目的状态为中止状态时,停止对该状态的表项步长的扩大;其中,字典树即goto转移表。即在增大步长至目的状态为终止状态时停止对该状态的表项步长的扩大,也就是匹配到完整模式串时停止对该状态的表项步长扩大。因为继续增大步长导致中间节点存在一个或多个接受状态时会引起新状态和表项的增加,从而导致内存占用的快速增加。对于初始状态S0,通过增加通配符的方式展开AC算法的NFA在goto转移表中初始状态S0的自循环。
对初始状态扩大步长的方法具体为,首先按照如对非初始状态的步长扩大的方式将初始状态的步长扩展为k,然后迭代地右移匹配域中的字符串,并在该状态前面加上通配符,通配符用*表示。通过采用这种方法将步长增加到了k,而表项数量仅增加O(k),从而可以在增加表项数量较少的情况下,增大每次匹配的平均步长,即平均每次匹配所消耗的字符。以图4为例,图4中左半部分表示为步长为1的goto转移表,即未对步长进行扩大的goto转移表。设步长k=2,通过上述方法得到图4中右半部分的变步长表项。
为了将相关操作转换为策略表条目,需要将每个规则中的字符模式串的逻辑关系操作表示为布尔表达式,并将每个布尔表达式归一化为合取范式,以适合交换机流水线中匹配操作表的语义。在交换机流水线的末尾使用一个额外的匹配表来存储字符串的关系操作。具体生成方式如下:
首先将规则中的每个字符串模式映射到一个布尔变量中,以指示该字符串模式是否在报文中匹配。然后,从每个规则中提取一个布尔表达式,其中每个布尔变量指示相应的字符串是否与此规则匹配。其次,将每个布尔表达式标准化为更通用和更具表现力的合取范式。使用一个位向量来表示各个模式串的匹配情况,从而使用位向量每个特定取值来表示各个规则的匹配情况,从而执行不同的策略。
在图2中,将每个单个字符串模式映射到布尔变量后,每条规则可以由合取式表示,例如、规则一限定匹配模式串she且不匹配模式串her,规则一由第一个合取范式表示,规则二限定匹配模式串he,规则二由第二个合取范式p3表示。定义一个长度等于模式数量的位向量,使得每个位都可以表示某个模式是否匹配,比如规则一R1和规则二R2包含三个模式串,可以由三位的位向量表示,从高位到低位每比特分别表示p1,p2,p3的匹配状况。此时,位向量取值10*表示p1,匹配,p2不匹配,而对于p3则不关心,该位向量即对应于规则一的匹配。规则二对应的表项也可以以相同的方式生成位向量**1。之后可生成匹配表的不同表项。例如,匹配规则一执行向控制平面转发报文的动作,则可在策略匹配表中生成匹配域为10*,动作为向控制平面转发报文的表项。
进一步地,通过上述方法,提供一种快速且高效率的状态编码方案,以便将大量的字符串模式规则放入可编程交换机有限的存储空间中;又提出了一种可变的步长的状态转移机制,通过增加可接受的条目数来显著降低循环次数,提高吞吐量;在交换机流水线的末尾设计了策略匹配表,以匹配多个字符串之间的逻辑关系,执行不同的操作。
在其中一个实施例中,提供一种多字符串模式匹配装置,所述多字符串模式匹配装置采用上述任一实施例所述多字符串模式匹配体交互方法实现。在其中一个实施例中,所述多字符串模式匹配装置包括用于实现所述多字符串模式匹配方法各步骤的相应模块。
在其中一个实施例中,提供一种多字符串模式匹配装置,该装置包括:
获取模块,用于获取字符串匹配的规则集;
提取模块,用于从所述规则集中提取字符模式串集合及字符模式串的逻辑关系;
转移表构建模块,用于基于自动机算法,根据所述字符模式串集合,构建无条件转移表及失效转移表;
编码模块,用于对所述失效转移表的状态进行编码,为所述失效转移表的每一状态分配三元码及精确码,得到编码后的所述失效转移表;
第一构建模块,用于根据所述无条件转移表及编码后的所述失效转移表,构建非确定有限状态自动机匹配表;
第二构建模块,用于根据所述字符模式串集合及所述逻辑关系,构建策略匹配表;
匹配模块,用于根据所述非确定有限状态自动机匹配表及所述策略匹配表对字符串进行匹配,输出匹配结果。
上述多字符串模式匹配装置,通过用户定义字符串匹配的规则集,从规则集中提取字符模式串集合及字符模式串的逻辑关系,基于自动机算法构建非确定有限状态自动机匹配表及策略匹配表,根据非确定有限状态自动机匹配表及策略匹配表实现对字符串根据设定的规则集进行匹配;由于在构建非确定有限状态自动机匹配表的过程中,通过所述失效转移表的状态进行编码进行三元编码,并为不同的表项设置不同的优先级,以实现自动机算法中非确定有限状态自动机完整语意的同时,保证了表项数量等于无条件转移表的状态转移表项数量,大大节省了存储空间,克服可编程交换机计算模型和存储资源的限制,增大每次匹配所处理的字符数以增大吞吐。
在其中一个实施例中,所述编码模块包括:
转移树构建单元,用于从所述失效转移表转中构建失效转移树;
编码单元,用于对所述失效转移树的状态进行编码。
在其中一个实施例中,所述第一构建模块,包括:
转化单元,用于将所述无条件转移表的转移边转化成表项,并对所述表项赋予优先级,得到转化后的所述无条件转移表;
第一构建单元,用于根据转化后的所述无条件转移表及编码后的所述失效转移表,构建所述非确定有限状态自动机匹配表。
在其中一个实施例中,第二构建单元包括:
转换单元,用于将所述字符模式串集合及所述逻辑关系转换成布尔表达式;
第二构建单元,用于将所述布尔表达式转换成合取范式,构建所述策略匹配表。
在其中一个实施例中,所述匹配模块包括:
扩大单元,用于对所述非确定有限状态自动机匹配表中状态的步长进行扩大,得到扩大后的所述非确定有限状态自动机匹配表;
匹配单元,用于根据扩大后的非确定有限状态自动机匹配表及所述策略匹配表对字符串进行匹配,输出匹配结果。
在其中一个实施例中,所述非确定有限状态自动机匹配表包括初始状态和非初始状态;
所述扩大单元用于根据所述无条件转移表,对所述非初始状态的步长进行扩大;通过增加通配符方式,对所述初始状态的步长进行扩大,得到扩大后的所述非确定有限状态自动机匹配表。
在其中一个实施例中,提供了一种计算机设备,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种多字符串模式匹配方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在其中一个实施例中,一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时上述任一实施例中所述多字符串模式匹配方法的步骤。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取字符串匹配的规则集;
从所述规则集中提取字符模式串集合及字符模式串的逻辑关系;
基于自动机算法,根据所述字符模式串集合,构建无条件转移表及失效转移表;
对所述失效转移表的状态进行编码,为所述失效转移表的每一状态分配三元码及精确码,得到编码后的所述失效转移表;
根据所述无条件转移表及编码后的所述失效转移表,构建非确定有限状态自动机匹配表;
根据所述字符模式串集合及所述逻辑关系,构建策略匹配表;
根据所述非确定有限状态自动机匹配表及所述策略匹配表对字符串进行匹配,输出匹配结果。
在其中一个实施例中,提供一种计算机可读存储介质,其上存储有计算机程序,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例中所述多字符串模式匹配方法的步骤。
获取字符串匹配的规则集;
从所述规则集中提取字符模式串集合及字符模式串的逻辑关系;
基于自动机算法,根据所述字符模式串集合,构建无条件转移表及失效转移表;
对所述失效转移表的状态进行编码,为所述失效转移表的每一状态分配三元码及精确码,得到编码后的所述失效转移表;
根据所述无条件转移表及编码后的所述失效转移表,构建非确定有限状态自动机匹配表;
根据所述字符模式串集合及所述逻辑关系,构建策略匹配表;
根据所述非确定有限状态自动机匹配表及所述策略匹配表对字符串进行匹配,输出匹配结果。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种多字符串模式匹配方法,其特征在于,包括:
获取字符串匹配的规则集;
从所述规则集中提取字符模式串集合及字符模式串的逻辑关系;
基于自动机算法,根据所述字符模式串集合,构建无条件转移表及失效转移表;
对所述失效转移表的状态进行编码,为所述失效转移表的每一状态分配三元码及精确码,得到编码后的所述失效转移表;
根据所述无条件转移表及编码后的所述失效转移表,构建非确定有限状态自动机匹配表;
根据所述字符模式串集合及所述逻辑关系,构建策略匹配表;
根据所述非确定有限状态自动机匹配表及所述策略匹配表对字符串进行匹配,输出匹配结果。
2.根据权利要求1所述的多字符串模式匹配方法,其特征在于,所述对所述失效转移表的状态进行编码,为所述失效转移表的每一状态分配三元码及精确码,得到编码后的所述失效转移表的步骤,包括:
基于阴影编码算法,对所述失效转移表的状态进行编码,为所述失效转移表的每一状态分配在匹配字段中的所述三元码及在动作字段中的所述精确码,得到编码后的所述失效转移表。
3.根据权利要求1所述的多字符串模式匹配方法,其特征在于,所述对所述失效转移表的状态进行编码的步骤,包括:
从所述失效转移表转中构建失效转移树;
对所述失效转移树的状态进行编码。
4.根据权利要求1所述的多字符串模式匹配方法,其特征在于,所述根据所述无条件转移表及编码后的所述失效转移表,构建非确定有限状态自动机匹配表的步骤,包括:
将所述无条件转移表的转移边转化成表项,并对所述表项赋予优先级,得到转化后的所述无条件转移表;
根据转化后的所述无条件转移表及编码后的所述失效转移表,构建所述非确定有限状态自动机匹配表。
5.根据权利要求1所述的多字符串模式匹配方法,其特征在于,所述根据所述字符模式串集合及所述逻辑关系,构建策略匹配表的步骤,包括:
将所述字符模式串集合及所述逻辑关系转换成布尔表达式;
将所述布尔表达式转换成合取范式,构建所述策略匹配表。
6.根据权利要求1所述的多字符串模式匹配方法,其特征在于,所述根据所述非确定有限状态自动机匹配表及所述策略匹配表对字符串进行匹配,输出匹配结果的步骤,包括:
对所述非确定有限状态自动机匹配表中状态的步长进行扩大,得到扩大后的所述非确定有限状态自动机匹配表;
根据扩大后的非确定有限状态自动机匹配表及所述策略匹配表对字符串进行匹配,输出匹配结果。
7.根据权利要求6所述的多字符串模式匹配方法,其特征在于,所述非确定有限状态自动机匹配表包括初始状态和非初始状态;
所述对所述非确定有限状态自动机匹配表的步长进行扩大,得到扩大后的所述非确定有限状态自动机匹配表的步骤,包括:
根据所述无条件转移表,对所述非初始状态的步长进行扩大;
通过增加通配符方式,对所述初始状态的步长进行扩大,得到扩大后的所述非确定有限状态自动机匹配表。
8.一种多字符串模式匹配装置,其特征在于,包括:
获取模块,用于获取字符串匹配的规则集;
提取模块,用于从所述规则集中提取字符模式串集合及字符模式串的逻辑关系;
转移表构建模块,用于基于自动机算法,根据所述字符模式串集合,构建无条件转移表及失效转移表;
编码模块,用于对所述失效转移表的状态进行编码,为所述失效转移表的每一状态分配三元码及精确码,得到编码后的所述失效转移表;
第一构建模块,用于根据所述无条件转移表及编码后的所述失效转移表,构建非确定有限状态自动机匹配表;
第二构建模块,用于根据所述字符模式串集合及所述逻辑关系,构建策略匹配表;
匹配模块,用于根据所述非确定有限状态自动机匹配表及所述策略匹配表对字符串进行匹配,输出匹配结果。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110270270.4A CN112784127B (zh) | 2021-03-12 | 2021-03-12 | 多字符串模式匹配方法、装置、计算机设备及存储介质 |
PCT/CN2021/100489 WO2022188285A1 (zh) | 2021-03-12 | 2021-06-17 | 多字符串模式匹配方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110270270.4A CN112784127B (zh) | 2021-03-12 | 2021-03-12 | 多字符串模式匹配方法、装置、计算机设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112784127A true CN112784127A (zh) | 2021-05-11 |
CN112784127B CN112784127B (zh) | 2023-12-05 |
Family
ID=75762564
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110270270.4A Active CN112784127B (zh) | 2021-03-12 | 2021-03-12 | 多字符串模式匹配方法、装置、计算机设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112784127B (zh) |
WO (1) | WO2022188285A1 (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113381993A (zh) * | 2021-06-08 | 2021-09-10 | 清华大学 | 深度报文检测系统及其检测方法、计算机设备和存储介质 |
CN113673627A (zh) * | 2021-09-02 | 2021-11-19 | 哈尔滨工程大学 | 一种具有解释性的商品自动分类方法及系统 |
CN113891360A (zh) * | 2021-10-12 | 2022-01-04 | 国网浙江省电力有限公司宁波供电公司 | 基于网关转发字符串的流量分类识别方法 |
CN114090928A (zh) * | 2022-01-24 | 2022-02-25 | 湖南四方天箭信息科技有限公司 | 嵌套html实体解码方法、装置、计算机设备和存储介质 |
CN114168808A (zh) * | 2021-11-22 | 2022-03-11 | 中核核电运行管理有限公司 | 基于正则表达式的文档字符串编码识别方法及装置 |
CN114301671A (zh) * | 2021-12-28 | 2022-04-08 | 中国电信股份有限公司 | 网络入侵检测方法、系统、设备及存储介质 |
WO2022188285A1 (zh) * | 2021-03-12 | 2022-09-15 | 清华大学 | 多字符串模式匹配方法、装置、计算机设备及存储介质 |
CN115292558A (zh) * | 2022-08-12 | 2022-11-04 | 苏州浪潮智能科技有限公司 | 基于正则表达式的模式匹配方法、系统、存储介质及设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117574178B (zh) * | 2024-01-15 | 2024-04-26 | 国网湖北省电力有限公司信息通信公司 | 基于fpga的网络流量字符串自动匹配方法和匹配装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7805392B1 (en) * | 2005-11-29 | 2010-09-28 | Tilera Corporation | Pattern matching in a multiprocessor environment with finite state automaton transitions based on an order of vectors in a state transition table |
CN102799600A (zh) * | 2012-04-10 | 2012-11-28 | 成都网安科技发展有限公司 | 一种基于编码关联的多模式匹配算法及系统 |
CN107193843A (zh) * | 2016-03-15 | 2017-09-22 | 阿里巴巴集团控股有限公司 | 一种基于ac自动机和后缀表达式的字符串筛选方法及装置 |
CN111382327A (zh) * | 2020-05-29 | 2020-07-07 | 湖南戎腾网络科技有限公司 | 一种字符串匹配装置及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112784127B (zh) * | 2021-03-12 | 2023-12-05 | 清华大学 | 多字符串模式匹配方法、装置、计算机设备及存储介质 |
-
2021
- 2021-03-12 CN CN202110270270.4A patent/CN112784127B/zh active Active
- 2021-06-17 WO PCT/CN2021/100489 patent/WO2022188285A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7805392B1 (en) * | 2005-11-29 | 2010-09-28 | Tilera Corporation | Pattern matching in a multiprocessor environment with finite state automaton transitions based on an order of vectors in a state transition table |
CN102799600A (zh) * | 2012-04-10 | 2012-11-28 | 成都网安科技发展有限公司 | 一种基于编码关联的多模式匹配算法及系统 |
CN107193843A (zh) * | 2016-03-15 | 2017-09-22 | 阿里巴巴集团控股有限公司 | 一种基于ac自动机和后缀表达式的字符串筛选方法及装置 |
CN111382327A (zh) * | 2020-05-29 | 2020-07-07 | 湖南戎腾网络科技有限公司 | 一种字符串匹配装置及方法 |
Non-Patent Citations (1)
Title |
---|
龙文;辛阳;杨义先;: "基于位并行技术的特殊字符串匹配", 武汉理工大学学报, no. 06 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022188285A1 (zh) * | 2021-03-12 | 2022-09-15 | 清华大学 | 多字符串模式匹配方法、装置、计算机设备及存储介质 |
CN113381993A (zh) * | 2021-06-08 | 2021-09-10 | 清华大学 | 深度报文检测系统及其检测方法、计算机设备和存储介质 |
CN113673627A (zh) * | 2021-09-02 | 2021-11-19 | 哈尔滨工程大学 | 一种具有解释性的商品自动分类方法及系统 |
CN113673627B (zh) * | 2021-09-02 | 2024-02-13 | 哈尔滨工程大学 | 一种具有解释性的商品自动分类方法及系统 |
CN113891360A (zh) * | 2021-10-12 | 2022-01-04 | 国网浙江省电力有限公司宁波供电公司 | 基于网关转发字符串的流量分类识别方法 |
CN113891360B (zh) * | 2021-10-12 | 2023-07-11 | 国网浙江省电力有限公司宁波供电公司 | 基于网关转发字符串的流量分类识别方法 |
CN114168808A (zh) * | 2021-11-22 | 2022-03-11 | 中核核电运行管理有限公司 | 基于正则表达式的文档字符串编码识别方法及装置 |
CN114301671A (zh) * | 2021-12-28 | 2022-04-08 | 中国电信股份有限公司 | 网络入侵检测方法、系统、设备及存储介质 |
CN114090928A (zh) * | 2022-01-24 | 2022-02-25 | 湖南四方天箭信息科技有限公司 | 嵌套html实体解码方法、装置、计算机设备和存储介质 |
CN114090928B (zh) * | 2022-01-24 | 2022-04-08 | 湖南四方天箭信息科技有限公司 | 嵌套html实体解码方法、装置、计算机设备和存储介质 |
CN115292558A (zh) * | 2022-08-12 | 2022-11-04 | 苏州浪潮智能科技有限公司 | 基于正则表达式的模式匹配方法、系统、存储介质及设备 |
CN115292558B (zh) * | 2022-08-12 | 2024-01-26 | 苏州浪潮智能科技有限公司 | 基于正则表达式的模式匹配方法、系统、存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
WO2022188285A1 (zh) | 2022-09-15 |
CN112784127B (zh) | 2023-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112784127A (zh) | 多字符串模式匹配方法、装置、计算机设备及存储介质 | |
WO2022141869A1 (zh) | 模型训练方法、调用方法、装置、计算机设备和存储介质 | |
Jin et al. | Fine-grained entity typing via hierarchical multi graph convolutional networks | |
US20210232655A1 (en) | System and method for a web scraping tool and classification engine | |
US8843508B2 (en) | System and method for regular expression matching with multi-strings and intervals | |
US20060242123A1 (en) | Hierarchical tree of deterministic finite automata | |
Koppula et al. | Learning url patterns for webpage de-duplication | |
US20100153420A1 (en) | Dual-stage regular expression pattern matching method and system | |
Xu et al. | A survey on dynamic neural networks for natural language processing | |
Wang et al. | Memory-based architecture for multicharacter Aho–Corasick string matching | |
CN116319599A (zh) | 一种承载voip业务的信道分配系统及其方法 | |
Cinelli et al. | Automatic event identification and extraction from daily drilling reports using an expert system and artificial intelligence | |
Chen et al. | Graph unfolding networks | |
KR101382787B1 (ko) | 메모리 효율적인 결정적 유한 오토마타 구현을 위한 상태 감소 방법 | |
Kaminski et al. | Finite-memory automata | |
Fang et al. | Gaugllm: Improving graph contrastive learning for text-attributed graphs with large language models | |
CN115149962A (zh) | 确定性有限自动机压缩方法、装置、设备及存储介质 | |
CN113055890B (zh) | 一种面向移动恶意网页的多设备组合优化的实时检测系统 | |
CN115168857A (zh) | 恶意软件检测优化方法、系统、终端及存储介质 | |
Wang et al. | Kangaroo: Accelerating string matching by running multiple collaborative finite state machines | |
Lee | Hardware architecture for high-performance regular expression matching | |
CN110889035A (zh) | 敏感信息过滤方法、装置及计算机可读存储介质 | |
CN115801020B (zh) | 确定有限状态自动机压缩方法、匹配方法、设备及介质 | |
Ssebulime | Email classification using machine learning techniques | |
CN104714995A (zh) | 用于遍历为具有高级特征的正则表达式图样生成的非确定有限自动机(nfa)的系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |