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

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

【技术领域】
[0001]本发明属于网络通信领域,特别涉及一种基于改良自动状态机的网络通信五元组快速匹配算法。

【背景技术】
[0002]随着计算机科学技术的发展,尤其是互联网技术的发展,网络通信技术变得愈发重要。网络通信技术中,一般通过比对网络通信信息(网络通信五元组,即源IP、源端口、目的IP、目的端口、协议号)的一致性,来监控通信实体间的通信源信息和目的信息,进而判断其是否异常。尤其在入侵检测防御领域,系统需要配置一些网络通信黑名单库(规则库)或者白名单库,以对经过某个网络通信节点的网络信息进行监控,判断其是否在黑名单和白名单库中,从而采取相应的措施。
[0003]目前主流的通信信息系统中都用到了多模式匹配算法来完成上述任务。AC、ACBM、WM等都是成熟的多模式匹配算法。这些算法的特点是匹配时间效率不与模式(规则)库的数据量有关系,而只与待匹配数据量有关,提高了在模式库信息量非常大情况下的匹配效率,但同时也存在算法的存储空间消耗随匹配单元值取值范围增大而激增的缺点。
[0004]典型的网络通信系统中,一般规则为单点信息(五元组参数均为定值)组成。同时,规则库信息(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位的情况较为少见。
[0005]多模式匹配算法不能很好的应用于含有IP段和通配符的五元组信息库中,故目前主流的通信系统中,一般将规则库分为只包含单点信息的规则库、包含IP段信息的规则库以及包含通配信息的规则库,然后运用多模式匹配算法处理单点信息规则库。对包含IP段信息或包含通配信息的规则库,只能用遍历规则库或为规则库做hash的方式对待匹配通信信息进行匹配,效率较低并且时间、空间效率不能兼顾。若想让两种规则库的匹配都能运用多模式匹配算法,只能将包含IP段和包含通配的五元组信息拆分为单点五元组信息,再运用多模式匹配算法。这样,虽然可以显著的提高匹配的时间效率,但会更加凸显多模式匹配算法消耗内存过大的缺陷。
[0006]故需要寻求一种可以处理含有IP段信息和含有通配信息的快速匹配算法,以更好的提高网络通信信息匹配过程中的时间效率和空间效率。


【发明内容】

[0007]为解决网络通信中通信五元组与规则库匹配响应时间长,规则库存储空间大等缺点,本发明提出了一种基于改良自动状态机的网络通信五元组快速匹配算法,所述方案包括:
[0008]一种根据输入五元组的结构,对待匹配数据进行分割与转换的方法,其特征在于,所述方法包括:
[0009]对不同类型的五元组数据分别进行分割转换,为后期的匹配提供支持。
[0010]具体为:
[0011]设原始输入五元组为ΠΜ单点源IP)、Port^源端口)、IP2(单点目的IP)、Port2 (目的端口)、Protocol (协议号)或[IP11, IP12](段源 IP)、Port1 (源端口)、[IP21,IP22](段目的 IP)、Port2 (目的端口)、Protocol (协议号)。
[0012]其中,如果五元组中的某个IP为段IP,则将五元组中的其他IP同样视为段IP,即如果五元组中其他IP为单点IP,则将其变换为[原单点IP,原单点IP]。
[0013]步骤I,针对含有通配符的输入五元组,将通配符用数字O替换,如:某一条五元组中源IP为通配,具体为*、Portp IP2> Port2、Protocol O为通配符),则替换后的五元组为O、Port” IP2、Port2、Protocol。
[0014]步骤2,统一规则及待匹配五元组的格式。分割五元组中的IP以及端口号,各端口号分割为两段,每段长度为8位,即将Port1分割为P!、p2,将Port2分割为p3、p4,ppp2、p3、P4长度均为8位,分割IP时存在如下两种情况:
[0015]针对不含段式参数的五元组,将IP分割为四段,每段长度为8位,即将IP1分害为ipsec” ipsec2、ipsec3、ipsec4,将 IP2 分割为 ipsec5、ipsec6、ipsec7、ipsec8 ;
[0016]针对含段式参数的五元组,先将IP分为两段,每段长度为16位,一般情况下IP前16位为常量,将前16位再次分割为两段,每段长度为8位,而后16位不再拆分,记为一个数值区间段。具体为,将段[IP11, IP12]分割为ipseCp ipsec2、[ipsec起始,ipsec结束](ipsec起始至ipsec IP后十六位)。当IP前16位不为常量时,将IP前16位分割扩展为多个前16位为定值的IP常量值。
[0017]步骤3,调整输入五元组各元素的顺序,将能够在匹配时使待匹配输入尽快失配的元素前置,使匹配过程中待匹配五元组在自动状态机的失配率最高。调整方法为:将分割转换后的五元组数据根据数据分布集中度由低到高排列,将协议号置于最后。一般情况下将源、目的IP的后16位数据后置,使得单点五元组和段五元组的前部数据均为不变的单点数据,五元组匹配过程中能够尽快跳出自动状态机失配而不会进入链表查找。
[0018]具体为:
[0019]对单点五元组数据(规则或待匹配数据),
[0020]ipsec” ipsec2、ipsec3、ipsec4、p” p2、ipsec5、ipsec6、ipsec7、ipsec8、p3、p4、Protocol,
[0021]变换为,
[0022]P1' p2、p3、p4、ipsec” ipsec2、ipsec5、ipsec6、ipsec3、ipsec4、ipsec7、ipsec8、Protocol ;
[0023]针对段五元组数据,
[0024]ipsec” ipsec2、[ipsec源起始,ipsec源结束]、p” p2、ipsec5、ipsec6、[ipsec 目的起始,ipsec 目的结束]、p3、P4> Protocol,
[0025]变换为,
[0026]P1' p2、p3、p4、ipseC1、ipsec2、ipsec5、ipsec6> [ipsec 源起始,ipsec 源结束]、p!、[ipsec目的起始,ipsec目的结束]、Protocol。
[0027]一种基于对五元组的分割与变换,构建混合自动状态机的方法。其特征在于,所述方法包括:
[0028]针对无段式参数的五元组,构建普通自动状态机;
[0029]针对含段式参数的五元组,在已构建的自动状态机中常量参数末尾点连接链表,链表中存储数据为两部分,一部分为以IP后16位段的上下限为参数的数据段参数,另一部分为协议号。形成一个混合自动状态机,用于实现使用同一数据结构一次完成对五元组的匹配。
[0030]具体为:在构建自动状态机时,如果出现数据段参数,则在常量参数构成的自动状态机末尾连接一个链表,链表中以段的上下限为参数存储所有数据段参数,并将协议号存储入链表。形成一个混合自动状态机。如规则中源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为参数存储数据。
[0031]一种基于完整规则库,构建通配扩展矩阵,并根据通配扩展矩阵,扩展待匹配五元组数据的方法,其特征在于,所述方法包括:
[0032]根据完整五元组规则库,构建通配符替换规则矩阵,以下简称扩展矩阵;
[0033]其中,分析通配符在五元组信息的分布情况,除协议号(其通配情况在匹配时特殊处理)之外的其他四个参数都可能出现通配符,则通配符在五元组中可能出现的情况总数为24 = 16种。每一种情况构成一个由4个元素组成的行向量,向量元素依次表示五元组中相应的IP、端口位置是否出现通配符。由代表16种通配分布情况的行向量组成一个完整的通配符分布情况矩阵。根据完整五元组规则库中通配符分布情况,计算得出相应的通配分布行向量(完整通配符分布行向量的子集)组成扩展矩阵,再对此扩展矩阵进行进行简化,去除不含I的行数,得到精简的扩展矩阵。
[0034]具体为:
[0035]如通配替换后的规则为0.Χ.Χ.Χ,Χ.0.0.Χ,Χ.Χ.0.0,生成一个扩展矩阵如下,矩阵中M代表相应位置没有通配符,I代表相应位置有通配符,则生成替换规则矩阵
■I MMM'
N= MllM ο.MM I 1.
[0036]根据生成的扩展矩阵,对待匹配五元组进行通配扩展;
[0037]扩展方法为,将待匹配五元组数据扩展为与扩展矩阵行数相同的含通配符的五元组数据组,并将原五元组自身加入扩展五元组数据组。通过五元组数据与扩展行向量的对照,将某些五元组数据中参数变为O。方法为,读取每个扩展矩阵行向量,得到行向量中元素为O的位置信息,将每条五元组数据中相应位置变为O。
[0038]具体为:

I M M M ■
[0039]设替换规则为N= MllM ,待匹配五元组为A、B、C、D,E(E为协议号,

-MM11.不考虑通配问题,故N矩阵与P矩阵的前四列对应),则通配扩展后的待匹配五元组为
OBCDE'
P= AOODE ο.ΑΒ00Ε.
[0040]一种基于通配扩展后的五元组数据和混合自动状态机的快速匹配方法,其特征在于,所述方法包括:
[0041]将待匹配五元组输入混合自动状态机进行匹配,匹配情况有两种,一种是在链表层之前,一种是在链表层之后。
[0042]在链表层之前匹配时,按普通自动状态机匹配,匹配成功则在进入链表层之后继续匹配;匹配失败,则跳出自动状态机,说明待匹配五元组整体匹配失败。
[0043]在链表层及链表层之后匹配,首先按普通自动状态机匹配,直到成功匹配到最后一个节点;匹配失败,则跳入链表层进行匹配。特殊的,当匹配到最后一个节点时,如果最后一个节点数据为0,则匹配成功,不为O则按普通自动状态机匹配。
[0044]进入链表进行匹配,首先判断待匹配五元组两个IP的后16位是否均存在于链表参数区间内,其次判断协议号是否匹配,特殊的,当链表中协议号为O时,则认为匹配成功,若失配则进入下一个链表节点继续匹配,直到匹配成功或失配跳出。
[0045]本发明所提供的技术方案的有益效果是:
[0046]能够使用同一数据结构一次完成对五元组的匹配。通过分割提取五元组中静态参数构建普通自动状态机,从而构建更多的碰撞域,保证尽快失配;针对五元组中段式参数,在自动状态机后添加链表,实现对带有段式参数五元组匹配的支持;通过通配符替换算法,可以实现五元组对通配符匹配的支持,并通过规定通配替换的计算规则,防止漏解并减少冗余计算。

【专利附图】

【附图说明】
[0047]图1是本算法基于改良自动状态机的网络通信五元组快速匹配的整体流程示意图。
[0048]图2是本算法基于对五元组的分割与变换,构建混合自动状态机的示意图。
[0049]图3为本算法基于根据调整顺序后的规则五元组,构建自动状态机的流程示意图。
[0050]图4为本算法基于改良自动状态机的网络通信五元组快速匹配的整体流程示意图。

【具体实施方式】
[0051]为使本发明之目的、技术方案和优点阐述更加清晰,下面将结合附图与实际用例,对本发明做进一步的详细描述。
[0052]图1为本算法对于基于改良自动状态机的网络通信五元组快速匹配算法整体流程示意图,共有四个关键模块,每个模块的具体功能与实现如下:
[0053]101本发明所述的根据输入规则五元组的结构,对规则五元组进行分割转换的方法具体如下:
[0054]针对不同类型的五元组数据分别进行分割转换,首先判断五元组中是否含有通配符,对含有通配符的五元组进行通配处理,通配处理后再判断五元组中是否含有段式参数,对含有段式参数的五元组进行特殊分割处理,不含段式参数的五元组进行普通分割。
[0055]具体为:
[0056]步骤1,针对含有通配符的实际规则五元组,将通配符用数字O替换,如:某一条规则五元组为*、A、B、C、D (*为通配符),则替换后的五元组为O、A、B、C、D。
[0057]步骤2,统一实际规则五元组的格式。分割五元组中的IP以及端口号,各端口号分割为两段,每段为8位,分割IP时存在如下两种情况:
[0058]针对不含段式参数的五元组,将IP分割为四段,每段长度为8位,如一条五元组的一个IP为192.168.0.254,分割后的IP成为192、168、0、254四个数据段;
[0059]针对含段式参数的五元组,将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。
[0060]步骤3,调整输入五元组各元素的顺序,构建更大的碰撞域。调整方法为:
[0061]针对单点五元组数据(规则或待匹配数据)ipseq、ipsec2、ipsec3、ipsec4>p1>p2>ipsec5、ipsec6、ipsec7、ipsec8、p3、p4、Protocol,变换为 ipsec” ipsec2、ipsec5、ipsec6>P1^P2> p3、p4、ipsec3、ipsec4、ipsec7、ipsec8、Protocol。如一条分割后的规则五元组为 192、168、0、254、04、B0、121、14、88、76、07、DO、TCP,调整顺序后的五元组为 04、B0,07, D0、192、168、121、14、0、254、88、76、TCP。
[0062]针对段五元组数据ipsec” ipsec2、ipsec 源起始至 ipsec 源结束、ΡρΡ2、ipsec5、ipsec6、ipsec 目的起始至 ipsec 目的结束、p3、P4> Protocol,变换为 P1^ p2、p3、p4、ipsec^ ipsec2、ipsec5、ipsec6、ipsec源起始至ipsec源结束、p” 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。
[0063]102本发明所述的基于对规则五元组的分割与变换,构建混合自动状态机的算法具体如下:
[0064]构建自动状态机时,会出现两种类型的五元组,一种为含段式参数的五元组,一种为普通五元组,本发明将两种类型的五元组统一在一个混合自动状态机中,具体操作如下:
[0065]针对无段式参数的五元组,构建普通自动状态机;
[0066]针对含段式参数的五元组,在常量参数构成的自动状态机末尾连接链表,链表中存储数据为两部分,一部分为以段的上下限为参数的数据段参数,另一部分为协议号。形成一个混合自动状态机,用于实现使用同一数据结构一次完成对五元组的匹配。
[0067]在构建自动状态机时,如果出现数据段参数,则在常量参数构成的自动状态机末尾连接一个链表,链表中以段的上下限为参数存储所有数据段参数,并将协议号存储入链表。形成一个混合自动状态机。如规则中源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]。
[0068]图2为本算法基于对规则五元组的分割与变换,构建混合自动状态机的示意图。
[0069]103本发明所述的对待匹配五元组进行初始化的方法具体如下:
[0070]I)根据通配替换后的规则五元组,确定替换规则。
[0071]如通配替换后的规则为O、X、X、X、X,X、0、0、X、X,X、X、0、0、0,根据该规则生成简单的替换规则矩阵,本发明采用的方法为,将规则中的数字O转换为数字1,表示该位置还有通配符,其余位置转换为数字M,表示该位置不含有通配符,则生成替换规则矩阵
IMMM'
N= MllM ο -MM11.
[0072]2)根据生成的替换规则,对待匹配五元组进行通配扩展。扩展方法为,将待匹配五元组根据替换规则中的每一行进行扩展,需要转换的位置只有替换规则中数字I的位置转换为数字0,而数字O的位置,令待匹配五元组中的元素不变。
IMMM'
[0073]设替换规则为N= MllM ,待匹配五元组为A、B、C、D、E,则通配扩展后的待
OBCDE'
匹配五元组为p= AOODE。.A B O O 0.
[0074]最后将原待匹配五元组本身加入扩展匹配五元组,形成待匹配扩展五元组集合。
[0075]3)如101中的步骤2、步骤3操作。
[0076]104本发明所述的基于通配扩展后的五元组数据和混合自动状态机的快速匹配方法,具体如下:
[0077]根据扩展后的多个子五元组组成的五元组集合,将其输入混合自动状态机进行匹配,匹配过程为:
[0078]将待匹配五元组输入混合自动状态机进行匹配,匹配情况有两种,一种是在链表层之前,一种是在链表层之后。
[0079]在链表层之前匹配时,按普通自动状态机匹配,匹配成功则在进入链表层之后继续匹配;匹配失败,则跳出自动状态机,说明待匹配五元组整体匹配失败。
[0080]在链表层及链表层之后匹配,首先按普通自动状态机匹配,直到成功匹配到最后一个节点;匹配失败,则跳入链表层进行匹配。特殊的,当匹配到最后一个节点时,如果最后一个节点数据为O (协议号的通配情况),则匹配成功,不为O则按普通自动状态机匹配。
[0081]进入链表进行匹配,首先判断待匹配五元组两个IP的后16位是否均存在于链表参数区间内,其次判断协议号是否匹配,特殊的,当链表中协议号为O时,则认为匹配成功,若失配则进入下一个链表节点继续匹配,直到匹配成功或失配跳出。
[0082]以下以上述过程确定参数为标准,对应用实例进行说明。
[0083]实施例1
[0084]设一个实际规则五元组为:
[0085]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
[0086]待匹配五元组为:
[0087]192.168.0.18、1500、192.168.0.254、2000、UDP。
[0088]步骤1:首先判断出规则五元组中含有通配符,将所有通配符进行通配处理,处理后的规则五元组为:
[0089]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。
[0090]步骤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 位分割,得至Ij 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、BO、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、BO、TCP。
[0091]步骤3:将转换后的规则五元组进行顺序的调整,规则五元组调整为:
[0092]07、7D、04、B0、192、16、192、168、0、18、0.I 至 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。
[0093]步骤4:针对无段式参数的规则五元组,构建普通自动状态机;针对含段式参数的规则五元组,在常量参数构成的自动状态机末尾连接链表,链表中存储数据为两部分,一部分为以段的上下限为参数的数据段参数,另一部分为协议号。形成一个混合自动状态机,具体参见图3。
[0094]步骤5:对待匹配五元组进行初始化,具体操作过程为:
[0095]首先根据通配替换后的矩阵得到替换规则矩阵为N= [M I I M],再根据通配替换规则,对待匹配五元组进行通配扩展,扩展后的待匹配五元组为P = [192.168.0.18 O O2000 UDP],最后进行待匹配五元组的统一格式和调整顺序的操作,得到初始化后的待匹配五元组 05、DC、07、7D、192、168、192、168、0、18、0、254、UDP。
[0096]步骤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 匹配,匹配成功。
[0097]图4为上述快速匹配过程的整体流程示意图。
[0098]本发明实施例所提供的技术方案,可广泛应用于含有段式参数以及通配符规则的快速匹配,并可根据通配矩阵用于入侵检测系统、网络黑白名单库、网络数据分析等产品中。
[0099]本发明实施例中的具体步骤,可以通过软件变成实现,相应的软件程序可存储于可读取的存储介质中,如光盘、硬盘、移动存储介质等。
[0100]以上为本发明的具体实施例,但并不用以限制本发明,对于本【技术领域】的普通技术人员来说,凡在不脱离本发明原理的前提下,所做的任何修改、等同替换、改进等,均应包含在本发明的保护发明范围之内。
【权利要求】
1.一种根据输入五元组的结构,对五元组数据进行分割与转换的方法,其特征在于,所述方法包括: 针对含有通配符的输入五元组,将通配符用数字O替换; 分割五元组中的IP以及端口号,统一规则及待匹配五元组的格式; 调整输入五元组各元素的顺序,得到经过变换后的五元组规则数据,供后续使用。
2.如权利要求1所述的对五元组数据进行分割与转换的方法,其特征在于,针对含有通配符的输入五元组,将通配符用数字O替换,具体为:某一条五元组中源IP为通配,如规则为 5KPort1'IP2、Port2、Protocol (* 为通配符),则替换后的五元组为(KPort1'IP2、Port2、Protocol ο
3.如权利要求1所述的对五元组数据进行分割与转换的方法,其特征在于,分割五元组中的IP以及端口号,统一规则及待匹配五元组的格式。具体为: 分割五元组中的IP以及端口号,端口号分割为两段,每段长度为8位,分割IP时存在如下两种情况: 针对不含段式参数的五元组,将IP分割为四段,每段长度为8位; 针对含段式参数的五元组,将IP前16位分割为两段,每段长度为8位,而后16位不再拆分,记为一个数值区间段。具体为,将段区间[IP11, IP12]分割为ipseCpipseCy [ipsec起始,ipsec结束](ipsec起始至ipsec结束为IP后十六位)。
4.如权利要求3所述的含段IP的分割方法,当IP段信息越过IP第16位出现在IP前16位时,将IP前16位分割扩展为多个前16位为定值的IP常量值。
5.如权利要求1所述的对五元组数据进行分割与转换的方法,其特征在于,调整输入五元组各元素的顺序,得到经过变换后的五元组规则数据。具体为: 将能够在匹配时使待匹配输入尽快失配的元素前置,使匹配过程中待匹配五元组在自动状态机的失配率最高。具体调整方法为:将分割转换后的五元组数据根据数据分布集中度由低到高排列,将协议号置于最后。一般情况下将源、目的IP的后16位数据后置,使得单点五元组和段五元组的前部数据均为不变的单点数据,五元组匹配过程中能够尽快跳出自动状态机失配而不会进入链表查找。
6.一种基于对五元组的分割与变换,构建混合自动状态机的方法。其特征在于,所述方法包括: 将无段式五元组规则和含段式五元组规则统一构建混合自动状态机。 针对无段式参数的五元组,构建普通自动状态机; 针对含段式参数的五元组,在当前规则常量参数构成的自动状态机末尾连接链表。
7.如权利要求6所述的构建混合自动状态机的方法,其特征在于,针对含段式参数的五元组,在当前规则常量参数构成的自动状态机末尾连接链表。具体为: 链表中存储数据为两部分,一部分为以段的上下限为参数的数据段参数,另一部分为协议号,形成一个混合自动状态机。在构建自动状态机时,如果出现数据段参数,则在当前规则常量参数构成的自动状态机末尾连接一个链表,链表中以段的上下限为参数存储所有数据段参数,并将协议号存储入链表,形成混合自动状态机。如规则中源IP为192.168.0.1 ?192.168.0.253,目的 IP 为 192.169.0.254,协议号为 TCP,则将两个 IP 各自的前16位(192168192169)输入自动状态机后,在169这个节点后添加链表,以0.1?0.253,0.254 ?0.254、TCP 为例,存储形式为[0.1 ?0.253,0.254 ?0.254,TCP]。
8.—种构建通配扩展规则矩阵,并根据通配扩展矩阵,扩展待匹配五元组数据的方法,其特征在于,所述方法包括: 根据完整五元组规则库,构建通配符替换规则矩阵; 根据生成的替换规则矩阵,对待匹配五元组进行通配扩展。
9.如权利要求8所述的执行匹配的方法,其特征在于,根据完整五元组规则库,构建通配符替换规则矩阵。具体为: 针对每一条五元组规则,计算得出一个由4个元素组成的行向量,向量元素依次表示五元组中相应的IP、端口的通配符出现情况,如对应位置元素为通配符,则对应值为1,否则为某一统一非I定值M,将所有行向量组成替换规则矩阵。再对得到的矩阵进行简化,去除不含I的行向量,得到精简的由通配分布行向量组成扩展矩阵,此矩阵内行向量即为所有的通配替换规则,而此矩阵行数即为一条待匹配规则要扩展的通配扩展五元组个数。
10.如权利要求8所述的执行匹配的方法,其特征在于,根据生成的替换规则矩阵,对待匹配五元组进行通配扩展。具体为: 将待匹配五元组数据扩展为含O的五元组数据组,数组个数与扩展矩阵行数相同。通过待匹配五元组数据与扩展矩阵每个行向量的对照,将待匹配五元组数据中相应参数变换。具体为:读取扩展矩阵的每个行向量,得到行向量中元素为I的位置信息,将待匹配五元组数据中相应位置变为0,生成一条待匹配五元组扩展副本,依次进行,直至生成全部待匹配五元组扩展副本。
I MMM' 设替换规则为N= MllM ,待匹配五元组为A、B、C、D,E,则通配扩展后的待匹配.M M I 1.0BCDE'五元组为P= AOODE。.ΑΒ00Ε.
11.一种基于通配扩展后的五元组数据和混合自动状态机的快速匹配方法,其特征在于,所述方法包括: 将待匹配五元组(包括原五元组及其扩展形式)输入混合自动状态机进行匹配,匹配情况有两种,一种是在链表层之前的匹配,一种是在链表层之后的匹配。 在链表层之前匹配,按普通自动状态机匹配,匹配成功则在进入链表层之后继续匹配;匹配失败,则跳出自动状态机,说明待匹配五元组整体匹配失败。 在链表层之后匹配,首先按普通自动状态机匹配,直至成功匹配到最后一个节点;匹配失败,则跳入链表层进行匹配。特殊的,当匹配到最后一个节点时,如果最后一个节点数据为0,则匹配成功,不为O则按普通自动状态机匹配。 进入链表进行匹配,首先判断待匹配五元组两个IP的后16位是否均存在于相应链表参数区间内,段参数匹配成功后判断协议号是否匹配。特殊的,当链表中协议号为O时,则认为匹配成功,若失配则进入下一个链表节点继续匹配,直到匹配成功或失配跳出。
【文档编号】H04L12/26GK104283736SQ201410393270
【公开日】2015年1月14日 申请日期:2014年8月3日 优先权日:2014年8月3日
【发明者】朱永强, 朱正富, 杨光明, 郑童瀚, 黄晓强, 秦疏婷 申请人:成都网安科技发展有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1