CN104954200A - 一种网络数据包的多类型规则高速匹配方法及装置 - Google Patents
一种网络数据包的多类型规则高速匹配方法及装置 Download PDFInfo
- Publication number
- CN104954200A CN104954200A CN201510336583.XA CN201510336583A CN104954200A CN 104954200 A CN104954200 A CN 104954200A CN 201510336583 A CN201510336583 A CN 201510336583A CN 104954200 A CN104954200 A CN 104954200A
- Authority
- CN
- China
- Prior art keywords
- rule
- hash
- type
- matching
- tuple information
- 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.)
- Pending
Links
Classifications
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种网络数据包的多类型规则高速匹配方法及装置,其中,该方法包括:接收待匹配的网络数据包;获取所述网络数据包的元组信息;同时将所述元组信息与预先设定的多种规则类型的规则进行匹配。本发明解决了现有技术中规则匹配效率低下的技术问题,达到了有效提高数据包的规则匹配效率的技术效果。
Description
技术领域
本发明涉及数据处理技术领域,特别涉及一种网络数据包的多类型规则高速匹配方法及装置。
背景技术
随着微电子技术和计算机技术的不断发展,以及人们对互联网应用需求的不断增长,计算机网络的规模变得越来越庞大,网络上的各种应用也层出不穷,网络安全也就成为了互联网应用中一个非常重要的考虑因素。网络数据的规则匹配作为减少需要深度处理的数据的重要手段,在网络安全起到非常关键的作用,所谓的数据的规则匹配,例如:从预先设定的匹配规则中确定是否需要对当前的网络数据进行复制操作、删除操作或者其它的处理,以便确定当前的网络数据是否需要进行下一步的处理以及下一步处理的内容,从而确定出需要进行下一步处理的数据,可以有效避免对无需进行的处理的数据进行了不必要的操作,缩减了需要深度处理的网络数据。
然而,目前一般都是采用将网络数据与预先设定的规则按照顺序一一进行比对的方式,来进行网络规则的匹配,处理效率低下。
发明内容
本发明实施例提供了一种网络数据包的多类型规则高速匹配方法,以达到有效提高网络数据的规则匹配效率的目的,该方法包括:
接收待匹配的网络数据包;
获取所述网络数据包的元组信息;
同时将所述元组信息与预先设定的多种规则类型的规则进行匹配。
在一个实施例中,同时将所述元组信息与预先设定的多种规则类型的规则进行匹配,包括:
对于每种规则类型采用以下方式进行匹配:
根据所述元组信息和为该规则类型分配的掩码进行哈希运算;
将哈希运算得到的哈希值作为哈希地址,到预先建立的规则表中查找存储在该哈希地址对应的存储空间中的规则;
如果在该哈希地址对应的存储空间中存储的规则为有效规则,且该有效规则与所述元组信息匹配,则表示规则匹配成功,否则,匹配不成功。
在一个实施例中,所述规则表是按照以下方式建立和存储的:
设置哈希运算规则;
为每一种规则类型分配掩码,不同的规则类型对应不同的掩码;
确定分属于各个规则类型的规则,根据为各个规则类型分配的掩码和各条规则对应的元组信息,按照哈希运算规则,计算出各条规则的哈希值;
将各条规则的规则信息以记录的形式,存储至以该规则的哈希值作为哈希地址的存储空间中。
在一个实施例中,所述规则表中的各条记录在物理上采用混合方式进行存储。
在一个实施例中,在到预先建立的规则表中查找该哈希地址对应的规则信息之后,所述方法还包括:
如果在所述规则表中该哈希地址对应的规则为有效规则,且该有效规则与所述元组信息不匹配,则将当前的哈希值加一后作为哈希地址重新进行查找匹配。
在一个实施例中,同时将所述元组信息与预先设定的多种规则类型的规则进行匹配,包括:
在同一种规则类型中匹配出两条或者两条以上的规则,则选取优先级高的规则作为对应于该规则类型的匹配结果;
在两种或者两种以上规则类型中匹配出规则,则选择优先级高的规则作为匹配结果。
本发明实施例提供了还一种网络数据包的多类型规则高速匹配装置,以达到有效提高网络数据的规则匹配效率的目的,该装置包括:
接收模块,用于接收待匹配的网络数据包;
获取模块,用于获取所述网络数据包的元组信息;
匹配模块,用于同时将所述元组信息与预先设定的多种规则类型的规则进行匹配。
在一个实施例中,所述匹配模块具体用于对每种规则类型采用以下方式进行匹配:
根据所述元组信息和为该规则类型分配的掩码进行哈希运算;
将哈希运算得到的哈希值作为哈希地址,到预先建立的规则表中查找存储在该哈希地址对应的存储空间中的规则;
如果在该哈希地址对应的存储空间中存储的规则为有效规则,且该有效规则与所述元组信息匹配,则表示规则匹配成功,否则,匹配不成功。
在一个实施例中,所述规则表是按照以下方式建立和存储的:
设置哈希运算规则;
为每一种规则类型分配掩码,不同的规则类型对应不同的掩码;
确定分属于各个规则类型的规则,根据为各个规则类型分配的掩码和各条规则对应的元组信息,按照哈希运算规则,计算出各条规则的哈希值;
将各条规则的规则信息以记录的形式,存储至以该规则的哈希值作为哈希地址的存储空间中。
在一个实施例中,所述匹配模块包括:
第一匹配单元,用于在同一种规则类型中匹配出两条或者两条以上的规则,则选取优先级高的规则作为对应于该规则类型的匹配结果;
第二匹配单元,用于在两种或者两种以上规则类型中匹配出规则,则选择优先级高的规则作为匹配结果。
在本发明实施例中,在接收到待进行规则匹配的网络数据包后,获取该网络数据包的元组信息,然后根据预先设定的规则类型,同时对多种规则类型的规则进行匹配,所谓同时进行匹配,就是采用并行的方式对该元组信息进行规则匹配,即,同时在多种类型的规则中查找与该元组信息匹配的规则,因为采用并行的方式进行规则匹配,从而可以快速确定出与该网络数据包匹配的规则,解决了现有技术中规则匹配效率低下的技术问题,达到了有效提高数据包的规则匹配效率的技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1是本发明实施例的网络数据包的多类型规则高速匹配方法的方法流程图;
图2是本发明实施例的网络数据包的多类型规则高速匹配装置的一种结构框图;
图3是本发明实施例的网络数据包的多类型规则高速匹配装置的另一种结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在本发明实施例中,提出了一种网络数据包的多类型规则高速匹配方法,如图1所示,包括以下步骤:
步骤101:接收待匹配的网络数据包;
步骤102:获取所述网络数据包的元组信息;
步骤103:同时将所述元组信息与预先设定的多种规则类型的规则进行匹配。
在上述实施例中,在接收到待进行规则匹配的网络数据包后,获取该网络数据包的元组信息,然后根据预先设定的规则类型,同时对多种规则类型的规则进行匹配,所谓同时进行匹配,就是采用并行的方式对该元组信息进行规则匹配,即,同时在多种类型的规则中查找与该元组信息匹配的规则,因为采用并行的方式进行规则匹配,从而可以快速确定出与该网络数据包匹配的规则,解决了现有技术中规则匹配效率低下的技术问题,达到了有效提高数据包的规则匹配效率的技术效果。
上述的规则类型可以是用户按照需求设定的,具体的,每种规则类型对应哪些操作规则也可以是用户按照需求或者习惯设定的,操作规则可以包括:对数据包进行修改,对数据包进行复制粘贴操作、对数据包进行删除操作等等。
为了描述方便,在下面的描述中,为同时对多个规则类型进行规则匹配的执行主体,赋予一个名字叫匹配模块,一个匹配模块对应一种规则类型,多个匹配模块并行进行处理。具体的,在上述步骤103中,可以是按照以下方式将所述元组信息与每种规则类型进行规则匹配的:根据所述元组信息和为该规则类型分配的掩码进行哈希运算;将哈希运算得到的哈希值作为哈希地址,到预先建立的规则表中查找存储在该哈希地址对应的存储空间中的规则(或者说是规则信息);如果在该哈希地址对应的存储空间中存储的规则为有效规则,且该有效规则与所述元组信息匹配,则表示规则匹配成功,否则,匹配不成功。即,预先设定了一个规则表,在这个规则表中已经记录了多条规则的信息,在匹配模块进行匹配的时候,只需要按照对应的哈希算法进行哈希运算得到哈希值,然后到规则表对应的地址中查找规则进行匹配即可。具体的,所谓的匹配就是匹配在规则表中对应的这条记录中记载的元组信息是否与当前的元组信息相同,如果相同,则表明匹配成功,后续就可以按照这条记录中的处理方式对该网络数据包进行处理。
考虑到需要使得每个规则类型所对应的存储地址不同,可以采用为规则类型分配掩码的方式,例如:000到111,可以对应8种规则,根据分配的掩码,按照预定的哈希算法进行计算,以确定哈希存储地址,具体的,上述的规则表可以是按照以下方式建立的:设置哈希运算规则;为各个规则类型(其实也就是为各个匹配模块)分配掩码;确定属于各个规则类型的规则,根据为各个规则类型分配的掩码和各条规则对应的元组信息,按照哈希运算规则,计算出各条规则的哈希值;将各条规则的规则信息以记录的形式,存储至以该规则的哈希值作为哈希地址的存储空间中。
考虑到存储空间的利用率,在本例中规则表中的各条记录在物理上采用混合方式进行存储,这种存储方式就是每种类型的规则在物理上混合存储,使用相同的存储空间,这样规则在动态变化时,可以解决独立存储方式中必须预先划分每种规则类型或者每条规则的存储空间的问题,混合存储方式在空间利用率上更为有效。
考虑到采用哈希方式进行存储和查找的时候,容易出现哈希地址冲突,可以采用一般的哈希冲突处理方式进行处理,例如:在预先建立规则表的表示,发生了地址冲突(即,计算得到的地址中已经存储有规则信息),则可以将当前地址加一作为新的存储地址进行存储。相应的,在到预先建立的规则表中查找该哈希地址对应的规则信息之后,如果在所述规则表中该哈希地址对应的规则为有效规则,且该有效规则与所述元组信息不匹配,则将当前的哈希值加一后作为哈希地址重新进行查找匹配。
在上述各个实施例中,元组信息可以包括以下一种或多种:协议号、源IP地址、目的IP地址、源端口地址、目的端口地址、数据负载长度、分片包信息和字节数信息,然而值得注意的是,上述提到的元组信息中所具体包含的信息仅是为了更好地说明本发明,还可以有其他的对数据包进行标识的信息,本申请对此不作限定。
在具体实施时,可能会出现匹配出多个规则类型的情况下,为了选择出有效的规则类型,可以预先为每种规则类型设置优先级,根据对优先级的设定,有效确定出那种规则类型的规则作为最终匹配出的规则类型,进一步的,如果在该类型中存在多个规则,则每个匹配模块可以为其对应的规则类型中的各个规则设置优先级,然后选择出优先级最高的规则作为返回结果返回。确定是否有两个或者两个以上匹配模块匹配成功;如果是,则从所述两个或者两个以上匹配模块匹配出的规则中选择优先级高的规则作为匹配结果返回。
值得注意的是,上述每个匹配模块对应一种类型的规则,在每个规则类型中可以包括一条规则也可以包括多条规则,因为哈希地址是根据规则的元组信息和匹配模块的掩码确定的,因此可以有效地区分出各条规则,每个匹配模块仅需要对与自身对应的规则类型的规则进行匹配即可。
下面结合一个具体的实施对本发明进行具体说明,然而值得注意的是,该具体实施例仅是为了更好地说明本发明,并不构成对本发明的不当限定。
在本发明实施例中,提供了一种网络数据包的多类型规则高速匹配方法,该方法包括:对数据包解析,以得到所需要的元组信息;根据元组信息,在对应的逻辑表(即规则表)中进行查找,得到各自对应的匹配结果,处理多个匹配结果,从而得到最终的匹配结果并输出。其中,各个匹配模块所对应的规则类型是预先进行配置的,不同的匹配模块对应不同的规则类型,每个规则类型所对应的各条规则的规则信息被保存在规则表中。
在本例中,网络数据包的多类型规则高速匹配方法,可以通过多个匹配模块同时进行规则匹配,利用并行性提高处理的性能;每个匹配模块可灵活运用,在不修改设计的情况下就可以支持不同的应用环境,支持同类型的规则之间和不同类型的规则之间的任意优先级,支持每种规则类型所对应的规则表信息为物理上独立的规则表,也支持多个规则表物理上混合为一个表的混合存储方式,其中,混合存储方式可以有效节省规则存储空间。
上述的对数据包进行解析得到元组信息,例如:数据包是一个TCP/IP协议数据包,那么可以解析得到的元组信息包括:协议号、源IP地址、目的IP地址、源端口地址和目的端口地址,可以将这些信息称为五元组信息。
在实现的过程中,每个匹配模块所对应的规则类型可以灵活配置,有多少个匹配模块就可以支持多少种规则类型,匹配模块可以根据元组信息,在对应的逻辑表中进行查找,得到各自对应的匹配结果,其中,规则表使用哈希表方式进行存储,对于多个规则类型的哈希表,可以有两种存储方式:一种是独立存储方式,每个类型的规则在物理上都独立存储,占用物理上独立的存储空间,另一种是混合存储方式,每个类型的规则在物理上混合存储,使用相同的存储空间,可以按照实际需求选取。
进一步的,可以向用户提供一个接口,对多个匹配模块进行规则类型的配置,从而使得每个匹配模块进行某一个规则类型的匹配操作,同时还可以对规则的优先级进行设定,还可以进行规则的添加、修改、查询和删除等操作。当一个数据包同时命中多种类型的规则时,可以根据用户对规则优先级的配置,选择出一个优先级最好的匹配结果作为最终的匹配结果,当仅命中一种条规则时,那么这个唯一命中的规则就是最终的匹配结果,如果没有命中任何规则,那么可以给出无命中的匹配结果。
即,使用多个匹配模块进行并行匹配,每个匹配模块对应的规则类型,可以根据规则多个元组的掩码进行任意配置,具体的规则类型存储在内存单元中,对于每种规则类型从逻辑上可以使用一个单独的规则表,在每个匹配模块对自己所对应的规则类型进行匹配的时候,多个匹配模块同时匹配多个规则表,最后综合所有逻辑表的匹配结果,以得到最终的匹配结果,规则表中的各条规则可任意指定优先级。
通过多个匹配模块同时进行规则匹配,利用并行性提高处理的性能,同时每个匹配模块可以灵活可配,在不同的应用环境下可以将各个匹配模块配置为不同规则类型,在不修改设计的情况下就可以支持不同的应用环境,同时规则之间可以任意指定优先级,既支持多个逻辑表为物理上独立的规则表,也支持多个逻辑表物理上混合为一个表,混合方式通常具有节省规则存储空间的优点。
在本例中,还提供了一种网络数据包的多类型规则高速匹配装置,如图2所示,该装置包括:数据包解析模块201,匹配模块202,匹配类型配置203,规则配置模块204,以及匹配结果综合模块205,下面对这几个模块进行具体描述。
数据包解析模块201,负责对数据包进行解析,以得到所需要的元组信息。例如:对于传输控制协议(Transport Control Protocol/Internet Protocol,TCP/IP)协议,可以解析得到协议号、源IP地址、目的IP地址、源端口地址和目的端口地址五元组信息。考虑到在不同的应用中,需要的元组信息不同,例如:有些应用需要数据负载长度,有些信息需要分片包信息,也有些应用需要数据流的前多少字节的信息,根据应用的不同需要,可以进行不同的解析,得到用户所需要的各类元组信息。
在数据包解析模块201解析得到元组信息后,将这些信息送给后面的匹配模块,由于匹配模块的匹配方式是可以配置的,因此匹配模块可能负责的是任何一种规则类型的匹配,因此所有的元组信息都必须送到每一个匹配模块。
匹配模块202,是核心模块之一,负责完成数据包的多个元组与规则表之间的匹配,主要由匹配单元和规则表单元组成,其中,匹配单元,可以灵活配置,即可以将该匹配模块配置为进行任何一种规则类型的匹配。
下面以TCP/IP协议中的五元组为例对匹配模块进行说明,五元组包括:协议号(Protocol)、源IP地址(SIP)、目的IP地址(DIP)、源端口地址(Sport)和目的端口地址(DIP)。
为了灵活对五元组进行匹配,Mask选择5比特的掩码,用于区分不同的规则类型,5比特掩码分别表示五个元组是否存在,因此最多可以支持2的5次方也就是32种规则,每个匹配模块都具有与之匹配的Mask值,从而可以灵活配置任何一种规则类型。
例如:为了支持8种规则类型的需求,对于数据包的五元组D,如果规则表以哈希表进行存储,那么就需要进行8次哈希运算,得到8个哈希值h1,h2,h3,…,h8,将其作为规则DDR哈希表的地址,根据确定的地址进行规则查找。
在添加规则的时候,也是采用相同的哈希算法,因此当规则被添加到哈希表中后,如果数据包与规则表中的规则类型有相同的五元组,那么匹配时的8个哈希值必定有一个与规则添加时的哈希值相等,因而必然可以命中规则。
在规则表中使用哈希表的时候,所选择的哈希算法,必须将掩码考虑进来,也就是说,哈希函数的自变量既包括五元组,也应包括掩码,其形式为:
hash=f(D,M)
对于五元组Hash函数,具有以下形式:
注意,在实施的过程中,对于被掩码的元组,被掩掉以后,以数据0参与哈希运算,而不是该域不存在,因此,为了支持源与目的的对称规则,通常必须选取对称的Hash算法,即上式中M(0)项与M(2)掩码项,以及M(1)与M(3)掩码项相交换后,Hash值仍然相同的Hash数。
下面给出一个具体的实施例进行说明:
假设有2条规则:
R1:SIP=192.168.10.100
R2:Sport=80
那么规则R1和R2在规则表中的存放地址,即其Hash值为:
Hash(R1)=f(0,192.168.10.100,0,0,0),假设等于100
Hash(R2)=f(0,0,0,80,0),假设等于200
现在有2个匹配模块,将其对应的匹配掩码分别配成支持这2种规则类型,也就是说,2个匹配模块的掩码分别被配置为:M1:01000,M2:00010。
输入一个数据包,其五元组按照上式掩码域的顺序为:
D:6,192.168.10.100,10.10.1.1,23,16000。
两个匹配模块分别根据这个数据包的五元组计算Hash值如下:
Hash(D,M1)=f(0,192.168.10.100,0,0,0)必然等于100
Hash(D,M2)=f(0,0,0,0,23,0)可能等于任何数,假设等于300。
在规则表中读取地址100和地址300处的规则,可以判断得到100处的规则五元组和掩码与数据包D相符,因此可以说明命中了规则R1,地址300处是不相符的。
同样地,如果有一个源端口为80的数据包,也可以根据上述的方法得到命中规则R2的结果。
规则表单元,是使用哈希表方式进行存储的,对于存在多个规则类型的哈希表,可以有两种存储方式:一种是独立存储方式,每个类型的规则在物理上都独立存储,占用物理上独立的存储空间,另一种是混合存储方式,每个类型的规则在物理上混合存储,使用相同的存储空间。当各种类型的规则混合存储在一起时,直接使用规则中的内容对不同类型进行区分,当规则之间发生地址冲突时,直接按照整个规则哈希表的存储冲突解决方式即可。混合存储方式的规则操作与独立存储方式相比,在复杂度上并没有明显的增加,然而当各种规则类型的规则数会动态变化时,由于独立存储方式必须预先划分每种规则类型的存储空间,混合存储方式在存储空间利用率上是更为高效的。
对于独立存储方式,匹配模块进行匹配时,被配置为某种规则类型,则到该规则类型的存储空间中进行匹配,对混合存储方式,匹配模块可以在整个存储空间中进行匹配。匹配命中后,必须将规则读出与数据包五元组进行比较,这对独立存储和混合存储方式相同,因此在匹配复杂度上,混合存储方式的与独立存储方式相比,在复杂度上也是相当的。
匹配类型配置单元203,负责向用户提供一个接口,对多个匹配模块进行规则类型的配置,使得每个匹配模块进行某一个规则类型的匹配操作,需要为每个匹配模块配置参数,即配置规则类型的掩码。例如:对于TCP/IP协议中的五元组,配置一个5比特的掩码。
假设有N种规则类型,那么就可以按照表1配置:
表1
匹配模块序号 | 规则类型掩码 |
1 | Mask(1) |
2 | Mask(2) |
… | … |
N-1 | Mask(N-1) |
N | Mask(N) |
规则配置模块单元204,负责向用户提供一个接口,对规则表进行规则的配置操作,同时还可以对规则之间的优先级进行配置,规则配置主要包括:规则添加、规则修改、规则查询和规则删除等操作。
假设存储的最大规则数为M,则可以按照表2配置规则表:
表2
规则类型存储地址 | 规则有效标志 | 规则掩码 | 规则 |
0 | 1或0 | Mask(0) | Rule(1) |
1 | 1或0 | Mask(1) | Rule(2) |
… | … | … | … |
M-2 | 1或0 | Mask(M-2) | Rule(M-2) |
M-1 | 1或0 | Mask(M-1) | Rule(M-1) |
在上述表2中规则有效标志域用于表示该规则是否是一条有效的规则,其中,1表示有效,0表示无效,规则掩码域为这条规则所属规则类型的掩码,规则域存储该规则的具体内容。
匹配结果综合模块单元205,用于当一个数据包同时命中多条规则时,根据用户对规则优先级的配置,选择出一个优先级最好的匹配结果,当仅命中一条规则时,唯一命中的规则就是最终的匹配结果,当无规则命中时,给出无命中的匹配结果。
下面给出一个支持8种TCP/IP协议五元组规则类型的实例。
要求支持的规则类型可以包括:
1)Protocol+SIP+DIP+Sport+Dport
2)Protocol+SIP+DIP+Sport
3)Protocol+SIP+DIP+Dport
4)Protocol+SIP+DIP
5)Protocol+SIP
6)Protocol+DIP
7)Protocol+Sport
8)Protocol+Dport
其中,规则类型与掩码之间的关系可以如表3所示,其中,掩码的各个比特从高到低依次为Protocol,SIP,DIP,Sport,Dport。
表3
规则类型序号 | 规则类型编码 |
1 | 11111 |
2 | 11110 |
3 | 11101 |
4 | 11100 |
5 | 11000 |
6 | 10100 |
7 | 10010 |
8 | 10001 |
具体的哈希算法可以是:将各个域和掩码相与后,每个字节折叠相加,具体可以是:
T1=protocol&Mask(4)
T21=SIP&Mask(3)
T2=T21&0xFF+((T21>>8)&0xFF)+((T21>>16)&0xFF)+((T21>>24)&0xFF)
T31=DIP&Mask(2)
T3=T31&0xFF+((T31>>8)&0xFF)+((T31>>16)&0xFF)+((T31>>24)&0xFF)
T41=Sport&Mask(2)
T4=T41&0xFF+((T41>>8)&0xFF)
T51=Dport&Mask(3)
T5=T51&0xFF+((T51>>8)&0xFF)
Hash(protocol,SIP,DIP,Sport,Dport,Mask)=T1+T2+T3+T4+T5
哈希计算后的结果为8个比特,也就说明,哈希表中最多可存储2的8次方,也就是256条规则。
假设现在有如表4所示的8条规则:
表4
计算这8条规则的Hash值如下:
Hash(R1)=6
Hash(R2)=123
Hash(R3)=123
Hash(R4)=145
Hash(R5)=38
Hash(R6)=113
Hash(R7)=70
Hash(R8)=70
其中,对于Hash地址冲突问题,可以采用线性探测法解决,因此对应的规则表的存储如表5所示:
表5
规则存储地址 | 规则有效标志 | 规则掩码 | 规则 |
0 | 0 | ||
… | … | … | … |
6 | 1 | 11111 | R1 |
7 | 0 | ||
… | … | … | … |
38 | 1 | 11000 | R5 |
39 | 0 | ||
… | … | … | … |
70 | 1 | 10010 | R7 |
71 | 1 | 10001 | R8 |
72 | 0 | ||
… | … | … | … |
113 | 1 | 10100 | R6 |
114 | 0 | ||
… | … | … | … |
123 | 1 | 11110 | R2 |
124 | 1 | 11101 | R3 |
125 | 0 | ||
… | … | … | … |
145 | 1 | 11100 | R4 |
146 | 0 | ||
… | … | … | … |
255 | 0 |
设定的匹配模块与规则类型掩码之间的对应关系如表6所示,每个匹配模块对应一种规则类型。
表6
匹配模块序号 | 规则类型编码 |
1 | 11111 |
2 | 11110 |
3 | 11101 |
4 | 11100 |
5 | 11000 |
6 | 10100 |
7 | 10010 |
8 | 10001 |
假设对数据报文D进行报文头部解析之后,得到的五元组为:Protocol=6、SIP=0x0A000001、DIP=0x0A001000、Sport=80、Dport=80。
将其下发到8个匹配模块,这8个匹配模块同时对该五元组进行Hash计算,得到的Hash计算结果为:
H1(D)=hash(D,11111)=133
H2(D)=hash(D,11110)=123
H3(D)=hash(D,11101)=123
H4(D)=hash(D,11100)=43
H5(D)=hash(D,11000)=17
H6(D)=hash(D,10100)=33
H7(D)=hash(D,10010)=86
H8(D)=hash(D,10001)=86
以上述计算得到的8个Hash值作为地址,到规则表中读取对应的规则,可以得到以下结果:
读取地址为133处的规则,为无效规则,不匹配。
读取地址为123处的规则,为有效规则,且匹配,命中R2。
读取地址为123处的规则,为有效规则,但不匹配R3;继续读取地址为124的规则,为有效规则,且匹配,命中R3。
读取地址为43处的规则,为无效规则,不匹配。
读取地址为17处的规则,为无效规则,不匹配。
读取地址为33处的规则,为无效规则,不匹配。
读取地址为86处的规则,为无效规则,不匹配。
读取地址为86处的规则,为无效规则,不匹配。
综上所述,网络数据包D同时命中了规则R2和R3。
假设各个规则之间的优先级如表7所示:
表7
规则序号 | 优先级序号 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |
5 | 5 |
6 | 6 |
7 | 7 |
8 | 8 |
假设上述表7中设定的优先级编号值越大,优先级越低,那么,数据包D同时命中了规则R2和R3,由于规则R2的优先级更高,进行匹配结果综合后,数据包D最终的匹配结果为,命中规则R2。
在上述实施例中,以TCP/IP协议为实例进行的说明,但是值得注意的是,该方法不限于TCP/IP协议,也可以应用到其它协议的网络环境中。
基于同一发明构思,本发明实施例中还提供了一种网络数据包的多类型规则高速匹配装置,如下面的实施例所述。由于网络数据包的多类型规则高速匹配装置解决问题的原理与网络数据包的多类型规则高速匹配方法相似,因此网络数据包的多类型规则高速匹配装置的实施可以参见网络数据包的多类型规则高速匹配方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。图3是本发明实施例的网络数据包的多类型规则高速匹配装置的一种结构框图,如图3所示,包括:接收模块301、获取模块302和匹配模块303下面对该结构进行说明。
接收模块301,用于接收待匹配的网络数据包;
获取模块302,用于获取所述网络数据包的元组信息;
匹配模块303,用于同时将所述元组信息与预先设定的多种规则类型的规则进行匹配。
在一个实施例中,匹配模块303具体用于对每种规则类型采用以下方式进行匹配:根据所述元组信息和为该规则类型分配的掩码进行哈希运算;将哈希运算得到的哈希值作为哈希地址,到预先建立的规则表中查找存储在该哈希地址对应的存储空间中的规则;如果在该哈希地址对应的存储空间中存储的规则为有效规则,且该有效规则与所述元组信息匹配,则表示规则匹配成功,否则,匹配不成功。
在一个实施例中,所述规则表是按照以下方式建立和存储的:设置哈希运算规则;
为每一种规则类型分配掩码,不同的规则类型对应不同的掩码;确定分属于各个规则类型的规则,根据为各个规则类型分配的掩码和各条规则对应的元组信息,按照哈希运算规则,计算出各条规则的哈希值;将各条规则的规则信息以记录的形式,存储至以该规则的哈希值作为哈希地址的存储空间中。
在一个实施例中,匹配模块303包括:第一匹配单元,用于在同一种规则类型中匹配出两条或者两条以上的规则,则选取优先级高的规则作为对应于该规则类型的匹配结果;第二匹配单元,用于在两种或者两种以上规则类型中匹配出规则,则选择优先级高的规则作为匹配结果。
在另外一个实施例中,还提供了一种软件,该软件用于执行上述实施例及优选实施方式中描述的技术方案。
在另外一个实施例中,还提供了一种存储介质,该存储介质中存储有上述软件,该存储介质包括但不限于:光盘、软盘、硬盘、可擦写存储器等。
从以上的描述中,可以看出,本发明实施例实现了如下技术效果:在接收到待进行规则匹配的网络数据包后,获取该网络数据包的元组信息,然后根据预先设定的规则类型,同时对多种规则类型的规则进行匹配,所谓同时进行匹配,就是采用并行的方式对该元组信息进行规则匹配,即,同时在多种类型的规则中查找与该元组信息匹配的规则,因为采用并行的方式进行规则匹配,从而可以快速确定出与该网络数据包匹配的规则,解决了现有技术中规则匹配效率低下的技术问题,达到了有效提高数据包的规则匹配效率的技术效果。
显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种网络数据包的多类型规则高速匹配方法,其特征在于,包括:
接收待匹配的网络数据包;
获取所述网络数据包的元组信息;
同时将所述元组信息与预先设定的多种规则类型的规则进行匹配。
2.如权利要求1所述的方法,其特征在于,同时将所述元组信息与预先设定的多种规则类型的规则进行匹配,包括:
对于每种规则类型采用以下方式进行匹配:
根据所述元组信息和为该规则类型分配的掩码进行哈希运算;
将哈希运算得到的哈希值作为哈希地址,到预先建立的规则表中查找存储在该哈希地址对应的存储空间中的规则;
如果在该哈希地址对应的存储空间中存储的规则为有效规则,且该有效规则与所述元组信息匹配,则表示规则匹配成功,否则,匹配不成功。
3.如权利要求2所述的方法,其特征在于,所述规则表是按照以下方式建立和存储的:
设置哈希运算规则;
为每一种规则类型分配掩码,不同的规则类型对应不同的掩码;
确定分属于各个规则类型的规则,根据为各个规则类型分配的掩码和各条规则对应的元组信息,按照哈希运算规则,计算出各条规则的哈希值;
将各条规则的规则信息以记录的形式,存储至以该规则的哈希值作为哈希地址的存储空间中。
4.如权利要求3所述的方法,其特征在于,所述规则表中的各条记录在物理上采用混合方式进行存储。
5.如权利要求2所述的方法,其特征在于,在到预先建立的规则表中查找该哈希地址对应的规则信息之后,所述方法还包括:
如果在所述规则表中该哈希地址对应的规则为有效规则,且该有效规则与所述元组信息不匹配,则将当前的哈希值加一后作为哈希地址重新进行查找匹配。
6.如权利要求1至5中任一项所述的方法,其特征在于,同时将所述元组信息与预先设定的多种规则类型的规则进行匹配,包括:
在同一种规则类型中匹配出两条或者两条以上的规则,则选取优先级高的规则作为对应于该规则类型的匹配结果;
在两种或者两种以上规则类型中匹配出规则,则选择优先级高的规则作为匹配结果。
7.一种网络数据包的多类型规则高速匹配装置,其特征在于,包括:
接收模块,用于接收待匹配的网络数据包;
获取模块,用于获取所述网络数据包的元组信息;
匹配模块,用于同时将所述元组信息与预先设定的多种规则类型的规则进行匹配。
8.如权利要求7所述的装置,其特征在于,所述匹配模块具体用于对每种规则类型采用以下方式进行匹配:
根据所述元组信息和为该规则类型分配的掩码进行哈希运算;
将哈希运算得到的哈希值作为哈希地址,到预先建立的规则表中查找存储在该哈希地址对应的存储空间中的规则;
如果在该哈希地址对应的存储空间中存储的规则为有效规则,且该有效规则与所述元组信息匹配,则表示规则匹配成功,否则,匹配不成功。
9.如权利要求8所述的装置,其特征在于,所述规则表是按照以下方式建立和存储的:
设置哈希运算规则;
为每一种规则类型分配掩码,不同的规则类型对应不同的掩码;
确定分属于各个规则类型的规则,根据为各个规则类型分配的掩码和各条规则对应的元组信息,按照哈希运算规则,计算出各条规则的哈希值;
将各条规则的规则信息以记录的形式,存储至以该规则的哈希值作为哈希地址的存储空间中。
10.如权利要求7至9中任一项所述的装置,其特征在于,所述匹配模块包括:
第一匹配单元,用于在同一种规则类型中匹配出两条或者两条以上的规则,则选取优先级高的规则作为对应于该规则类型的匹配结果;
第二匹配单元,用于在两种或者两种以上规则类型中匹配出规则,则选择优先级高的规则作为匹配结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510336583.XA CN104954200A (zh) | 2015-06-17 | 2015-06-17 | 一种网络数据包的多类型规则高速匹配方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510336583.XA CN104954200A (zh) | 2015-06-17 | 2015-06-17 | 一种网络数据包的多类型规则高速匹配方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104954200A true CN104954200A (zh) | 2015-09-30 |
Family
ID=54168574
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510336583.XA Pending CN104954200A (zh) | 2015-06-17 | 2015-06-17 | 一种网络数据包的多类型规则高速匹配方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104954200A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106027459A (zh) * | 2015-12-28 | 2016-10-12 | 深圳市恒扬数据股份有限公司 | 一种访问控制列表的查询方法及装置 |
CN106657128A (zh) * | 2017-01-05 | 2017-05-10 | 杭州迪普科技股份有限公司 | 基于通配符掩码规则的数据包过滤方法及装置 |
CN107707479A (zh) * | 2017-10-31 | 2018-02-16 | 北京锐安科技有限公司 | 五元组规则的查找方法及装置 |
CN111897644A (zh) * | 2020-08-06 | 2020-11-06 | 成都九洲电子信息系统股份有限公司 | 一种基于多维度的网络数据融合匹配方法 |
CN112367262A (zh) * | 2020-08-20 | 2021-02-12 | 国家计算机网络与信息安全管理中心 | 一种五元组规则的匹配方法及装置 |
CN112532444A (zh) * | 2020-11-26 | 2021-03-19 | 上海阅维科技股份有限公司 | 用于网络镜像流量的数据流采样方法、系统、介质及终端 |
CN112671940A (zh) * | 2019-10-15 | 2021-04-16 | 瑞萨电子株式会社 | 网络处理设备以及通信帧的网络处理方法 |
CN113904863A (zh) * | 2021-10-25 | 2022-01-07 | 杭州安恒信息技术股份有限公司 | 一种网络入侵检测方法、装置、设备及可读存储介质 |
CN114430341A (zh) * | 2021-12-29 | 2022-05-03 | 武汉绿色网络信息服务有限责任公司 | 一种基于exact规则转mask规则的实现方法与装置 |
CN114666169A (zh) * | 2022-05-24 | 2022-06-24 | 杭州安恒信息技术股份有限公司 | 一种扫描探测类型的识别方法、装置、设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101500012A (zh) * | 2009-02-27 | 2009-08-05 | 中国人民解放军信息工程大学 | 一种报文分类方法和系统 |
CN101753445A (zh) * | 2009-12-23 | 2010-06-23 | 重庆邮电大学 | 基于关键字分解Hash算法的快速流分类方法 |
CN101860531A (zh) * | 2010-04-21 | 2010-10-13 | 北京星网锐捷网络技术有限公司 | 数据包过滤规则匹配方法及装置 |
WO2011060368A1 (en) * | 2009-11-15 | 2011-05-19 | Solera Networks, Inc. | Method and apparatus for storing and indexing high-speed network traffic data |
CN102377581A (zh) * | 2010-08-09 | 2012-03-14 | 高通创锐讯通讯科技(上海)有限公司 | 一种多域流分类流水线的实现方法 |
CN103560958A (zh) * | 2013-10-18 | 2014-02-05 | 华为技术有限公司 | 一种数据包的规则匹配方法及装置 |
CN104468381A (zh) * | 2014-12-01 | 2015-03-25 | 国家计算机网络与信息安全管理中心 | 一种多域流规则匹配的实现方法 |
-
2015
- 2015-06-17 CN CN201510336583.XA patent/CN104954200A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101500012A (zh) * | 2009-02-27 | 2009-08-05 | 中国人民解放军信息工程大学 | 一种报文分类方法和系统 |
WO2011060368A1 (en) * | 2009-11-15 | 2011-05-19 | Solera Networks, Inc. | Method and apparatus for storing and indexing high-speed network traffic data |
CN101753445A (zh) * | 2009-12-23 | 2010-06-23 | 重庆邮电大学 | 基于关键字分解Hash算法的快速流分类方法 |
CN101860531A (zh) * | 2010-04-21 | 2010-10-13 | 北京星网锐捷网络技术有限公司 | 数据包过滤规则匹配方法及装置 |
CN102377581A (zh) * | 2010-08-09 | 2012-03-14 | 高通创锐讯通讯科技(上海)有限公司 | 一种多域流分类流水线的实现方法 |
CN103560958A (zh) * | 2013-10-18 | 2014-02-05 | 华为技术有限公司 | 一种数据包的规则匹配方法及装置 |
CN104468381A (zh) * | 2014-12-01 | 2015-03-25 | 国家计算机网络与信息安全管理中心 | 一种多域流规则匹配的实现方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106027459B (zh) * | 2015-12-28 | 2019-04-30 | 深圳市恒扬数据股份有限公司 | 一种访问控制列表的查询方法及装置 |
CN106027459A (zh) * | 2015-12-28 | 2016-10-12 | 深圳市恒扬数据股份有限公司 | 一种访问控制列表的查询方法及装置 |
CN106657128A (zh) * | 2017-01-05 | 2017-05-10 | 杭州迪普科技股份有限公司 | 基于通配符掩码规则的数据包过滤方法及装置 |
CN106657128B (zh) * | 2017-01-05 | 2020-03-06 | 杭州迪普科技股份有限公司 | 基于通配符掩码规则的数据包过滤方法及装置 |
CN107707479A (zh) * | 2017-10-31 | 2018-02-16 | 北京锐安科技有限公司 | 五元组规则的查找方法及装置 |
CN112671940A (zh) * | 2019-10-15 | 2021-04-16 | 瑞萨电子株式会社 | 网络处理设备以及通信帧的网络处理方法 |
CN111897644A (zh) * | 2020-08-06 | 2020-11-06 | 成都九洲电子信息系统股份有限公司 | 一种基于多维度的网络数据融合匹配方法 |
CN111897644B (zh) * | 2020-08-06 | 2024-01-30 | 成都九洲电子信息系统股份有限公司 | 一种基于多维度的网络数据融合匹配方法 |
CN112367262A (zh) * | 2020-08-20 | 2021-02-12 | 国家计算机网络与信息安全管理中心 | 一种五元组规则的匹配方法及装置 |
CN112532444B (zh) * | 2020-11-26 | 2023-02-24 | 上海阅维科技股份有限公司 | 用于网络镜像流量的数据流采样方法、系统、介质及终端 |
CN112532444A (zh) * | 2020-11-26 | 2021-03-19 | 上海阅维科技股份有限公司 | 用于网络镜像流量的数据流采样方法、系统、介质及终端 |
CN113904863A (zh) * | 2021-10-25 | 2022-01-07 | 杭州安恒信息技术股份有限公司 | 一种网络入侵检测方法、装置、设备及可读存储介质 |
CN113904863B (zh) * | 2021-10-25 | 2024-04-26 | 杭州安恒信息技术股份有限公司 | 一种网络入侵检测方法、装置、设备及可读存储介质 |
CN114430341A (zh) * | 2021-12-29 | 2022-05-03 | 武汉绿色网络信息服务有限责任公司 | 一种基于exact规则转mask规则的实现方法与装置 |
CN114666169A (zh) * | 2022-05-24 | 2022-06-24 | 杭州安恒信息技术股份有限公司 | 一种扫描探测类型的识别方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104954200A (zh) | 一种网络数据包的多类型规则高速匹配方法及装置 | |
US9246810B2 (en) | Hash-based load balancing with per-hop seeding | |
US8160069B2 (en) | System for forwarding a packet with a hierarchically structured variable-length identifier | |
US9294309B2 (en) | Forwarding tables for hybrid communication networks | |
US9083710B1 (en) | Server load balancing using minimally disruptive hash tables | |
CN100531199C (zh) | 有界索引可扩展的基于散列的IPv6地址查找方法 | |
CN107528783B (zh) | 利用对前缀长度进行两个搜索阶段的ip路由缓存 | |
US20130311492A1 (en) | Hash collision reduction system | |
EP1650911A2 (en) | Rendezvousing resource requests with corresponding resources | |
US8848707B2 (en) | Method for IP longest prefix match using prefix length sorting | |
US9729447B2 (en) | Apparatus and method for processing alternately configured longest prefix match tables | |
CN109639579B (zh) | 组播报文的处理方法及装置、存储介质、处理器 | |
JP2004537921A (ja) | 高速パケット転送のための方法及びシステム | |
US9391896B2 (en) | System and method for packet forwarding using a conjunctive normal form strategy in a content-centric network | |
WO2021135491A1 (zh) | 流表的匹配方法及装置 | |
CN113315705A (zh) | 基于单次哈希布隆过滤器的Flexible IP寻址方法及装置 | |
US11888743B1 (en) | Network device storage of incremental prefix trees | |
CN111131049B (zh) | 路由表项的处理方法及装置 | |
US20130077530A1 (en) | Scaling IPv6 on Multiple Devices Virtual Switching System with Port or Device Level Aggregation | |
WO2022166854A1 (zh) | 一种数据查找方法、装置及集成电路 | |
US8595239B1 (en) | Minimally disruptive hash table | |
WO2015165104A1 (zh) | 查找装置及方法 | |
CN102739550A (zh) | 基于随机副本分配的多存储器流水路由体系结构 | |
Byun et al. | IP address lookup algorithm using a vectored bloom filter | |
EP2947839B1 (en) | Method and apparatus to forward a request for content |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150930 |