CN101594303B - 基于网络流量统计信息的快速网包分类方法 - Google Patents
基于网络流量统计信息的快速网包分类方法 Download PDFInfo
- Publication number
- CN101594303B CN101594303B CN2009100881732A CN200910088173A CN101594303B CN 101594303 B CN101594303 B CN 101594303B CN 2009100881732 A CN2009100881732 A CN 2009100881732A CN 200910088173 A CN200910088173 A CN 200910088173A CN 101594303 B CN101594303 B CN 101594303B
- Authority
- CN
- China
- Prior art keywords
- spatial division
- port
- address
- rule
- network
- 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
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种基于网络流量统计信息的快速网包分类方法,属于网络流量过滤和监控技术领域。根据分类规则集确定包头各个域的空间划分及其规则映射表,建立地址查找表、端口查找表和规则查找表;记录网包包头在各个域空间划分中出现的次数并计算先验分布;根据先验分布建立各个域的字母搜索树;根据字母搜索树及查找表对接收的网包包头进行连续匹配;在更新时刻重新计算先验分布并更新字母搜索树,继续对接收的网络流量进行匹配。本方法从网包分类的两个不同层面使用了分类规则集以及网络流量的启发信息,增强了分类方法的适应性,提高了平均分类效率。本发明查找速度快、可适应性强,能够在多种平台上实现,适用于高性能网络流量的过滤和监控。
Description
技术领域
本发明涉及一种基于网络流量统计信息的快速网包分类方法,属于网络流量过滤和监控技术领域。
背景技术
互联网已成为当今社会的重要基础设施之一,网络应用对信息交换的高效性和安全性需求也随之不断提高。路由器除需具备传统的转发功能外,还必须能够支持访问控制、QoS、流量计费等功能。这些功能都要求路由器能根据网包包头对网络流量进行分类,并据此对网包进行不同方式的处理。网包分类通常指的是根据网包包头第三层、第四层的域来匹配过滤规则,并根据匹配结果对网包进行相应的处置。网包第三、第四层的包头域主要包括:源/目的网络层地址(各32位),源/目的传输层端口(各16位),协议类型(8位)等。大多数的网包分类方法均限制在这5个域上,在根据协议类型进行初分类之后,可以看作是对剩余4个域的网包分类。本发明提出的方法以4个域的分类作为示例,并能够扩展到支持任何维度的多域网包分类问题。
网包分类方法一直是国际学术界和工业界备受关注的课题。现有的千兆级以上的高端路由器大多采用基于ASIC/FPGA等专用芯片的解决方案。然而,基于专用芯片的设备价格昂贵,开发周期长,更新代价高,限制了高性能网关设备的广泛使用。因此,探索和开发具有可移植性、能适应多种硬件平台的高性能网包分类方法,成为推广高性能网关设备使用的有效途径。近年来,学术界提出了一系列网包分类方法,主要包括两类:基于树结构的Grid-of-Trie,ABV,HiCuts,HyperCuts等方法,以及基于表结构的Cross-producting,RFC,HSM等方法。
这些方法从不同角度挖掘网包分类规则集的结构特性,并通过启发信息来缩小搜索空间,从而加速方法执行速度。然而,网包分类问题涉及的是网络流量与分类规则集的匹配问题,现有的大多数方法仅仅从考虑从分类规则集的结构特性中挖掘启发信息来提高网包分类速度,而忽略了利用网络流量统计特性来提高性能。实际上,在网包分类实例中,位于特定网关位置的大部分网络流量往往只匹配规则集中的少量规则,而其余规则却很少被匹配。这是因为网包分类规则具有完备性,需要考虑防备各种可能的非授权访问,而特定网关位置的网络流量大部分属于正常访问流量,或者仅有少量的非授权访问,因此只会匹配规则集中的少量规则。这种网络流量在规则集匹配上的不均匀性,为加快网包分类方法的速率提供了新的途径。
发明内容
本发明的目的在于提供一种基于网络流量统计信息的快速网包分类方法,通过挖掘网络流量的启发信息,优化网包包头各个域的查找树结构,并通过层次化的空间映射表来实现快速的网包分类。
本发明提出的基于网络流量统计信息的快速网包分类方法,包括以下各步骤:
(1)根据用户预先设定的网包分类规则集,分别确定网包包头的源网络层地址、目的网络层地址、源传输层端口、目的传输层端口四个域在各自全空间中的空间划分,为四个域分别建立空间划分与网包分类规则之间的第一、第二、第三、第四规则映射表;
(2)以源网络层地址的空间划分序号SIP1~SIPu为列,以目的网络层地址的空间划分序号DIP1~DIPv为行,建立地址查找表,根据上述第一和第二规则映射表,分别将与源网络层地址的每个空间划分SIPa相对应的规则映射和与目的网络层地址的每个空间划分DIPb相对应的规则映射做“位与”运算,其中1≤a≤u,1≤b≤v,对运算所得的每个非重复的规则映射按出现的先后进行编号,得到地址编号AST1~ASTp,并将编号1~p写入以SIPa为列、以DIPb为行的地址查找表中的相应单元中,同时建立地址编号AST1~ASTp与网包分类规则之间的第五规则映射表;
(3)以源传输层端口的空间划分序号SP1~SPm为列,以目的传输层端口的空间划分序号DP1~DPn为行建立端口查找表,根据上述第三和第四规则映射表,分别将与源传输层端口的每个空间划分SPc相对应的规则映射和与目的传输层端口的每个空间划分DPd相对应的规则映射做“位与”运算,其中1≤c≤m,1≤d≤n,对运算所得的每个非重复的规则映射按出现的先后进行编号,得到端口编号PST1~PSTq,并将编号1~q写入以SPc为列、以DPd为行的端口查找表的单元中,同时建立端口编号PST1~PSTq与网包分类规则之间的第六规则映射表;
(4)以地址查找表中的地址编号AST1~ASTp为列,以端口查找表中的端口编号PST1~PSTq为行,建立规则查找表,根据上述第五和第六规则映射表,分别将与地址查找表中的每个地址编号ASTe相对应的规则映射和与端口查找表中的每个端口编号PSTf相对应的规则映射做“位与”运算,其中1≤e≤p,1≤f≤q,从右至左在运算所得的每个的规则映射中查找第一个为1的比特位的序号,将该序号写入以ASTe为列、以PSTf为行的端口查找表的单元中,该序号为匹配的优先级最高的规则序号,删除第一至第六规则映射表;
(5)根据用户设定的采样间隔,记录网络流量中输入的网包包头在各个域的空间划分中出现的次数,并在更新时刻对各个域的统计信息做归一化处理,从而得到各个域在空间划分中的先验分布;
(6)根据各个域在空间划分中的先验分布,利用字母搜索树分别建立一棵空间搜索树;
(7)对接收到的网包进行规则匹配:
根据网包包头的源/目的网络层地址,源/目的传输层端口四个域,利用四个域的字母搜索树分别确定网包包头四个域所在的空间划分的序号;
利用源/目的网络层地址的空间划分序号,检索地址查找表,同时利用源/目的传输层端口的空间序号检索端口查找表;
利用检索地址查找表得到的地址编号以及检索端口查找表得到的端口编号检索规则查找表,得到最终匹配的网包分类规则序号,并根据此序号指示的规则对网包进行放行或者阻止操作;
(8)重复步骤(7),对网络流量中的网包进行连续匹配,并根据用户预先设定的更新频率,在更新时刻到来时,重新执行步骤(5)~(8)。
上述方法的步骤(5)中,根据用户设定的采样间隔,记录网络流量输入的网包包头在各个域的空间划分中的出现的次数,并在更新时刻对各个域的统计信息做归一化处理,从而得到各个域在空间划分中的先验分布,其具体过程如下:
(5-1)设采样间隔为N个网包,从输入的网络包头信息队列中每N个连续到达的网包中抽取一个五元组包头信息作为一个采样样本,每个样本由下述四个域组成的数据组:
32位源网络层地址,用int32 SIP表示,int表示整数类型,下同;
32位目标网络层地址,用int32 DIP表示;
16位源传输层端口,用int16 SP表示;
16位目标传输层端口,用int16 DP表示;
(5-2)记录采样所得的样本网包包头在各个域的空间划分中出现的次数:
用数组int32 Stats_SIP[u]记录采样的网络包头在源网络层地址的u个空间划分中分别出现的次数;
用数组int32 Stats_DIP[v]记录采样的网络包头在目的网络层地址的v个空间划分中分别出现的次数;
用数组int32 Stats_SP[m]记录采样的网络包头在源传输层端口的m个空间划分中分别出现的次数;
用数组int32 Stats_DP[n]记录采样的网络包头在目的传输层端口的n个空间划分中分别出现的次数;
(5-3)最后做归一化,得到网包包头各个域在其空间划分中的先验分布,归一化的方法为:
对于源网络层地址,其空间划分的先验分布为:
对于目的网络层地址,其空间划分的先验分布为:
对于源传输层端口,其空间划分的先验分布为:
对于目的传输层端口,其空间划分的先验分布为:
本发明提出的基于网络流量统计信息的网包分类方法,不仅利用网包分类规则集的空间划分启发式信息来建立快速查找表,并且通过挖掘网络流量中的启发信息,进一步优化单个域的查找速度。本方法集成了两个不同层面的启发式信息来优化算法数据结构,避免了单一式启发算法在特定网络环境下性能骤降所带来的缺陷,从而达到较好的稳定性和平衡性。并且,由于采用网络流量统计信息作为先验知识,使得本方法具有自适应性调节能力,提高平均分类效率。
与现有的网包分类方法相比,现有的千兆级以上的高端路由器大多采用基于ASIC/FPGA等专用芯片的解决方案。然而,基于专用芯片的设备价格昂贵,开发周期长,更新代价高,限制了高性能网关设备的广泛使用。本发明提出的网包分类方法查找速度快,可适应性强,并且能够在多种平台上实现,包括通用处理器平台、网络处理器平台、以及多核处理器平台。本发明结合高性能处理器平台的软硬件一体化方案,为降低高端路由器和防火墙的成本提供了可能,势必推动网络安全设备的广泛实施。
附图说明
图1是本发明中对接收的网包进行规则匹配的流程框图。
图2是本发明方法的数据结构图示例。
图3是目的传输层端口的字母搜索树示例。
图4是目的传输层端口的平衡二叉搜索树示例。
图5是更新后的目的传输层端口的字母搜索树示例。
具体实施方式
本发明提出的基于网络流量统计信息的快速网包分类方法,包括以下各步骤:
(1)根据用户预先设定的网包分类规则集,针对网包包头的源网络层地址(SIP)、目的网络层地址(DIP)、源传输层端口(SP)、目的传输层端口(DP)四个域,分别确定其在各自全空间中的空间划分,然后分别为四个域建立其空间划分与网包分类规则之间的规则映射表(Rule Bitmap),以标识每个域的每个空间划分被哪些规则所覆盖:
网包分类规则集中的每条规则通常包含6个属性:规则序号用来标记规则,同时也给出了规则的优先级,序号越小,优先级越高。源地址给出32位的源地址范围,目的地址给出32位的目的地址范围,源端口给出16位源端口范围,目的端口给出16位目的端口范围,动作指出对匹配该规则的网包所进行的动作,即放行或阻止该网包;
源网络层地址的全空间大小为232,按照网包分类规则集中的所有规则将源网络层地址全空间分割为互不重叠的空间划分,将空间划分分别编号为SIP1~SIPu,每个空间划分对应一个规则映射(Bitmap)(即一个比特串),规则映射从低位至高位的第k个比特位标识了该空间划分是否被网包分类规则集的第k条规则覆盖,1表示被覆盖,0表示不被覆盖;
目的网铬层地址的全空间大小为232,按照网包分类规则集中的所有规则将目的网络层地址全空间分割为互不重叠的空间划分,其空间划分分别编号为DIP1~DIPv,每个空间划分对应一个规则映射(Bitmap)(即一个比特串),规则映射从低位至高位的第k个比特位标识了该空间划分是否被网包分类规则集的第k条规则覆盖,1表示被覆盖,0表示不被覆盖;
源传输层端口的全空间大小为216,按照网包分类规则集中的所有规则将源传输层端口全空间分割为互不重叠的空间划分,其空间划分分别编号为SP1~SPm,每个空间划分对应一个规则映射(Bitmap)(即一个比特串),规则映射从低位至高位的第k个比特位标识了该空间划分是否被网包分类规则集的第k条规则覆盖,1表示被覆盖,0表示不被覆盖;
目的传输层端口的全空间大小为216,按照网包分类规则集中的所有规则将目的传输层端口全空间分割为互不重叠的空间划分,其空间划分分别编号为DP1~DPn,每个空间划分对应一个规则映射(Bitmap)(即一个比特串),规则映射从低位至高位的第k个比特位标识了该空间划分是否被网包分类规则集的第k条规则覆盖,1表示被覆盖,0表示不被覆盖;
(2)以源网络层地址的空间划分序号SIP1~SIPu为列,以目的网络层地址的空间划分序号DIP1~DIPv为行,建立地址查找表(Address Search Table),根据上述第一和第二规则映射表,分别将与源网络层地址的每个空间划分SIPa(1≤a≤u)相对应的规则映射和与目的网络层地址的每个空间划分DIPb(1≤b≤v)相对应的规则映射做“位与”运算,对运算所得的每个非重复的规则映射按出现的先后进行编号,得到地址编号AST1~ASTp,并将编号1~p写入以SIPa为列、以DIPb为行的地址查找表中的相应单元中,同时建立地址编号AST1~ASTp与网包分类规则之间的第五规则映射表;
(3)以源传输层端口的空间划分序号SP1~SPm为列,以目的传输层端口的空间划分序号DP1~DPn为行建立端口查找表(Port Search Table),根据上述第三和第四规则映射表,分别将与源传输层端口的每个空间划分SPc(1≤c≤m)相对应的规则映射和与目的传输层端口的每个空间划分DPd(1≤d≤n)相对应的规则映射做“位与”运算,对运算所得的每个非重复的规则映射按出现的先后进行编号,得到端口编号PST1~PSTq,并将编号1~q写入以SPc为列、以DPd为行的端口查找表的单元中,同时建立端口编号PST1~PSTq与网包分类规则之间的第六规则映射表;
(4)以地址查找表中的地址编号AST1~ASTp为列,以端口查找表中的端口编号PST1~PSTq为行,建立规则查找表(Policy Lookup Table),根据上述第五和第六规则映射表,分别将与地址查找表中的每个地址编号ASTe(1≤e≤p)相对应的规则映射和与端口查找表中的每个端口编号PSTf(1≤f≤q)相对应的规则映射做“位与”运算,在运算所得的每个的规则映射(比特串)从低位至高位找出第一个为1的比特位的序号,将该序号写入以ASTe为列、以PSTf为行的端口查找表的单元中,该序号为匹配的优先级最高的规则序号,删除第一至第六规则映射表;
(5)根据用户设定的采样间隔,记录网络流量输入的网包包头在各个域的空间划分中的出现的次数,并在更新时刻对各个域的统计信息做归一化处理,从而得到各个域在空间划分中的先验分布;
假设采样间隔为N个网包,那么采样单元从输入的网络包头信息队列中的每N个连续到达的网包中抽取一个五元组包头信息作为一个采样样本,每个样本是一个由下述四个域组成的数据组:
32位源网络层地址,用int32 SIP表示,int表示整数类型,下同;
32位目标网络层地址,用int32 DIP表示;
16位源传输层端口,用int16 SP表示;
16位目标传输层端口,用int16 DP表示;
记录统计量:记录采样所得的样本网包包头在各个域的空间划分中出现的次数:
用数组int32 Stats_SIP[u]来记录采样的网络包头在源网络层地址的u个空间划分中分别出现的次数;
用数组int32 Stats_DIP[v]来记录采样的网络包头在目的网络层地址的v个空间划分中分别出现的次数;
用数组int32 Stats_SP[m]来记录采样的网络包头在源传输层端口的m个空间划分中分别出现的次数;
用数组int32 Stats_DP[n]来记录采样的网络包头在目的传输层端口的n个空间划分中分别出现的次数;
最后做归一化,得到网包包头各个域在其空间划分中的先验分布。归一化的方法为:
对于源网络层地址,其空间划分的先验分布为:
对于目的网络层地址,其空间划分的先验分布为:
对于源传输层端口,其空间划分的先验分布为:
对于目的传输层端口,其空间划分的先验分布为:
(6)根据各个域空间划分的先验分布,利用已有的字母搜索树(Alphabetic SearchTree)分别建立一棵空间搜索树,至此预处理完成;
(7)对接收到的网包进行规则匹配:
根据网包包头的源/目的网络层地址,源/目的传输层端口四个域,利用四个域的字母搜索树分别确定网包包头四个域所在的空间划分的序号;
利用源/目的网络层地址的空间划分序号,检索地址查找表,同时利用源/目的传输层端口的空间序号检索端口查找表;
利用检索地址查找表得到的地址编号以及检索端口查找表得到的端口编号检索规则查找表,得到最终匹配的网包分类规则序号,并根据此序号指示的规则对网包进行放行或者阻止操作;
(8)重复步骤(7),对网络流量中的网包进行连续匹配,并根据用户预先设定的更新频率,在更新时刻到来时,重新执行步骤(5)~(8)。
以下介绍本发明的一个实施例:
本发明方法包括的八个步骤,可以分为三个阶段,预处理阶段、分类规则匹配阶段、以及数据结构更新阶段。预处理阶段包括步骤一至步骤六,其目的在于生成网包分类所需的数据结构;分类规则匹配阶段即步骤七,其目的是对输入的网络流量进行扫描和过滤;数据结构更新阶段即步骤八,其目的是在更新时刻到来时重新生成包头各个域的空间搜索树。以下就按照八个步骤的次序举例说明本发明的具体实施方法。
步骤一:根据网包分类规则集,针对网包包头的源网络层地址(SIP)、目的网络层地址(DIP)、源传输层端口(SP)、目的传输层端口(DP)四个域,分别确定其空间划分(Segmentation),并为每个域的空间划分建立规则映射表(Rule Bitmap)。
网包分类规则集中的每条规则通常包含6个属性:规则序号用来标记规则,同时也给出了规则的优先级,序号越小,优先级越高。源地址给出32位的源地址范围,目的地址给出32位的目的地址范围,源端口给出16位源端口范围,目的端口给出16位目的端口范围,动作指出对匹配该规则的网包所进行的动作,即放行或阻止该网包。表1给出了一个网包分类规则集的示例,下面以目的传输层端口为例说明确定单个域空间划分以及为每个空间划分建立规则映射的过程。
规则序号 | 源地址 | 目的地址 | 源端口 | 目的端口 | 动作 |
1 | 0.0.0.0~64.0.0.0.0 | 32.0.0.0~64.0.0.0 | 0~65535 | 20~21 | 放行 |
2 | 32.0.0.0~128.0.0.0 | 64.0.0.0~192.0.0.0 | 0~5000 | 53~53 | 阻止 |
3 | 32.0.0.0~192.0.0.0 | 64.0.0.0~128.0.0.0 | 0~65535 | 80~88 | 放行 |
4 | 0.0.0.0~255.255.255.255 | 0.0.0.0~255.255.255.255 | 0~65535 | 0~65535 | 阻止 |
表1网包分类规则集示例
按照表1所示的规则集,目的端口被4条规则分割成7个空间划分(Segmentation),分割的方法是将各条规则目的端口的起始值和终止值作为分界点,将空间划分为没有交叉的单元,具体如表2第二列所示。
规则映射的生成方法是:针对每个空间划分,用一个比特串(Bitmap)来标识该空间划分被哪几条规则所覆盖。比特串从低位到高位分别代表规则1、2、3、4。例如,空间划分DP1只被规则4覆盖,那么其规则映射为1000;空间划分DP2被规则1和规则4所覆盖,那么其规则映射为1001。将目的端口的空间划分及其规则映射列成一张表,即构成了目的端口的规则映射表(即第四规则映射表),如表2第三列所示。
此处以目的传输端口为例说明了空间划分和规则映射的生成方法,其他三个域的空间划分和规则映射生成方法与此相同。按照表1所示的规则集,源网络层地址、目的网络层地址的空间划分以及它们对应的第一、第二、第三规则映射表分别如表3、表4、表5所示。
空间划分 | 取值范围 | 规则映射 |
DP1 | 0~19 | 1000 |
DP2 | 20~21 | 1001 |
DP3 | 22~52 | 1000 |
DP4 | 53~53 | 1010 |
DP5 | 54~79 | 1000 |
DP6 | 80~88 | 1100 |
DP7 | 89~65535 | 1000 |
表2目的传输层端口的空间划分与第四规则映射表示例
空间划分 | 取值范围 | 规则映射 |
SIP1 | 0.0.0.0~31.255.255.255 | 1001 |
SIP2 | 32.0.0.0~63.255.255.255 | 1111 |
SIP3 | 64.0.0.0~127.255.255.255 | 1110 |
SIP4 | 128.0.0.0~191.255.255.255 | 1100 |
SIP5 | 192.0.0.0~255.255.255.255 | 1000 |
表3源网络层地址的空间划分与第一规则映射表示例
空间划分 | 取值范围 | 规则映射 |
DIP1 | 0.0.0.0~31.255.255.255 | 1000 |
DIP2 | 32.0.0.0~63.255.255.255 | 1001 |
DIP3 | 64.0.0.0~127.255.255.255 | 1110 |
DIP4 | 128.0.0.0~191.255.255.255 | 1010 |
DIP5 | 192.0.0.0~255.255.255.255 | 1000 |
表4目的网络层地址的空间划分与第二规则映射表示例
空间划分 | 取值范围 | 规则映射 |
SP1 | 0~5000 | 1111 |
SP2 | 5000~65535 | 1101 |
表5源传输层端口的空间划分与第三规则映射表示例
步骤二:根据源/目的网络层地址的空间划分对应的第一/第二规则映射表建立地址查找表(Address Search Table),并为地址查找表中的每个单元设定相应的规则映射,从而建立与地址查找表对应的第五规则映射表。
依照表3和表4所示源/目的网络层地址的空间划分对应的第一/第二规则映射表,将得到如表6所示的地址查找表以及如表7所示的与地址查找表对应的第五规则映射表。其生成过程为:将SIP1~SIP5的规则映射分别与DIP1~DIP5的规则映射做“位与”运算,并对每个非重复的规则映射按出现的先后进行地址编号,并将序号记入地址查找表中,同时将序号及其规则映射存储在与地址查找表对应的第五规则映射表中。具体来说:首先,将SIP1的规则映射1001与DIP1的规则映射1000做“位与”运算,得到的规则映射为1000,将其编号为1,在地址查找表中将SIP1与DIP1的交叉位置记录序号1,并将序号1和规则映射1000存储在地址查找表的规则映射表中;接着,将SIP1的规则映射1001与DIP2的规则映射1001做“位与”运算,得到的规则映射为1001,将其编号为2,在地址查找表中将SIP1与DIP2的交叉位置记录序号2,并将序号2和规则映射1001存储在地址查找表的规则映射表中;然后,将SIP1的规则映射1001与DIP3的规则映射1110做“位与”运算,得到的规则映射为1000,由于已经出现过,其序号为1,因此只需在地址查找表中SIP1与DIP3的交叉位置记录序号1,而无需再次写入规则映射表;最后,依此规律完成SIP1~SIP5的规则映射与DIP1~DIP5的规则映射的“位与”运算。
AST | SIP1 | SIP2 | SIP3 | SIP4 | SIP5 |
DIP1 | 1 | 1 | 1 | 1 | 1 |
DIP2 | 2 | 2 | 1 | 1 | 1 |
DIP3 | 1 | 3 | 3 | 5 | 1 |
DIP4 | 1 | 4 | 4 | 1 | 1 |
DIP5 | 1 | 1 | 1 | 1 | 1 |
表6地址查找表(Address Search Table)
空间划分 | 规则映射 |
AST1 | 1000 |
AST2 | 1001 |
AST3 | 1110 |
AST4 | 1010 |
AST5 | 1100 |
表7与地址查找表对应的第五规则映射表
步骤三:根据源/目的传输层端口的空间划分对应的第三/第四规则映射表建立端口查找表(Port Search Table),并为端口查找表中的每个单元设定相应的规则映射表,从而建立与端口查找表对应的第六规则映射表。
依照表5和表2所示源/目的网络层地址的空间划分对应的第三/第四规则映射表,将得到如表8所示的端口查找表以及如表9所示的端口查找表对应的第六规则映射表。其生成过程为:将SP1~SP2的规则映射分别与DP1~DP7的规则映射做“位与”运算,并对每个非重复的规则映射按出现的先后进行端口编号,,并将序号记入端口查找表中,同时将序号及其规则映射存储在与端口查找表对应的第六规则映射表中。其具体操作类似步骤二,不再赘述。
PST | SP1 | SP2 |
DP1 | 1 | 1 |
DP2 | 2 | 2 |
DP3 | 1 | 1 |
DP4 | 3 | 1 |
DP5 | 1 | 1 |
DP6 | 4 | 4 |
DP7 | 1 | 1 |
表8端口查找表(Port Search Table)
空间划分 | 规则映射 |
PST1 | 1000 |
PST2 | 1001 |
PST3 | 1010 |
PST4 | 1100 |
表9与端口查找表对应的第六规则映射表
步骤四:根据地址查找表对应的第五规则映射表以及端口查找表对应的第六规则映射表,建立规则查找表(Policy Lookup Table),删除所有的规则映射表。
根据表7所示的与地址查找表对应的第五规则映射表以及表9所示的与端口查找表对应的第六规则映射表,将得到如表10所示的规则查找表。其生成方法为:将AST1~AST5的规则映射分别与PST1~PST4的规则映射做“位与”运算,将分别得到一个规则映射,由于规则映射指示了所匹配的规则序号,根据规则的优先级,将得到最终匹配的规则序号,将其存储在规则查找表中。举例来说,将AST1的规则映射1000与PST2的规则映射1001做“位与”运算,将得到规则映射1000,它指示了匹配的规则为规则4,因此在AST1与PST2的交叉位置写入规则序号4;再如,将AST3的规则映射1110与PST4的规则映射1100做“位与”运算,将得到规则映射1100,它指示了匹配的规则为规则3和规则4,根据规则的优先级,最终匹配的规则为规则3,因此在AST3和PST4的交叉位置写入规则序号3。依此类推。
在生成规则查找表之后,所有的规则映射表的作用已经完成,因此删除所有的规则映射表,包括源/目的网路层地址对应的第一/第二规则映射表,源/目的传输层端口对应的第三/第四规则映射表,地址查找表对应的第五规则映射表,以及端口查找表对应的第六规则映射表。
PLT | AST1 | AST2 | AST3 | AST4 | AST5 |
PST1 | 4 | 4 | 4 | 4 | 4 |
PST2 | 4 | 1 | 4 | 4 | 4 |
PST3 | 4 | 4 | 2 | 2 | 4 |
PST4 | 4 | 4 | 3 | 4 | 3 |
表10规则查找表(Policy Lookup Table)
步骤五:采样单元根据采样间隔记录网络流量输入的网包包头在各个域的空间划分中的出现的次数,并在更新时刻对各个域的统计信息做归一化处理,从而得到各个域在其空间划分中的先验分布。
假设采样间隔为N个网包,那么采样单元从输入的网络包头信息队列中的每N个连续到达的网包中抽取一个五元组包头信息作为一个采样样本,每个样本是一个由下述四个域组成的数据组:
32位源网络层地址,用int32SIP表示,int表示整数类型,下同;
32位目标网络层地址,用int32 DIP表示;
16位源传输层端口,用int16 SP表示;
16位目标传输层端口,用int16 DP表示;
记录统计量:记录采样所得的样本网包包头在各个域的空间划分中出现的次数。用数组int32 Stats_SIP[5]来记录采样的网络包头在源网络层地址的5个空间划分中分别出现的次数,用数组int32 Stats_DIP[5]来记录采样的网络包头在目的网络层地址的5个空间划分中分别出现的次数,用数组int32 Stats_SP[2]来记录采样的网络包头在源传输层端口的2个空间划分中分别出现的次数,用数组int32 Stats_DP[7]来记录采样的网络包头在目的传输层端口的7个空间划分中分别出现的次数。
最后做归一化,得到网包包头各个域在其空间划分中的先验分布。归一化的方法如下:
对于源网络层地址,其空间划分的先验分布为:
对于目的网络层地址,其空间划分的先验分布为:
对于源传输层端口,其空间划分的先验分布为:
对于目的传输层端口,其空间划分的先验分布为:
步骤六:根据各个域空间划分的先验分布,利用字母搜索树(Alphabetic Search Tree)分别建立一棵空间搜索树,至此预处理完成。
得到各个域空间划分的先验分布之后,为每个域建立一棵字母搜索树,其优点在于:相比于普通的二叉平衡搜索树,能够利用先验概率得到更短的平均树深度(Tree Depth)。在此,依然以目的传输层端口为例,假设表2所示的目的传输层端口的空间划分具有如表11所示的先验分布。
空间划分 | 取值范围 | 先验概率 |
DP1 | 0~19 | 0.01 |
DP2 | 20~21 | 0.01 |
DP3 | 22~52 | 0.02 |
DP4 | 53~53 | 0.10 |
DP5 | 54~79 | 0.12 |
DP6 | 80~88 | 0.60 |
DP7 | 89~65535 | 0.14 |
表11目的传输层端口的先验分布示例
按照字母搜索树的生成方式,根据表11所示的先验概率分布,将得到如图3所示的目的传输层端口的字母搜索树,其深度为3.2。而如果采用不考虑先验概率的平衡二叉搜索树,其树结构将如图4所示,其深度为3.88。可见,在此示例中,采用字母搜索树能够将平均搜索深度减小18%。字母搜索树是加权搜索树的一种,其原理参见文献T.C.Hu and A.C.Tucker,Optimal computer search trees and variable length alphabetic codes,SIAM Journal onApplied Mathematics,21:514-532,1971.
其他三个域的字母搜索树的生成方式与此相同。
步骤七:对接收到的网包进行规则匹配:首先,针对网包包头的四个域,利用各个域的字母搜索树分别确定其所在的空间划分;其次,利用源/目的网络层地址的空间划分序号索引地址查找表,同时利用源/目的传输层端口的空间序号索引端口查找表;最后,利用索引地址查找表得到的序号以及索引端口查找表得到的序号索引规则查找表,得到最终匹配的网包分类规则序号。
举例来说,假设接收到的网包包头源网络层地址为166.111.120.83,目的网络层地址为72.155.10.25,源传输层端口为3300,目的传输层端口为80,而规则集依然如表1所示。首先,利用四个域的字母搜索树,将得到源网络层地址所在的空间划分为SIP4,目的网络层地址所在的空间划分为DIP3,源传输层端口所在的空间划分为SP1,目的传输层端口所在的空间划分为DP6。其次,利用源网络层地址所在的空间划分序号SIP4和目的网络层地址所在的空间划分序号DIP3索引地址查找表,按照表6所示的地址查找表将得到序号5,同时利用源传输层端口所在的空间划分SP1以及目的传输层端口所在的空间划分DP6索引端口查找表,按照表8所示的端口查找表将得到序号4。最后,利用索引地址查找表得到的序号AST5,以及索引端口查找表得到的序号PST4,索引表10所示的规则查找表,将得到最终的匹配规则序号3。
步骤八:重复步骤七,对网络流量中的网包进行连续匹配,并根据预先设定的更新频率,在更新时刻到来时,重新执行步骤五~步骤八。
按照步骤七的方法,对接收到的网包包头进行连续匹配,并根据匹配的规则做相应的放行或阻止操作。
在更新时刻到来时,重新执行步骤五~步骤八,即将上一个更新时刻至本更新时刻之间的统计量进行归一化,并据此更新各个域的字母搜索树结构,然后利用新产生的搜索树继续查找过程,即对网络流量中的网包进行连续匹配。
在此,特别举例说明调整字母搜索树的过程。假设表11所示的目的传输层端口的先验分布中,DP2的先验概率变为0.6,而DP6的先验概率变为0.01,那么图3所示的目的传输层端口的搜索树深度将为4.88,反而大于平衡二叉树搜索树的深度3.88,因此调整字母搜索树结构变得非常必要。根据新的先验概率分布,将得到图5所示的更新后的目的传输层端口的字母搜索树。
更新后的字母搜索树深度为3.79,仍然小于平衡二叉搜索树的深度3.88,更远小于更新之前的字母搜索树深度4.88。
本发明中根据网络流量统计信息来定时更新单个域空间搜索树的思想,能够根据不同网络的流量特性以及网络不同时段的统计特性来变换网包分类方法的数据结构,从而加速网包分类方法速度,同时增加了网络分类方法的可适应性和稳定性。除此之外,本发明利用了网络分类规则的特性来提取启发信息,通过规则映射表的辅助,生成了三张空间查找表(地址查找表、端口查找表及规则查找表),这样在得到各个域的空间划分序号之后,只需要额外的三次表格索引即可得到最终的匹配规则序号。
本方法从网包分类问题的两个不同层面结合使用了分类规则集以及网络流量的启发信息,避免了单一启发式算法性能受数据结构变化影响较大带来的问题。流量统计特性的引入,使得该方法通过先验概率而具有贝叶斯分类器特性,从而能够根据特定的网络结构和网络流量特性进行自适应调节,提高平均分类效率。
本发明提出的网包分类方法查找速度快,可适应性强,并且能够在多种平台上实现,包括通用处理器平台、网络处理器平台、以及多核处理器平台。本发明结合高性能处理器平台的软硬件一体化方案,为降低高端路由器和防火墙的成本提供了可能,势必推动网络安全设备的广泛实施。
Claims (2)
1.一种基于网络流量统计信息的快速网包分类方法,其特征在于该方法包括以下各步骤:
(1)根据用户预先设定的网包分类规则集,分别确定网包包头的源网络层地址、目的网络层地址、源传输层端口、目的传输层端口四个域在各自全空间中的空间划分,为四个域分别建立空间划分与网包分类规则之间的第一、第二、第三、第四规则映射表;
(2)以源网络层地址的空间划分序号SIP1~SIPu为列,以目的网络层地址的空间划分序号DIP1~DIPv为行,建立地址查找表,根据上述第一和第二规则映射表,分别将与源网络层地址的每个空间划分SIPa相对应的规则映射和与目的网络层地址的每个空间划分DIPb相对应的规则映射做“位与”运算,其中1≤a≤u,1≤b≤v,对运算所得的每个非重复的规则映射按出现的先后进行编号,得到地址编号AST1~ASTp,并将编号1~p写入以SIPa为列、以DIPb为行的地址查找表中的相应单元中,同时建立地址编号AST1~ASTp与网包分类规则之间的第五规则映射表;
(3)以源传输层端口的空间划分序号SP1~SPm为列,以目的传输层端口的空间划分序号DP1~DPn为行建立端口查找表,根据上述第三和第四规则映射表,分别将与源传输层端口的每个空间划分SPc相对应的规则映射和与目的传输层端口的每个空间划分DPd相对应的规则映射做“位与”运算,其中1≤c≤m,1≤d≤n,对运算所得的每个非重复的规则映射按出现的先后进行编号,得到端口编号PST1~PSTq,并将编号1~q写入以SPc为列、以DPd为行的端口查找表的单元中,同时建立端口编号PST1~PSTq与网包分类规则之间的第六规则映射表;
(4)以地址查找表中的地址编号AST1~ASTp为列,以端口查找表中的端口编号PST1~PSTq为行,建立规则查找表,根据上述第五和第六规则映射表,分别将与地址查找表中的每个地址编号ASTe相对应的规则映射和与端口查找表中的每个端口编号PSTf相对应的规则映射做“位与”运算,其中1≤e≤p,1≤f≤q,从右至左在运算所得的每个的规则映射中查找第一个为1的比特位的序号,将该序号写入以ASTe为列、以PSTf为行的端口查找表的单元中,该序号为匹配的优先级最高的规则序号,删除第一至第六规则映射表;
(5)根据用户设定的采样间隔,记录网络流量中输入的网包包头在各个域的空间划分中出现的次数,并在更新时刻对各个域的统计信息做归一化处理,从而得到各个域在空间划分中的先验分布;
(6)根据各个域在空间划分中的先验分布,利用字母搜索树分别建立一棵空间搜索树;
(7)对接收到的网包进行规则匹配:
根据网包包头的源/目的网络层地址,源/目的传输层端口四个域,利用四个域的字母搜索树分别确定网包包头四个域所在的空间划分的序号;
利用源/目的网络层地址的空间划分序号,检索地址查找表,同时利用源/目的传输层端口的空间序号检索端口查找表;
利用检索地址查找表得到的地址编号以及检索端口查找表得到的端口编号检索规则查找表,得到最终匹配的网包分类规则序号,并根据此序号指示的规则对网包进行放行或者阻止操作;
(8)重复步骤(7),对网络流量中的网包进行连续匹配,并根据用户预先设定的更新频率,在更新时刻到来时,重新执行步骤(5)~(8)。
2.如权利要求1所述的方法,其特征在于所述的步骤(5)根据用户设定的采样间隔,记录网络流量输入的网包包头在各个域的空间划分中的出现的次数,并在更新时刻对各个域的统计信息做归一化处理,从而得到各个域在空间划分中的先验分布,其具体过程如下:
(5-1)设采样间隔为N个网包,从输入的网络包头信息队列中每N个连续到达的网包中抽取一个五元组包头信息作为一个采样样本,每个样本由下述四个域组成的数据组:
32位源网络层地址,用int32 SIP表示,int表示整数类型,下同;
32位目标网络层地址,用int32 DIP表示;
16位源传输层端口,用int16 SP表示;
16位目标传输层端口,用int16 DP表示;
(5-2)记录采样所得的样本网包包头在各个域的空间划分中出现的次数:
用数组int32 Stats_SIP[u]记录采样的网络包头在源网络层地址的u个空间划分中分别出现的次数;
用数组int32 Stats_DIP[v]记录采样的网络包头在目的网络层地址的v个空间划分中分别出现的次数;
用数组int32 Stats_SP[m]记录采样的网络包头在源传输层端口的m个空间划分中分别出现的次数;
用数组int32 Stats_DP[n]记录采样的网络包头在目的传输层端口的n个空间划分中分别出现的次数;
(5-3)最后做归一化,得到网包包头各个域在其空间划分中的先验分布,归一化的方法为:
对于源网络层地址,其空间划分的先验分布为:
对于目的网络层地址,其空间划分的先验分布为:
对于源传输层端口,其空间划分的先验分布为:
对于目的传输层端口,其空间划分的先验分布为:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100881732A CN101594303B (zh) | 2009-07-10 | 2009-07-10 | 基于网络流量统计信息的快速网包分类方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100881732A CN101594303B (zh) | 2009-07-10 | 2009-07-10 | 基于网络流量统计信息的快速网包分类方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101594303A CN101594303A (zh) | 2009-12-02 |
CN101594303B true CN101594303B (zh) | 2011-06-01 |
Family
ID=41408757
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100881732A Active CN101594303B (zh) | 2009-07-10 | 2009-07-10 | 基于网络流量统计信息的快速网包分类方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101594303B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8737204B2 (en) | 2011-05-02 | 2014-05-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Creating and using multiple packet traffic profiling models to profile packet flows |
US8817655B2 (en) | 2011-10-20 | 2014-08-26 | Telefonaktiebolaget Lm Ericsson (Publ) | Creating and using multiple packet traffic profiling models to profile packet flows |
EP2587751A1 (en) | 2011-10-24 | 2013-05-01 | TELEFONAKTIEBOLAGET LM ERICSSON (publ) | Method and arrangement for data clustering |
CN104462144B (zh) * | 2013-09-24 | 2019-06-14 | 中兴通讯股份有限公司 | 一种包分类规则的查找方法及装置 |
CN103581007A (zh) * | 2013-10-28 | 2014-02-12 | 汉柏科技有限公司 | 一种报文分类及查找方法 |
CN104753726B (zh) * | 2013-12-25 | 2018-04-20 | 任子行网络技术股份有限公司 | 一种串行数据流的审计控制方法及系统 |
CN103873320B (zh) * | 2013-12-27 | 2017-06-13 | 北京天融信科技有限公司 | 加密流量识别方法及装置 |
CN103841112B (zh) * | 2014-03-18 | 2017-07-14 | 新华三技术有限公司 | 基于网包分类的分类规则处理方法及装置、匹配装置 |
CN103888350B (zh) * | 2014-03-31 | 2017-04-19 | 清华大学 | 一种多域网包分类规则集的分组方法 |
CN103973675B (zh) * | 2014-04-15 | 2017-05-24 | 湖南大学 | 跨域协作防火墙中的分段冗余检测方法 |
CN103986667B (zh) * | 2014-05-07 | 2017-10-10 | 华为技术有限公司 | 选择数据包分类算法的方法和装置 |
CN105245462A (zh) * | 2015-11-04 | 2016-01-13 | 上海斐讯数据通信技术有限公司 | 一种路由指示灯控制方法及路由器 |
CN106100998B (zh) * | 2016-08-23 | 2019-07-09 | 杭州迪普科技股份有限公司 | 一种路由过滤规则的组织方法和装置 |
CN107483343A (zh) * | 2017-09-29 | 2017-12-15 | 湖南恒茂高科股份有限公司 | 地址表存储查找方法、装置、计算机设备及可读存储介质 |
CN108199924B (zh) * | 2018-01-26 | 2020-02-18 | 北京邮电大学 | 基于带内网络遥测的全网流量可视化方法及装置 |
CN109376789B (zh) * | 2018-10-31 | 2020-12-08 | 钟祥博谦信息科技有限公司 | 一种网络包分类算法与系统 |
CN114301680B (zh) * | 2021-12-29 | 2024-05-07 | 山石网科通信技术股份有限公司 | 一种安全策略的匹配方法及装置、存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1719769A (zh) * | 2004-07-09 | 2006-01-11 | 杭州华为三康技术有限公司 | 在网络设备中对接收数据包进行分类的方法 |
CN1822567A (zh) * | 2005-12-23 | 2006-08-23 | 清华大学 | 基于网络流量的多域网包分类方法 |
-
2009
- 2009-07-10 CN CN2009100881732A patent/CN101594303B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1719769A (zh) * | 2004-07-09 | 2006-01-11 | 杭州华为三康技术有限公司 | 在网络设备中对接收数据包进行分类的方法 |
CN1822567A (zh) * | 2005-12-23 | 2006-08-23 | 清华大学 | 基于网络流量的多域网包分类方法 |
Non-Patent Citations (1)
Title |
---|
Bo Xu等.《HSM:a fast packet classification algorithm》.《Advanced Information Networking and Applications,2005.AINA 2005.19th International Conference on》.2005,1-6. * |
Also Published As
Publication number | Publication date |
---|---|
CN101594303A (zh) | 2009-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101594303B (zh) | 基于网络流量统计信息的快速网包分类方法 | |
Meiners et al. | Split: Optimizing space, power, and throughput for TCAM-based classification | |
Gogoi et al. | MLH-IDS: a multi-level hybrid intrusion detection method | |
CN101345707B (zh) | 一种实现IPv6报文分类的方法及设备 | |
El-Atawy et al. | Using online traffic statistical matching for optimizing packet filtering performance | |
CN101146027B (zh) | 基于访问控制列表分类的方法 | |
CN107370752B (zh) | 一种高效的远控木马检测方法 | |
CN106452868A (zh) | 一种支持多维度聚合分类的网络流量统计实现方法 | |
CN103238145A (zh) | 用于网络装备中的高性能、可更新和确定的哈希表的方法和设备 | |
CN102685145A (zh) | 一种基于dns数据包的僵尸网络域名发现方法 | |
CN100488174C (zh) | 流分类中基于硬件的差异化组织方法 | |
CN100385880C (zh) | 分组分类装置和使用字段级特里结构的方法 | |
CN106776791A (zh) | 一种基于云服务的模式串匹配验证方法及装置 | |
WO2009052039A1 (en) | Efficient intrusion detection | |
CN100486211C (zh) | 一种用于因特网的基于规则集合划分的分组分类的方法 | |
CN109921995A (zh) | 一种配置地址表的方法、fpga和应用该fpga的网络设备 | |
CN1232922C (zh) | 一种改进防火墙性能的方法 | |
CN106100997A (zh) | 一种网络流量信息处理方法及装置 | |
CN100397816C (zh) | 在网络设备中对接收数据包进行分类的方法 | |
CN100452732C (zh) | 路由查找方法及其系统 | |
CN106789727A (zh) | 报文分类方法和装置 | |
CN107888494B (zh) | 一种基于社区发现的包分类方法及系统 | |
Zha et al. | Highly compressed Aho-Corasick automata for efficient intrusion detection | |
CN100403726C (zh) | 一种实现IPv6报文流分类的方法 | |
CN105721627B (zh) | 一种ip网络流数据在线匿名化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20161205 Address after: 210042 Xuanwu District, Xuanwu District, Jiangsu, Nanjing, No. 699-22, building 18 Patentee after: CERTUSNET CORP. Address before: 100084 Beijing City, Haidian District Tsinghua Yuan Patentee before: Tsinghua University |