具体实施方式
本发明实施例公开了端到端流量识别方法和系统,为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明作进一步详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
参见图1,本发明实施例一所提供的端到端流量识别方法包括以下步骤:
步骤101:根据连接数和端口数构造流量特征向量,并根据所述特征向量构造训练样本集。
步骤102:利用所述训练样本集中的训练样本训练支持向量机SVM分类模型。
步骤103:利用所述SVM分类模型从网络流量中识别出P2P流量。
通过本发明实施例所提供的方法,根据连接数和端口数构造流量特征向量,构造的特征向量能够反映TCP和UDP的P2P流量特征,之后利用该特征向量构造训练样本集,训练支持向量机分类模型,并识别网络流量,由于构造的特征向量能够反映TCP和UDP的P2P流量特征,所以本发明实施例所提供的方法能够将TCP和UDP的P2P流量都识别出来,从而通过利用训练好的SVM分类模型能够将网络流量中的P2P流量准确完整地识别出来,进而为后续对P2P流量进行有效控制提供了条件。
实施例二
参见图2,本发明实施例二所提供的P2P流量识别方法包括以下步骤:
步骤201:根据连接数和端口数构造P2P流量的特征向量。
通过分析P2P流量与非P2P流量的区别可知:对于P2P应用来说,某一个节点与网络中多个节点或超级节点存在连接,但是两个节点之间的连接数并不多,这是因为为了保证数据传输的负荷平衡,通过限制两个节点之间的连接数可以避免两节点之间的高负荷,减小通信压力;而对于非P2P应用来说,网络中节点间表现为某一个节点与网络中少量的节点存在连接,而两个节点间存在的连接数较多。
根据连接数和端口数构造P2P流量的特征向量可以是,根据节点之间的连接数和端口数特点,构造能够反映P2P流量特点的四维向量vector:
diff(dst)为与源存在连接的不同目的地址数,same(dst)为某一目的地址与源存在连接的连接数,diff(spt)为存在连接的不同源端口数,same(spt)为某一目的地址与源的某一端口存在的连接数,diff(dpt)为与源存在连接的不同目的地址的端口数,same(dpt)为源与某一目的端口存在的连接数。
分别对TCP和UDP端口进行分析,可以得到如下特征:对于TCP端口,特征为diff(spt)=diff(dst);diff(dst)=diff(dpt),n≥n
0;diff(dst)=n;对于UDP端口,特征为diff(spt)=n;diff(dst)=diff(dpt),n≥n
1;diff(dst)=n;其中,n
0,n
1是定值,一般P2P的流量特征是节点存在的连接数都是大于n
0、n
1,n是变量即与源存在连接的不同目的地址数(或者说该主机与n个节点存在连接)n的值视不同的P2P应用和网络情况而变。由于P2P流量有较大的
和
这三个特征属性可以作为P2P流量区别于其他流量的支持向量;此外,因为无论是TCP端口或UDP端口,都有diff(dst)=diff(dpt),即与源存在连接的目的地址数等于目的端口数,故这点可以作为支持向量的第四维特征属性
将上述这四个特征属性组成SVM的四维向量写成向量的形式:
简化为<K(dst),L(spt),M(dpt),N(dspt)>,在训练样本的每一个样本点x
i中包括上述四维向量vector。构成由于四维向量vector的四个特征属性
都是根据P2P流量的特点选择的,因此,四维向量vector能够很好的反映出P2P的流量特点,不论是采用TCP传输还是采用UDP传输。
步骤202:根据所述P2P流量的特征向量构造P2P流量训练样本集。
根据所述P2P流量的特征向量构造P2P流量训练样本集可以是:根据采集的P2P网络中的数据(例如从P2P网络中采集的数据包),形成初始训练样本集;根据所述特征向量将初始训练样本集中每个训练样本的特征值进行规范化处理,形成P2P流量训练样本集。在选定特征属性后,由于每个属性的取值范围不同,所以需要根据所述特征向量将初始训练样本集中每个训练样本的特征值进行规范化处理,根据需要将初始训练样本集中每个训练样本的各个离散的属性值规范到一定范围内,使其能够适合SVM训练的要求。
根据所述P2P流量的特征向量构造P2P流量训练样本集也可以是:步骤301,根据采集的P2P网络中的数据形成初始训练样本集;步骤302,根据所述特征向量对初始训练样本集中每个训练样本的特征值进行规范化处理,获得训练样本集;步骤303,对经规范化处理后的训练样本集进行裁剪处理,获得裁剪后的训练样本集。其中,对初始训练样本集进行规范化处理是为了初始训练样本集中的数据能够满足SVM训练模型的要求;所述规范化处理为,根据特征向量中各个特征属性的属性值的范围,对各个训练样本的特征值进行规范化处理;规范化处理可以采用多种实现方式,例如归一化,或者采用现有的规范化公式进行规范化处理。
步骤203:利用所述P2P流量训练样本集中的训练样本,训练SVM分类模型。
训练SVM分类模型是利用训练样本进行计算,以此得到分类函数的最优解,从而确定SVM分类模型。本发明实施例可以采用如下的SVM的分类函数,如式1:
式1
在已经选定特征向量,并且已经构造好了训练样本集的基础上,设训练样本集中给定的训练样本为{(x1,y1),(x2,y2),...,(xi,yi)};其中xi∈Rn,每个样本点xi中包含选定的四维特征向量<K(dst),L(spt),M(dpt),N(dspt)>,yi∈{-1,+1},yi为类别编号。以训练样本集中的训练样本进行训练,根据式2的分类函数,通过训练得到αi和b这两个参数的值,从而得到了SVM分类模型,即确定了αi和b的分类函数。
步骤204:利用所述SVM分类模型从网络流量中识别出P2P流量。
可选的,本发明实施例二所提供的P2P流量识别方法可以进一步包括步骤205:根据附加特征确定当前P2P流量所采用的具体应用。例如,当识别出的P2P流量采用的是静态端口时,根据采集的数据包中的信息端口号,数据包大小,源地址与目的地址确定当前的P2P流量所采用的具体的应用;当识别出的P2P流量采用的是非静态端口时,利用数据包的特征字符串来匹配净荷,确定当前的P2P流量所采用的具体的应用。
为了使上述四维向量vector中的参数清楚明白,下面结合一个具体例子对其中各个参数的含义做详细说明。
例如,在一个网络中有十个主机,即十个网络节点。在P2P网络中各个节点的地位是相同的,每一个节点都可以成为源节点,也可以成为其他节点的目的节点。为了描述方便,我们为这十个节点进行编号,分别即为节点1~节点10,因为一个节点只有一个地址,为描述方便后续描述中都用节点来进行描述。现在我们以节点1作为对象进行研究,那么,节点1此时就是源节点。假设当前与节点1有连接的目的节点为节点2~节点7共6个目的节点。那么上述各参数的含义和取值分别为:
与源节点(节点1)相连的目的节点数diff(dst)=6,因为与节点1存在连接的不同目的节点有节点2~节点6共6个,所以该值为6;
源节点(节点1)与一个目的节点之间的连接数same(dst)=1,因为P2P业务的特性,在P2P业务中,任意一个源节点和一个目的节点之间的连接数最大只能是1,所以这6个目的节点中任意一个节点与源节点存在连接的连接数same(dst)=1。
源节点(节点1)上存在连接的端口数diff(spt)=6,目前有6个目的地址,而在以TCP或UDP协议进行的P2P业务中,每一个源端口只能向一个目的地址发起连接,所以,该值为6。
源节点(节点1)上一个端口对应的连接数same(spt)=1,6个目的节点中的每一个节点与节点1的任意一端口存在的连接数same(spt)=1,这个值最大也只能是1。
与源节点(节点1)相连的目的端口数diff(dpt)=6,因为6个目的节点中的每个目的节点都需要通过一个端口与节点1进行连接。
源节点(节点1)与一个目的端口之间的连接数same(dpt)=1,该值也由P2P业务限定,最大只能是1。
本发明实施例所提供的方法,通过对TCP和UDP的P2P业务连接和端口的分析,提取特征属性信息,构造训练样本,建立SVM分类模型,由于提取的用于SVM的特征向量中既包含了TCP端口的特征,也包含了UDP端口的特征,所以本发明实施例所提供的特征向量对TCP和UDP的P2P流量都能够识别,使得SVM分类模型能够从网络流量中全面地识别出P2P流量。而且,现有技术中通常使用10特征向量对P2P流量进行识别,本发明实施例中采用的具有代表性的特征属性构造的四维向量可以减小运算代价,提高识别效率。此外,本发明实施例还可以结合附加特征确定当前P2P流量所采用的具体应用,从而对网络流量中的P2P流量有了更进一步的掌握,为后续对该P2P流量的控制提供了条件。
实施例三
为了建立SVM分类模型需要在网络上采集大量数据作为训练样本和测试样本,但在这众多的样本中,对建立分类模型起作用的是支持向量,其他的训练样本对此并没有帮助,所以可以对训练样本进行剪裁,减少训练样本集的大小。
参见图4,本实施例提供一种裁剪处理方法,可以用于对经规范化处理后的训练样本集进行裁剪处理,获得裁剪后的训练样本集,该裁剪处理方法包括:
步骤401:从训练样本集中选取第一训练样本集进行训练,获得初始分类器的初始超平面。
假设训练样本集为M,从M中随机选取一部分样本作为第一训练样本集N。根据构造的特征向量对第一训练样本集N进行SVM训练,得到初始分类超平面H。
步骤402:计算训练样本集中的每个样本点到所述初始分类器的初始分类超平面的距离。
步骤403:根据所述每个样本点到所述初始分类超平面的距离和裁剪阈值确定有效样本点,用所述有效样本点构造裁剪后的训练样本集。
在裁剪处理时,为了精确起见,可以选择按照某种分布函数给出样本点的分类归属概率,然后根据分布函数选择一个裁剪阈值对初始训练样本集进行裁剪;被选择的分布函数要符合P2P的流量特征,这样才能对初始训练样本集进行有效裁剪。本发明实施例中,选择用对数正态分布函数来描述样本点的分类归属概率。当然,在其他实施例中,还可以选取其他的分布函数对样本点的分类归属概率进行描述,本发明对此不做限定。
例如,选择对数正态分布函数为: 用该对数正态分布函数来描述样本点的分类归属概率时,裁剪处理的具体过程如下:
设初始分类器的初始分类超平面为H,对于M的任意一个样本点v,设v与H的距离为d,根据该距离d计算出该样本点的分布归属概率P(|d|);在
内产生一个随机值z作为剪裁阈值,其中,
是该对数正态分布函数的峰值,z是可以调整的裁剪阈值;比较每个样本点的分布归属概率P(|d|)与裁剪阈值z的大小,如P(|d|)<z,则将样本v加入裁剪样本集S中,否则,舍弃v;裁剪样本集S即为我们最终构造的用于SVM训练的训练样本集。
步骤403中,裁剪阈值的调节具有两个功能,一方面可以控制裁剪集的规模;另一方面会影响最终的分类器的分类精度。通过调节裁剪阈值来得到相对于裁剪阈值的近似最优的分类平面。由于裁剪阈值的右边界中的x是自变量,可以通过改变右边界自动改变阈值大小,这样无需再进行人工调节。
本发明实施例所提供的裁剪处理方法,首先是在分析了P2P流量特征的基础上选取的分布函数来决定删减对象,而不是随机的删减,这就增加了删减的精度,而精确删减掉无用样本又可以大大提高训练效率,而且对于大规模样本的问题,更能表现出其优越的性能,并且由于该对数分布函数的特性,本方案可以根据取值来精确控制在该取值下的缩减集大小的选择参数,而不用手动调节,这样就可以自动调节到最合适的阈值来以此得到相对于阈值的近似最优的分类器。
实施例四
本发明实施例还提供一种P2P流量识别系统,参见图5,该系统包括:
特征提取单元501,用于根据连接数和端口数构造P2P流量的特征向量;
样本构造单元502,用于根据特征提取单元501构造的特征向量构造训练样本集;
模型训练单元503,用于利用样本构造单元502构造的训练样本集训练SVM分类模型;
识别单元504,用于利用所述模型训练单元503训练的所述SVM分类模型从网络流量中识别出P2P流量。
参见图6,所述样本构造单元502可以包括:数值调整子单元5021,用于根据所述特征提取单元构造的特征向量对采集到的初始训练样本集中每个训练样本的特征值进行规范化处理,获得规范化训练样本集;样本裁剪子单元5022,用于对所述数值调整子单元获得的规范化训练样本集进行裁剪处理,获得裁剪后的训练样本集。
其中,参见图7,所述样本裁剪子单元5021可以包括:初始训练模块5022a,用于从所述规范化训练样本集中选取第一训练样本集进行训练,获得初始分类超平面;距离计算模块5022b,用于计算所述规范化训练样本集中的每个样本点到所述初始训练模块5022a获得的初始分类超平面的距离;裁剪模块5022c,用于根据所述距离计算模块5022b计算的每个样本点到所述初始分类超平面的距离和裁剪阈值确定有效样本点,用所述有效样本点构造裁剪后的训练样本集。
其中,所述特征提取单元501中,所述根据连接数和端口数构造P2P流量的特征向量为:根据源节点和目的节点之间的连接数和连接对应的端口数,构造四维向量 简化为<K(dst),L(spt),M(dpt),N(dspt)>,存在于每一个样本点xi中。diff(dst)为与源存在连接的不同目的地址数,same(dst)为某一目的地址与源存在连接的连接数,diff(spt)为存在连接的不同源端口数,same(spt)为某一目的地址与源的某一端口存在的连接数,diff(dpt)为与源存在连接的不同目的地址的端口数,same(dpt)为源与某一目的端口存在的连接数。
通过本发明实施例所提供的系统,根据连接数和端口数构造流量特征向量,构造的特征向量能够反映TCP和UDP的P2P流量特征,之后利用该特征向量构造训练样本集,训练支持向量机分类模型,并识别网络流量,由于构造的特征向量能够反映TCP和UDP的P2P流量特征,所以本发明实施例所提供的方法能够将TCP和UDP的P2P流量都识别出来,从而通过利用训练好的SVM分类模型能够将网络流量中的P2P流量准确完整地识别出来,进而为后续对P2P流量进行有效控制提供了条件。而且,现有技术中通常使用10特征向量对P2P流量进行识别,本发明实施例中采用的具有代表性的特征属性构造的四维向量可以减小运算代价,提高识别效率。
在另一实施例中,图5所示的系统还可以包括:
确定单元505,用于根据附加特征确定当前P2P流量所采用的具体应用。
其中,该确定单元505可以包括:第一确定子单元5051,用于当识别出的P2P流量采用的是静态端口时,根据采集的数据包中的信息端口号、数据包大小、源地址与目的地址,确定当前的P2P流量所采用的具体的应用;第二确定子单元5052,用于当识别出的P2P流量采用的是非静态端口时,利用采集的数据包的特征字符串来匹配净荷,确定当前的P2P流量所采用的具体的应用。
本发明实施例通过确定单元根据附加特征确定当前P2P流量所采用的具体应用,使得对网络流量中的P2P流量有了更进一步的掌握,为后续对该P2P流量的控制提供了条件。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。