CN112769813B - 一种多前缀掩码五元组的匹配方法 - Google Patents
一种多前缀掩码五元组的匹配方法 Download PDFInfo
- Publication number
- CN112769813B CN112769813B CN202011644568.9A CN202011644568A CN112769813B CN 112769813 B CN112769813 B CN 112769813B CN 202011644568 A CN202011644568 A CN 202011644568A CN 112769813 B CN112769813 B CN 112769813B
- Authority
- CN
- China
- Prior art keywords
- quintuple
- matching
- regular
- prefix mask
- destination
- 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
Images
Classifications
-
- 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/03—Protocol definition or specification
-
- 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/08—Protocols for interworking; Protocol conversion
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种多前缀掩码五元组的匹配方法,通过对规则进行特定的格式转换,使得每条规则转换为一条正则表达式,将正则表达式集合进行编译得到特定数据表,将该数据表导入特定的正则匹配引擎进行匹配即可得到任意多个匹配结果。实现在通用处理器平台上,进行大量的前缀掩码规则匹配,可一次得到足够多的匹配成功的结果,且取得较高性能,可应用于商业应用场景。
Description
技术领域
本发明涉及网络通信技术领域,特别涉及一种多前缀掩码五元组的匹配方法。。
背景技术
多前缀掩码五元组的匹配指对一个待匹配五元组在一个规则集合中进行匹配,得到一个或多个匹配成功的结果。该规则集合可能包含数万、数十万甚至更多个规则。在一些应用场景中,需要对报文的五元组进行规则集合匹配,根据匹配结果进行相应处理。通常多前缀掩码五元组的匹配存在以下三种实现方法:
方法1、使用TCAM(ternary content addressable memory)芯片来存储规则集并对输入流量进行查找匹配。
方法2、使用通用处理器对规则集中每条规则进行逐条前缀掩码匹配,找到所有结果。
方法3、使用通用处理器对规则集中每个规则的各个元组进行拆分,每个元组进行前缀掩码匹配,匹配到每个中间结果可能对应到多条规则。最终得到5个元组匹配结果集合,整合该5个集合,即可得到最终的匹配成功的所有规则。
但是,上述方法存在如下缺陷:
方法1中,该方法必须依赖于支持TCAM的FPGA或专用ASIC芯片才能使用。匹配速度最快。但硬件需要定制、软件的灵活性存在限制,且通常条目数有限,如果需要得到任意多个匹配的结果,需要任意多个TCAM block才能实现。
方法2中,存在处理性能低等问题。该方法逐条匹配,在大多数情况下,需要的时间与规则数量成倍数增加。
方法3中,对每个元组进行单独整合处理后,降低了前缀掩码匹配的次数,但通常每个元组得到的结果集合数量很大,对结果进行整合存在很大的运算量。
发明内容
本发明的主要目的是提出一种多前缀掩码五元组的匹配方法,旨在实现在通用处理器平台上,进行大量的前缀掩码规则匹配,可一次得到足够多的匹配成功的结果,且取得较高性能,可应用于商业应用场景。
为实现上述目的,本发明提出的一种多前缀掩码五元组的匹配方法,包括如下步骤:
S1:对前缀掩码五元组规则集合内的其中一组前缀掩码五元组规则进行进制转换和逻辑处理,并得到对应的五个子正则表达式;
S2:将步骤S1中得到的五个子正则表达式分别按照一定的顺序进行拼接,并进行整理优化,得到一个规则的正则表达式;
S3:重复步骤S1和S2,求出前缀掩码五元组规则集合内,各组前缀掩码五元组规则分别对应的正则表达式,共同构成前缀掩码五元组规则集合对应的新的正则表达式集合;
S4:对上述正则表达式集合在特定的正则引擎内进行编译,得到特定数据表;
S5:将上述的特定数据表导入步骤S4中的正则引擎内;
S6:将待匹配五元组的五元分别按照步骤S1中的进制转换规则进行转换,得到五个子字符串,并将所述五个子字符串按照步骤S2中的顺序进行拼接;
S7:将步骤S6中拼接后的字符串放入步骤5中的正则引擎中进行正则匹配,得到0个或多个匹配结果,完成该五元组的匹配;
S8:重复步骤S6和S7,对多组待匹配五元组进行匹配。
优选地,五元组包括源IP、目的IP、源端口、目的端口和协议号。
优选地,步骤S1中,进制转换包括16进制或8进制或2进制,可支持IP版本包括IPv4或IPv6。
优选地,步骤S2中,拼接顺序设置为‘源IP+目的IP+源端口+目的端口+协议号’格式。
优选地,进一步将拼接顺序设置为‘^源IP+目的IP+源端口+目的端口+协议号’格式。
优选地,所述正则引擎包括Hyperscan或Lightgrep。
与现有技术相比,本发明的有益效果是:在通用处理器平台上(如X86、ARM等平台),进行大量的前缀掩码规则匹配,可一次得到足够多的匹配成功的结果,且取得较高性能,可应用于商业应用场景。通过对规则进行特定的格式转换,使得每条规则转换为一条正则表达式,将正则表达式集合进行编译得到特定数据表,将该数据表导入特定的正则匹配引擎进行匹配即可得到任意多个匹配结果。对专用硬件依赖性较低,对关键转换细节进行优化,生成的正则表达式较为简单,可使用其他平台精简正则引擎,具有较高可移植性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
图1为本发明匹配方法流程图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
本实施例提出的一种多前缀掩码五元组的匹配方法,包括如下步骤:
S1:对前缀掩码五元组规则集合内的其中一组前缀掩码五元组规则进行进制转换和逻辑处理,并得到对应的五个子正则表达式;
S2:将步骤S1中得到的五个子正则表达式分别按照一定的顺序进行拼接,并进行整理优化,得到一个规则的正则表达式;
S3:重复步骤S1和S2,求出前缀掩码五元组规则集合内,各组前缀掩码五元组规则分别对应的正则表达式,共同构成前缀掩码五元组规则集合对应的新的正则表达式集合;
S4:对上述正则表达式集合在特定的正则引擎内进行编译,得到特定数据表;
S5:将上述的特定数据表导入步骤S4中的正则引擎内;
S6:将待匹配五元组的五元分别按照步骤S1中的进制转换规则进行转换,得到五个子字符串,并将所述五个子字符串按照步骤S2中的顺序进行拼接;
S7:将步骤S6中拼接后的字符串放入步骤5中的正则引擎中进行正则匹配,得到0个或多个匹配结果,完成该五元组的匹配;
S8:重复步骤S6和S7,对多组待匹配五元组进行匹配。
进一步地,五元组包括源IP、目的IP、源端口、目的端口和协议号。
进一步地,步骤S1中,进制转换包括16进制或8进制或2进制,可支持IP版本包括IPv4或IPv6。
以下,通过具体实施例进行说明:
如前缀掩码五元组规则集合内的某一前缀掩码五元组规则记为规则1,规则1的五元组包括源IP、目的IP、源端口、目的端口、协议号。
其中,源IP预期为192.168.0.0,源IP前缀为16;目的IP预期为110.120.208.0,目的IP前缀为19;源端口预期为65280,源端口前缀为8;目的端口预期为80,目的端口前缀为16;协议号预期为6,协议号前缀为8;
然后,对规则1进行进制转换,此处,以目的IP为例,目的IP预期转换16进制为‘6E78D000’,为该规则可匹配目的IP范围的最大值; 目的IP预期与目的IP前缀进行‘与’运算再转换为16进制为‘FFFFC000’,为该规则可匹配目的IP最小值,将最小值和最大值转换为正则表达式,其中一种写法可为‘6E78[CD][0-9A-F][0-9A-F]{2}’;根据该原理,规则1得到的五个子正则表达式为:
源IP子正则表达式:C0A8[0-9A-F] {4}
目的IP子正则表达式:6E78[CD][0-9A-F][0-9A-F]{2}
源端口子正则表达式:FF[0-9A-F]{2}
目的端口子正则表达式:0050
协议号子正则表达式:06;
将规则一对应得到的五个子正则表达式按照一定顺序进行拼接,并进行整理优化,具体地,本实施例中,拼接顺序设置为‘源IP+目的IP+源端口+目的端口+协议号’格式。从而得到拼接后的正则表达式为‘C0A8[0-9A-F] {4}6E78[CD][0-9A-F][0-9A-F]{2}FF[0-9A-F]{2}005006’,进一步对拼接顺序进行优化为‘^源IP+目的IP+源端口+目的端口+协议号’格式,得到‘^C0A8[0-9A-F]{4}6E78[CD][0-9A-F][0-9A-F]{2}FF[0-9A-F]{2}005006’,该正则表达式的字符串长度为16字节(8+8+4+4+2)。
上述正则表达式部分连续出现[0-9A-F]可进行重新整理优化。修改为‘^C0A8[0-9A-F]{4}6E78[CD][0-9A-F]{3}FF[0-9A-F]{2}005006’;
以上,为前缀掩码五元组规则集合内的某一前缀掩码五元组规则的转换过程,重复上述步骤,即可对前缀掩码五元组规则集合内的所有前缀掩码五元组规则进行转换,从而得到新的正则表达式集合。
进一步地,通过现有技术中常用的正则引擎,如Hyperscan、Lightgrep等支持多正则匹配的引擎,对上述正则表达式集合进行编译,得到特征数据表后,再导入该正则引擎中。
最后,对待匹配的五元组进行匹配,匹配时,将五元组根据上述转换规则,选择对应的进制转换规则,本实施例中,采用16进制,从而得到一字符串,并再次通过上述的拼接顺序进行拼接,得到16字节的字符串。将该字符串放入上述正则引擎中进行匹配即可得到对应的匹配结果。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (6)
1.一种多前缀掩码五元组的匹配方法,其特征在于,包括如下步骤:
S1:对前缀掩码五元组规则集合内的其中一组前缀掩码五元组规则进行进制转换和逻辑处理,并得到对应的五个子正则表达式;
S2:将步骤S1中得到的五个子正则表达式分别按照一定的顺序进行拼接,并进行整理优化,得到一个规则的正则表达式;
S3:重复步骤S1和S2,求出前缀掩码五元组规则集合内,各组前缀掩码五元组规则分别对应的正则表达式,共同构成前缀掩码五元组规则集合对应的新的正则表达式集合;
S4:对上述正则表达式集合在特定的正则引擎内进行编译,得到特定数据表;
S5:将上述的特定数据表导入步骤S4中的正则引擎内;
S6:将待匹配五元组的五元分别按照步骤S1中的进制转换规则进行转换,得到五个子字符串,并将所述五个子字符串按照步骤S2中的顺序进行拼接;
S7:将步骤S6中拼接后的字符串放入步骤5中的正则引擎中进行正则匹配,得到0个或多个匹配结果,完成该五元组的匹配;
S8:重复步骤S6和S7,对多组待匹配五元组进行匹配。
2.如权利要求1所述的多前缀掩码五元组的匹配方法,其特征在于,五元组包括源IP、目的IP、源端口、目的端口和协议号。
3.如权利要求2所述的多前缀掩码五元组的匹配方法,其特征在于,步骤S1中,进制转换包括16进制或8进制或2进制,可支持IP版本包括IPv4或IPv6。
4.如权利要求2所述的多前缀掩码五元组的匹配方法,其特征在于,步骤S2中,拼接顺序设置为‘源IP+目的IP+源端口+目的端口+协议号’格式。
5.如权利要求4所述的多前缀掩码五元组的匹配方法,其特征在于,进一步将拼接顺序设置为‘^源IP+目的IP+源端口+目的端口+协议号’格式。
6.如权利要求2所述的多前缀掩码五元组的匹配方法,其特征在于,所述正则引擎包括Hyperscan或Lightgrep。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011644568.9A CN112769813B (zh) | 2020-12-31 | 2020-12-31 | 一种多前缀掩码五元组的匹配方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011644568.9A CN112769813B (zh) | 2020-12-31 | 2020-12-31 | 一种多前缀掩码五元组的匹配方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112769813A CN112769813A (zh) | 2021-05-07 |
CN112769813B true CN112769813B (zh) | 2022-10-21 |
Family
ID=75698786
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011644568.9A Active CN112769813B (zh) | 2020-12-31 | 2020-12-31 | 一种多前缀掩码五元组的匹配方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112769813B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103259793A (zh) * | 2013-05-02 | 2013-08-21 | 东北大学 | 基于后缀自动机正则引擎构造的深度包检测方法 |
CN104468381A (zh) * | 2014-12-01 | 2015-03-25 | 国家计算机网络与信息安全管理中心 | 一种多域流规则匹配的实现方法 |
CN109766483A (zh) * | 2018-12-28 | 2019-05-17 | 平安科技(深圳)有限公司 | 正则表达式生成方法、装置、计算机设备和存储介质 |
CN111988231A (zh) * | 2020-08-20 | 2020-11-24 | 国家计算机网络与信息安全管理中心 | 一种掩码五元组规则匹配的方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7702629B2 (en) * | 2005-12-02 | 2010-04-20 | Exegy Incorporated | Method and device for high performance regular expression pattern matching |
-
2020
- 2020-12-31 CN CN202011644568.9A patent/CN112769813B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103259793A (zh) * | 2013-05-02 | 2013-08-21 | 东北大学 | 基于后缀自动机正则引擎构造的深度包检测方法 |
CN104468381A (zh) * | 2014-12-01 | 2015-03-25 | 国家计算机网络与信息安全管理中心 | 一种多域流规则匹配的实现方法 |
CN109766483A (zh) * | 2018-12-28 | 2019-05-17 | 平安科技(深圳)有限公司 | 正则表达式生成方法、装置、计算机设备和存储介质 |
CN111988231A (zh) * | 2020-08-20 | 2020-11-24 | 国家计算机网络与信息安全管理中心 | 一种掩码五元组规则匹配的方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于正则表达式的应用层协议识别加速;范慧萍等;《计算机研究与发展》;20080115;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112769813A (zh) | 2021-05-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4452183B2 (ja) | プログラマブル状態マシンのデータ構造を作成して入力単語連鎖を構文解析する方法、プログラマブル状態マシンのデータ構造を使用して入力単語連鎖に対応する結果として得られた値を検索する方法、ワイヤスピードのディープ・パケット処理を行う方法、ディープ・パケット処理のための装置、チップ埋め込み装置、およびプログラミング・コード命令を含むコンピュータ・プログラム(ディープ・パケット処理のための方法および装置) | |
US8387003B2 (en) | Pluperfect hashing | |
US7240040B2 (en) | Method of generating of DFA state machine that groups transitions into classes in order to conserve memory | |
US7240048B2 (en) | System and method of parallel pattern matching | |
US20160028766A1 (en) | Method for compressing matching automata through common prefixes in regular expressions | |
AU2006320643A1 (en) | Method and device for high performance regular expression pattern matching | |
CN113806403B (zh) | 一种在智能网卡/dpu内降低查找匹配逻辑资源的方法 | |
CN110083746B (zh) | 一种基于字符串的快速匹配识别方法和装置 | |
CN101345707A (zh) | 一种实现IPv6报文分类的方法及设备 | |
Yang et al. | Fast OpenFlow table lookup with fast update | |
CN108628953B (zh) | 一种基于fpga的并行字符串匹配算法 | |
CN111209341B (zh) | 区块链的数据存储方法、装置、设备及介质 | |
CN114995878A (zh) | 一种自动生成网络数据转发面驱动代码的方法 | |
CN112769813B (zh) | 一种多前缀掩码五元组的匹配方法 | |
US8694536B2 (en) | Fast matching for content-based addressing | |
CN108549679B (zh) | 用于url分析***的文件扩展名快速匹配方法和装置 | |
CN113688289B (zh) | 数据包关键字段匹配方法、装置、设备及存储介质 | |
US20140214748A1 (en) | Incremental dfa compilation with single rule granularity | |
Sun | An improved PLC-trie based routing table design for variable length IP address lookup | |
CN113286013B (zh) | 一种子网匹配方法和装置 | |
CN117349409B (zh) | 一种基于fpga的快速正则表达式匹配实现***及方法 | |
Kaczmarski et al. | Radix tree for binary sequences on GPU | |
CN117240947B (zh) | 一种报文处理方法、装置及介质 | |
CN116471344B (zh) | 一种数据报文的关键字提取方法、装置及介质 | |
JP3443356B2 (ja) | パケット分類装置 |
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 |