具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图对本发明实施例进行详细描述。
SVM(Support Vector Machines,支持向量机)是20世纪90年代初由V.Vipnik等人根据统计学习理论(Statistical Learning Theory,SLT)提出的一种新的机器学习方法,在解决小样本、非线性及高维模式识别问题中表现出许多特有的优势,并且已经在模式识别、函数逼近和概率密度估计等方面取得了良好的效果。SVM从本质上讲是一种前向神经网络形式的分类器,根据结构风险最小化准则,在使训练样本分类误差极小化的前提下,尽量提高分类器的泛化推广能力。从实施的角度,训练SVM的核心思想等价于求解一个线性约束的二次规划问题,从而构造一个超平面作为决策平面,使得特征空间中两类模式之间的距离最大,而且它能保证得到的解为全局最优解。
SVM的是利用满足Mercer条件的核函数代替一个非线性映射,使得输入空间中的样本点能映射到一个高维的特征空间,并使得在该空间线性可分,然后构造一个最优超平面来逼近理想分类效果。由于SVM自身的特点,为了提高P2P数据流的识别准确率,本方案将对SVM进行采用多维支持向量机(MSVM)进行P2P数据流的识别。
需要说明的是,传统的SVM不适合直接用来识别P2P数据流,所以本发明采用改进的MSVM对P2P数据流进行识别。
下面对本发明各个实施例做进一步详细描述。
实施例一
参见图1,本发明实施例一提供一种识别P2P数据流的方法,该方法包括如下步骤:
步骤S101:获取待测数据流的原始流量特征值;
其中,所述获取的原始流量特征值可以包括:反映数据流的时间特性的特征值、数据流的速率、数据流的长度等。
另外,所述待测数据流可以从实际的网络环境中采集,也可以从预先存储的数据流中读取,或者采用其他获取方式获得。
步骤S102:对所述原始流量特征值进行预处理,得到机器能够识别的预处理后的流量特征值;
由于步骤S101中获取的流量特征值为的原始流量特征值数据,这些数据中存在连续特征和离散特征,即这些特征值数据时异构的,不能直接用于机器识别,所以需要进行预处理,得到机器可识别的预处理后的流量特征值。
步骤S102:将所述预处理后的流量特征值与预先建立的多维支持向量机MSVM的支持向量库进行匹配;
本领域技术人员应该能够理解训练MSVM的过程就是利用已有的训练样本建立最优超平面,以使不同类别的样本点的距离最远。最优超平面对应着判决函数等于预先设定的标准值表示的超平面,如果待测数据流对应的点位于该最优超平面上,则可以识别该数据流为P2P数据流,所以在具体判断是否在最优超平面上时,可以借助相应的判决函数的输出结果来判断。在最优超平面上的样本点称为支持向量,所以通过对MSVM的训练可以得到支持向量并建立由支持向量组成的支持向量库。
步骤S103:判断所述匹配结果,如果匹配成功,则执行步骤S104:识别该待测数据流为P2P数据流。
通过本发明实施例,利用预先建立的支持向量库对待测数据流进行识别,可以更准确地识别出P2P数据流。
实施例二
本发明实施例二提供一种识别P2P数据流的方法,该方法在实施例一的基础上增加了对待测数据流与支持向量库匹配不成功时,进一步利用MSVM进行识别的步骤。如图2所示,该方法包括:
步骤S201:采集待测数据流;
需要说明的是,本发明实施例中待测数据流可以从实际网络中采集获得,也可以从预先存储的数据流中读取获得,或者可以采用其他的获取方式,而本实施例中特别地以待测数据流是采集获得的为例进行说明,本领域技术人员应该能够明白,步骤S201并不构成对本发明实施例实质内容的限制。
步骤S202:获取上述采集的待测数据流中的原始流量特征值;
其中,所述获取的原始流量特征值可以包括:反映数据流的时间特性的特征值、数据流的速率、数据流的长度等。
步骤S203:对所述获取的原始流量特征值进行预处理,得到机器能够识别的预处理后的流量特征值;
由于步骤S202中获取的流量特征值为的原始流量特征值数据,这些数据中存在连续特征和离散特征,即这些特征值数据时异构的,不能直接用于机器识别,所以需要进行预处理,得到机器可识别的预处理后的流量特征值。
步骤S204:将上述的预处理后的流量特征值与预先建立的MSVM的支持向量库进行匹配,如果匹配成功,则执行步骤S206:直接识别该待测数据流为P2P数据流;如果匹配不成功,则执行步骤S205;
步骤S205:预先训练完成的MSVM将所述预处理后的流量特征值输入到训练MSVM过程中形成的判决函数中,根据判决函数的输出结果识别待测数据流是否为P2P数据流。
其中,根据判决函数的输出结果识别待测数据流是否为P2P数据流具体可以实现为:
如果判决函数的输出结果等于预先设定的标准值,则识别该待测数据流为P2P数据流,否则识别该待测数据流为非P2P数据流。在本发明实施例中,上述判决函数对应的标准值可以选为1或-1。
本领域技术人员应该能够理解训练MSVM的过程就是利用已有的训练样本建立最优超平面,以使不同类别的样本点的距离最远。最优超平面对应着判决函数等于预先设定的标准值表示的超平面,如果待测数据流对应的点位于该最优超平面上,则可以识别该数据流为P2P数据流,所以在具体判断是否在最优超平面上时,可以借助相应的判决函数的输出结果来判断。在最优超平面上的样本点称为支持向量,所以通过对MSVM的训练可以得到支持向量并建立由支持向量组成的支持向量库。
在本发明实施例中,判决函数(以下记为f(x))等于1或-1对应经过训练完成的MSVM的最优超平面,判决函数优选为
在上述判决函数中,xi为样本数据,ai为拉格朗日乘子,K(xi,x)为判决函数的核函数,si为各样本的加权系数,用于对每个样本数据赋权值,si可以是函数,如随样本到达的时间变化的函数(si∈(0,1));di为xi的重复因子(di≥1);ξi为非负松弛变量。在本实施例中,核函数K(xi,x)优选为径向基函数,即
在该判决函数中对各个样本引入了加权系数,即对各个样本进行了加权处理,这是因为不同的样本对判决结果的影响可能是不同的,因此对网络的数据流的流量特征进行加权处理得到的判决函数能够更有利于P2P数据流的准确识别。
本领域技术人员应该能够理解,MSVM的判决函数中的核函数是用来简化高维空间中构造最优超平面时引入的,如果直接求解高维空间的最优超平面问题和判决函数需要计算非线性函数,而引入了核函数后,只需要计算该核函数即可,从而避免特征空间维数灾难等问题的发生。
本发明实施例在计算判决函数的值之前,首先将待测数据流的流量特征值与支持向量库中的支持向量进行匹配,由于支持向量库中的支持向量都是对应P2P数据流,所以,如果能够匹配成功,则可直接认定该待测数据流为P2P数据流,对于没有与支持向量库匹配成功的待测数据流才去由MSVM利用判决函数判断是否为P2P数据流,即执行MSVM的识别过程,所以对于已知的P2P数据类型可以省去利用MSVM的识别过程,有利于节约识别过程,而对于没有与支持向量库匹配成功的待测数据流,本实施例又利用MSVM判决函数进行再次识别,从而相对于实施例二,本实施例提供的方法更有利于P2P数据流的准确识别。
实施例三
本实施例中提供一种识别P2P数据流的方法,该方法与实施例二的不同在于,在实际识别待测数据流的同时,对于支持向量库中没有与之匹配的情况,MSVM还会进行自学习的过程。
具体地,如图3所示,本实施例提供的方法包括:
步骤S301:采集待测数据流;
需要说明的是,本发明实施例中待测数据流可以从实际网络中采集获得,也可以从预先存储的数据流中读取获得,或者可以采用其他的获取方式,而本实施例中特别地以待测数据流是采集获得的为例进行说明,本领域技术人员应该能够明白,步骤S301并不构成对本发明实施例实质内容的限制。
步骤S302:获取上述采集的待测数据流中的原始流量特征值;
步骤S303:对所述获取的原始流量特征值进行预处理,得到机器能够识别的预处理后的流量特征值;
步骤S304:将上述的预处理后的流量特征值与预先建立的MSVM的支持向量库进行匹配,如果匹配成功,则执行步骤S307:直接识别该待测数据流为P2P数据流;如果匹配不成功,则执行步骤S305;
步骤S305:预先训练完成的MSVM将所述预处理后的流量特征值输入到训练MSVM过程中形成的判决函数中,根据判决函数的输出结果识别待测数据流是否为P2P数据流。
步骤S306:判断所述步骤S305中对待测数据流是否识别为P2P数据流,如果是,则执行步骤S307,否则结束流程;
步骤S307:利用步骤S305中识别为P2P数据流的待测数据流的流量特征值组成训练样本数据对MSVM进行训练,并更新支持向量库;
其中,不难看出,在步骤S305中识别为P2P数据流的待测数据流满足条件:该待测数据流与支持向量库匹配没有成功,并且在步骤S305中利用判决函数被识别为P2P数据流。这种情况经常会发生在网络中出现了原来没有的新类型的P2P数据流,而之前在训练MSVM时,没有包含在训练样本数据中,当然在现有的支持向量库中没有与之对应的支持向量。为了使该类型的P2P数据流再次出现时不再需要进行计算判决函数来识别,本实施例中不仅给出了将该待测数据流识别为P2P数据流的识别结果,而且,还将该待测数据流组成训练样本数据对MSVM进行训练,并更新支持向量库。这样在识别待测数据流的过程中,MSVM也可以根据实际情况,将新的P2P数据流更新进支持向量库中,这样在该P2P数据流在后续的时间内再次出现的时候,利用该更新后的支持向量库就可以对该P2P数据流进行识别,上述过程可以称为MSVM的自学习过程。因此,通过本发明实施例,可以进一步提高对新类型的P2P数据流检测的效率和准确率。
实施例四
本实施例四提供一种识别P2P数据流的方法,该方法与前三个实施例的区别在于,在利用MSVM对待测数据流识别之前,首先借助应用层协议内容分析方法,对待测数据流进行识别,只有利用应用层协议内容分析方法识别该待测数据流为非P2P数据流时才利用MSVM对待测数据流进行识别。
如图4所示,本发明实施例中提供的识别P2P数据流的方法具体包括如下步骤:
步骤S401:采集待测数据流;
需要说明的是,本发明实施例中待测数据流可以从实际网络中采集获得,也可以从预先存储的数据流中读取获得,或者可以采用其他的获取方式,而本实施例中特别地以待测数据流是采集获得的为例进行说明,本领域技术人员应该能够明白,步骤S401并不构成对本发明实施例实质内容的限制。
步骤S402:从待测数据流中获取有效载荷的协议特征字;
步骤S403:将待测数据流中的协议特征字与预先建立由已知P2P数据流中的协议特征字组成协议特征字库进行匹配,如果匹配成功,则执行步骤S408:直接识别该待测数据流为P2P数据流;如果匹配不成功,则执行步骤S404;
步骤S404:获取所述待测数据流中的原始流量特征值;
步骤S405:对上述获取的原始流量特征值进行预处理,得到机器能够识别的预处理后的流量特征值;
步骤S406:将上述的预处理后的流量特征值与预先建立的MSVM的支持向量库进行匹配,如果匹配成功,则执行步骤S408:直接识别该待测数据流为P2P数据流;如果匹配不成功,则执行步骤S407;
步骤S407:预先训练完成的MSVM将所述预处理后的流量特征值输入到训练MSVM过程中形成的判决函数中,根据判决函数的输出结果识别待测数据流是否为P2P数据流;
需要说明的是,本实施例中提供的方法还可以包括:
步骤S409:判断步骤S407中是否将待测数据流识别为P2P数据流,如果是,则执行步骤S410。
步骤S409:利用步骤S407中识别为P2P数据流的待测数据流的流量特征值组成训练样本数据对MSVM进行训练,并更新支持向量库;
由于数据流中有效载荷的协议特征字更能准确表达该数据流的类型,通过预先建立由已知P2P数据流的协议特征字组成的协议特征字库,并在利用MSVM进行识别之前,首先运用应用层协议内容分析方法,将待测数据流中有效载荷的协议特征字与上述协议特征字库进行匹配,如果匹配成功,则证明协议特征字库中已经预先建立了该类型数据流的协议特征字,因此可以直接识别该待测数据流为P2P数据流,这样就节省了再去利用MSVM并基于流量特征值识别的过程,而且基于协议特征字和基于流量特征值识别相比,前者对协议特征字库中已经存在的类型的P2P数据流的识别的比较准确,因此,本实施例中首先基于协议特征字进行识别,也可以进一步地提高识别正确率。
实施例五
本发明实施例五相应提供一种识别P2P数据流的装置,如图5所示,该装置500包括:
特征获取单元501,用于从待测数据流中获取原始流量特征值;
预处理单元502,用于对所述原始流量特征值进行预处理,得到机器能够识别的预处理后的流量特征值;
支持向量匹配单元503,用于所述预处理后的流量特征值与预先建立的多维支持向量机MSVM的支持向量库进行匹配,根据匹配结果识别待测数据流是否为P2P数据流。
本发明实施例提供识别P2P数据流的装置还可以包括:
识别单元504,用于预先训练完成的MSVM将所述预处理后的流量特征值输入到训练MSVM过程中形成的判决函数中,根据判决函数的输出结果识别待测数据流是否为P2P数据流;
其中,所述预处理后的流量特征值与预先建立的多维支持向量机MSVM的支持向量库匹配成功,则直接识别该待测数据流为P2P数据流,如果匹配不成功,则所述支持向量匹配单元503触发识别单元504工作。
另外,本实施例中的装置500还可以包括:
协议特征字获取单元505,用于从待测数据流中获取有效载荷的协议特征字;
协议特征字匹配单元506,用于将所述协议特征字与预先建立的由已知P2P数据流中的协议特征字组成协议特征字库进行匹配;
其中,如果匹配成功,则直接识别该待测数据流为P2P数据流,如果匹配不成功,则触发特征获取单元501工作。
本发明实施例提供的装置能够更准确地识别P2P数据流。
实施例六
本实施例六提供一种网络系统,如图6所示,该网络系统600包括:
数据采集单元601,用于采集待测数据流;
识别P2P数据流的装置602,用于从待测数据流中获取原始流量特征值并进行预处理,将预处理后的流量特征值与预先建立的多维支持向量机MSVM的支持向量库进行匹配,根据匹配结果识别待测数据流是否为P2P数据流。
其中,所述识别P2P数据流的装置602可以包括:
特征获取单元6021,用于从待测数据流中获取原始流量特征值;
预处理单元6022,用于对所述原始流量特征值进行预处理;
支持向量匹配单元6023,用于所述预处理后的流量特征值与预先建立的多维支持向量机MSVM的支持向量库进行匹配,根据匹配结果识别待测数据流是否为P2P数据流。
所述识别P2P数据流的装置602还可以包括:
识别单元6024,用于当匹配不成功时,通过预先训练完成的MSVM将所述预处理后的流量特征值输入到训练MSVM过程中形成的判决函数中,根据判决函数的输出结果识别待测数据流是否为P2P数据流。
另外,所述识别P2P数据流的装置602还可以包括:
协议特征字获取单元6025,用于从待测数据流中获取有效载荷的协议特征字;
协议特征字匹配单元6026,用于将所述协议特征字与预先建立的由已知P2P数据流中的协议特征字组成协议特征字库进行匹配;
其中,如果匹配成功,则直接识别该待测数据流为P2P数据流,如果匹配不成功,则触发特征获取单元6021工作。
根据实际需要,对于识别P2P数据流的数据流经常需要对其进行后续的操作,因此本实施例提供的网络系统中还可以包括:
P2P数据流标记单元603,用于对识别为P2P数据流的数据流进行标记;和/或
P2P数据流限制单元604,用于对识别为P2P数据流的数据流的传输速度进行限制,或切断识别为P2P数据流的数据流。
本发明实施例提供的网络系统能够更准确地识别P2P数据流。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。