CN104283736B - 一种基于改良自动状态机的网络通信五元组快速匹配算法 - Google Patents

一种基于改良自动状态机的网络通信五元组快速匹配算法 Download PDF

Info

Publication number
CN104283736B
CN104283736B CN201410393270.3A CN201410393270A CN104283736B CN 104283736 B CN104283736 B CN 104283736B CN 201410393270 A CN201410393270 A CN 201410393270A CN 104283736 B CN104283736 B CN 104283736B
Authority
CN
China
Prior art keywords
tuple
state machine
matched
automatic state
data
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
Application number
CN201410393270.3A
Other languages
English (en)
Other versions
CN104283736A (zh
Inventor
朱永强
朱正富
杨光明
郑童瀚
黄晓强
秦疏婷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CHENGDU WANGAN TECHNOLOGY DEVELOPMENT Co Ltd
Original Assignee
CHENGDU WANGAN TECHNOLOGY DEVELOPMENT Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by CHENGDU WANGAN TECHNOLOGY DEVELOPMENT Co Ltd filed Critical CHENGDU WANGAN TECHNOLOGY DEVELOPMENT Co Ltd
Priority to CN201410393270.3A priority Critical patent/CN104283736B/zh
Publication of CN104283736A publication Critical patent/CN104283736A/zh
Application granted granted Critical
Publication of CN104283736B publication Critical patent/CN104283736B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于改良自动状态机的网络通信五元组(源IP、目的IP、源端口、目的端口、协议号)快速匹配算法,所述算法包括:五元组单元分割模块,用于构建失配碰撞域;混合自动状态机模块,用于实现点与段数据的统一匹配;通配符映射模块,用于解决匹配中的通配符匹配问题;通配规则计算模块,用于减小通配符映射造成的冗余操作。本算法的特色在于:尽可能提取五元组中静态参数构建普通自动状态机,构建更大的碰撞域,对于段式参数,在自动状态机后添加链表,形成混合自动状态机结构,实现对段式参数匹配的支持;利用通配符映射,解决通配符匹配问题,并精确通配替换规则,减少冗余计算。本发明算法可广泛应用于入侵检测系统、网络黑白名单库、网络数据分析等产品中。

Description

一种基于改良自动状态机的网络通信五元组快速匹配算法
技术领域
本发明属于网络通信领域,特别涉及一种基于改良自动状态机的网络通信五元组快速匹配算法。
背景技术
随着计算机科学技术的发展,尤其是互联网技术的发展,网络通信技术变得愈发重要。网络通信技术中,一般通过比对网络通信信息(网络通信五元组,即源IP、源端口、目的IP、目的端口、协议号)的一致性,来监控通信实体间的通信源信息和目的信息,进而判断其是否异常。尤其在入侵检测防御领域,系统需要配置一些网络通信黑名单库(规则库)或者白名单库,以对经过某个网络通信节点的网络信息进行监控,判断其是否在黑名单和白名单库中,从而采取相应的措施。
目前主流的通信信息系统中都用到了多模式匹配算法来完成上述任务。AC、ACBM、WM等都是成熟的多模式匹配算法。这些算法的特点是匹配时间效率不与模式(规则)库的数据量有关系,而只与待匹配数据量有关,提高了在模式库信息量非常大情况下的匹配效率,但同时也存在算法的存储空间消耗随匹配单元值取值范围增大而激增的缺点。
典型的网络通信系统中,一般规则为单点信息(五元组参数均为定值)组成。同时,规则库信息(IP、端口)还存在通配和数据段的情况。如在一个通信系统中,不需要关注源IP而只需要关注除源IP以外的其他信息,通常做法是将源IP设置为通配,表示任意IP都可以匹配,其他信息依照实际情况填写。又如,在一个通信系统中,只关注源IP的某一个段区间,源IP的其他段不需要关注,则通常做法是将网络通信五元组中源IP填写为段数据,具体格式如[192.168.0.1,192.168.0.128]。通常情况下,在IP中分段关注的情况比较多,而端口和协议号的分段情况较为少见。根据IP的特点,IP段存在于IP的尾部,IP段的长度越长,则IP段范围越大,相反,则IP段所表示的范围越小。通常情况下,通信系统中所关注的IP段范围一般在IP的后16位,而IP段长度超出16位的情况较为少见。
多模式匹配算法不能很好的应用于含有IP段和通配符的五元组信息库中,故目前主流的通信系统中,一般将规则库分为只包含单点信息的规则库、包含IP段信息的规则库以及包含通配信息的规则库,然后运用多模式匹配算法处理单点信息规则库。对包含IP段信息或包含通配信息的规则库,只能用遍历规则库或为规则库做hash的方式对待匹配通信信息进行匹配,效率较低并且时间、空间效率不能兼顾。若想让两种规则库的匹配都能运用多模式匹配算法,只能将包含IP段和包含通配的五元组信息拆分为单点五元组信息,再运用多模式匹配算法。这样,虽然可以显著的提高匹配的时间效率,但会更加凸显多模式匹配算法消耗内存过大的缺陷。
故需要寻求一种可以处理含有IP段信息和含有通配信息的快速匹配算法,以更好的提高网络通信信息匹配过程中的时间效率和空间效率。
发明内容
为解决网络通信中通信五元组与规则库匹配响应时间长,规则库存储空间大等缺点,本发明提出了一种基于改良自动状态机的网络通信五元组快速匹配算法,所述方案包括:
一种根据输入五元组的结构,对待匹配数据进行分割与转换的方法,其特征在于,所述方法包括:
对不同类型的五元组数据分别进行分割转换,为后期的匹配提供支持。
具体为:
设原始输入五元组为IP1(单点源IP)、Port1(源端口)、IP2(单点目的IP)、Port2(目的端口)、Protocol(协议号)或[IP11,IP12](段源IP)、Port1(源端口)、[IP21,IP22](段目的IP)、Port2(目的端口)、Protocol(协议号)。
其中,如果五元组中的某个IP为段IP,则将五元组中的其他IP同样视为段IP,即如果五元组中其他IP为单点IP,则将其变换为[原单点IP,原单点IP]。
步骤1,针对含有通配符的输入五元组,将通配符用数字0替换,如:某一条五元组中源IP为通配,具体为*、Port1、IP2、Port2、Protocol(*为通配符),则替换后的五元组为0、Port1、IP2、Port2、Protocol。
步骤2,统一规则及待匹配五元组的格式。分割五元组中的IP以及端口号,各端口号分割为两段,每段长度为8位,即将Port1分割为p1、p2,将Port2分割为p3、p4,p1、p2、p3、p4长度均为8位,分割IP时存在如下两种情况:
针对不含段式参数的五元组,将IP分割为四段,每段长度为8位,即将IP1分害为ipsec1、ipsec2、ipsec3、ipsec4,将IP2分割为ipsec5、ipsec6、ipsec7、ipsec8
针对含段式参数的五元组,先将IP分为两段,每段长度为16位,一般情况下IP前16位为常量,将前16位再次分割为两段,每段长度为8位,而后16位不再拆分,记为一个数值区间段。具体为,将段[IP11,IP12]分割为ipsec1、ipsec2、[ipsec起始,ipsec结束](ipsec起始至ipsec结束为IP后十六位)。当IP前16位不为常量时,将IP前16位分割扩展为多个前16位为定值的IP常量值。
步骤3,调整输入五元组各元素的顺序,将能够在匹配时使待匹配输入尽快失配的元素前置,使匹配过程中待匹配五元组在自动状态机的失配率最高。调整方法为:将分割转换后的五元组数据根据数据分布集中度由低到高排列,将协议号置于最后。一般情况下将源、目的IP的后16位数据后置,使得单点五元组和段五元组的前部数据均为不变的单点数据,五元组匹配过程中能够尽快跳出自动状态机失配而不会进入链表查找。
具体为:
对单点五元组数据(规则或待匹配数据),
ipsec1、ipsec2、ipsec3、ipsec4、p1、p2、ipsec5、ipsec6、ipsec7、ipsec8、p3、p4、Protocol,
变换为,
p1、p2、p3、p4、ipsec1、ipsec2、ipsec5、ipsec6、ipsec3、ipsec4、ipsec7、ipsec8、Protocol;
针对段五元组数据,
ipsec1、ipsec2、[ipsec源起始,ipsec源结束]、p1、p2、ipsec5、ipsec6、[ipsec目的起始,ipsec目的结束]、p3、p4、Protocol,
变换为,
p1、p2、p3、p4、ipsec1、ipsec2、ipsec5、ipsec6、[ipsec源起始,ipsec源结束]、p1、[ipsec目的起始,ipsec目的结束]、Protocol。
一种基于对五元组的分割与变换,构建混合自动状态机的方法。其特征在于,所述方法包括:
针对无段式参数的五元组,构建普通自动状态机;
针对含段式参数的五元组,在已构建的自动状态机中常量参数末尾点连接链表,链表中存储数据为两部分,一部分为以IP后16位段的上下限为参数的数据段参数,另一部分为协议号。形成一个混合自动状态机,用于实现使用同一数据结构一次完成对五元组的匹配。
具体为:在构建自动状态机时,如果出现数据段参数,则在常量参数构成的自动状态机末尾连接一个链表,链表中以段的上下限为参数存储所有数据段参数,并将协议号存储入链表。形成一个混合自动状态机。如规则中源IP为[192.168.0.1,192.168.0.253],目的IP为192.169.0.254,协议号为TCP,则将两个IP各自的前16位(192 168 192 169)输入自动状态机后,在169这个节点后添加链表,以[0.1,0.253]、[0.254,0.254]、TCP为参数存储数据。
一种基于完整规则库,构建通配扩展矩阵,并根据通配扩展矩阵,扩展待匹配五元组数据的方法,其特征在于,所述方法包括:
根据完整五元组规则库,构建通配符替换规则矩阵,以下简称扩展矩阵;
其中,分析通配符在五元组信息的分布情况,除协议号(其通配情况在匹配时特殊处理)之外的其他四个参数都可能出现通配符,则通配符在五元组中可能出现的情况总数为24=16种。每一种情况构成一个由4个元素组成的行向量,向量元素依次表示五元组中相应的IP、端口位置是否出现通配符。由代表16种通配分布情况的行向量组成一个完整的通配符分布情况矩阵。根据完整五元组规则库中通配符分布情况,计算得出相应的通配分布行向量(完整通配符分布行向量的子集)组成扩展矩阵,再对此扩展矩阵进行进行简化,去除不含1的行数,得到精简的扩展矩阵。
具体为:
如通配替换后的规则为0·X·X·X,X·0·0·X,X·X·0·0,生成一个扩展矩阵如下,矩阵中M代表相应位置没有通配符,1代表相应位置有通配符,则生成替换规则矩阵
根据生成的扩展矩阵,对待匹配五元组进行通配扩展;
扩展方法为,将待匹配五元组数据扩展为与扩展矩阵行数相同的含通配符的五元组数据组,并将原五元组自身加入扩展五元组数据组。通过五元组数据与扩展行向量的对照,将某些五元组数据中参数变为0。方法为,读取每个扩展矩阵行向量,得到行向量中元素为0的位置信息,将每条五元组数据中相应位置变为0。
具体为:
设替换规则为待匹配五元组为A、B、C、D,E(E为协议号,不考虑通配问题,故N矩阵与P矩阵的前四列对应),则通配扩展后的待匹配五元组为
一种基于通配扩展后的五元组数据和混合自动状态机的快速匹配方法,其特征在于,所述方法包括:
将待匹配五元组输入混合自动状态机进行匹配,匹配情况有两种,一种是在链表层之前,一种是在链表层之后。
在链表层之前匹配时,按普通自动状态机匹配,匹配成功则在进入链表层之后继续匹配;匹配失败,则跳出自动状态机,说明待匹配五元组整体匹配失败。
在链表层及链表层之后匹配,首先按普通自动状态机匹配,直到成功匹配到最后一个节点;匹配失败,则跳入链表层进行匹配。特殊的,当匹配到最后一个节点时,如果最后一个节点数据为0,则匹配成功,不为0则按普通自动状态机匹配。
进入链表进行匹配,首先判断待匹配五元组两个IP的后16位是否均存在于链表参数区间内,其次判断协议号是否匹配,特殊的,当链表中协议号为0时,则认为匹配成功,若失配则进入下一个链表节点继续匹配,直到匹配成功或失配跳出。
本发明所提供的技术方案的有益效果是:
能够使用同一数据结构一次完成对五元组的匹配。通过分割提取五元组中静态参数构建普通自动状态机,从而构建更多的碰撞域,保证尽快失配;针对五元组中段式参数,在自动状态机后添加链表,实现对带有段式参数五元组匹配的支持;通过通配符替换算法,可以实现五元组对通配符匹配的支持,并通过规定通配替换的计算规则,防止漏解并减少冗余计算。
附图说明
图1是本算法基于改良自动状态机的网络通信五元组快速匹配的整体流程示意图。
图2是本算法基于对五元组的分割与变换,构建混合自动状态机的示意图。
图3为本算法基于根据调整顺序后的规则五元组,构建自动状态机的流程示意图。
图4为本算法基于改良自动状态机的网络通信五元组快速匹配的整体流程示意图。
具体实施方式
为使本发明之目的、技术方案和优点阐述更加清晰,下面将结合附图与实际用例,对本发明做进一步的详细描述。
图1为本算法对于基于改良自动状态机的网络通信五元组快速匹配算法整体流程示意图,共有四个关键模块,每个模块的具体功能与实现如下:
101本发明所述的根据输入规则五元组的结构,对规则五元组进行分割转换的方法具体如下:
针对不同类型的五元组数据分别进行分割转换,首先判断五元组中是否含有通配符,对含有通配符的五元组进行通配处理,通配处理后再判断五元组中是否含有段式参数,对含有段式参数的五元组进行特殊分割处理,不含段式参数的五元组进行普通分割。
具体为:
步骤1,针对含有通配符的实际规则五元组,将通配符用数字0替换,如:某一条规则五元组为*、A、B、C、D(*为通配符),则替换后的五元组为0、A、B、C、D。
步骤2,统一实际规则五元组的格式。分割五元组中的IP以及端口号,各端口号分割为两段,每段为8位,分割IP时存在如下两种情况:
针对不含段式参数的五元组,将IP分割为四段,每段长度为8位,如一条五元组的一个IP为192.168.0.254,分割后的IP成为192、168、0、254四个数据段;
针对含段式参数的五元组,将IP分割为两段,每段长度为16位,一般情况下IP前16位为常量,将前16位再次分割为两段,每段长度为8位,如一条实际规则五元组的一个IP为192.168.0.1至192.168.0.254,分割后的该五元组IP成为192、168、0.1至0.254三个数据参数,当IP前16位不为常量,将IP前16位分割扩展为多个前16位为定值的数据参数,再将前16位分割为每段长度为8位的数据段,如一条实际规则五元组的一个IP为192.168.0.1至192.169.0.254,则分割后的该五元组IP为192、168、0.1至0.254,192、169、0.1至0.254。
步骤3,调整输入五元组各元素的顺序,构建更大的碰撞域。调整方法为:
针对单点五元组数据(规则或待匹配数据)ipsec1、ipsec2、ipsec3、ipsec4、p1、p2、ipsec5、ipsec6、ipsec7、ipsec8、p3、p4、Protocol,变换为ipsec1、ipsec2、ipsec5、ipsec6、p1、p2、p3、p4、ipsec3、ipsec4、ipsec7、ipsec8、Protocol。如一条分割后的规则五元组为192、168、0、254、04、B0、121、14、88、76、07、D0、TCP,调整顺序后的五元组为04、B0、07、D0、192、168、121、14、0、254、88、76、TCP。
针对段五元组数据ipsec1、ipsec2、ipsec源起始至ipsec源结束、p1、p2、ipsec5、ipsec6、ipsec目的起始至ipsec目的结束、p3、p4、Protocol,变换为p1、p2、p3、p4、ipsec1、ipsec2、ipsec5、ipsec6、ipsec源起始至ipsec源结束、p1、ipsec目的起始至ipsec目的结束、Protocol。如一条分割后的规则五元组为192、168、0.1至0.254、04、B0、121、14、88.75至88.76、07、D0、TCP,调整顺序后的五元组为04、B0、07、D0、192、168、121、14、0.1至0.254、88.75至88.76、TCP。
102本发明所述的基于对规则五元组的分割与变换,构建混合自动状态机的算法具体如下:
构建自动状态机时,会出现两种类型的五元组,一种为含段式参数的五元组,一种为普通五元组,本发明将两种类型的五元组统一在一个混合自动状态机中,具体操作如下:
针对无段式参数的五元组,构建普通自动状态机;
针对含段式参数的五元组,在常量参数构成的自动状态机末尾连接链表,链表中存储数据为两部分,一部分为以段的上下限为参数的数据段参数,另一部分为协议号。形成一个混合自动状态机,用于实现使用同一数据结构一次完成对五元组的匹配。
在构建自动状态机时,如果出现数据段参数,则在常量参数构成的自动状态机末尾连接一个链表,链表中以段的上下限为参数存储所有数据段参数,并将协议号存储入链表。形成一个混合自动状态机。如规则中源IP为192.168.0.1至192.168.0.253,目的IP为192.168.0.254,协议号为TCP,则将两个IP各自的前16位输入自动状态机后,在168这个节点后添加链表,以0.1至0.253、0.254至0.254、TCP为参数存储数据[0.1至0.2530.254至0.254TCP]。
图2为本算法基于对规则五元组的分割与变换,构建混合自动状态机的示意图。
103本发明所述的对待匹配五元组进行初始化的方法具体如下:
1)根据通配替换后的规则五元组,确定替换规则。
如通配替换后的规则为0、X、X、X、X,X、0、0、X、X,X、X、0、0、0,根据该规则生成简单的替换规则矩阵,本发明采用的方法为,将规则中的数字0转换为数字1,表示该位置还有通配符,其余位置转换为数字M,表示该位置不含有通配符,则生成替换规则矩阵
2)根据生成的替换规则,对待匹配五元组进行通配扩展。扩展方法为,将待匹配五元组根据替换规则中的每一行进行扩展,需要转换的位置只有替换规则中数字1的位置转换为数字0,而数字0的位置,令待匹配五元组中的元素不变。
设替换规则为待匹配五元组为A、B、C、D、E,则通配扩展后的待匹配五元组为
最后将原待匹配五元组本身加入扩展匹配五元组,形成待匹配扩展五元组集合。
3)如101中的步骤2、步骤3操作。
104本发明所述的基于通配扩展后的五元组数据和混合自动状态机的快速匹配方法,具体如下:
根据扩展后的多个子五元组组成的五元组集合,将其输入混合自动状态机进行匹配,匹配过程为:
将待匹配五元组输入混合自动状态机进行匹配,匹配情况有两种,一种是在链表层之前,一种是在链表层之后。
在链表层之前匹配时,按普通自动状态机匹配,匹配成功则在进入链表层之后继续匹配;匹配失败,则跳出自动状态机,说明待匹配五元组整体匹配失败。
在链表层及链表层之后匹配,首先按普通自动状态机匹配,直到成功匹配到最后一个节点;匹配失败,则跳入链表层进行匹配。特殊的,当匹配到最后一个节点时,如果最后一个节点数据为0(协议号的通配情况),则匹配成功,不为0则按普通自动状态机匹配。
进入链表进行匹配,首先判断待匹配五元组两个IP的后16位是否均存在于链表参数区间内,其次判断协议号是否匹配,特殊的,当链表中协议号为0时,则认为匹配成功,若失配则进入下一个链表节点继续匹配,直到匹配成功或失配跳出。
以下以上述过程确定参数为标准,对应用实例进行说明。
实施例1
设一个实际规则五元组为:
192.16.0.18、2000、192.168.0.1至192.168.0.254、2000、TCP,192.167.0.18至192.168.0.254、*、*、2000、UDP,192.16.0.18、2000、192.168.1.1、1200、TCP
待匹配五元组为:
192.168.0.18、1500、192.168.0.254、2000、UDP。
步骤1:首先判断出规则五元组中含有通配符,将所有通配符进行通配处理,处理后的规则五元组为:
192.16.0.18、2000、192.168.0.1至192.168.0.254、1200、TCP,192.167.0.18至192.168.0.254、0、0、2000、UDP,192.16.0.18、2000、192.168.0.1至192.168.0.254、1200、TCP。
步骤2:将通配处理后的规则五元组的端口分割为两段,每段长度为8位,判断五元组中存在段的情况,将五元组进行分割,对于192.168.0.1至192.168.0.254,将前16位与后16位分割,得到192.168、0.1至0.254两段,再将前16位分割,成为192、168、0.1至0.254;针对192.167.0.18至192.168.0.254将其分割为192.167.0.18至192.167.0.254和192.168.0.18至192.168.0.254,再将前16位与后16位分割,得到192.167、0.18至0.254和192.168、0.18至0.254,一共四段,再将前16位分割,得到192、168、0.18至0.254和192、168、0.18至0.254,一共六段。不存在段情况的五元组则将IP分割为四段,每段长度为8位,最终得到分割后的实际规则五元组为192、16、0、18、07、7D、192、168、0.1至0.254、04、B0、TCP,192、167、0.18至0.254、0、0、0、0、0、0、07、7D、UDP,192、168、0.18至0.254、0、0、0、0、0、0、07、7D、UDP,192、16、0、18、07、7D、192、168、1、1、04、B0、TCP。
步骤3:将转换后的规则五元组进行顺序的调整,规则五元组调整为:
07、7D、04、B0、192、16、192、168、0、18、0.1至0.254、TCP,0、0、07、7D、192、167、0、0、0.18至0.254、0、0、UDP,0、0、07、7D、192、168、0、0、0.18至0.254、0、0、UDP,07、7D、04、B0、192、16、192、168、0、18、1、1、TCP。
步骤4:针对无段式参数的规则五元组,构建普通自动状态机;针对含段式参数的规则五元组,在常量参数构成的自动状态机末尾连接链表,链表中存储数据为两部分,一部分为以段的上下限为参数的数据段参数,另一部分为协议号。形成一个混合自动状态机,具体参见图3。
步骤5:对待匹配五元组进行初始化,具体操作过程为:
首先根据通配替换后的矩阵得到替换规则矩阵为N=[M 1 1 M],再根据通配替换规则,对待匹配五元组进行通配扩展,扩展后的待匹配五元组为P=[192.168.0.18 0 02000 UDP],最后进行待匹配五元组的统一格式和调整顺序的操作,得到初始化后的待匹配五元组05、DC、07、7D、192、168、192、168、0、18、0、254、UDP。
步骤6:将待匹配五元组输入混合自动状态机进行匹配。发现待匹配五元组与替换后规则五元组中的0、0、07、7D、192、168、0、0、0.18至0.254、0、0、UDP匹配,即与实际规则五元组中的192.167.0.18至192.168.0.254、*、*、2000、UDP匹配,匹配成功。
图4为上述快速匹配过程的整体流程示意图。
本发明实施例所提供的技术方案,可广泛应用于含有段式参数以及通配符规则的快速匹配,并可根据通配矩阵用于入侵检测系统、网络黑白名单库、网络数据分析等产品中。
本发明实施例中的具体步骤,可以通过软件变成实现,相应的软件程序可存储于可读取的存储介质中,如光盘、硬盘、移动存储介质等。
以上为本发明的具体实施例,但并不用以限制本发明,对于本技术领域的普通技术人员来说,凡在不脱离本发明原理的前提下,所做的任何修改、等同替换、改进等,均应包含在本发明的保护发明范围之内。

Claims (9)

1.一种根据输入五元组的结构,对五元组数据进行分割与转换的方法,其特征在于,所述方法包括:
针对含有通配符的输入五元组,将通配符用数字0替换;
分割五元组中的IP以及端口号,以统一五元组规则及待匹配五元组的格式;
调整输入五元组各元素的顺序,得到经过变换后的五元组规则数据,供后续使用;
其中,分割五元组中的IP以及端口号,以统一五元组规则及待匹配五元组的格式,具体为:
分割五元组中的IP以及端口号,端口号分割为两段,每段长度为8位,分割IP时存在如下两种情况:
针对不含段式参数的五元组,将IP分割为四段,每段长度为8位;
针对含段式参数的五元组,将IP前16位分割为两段,每段长度为8位,而后16位不再拆分,即为一个数值区间段;具体为,将IP段区间[IP11,IP12]分割为ipsec1、ipsec2、[ipsec起始,ipsec结束],其中,ipsec1为IP11与IP12的A段的值,ipsec2为IP11与IP12的B段的值,ipsec起始为IP11的后十六位,ipsec结束为IP12的后十六位。
2.如权利要求1所述的对五元组数据进行分割与转换的方法,其特征在于,针对含有通配符的输入五元组,将通配符用数字0替换掉,具体为:某一条五元组中源IP为通配,若五元组规则为*、Port1、IP2、Port2、Protocol,则替换后的五元组为0、Port1、IP2、Port2、Protocol,其中,*表示通配符。
3.如权利要求2所述的对五元组数据进行分割与转换的方法,其特征在于,当IP段参数出现在IP前16位,使得IP前16位不是常量时,根据所述IP段参数将IP前16位分割为多个前16位为定值的IP常量值。
4.如权利要求1所述的对五元组数据进行分割与转换的方法,其特征在于,调整输入五元组各元素的顺序,得到经过变换后的五元组规则数据,具体为:
将能够在匹配时使匹配输入尽快失配的元素前置,使匹配过程中待匹配五元组在自动状态机的失配率最高,具体调整方法为:将分割转换后的五元组数据根据数据分布集中度由低到高排列,将协议号置于最后;一般情况下将源、目的IP的后16位数据后置,使得单点五元组和段五元组的前部数据均为不变的单点数据,五元组匹配过程中能够尽快跳出自动状态机失配而不会进入链表查找。
5.一种基于对五元组的分割与转换,构建混合自动状态机的方法,其特征在于,所述方法包括:
基于权利要求1-4任一项所述的对五元组数据进行分割与转换的方法,将无段式五元组规则和含段式五元组规则统一构建混合自动状态机;
其中,针对无段式参数的五元组,构建普通自动状态机;
针对含段式参数的五元组,在当前规则常量参数构成的自动状态机末尾连接链表。
6.如权利要求5所述的构建混合自动状态机的方法,其特征在于,针对含段式参数的五元组,在当前规则常量参数构成的自动状态机末尾连接链表,具体为:
链表中存储数据为两部分,一部分为以段的上下限位参数的数据段参数,另一部分为协议号,形成一个混合自动状态机;在构建自动状态机时,如果出现数据段参数,则在当前规则常量参数构成的自动状态机末尾连接一个链表,链表中以段的上下限为参数存储所有数据段参数,并将协议号存储入链表,形成混合自动状态机;如规则中源IP为192.168.0.1~192.168.0.253,目的IP为192.169.0.254,协议号为TCP,则将两个IP各自的前16位输入自动状态机后,在169这个节点后添加链表,以0.1~0.253、0.254~0.254、TCP为例,存储形式为[0.1~0.253,0.254~0.254,TCP]。
7.一种构建通配扩展规则矩阵,并根据通配扩展矩阵,扩展待匹配五元组数据的方法,其特征在于,所述方法包括:
根据完整五元组规则库,构建通配符替换规则矩阵;
根据生成的替换规则矩阵,对待匹配五元组进行通配扩展;
其中,根据完整五元组规则库,构建通配符替换规则矩阵,具体为:
针对每一条五元组规则,计算得出一个由4个元素组成的行向量,向量元素依次表示五元组中相应的IP、端口的通配符出现情况,如对应位置元素为通配符,则对应值为1,否则为某一统一非1定定值M,将所有行向量组成替换规则矩阵;
再对得到的矩阵进行简化,去除不含1的行向量,得到精简的由通配分布行向量组成扩展矩阵,此矩阵内行向量即为所有的通配替换规则,而此矩阵行数即为一条待匹配规则要扩展的通配扩展五元组个数。
8.如权利要求7所述的方法,其特征在于,根据生成的替换规则矩阵,对待匹配五元组进行通配扩展,具体为:
将待匹配五元组数据扩展为含0的五元数据组,数组个数与扩展矩阵行数相同,通过待匹配五元组数据与扩展矩阵每个行向量的对照,将待匹配五元组数据中相应参数变换,具体为:读取扩展矩阵的每个行向量,得到行向量中元素为1的位置信息,将待匹配五元组数据中相应位置变为0,生成一条待匹配五元组扩展副本,依次进行,直至生成全部待匹配五元组扩展副本;
设替换规则为待匹配五元组为A、B、C、D、E,则通配扩展后的待匹配五元组为
9.一种基于通配扩展后的五元组数据和混合自动状态机的快速匹配方法,其特征在于,所述混合自动状态机包括普通自动状态机及连接在所述普通自动状态机中常量参数末尾点的链表;所述方法包括:
将待匹配五元组输入混合自动状态机进行匹配,匹配情况有两种,一种是在链表之前的匹配,一种是在链表之后的匹配,所述待匹配五元组包括原始待匹配五元组及经权利要求1-4任一项所述的方法处理后的待匹配五元组;
所述在链表之前的匹配包括:通过普通自动状态机匹配,匹配成功则在进入所述链表之后继续进行匹配;匹配失败,则跳出自动状态机,说明待匹配五元组整体匹配失败;
所述在链表之后的匹配包括:首先通过普通自动状态机进行匹配,直至成功匹配到最后一个节点;匹配失败,则进入所述链表进行匹配;特殊地,当匹配到最后一个节点时,如果最后一个节点数据为0,则匹配成功,不为0则通过普通自动状态机匹配;
进入所述链表进行匹配包括:首先判断待匹配五元组两个IP的后16位是否均存在于相应链表参数区间内,段参数匹配成功后判断协议号是否匹配;特殊地,当链表中协议号为0时,则认为匹配成功,若失败则进入下一链表节点继续匹配,直到匹配成功或失配跳出。
CN201410393270.3A 2014-08-03 2014-08-03 一种基于改良自动状态机的网络通信五元组快速匹配算法 Active CN104283736B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410393270.3A CN104283736B (zh) 2014-08-03 2014-08-03 一种基于改良自动状态机的网络通信五元组快速匹配算法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410393270.3A CN104283736B (zh) 2014-08-03 2014-08-03 一种基于改良自动状态机的网络通信五元组快速匹配算法

Publications (2)

Publication Number Publication Date
CN104283736A CN104283736A (zh) 2015-01-14
CN104283736B true CN104283736B (zh) 2018-05-22

Family

ID=52258242

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410393270.3A Active CN104283736B (zh) 2014-08-03 2014-08-03 一种基于改良自动状态机的网络通信五元组快速匹配算法

Country Status (1)

Country Link
CN (1) CN104283736B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105763531B (zh) * 2016-01-04 2019-04-09 新华三技术有限公司 一种报文检测方法及装置
CN106230725B (zh) * 2016-07-14 2019-09-06 杭州迪普科技股份有限公司 网包规则集的分类方法及装置
CN107622020B (zh) * 2017-09-06 2020-09-25 网宿科技股份有限公司 一种数据存储方法、访问方法及装置
CN109150584B (zh) * 2018-07-04 2022-02-25 北京中创腾锐技术有限公司 一种基于simd指令的为网络分组分类提供加速支持的方法
CN112866229B (zh) * 2021-01-13 2022-09-06 中国人民解放军国防科技大学 一种基于状态图的高速网络流量识别方法及系统

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102111331A (zh) * 2010-12-17 2011-06-29 曙光信息产业(北京)有限公司 一种基于hash表实现的带掩码五元组规则的匹配方法
CN103685221A (zh) * 2013-09-05 2014-03-26 北京科能腾达信息技术股份有限公司 网络入侵检测方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8068431B2 (en) * 2009-07-17 2011-11-29 Satyam Computer Services Limited System and method for deep packet inspection

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102111331A (zh) * 2010-12-17 2011-06-29 曙光信息产业(北京)有限公司 一种基于hash表实现的带掩码五元组规则的匹配方法
CN103685221A (zh) * 2013-09-05 2014-03-26 北京科能腾达信息技术股份有限公司 网络入侵检测方法

Also Published As

Publication number Publication date
CN104283736A (zh) 2015-01-14

Similar Documents

Publication Publication Date Title
CN104283736B (zh) 一种基于改良自动状态机的网络通信五元组快速匹配算法
CN108370352B (zh) 使用网络处理器的高速灵活分组分类
Zhou et al. High-performance packet classification on GPU
Abel et al. Genetic algorithms and the search for viable string vacua
US9595003B1 (en) Compiler with mask nodes
CN109818961B (zh) 一种网络入侵检测方法、装置和设备
CN104915717A (zh) 数据处理方法、知识库推理方法及相关装置
EP2830260B1 (en) Rule matching method and device
US10425343B2 (en) Packet classification
CN107947965A (zh) 服务链编译器
CN104253754B (zh) 一种acl快速匹配的方法和设备
CN105630797A (zh) 数据处理方法及系统
Yang et al. PiDFA: A practical multi-stride regular expression matching engine based on FPGA
CN110505322A (zh) 一种ip地址段查找方法及装置
CN109376789B (zh) 一种网络包分类算法与系统
CN106302236A (zh) 一种数据分流的方法及接入设备
Chomsiri et al. Hybrid tree-rule firewall for high speed data transmission
Zhou et al. Research and improvement of encrypted traffic classification based on convolutional neural network
CN105573726B (zh) 一种规则处理方法及设备
CN107888494A (zh) 一种基于社区发现的包分类方法及系统
CN107835175A (zh) 采用平衡二叉树算法的网络连接跟踪方法
CN109684185B (zh) 基于启发式遍历的超级计算机大数据处理能力测试方法
Kekely et al. Packet classification with limited memory resources
CN113034343B (zh) 参数自适应的高光谱图像分类gpu并行方法
CN109165325A (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
GR01 Patent grant
GR01 Patent grant