王玮
(陕西艺术职业学院 基础教学部, 陕西 西安710054)
对等(Peer To Peer)网络P2P打破了传统客户端/服务器的模式,是新一代网络技术,相对于其它网络,P2P网络的速度更快,因此成为当前应用范围最为广泛的网络[1]。在P2P网络的实际应用中存在许多问题,具体为:疯狂抢占带宽,拥塞概率大;存在大量的不良信息;网络入侵和网络病毒引起的安全问题等。为了保证P2P网络安全,提高P2P网络的性能和稳定性,需要对P2P网络的流量进行监控,P2P网络流量识别是网络管理的基础,高精度的P2P网络流量识别方法构建是当前研究的热点问题[2-3]。
为了获得理想的P2P网络流量识别效果,提出基于神经网络的P2P网络流量识别方法,并与经典P2P网络流量识别方法在相同平台进行仿真对比实验,结果表明,本文方法可以描述P2P网络流量的变化特点,P2P网络流量识别精度更高,具有十分明显的优越性。
近些年来,国内外对P2P网络流量识别进行深入研究,当前P2P网络流量识别技术主要划分为3类:基于端口号的P2P网络流量识别技术;基于报文检测的P2P网络流量识别技术;基于特征的P2P网络流量识别技术[4]。最初,由于P2P网络的端口比较少,而且固定,但是一些应用程序为了防止端口检测,其端口号采用动态方式进行分析,这样基于端口号的P2P网络流量识别结果就更为可靠;为了解决动态端口问题,出现了基于报文检测的识别技术,具体为基于数据包的动态端口P2P网络流量识别方法,但是该方法会涉及用户的隐私问题,无法广泛使用[5-7];基于特征的P2P网络流量识别技术主要通过流量的上下行比例、数据包大小分布等进行,然后结合机器学习算法,如支持向量机、贝叶斯算法或决策树等[8-10],通过训练构建P2P网络流量识别模型,但是在实际应用中这些机器学习算法均存在一定的不足,如支持向量机的训练过程复杂,P2P网络流量识别时间长;贝叶斯算法、决策树的P2P网络流量识别精度低[11-13]。
传统网络通常采用客户端/服务器的工作模式,其中服务器是整个网络的中心,客户端将任务发送给服务器,服务器对任务进行处理,因此服务器完成了大部分运行,其负担相当重,工作效率难以提升,而P2P网络弱化了服务器,每一个节点的地位是相同的,处于一种对等状态,每个节点既是参与的使用者,也是任务的提供者,节点可以自由的加入或离开,不仅可扩展性强,而且具有较强的鲁健性。P2P网络的模式,如图1所示。
图1 P2P网络的模式
选择最优P2P网络特征向量是建立性能优异的P2P网络流量识别方法的一个重要方面,因为特征太多,那么使得P2P网络流量识别模型的输入向量数量大,P2P网络流量识别效率低,同时一些特征向量之间有信息重复,使得它们之间相互干扰,对P2P网络流量识别精度产生不利影响,本文基于特征差异性明显、能够识别出P2P网络流量和非P2P网络流量原则,选择的P2P网络流量识别特征,如表1所示。
表1 P2P网络流量识别特征
径向基神经网络是一种最常用的人工神经网络,通常为3层结构,具体为:输入层、隐含层和输出层,每一层根据实际的问题具有不同数量的节点,设它们的节点数分别为:n、p和m个,那么径向基神经网络拓扑结构,如图2所示。
图2 径向基神经网络的拓扑结构
径向基神经网络的基本工作步骤如下。
Step1:对于输入向量Xl=[X1l,X2l,…,Xnl]T,通过径向基函数φ(·)变换到隐含层,可以得到隐含层第i个节点的单元输出,如式(1)。
(1)
径向基函数φ(·)通常采用高斯函数,那么式(1)变化为式(2)。
(2)
式中,σ表示聚类中心的宽度。
Step2:将隐含层的输出作为输出层的输入,通过连接权值wik得到输出层的第k个节点的输出,如式(3)。
(3)
Step1:分析P2P网络的结构,提取P2P网络流量识别特征。
Step2:采集P2P网络流量识别特征值,并对特征进行归一化处理,如式(4)。
(4)
Step3:采集P2P网络流量数据,并对P2P网络流量和非P2P网络流量进行标记。
Step4:根据特征和标记的P2P网络流量和非P2P网络流量值建立学习样本。
Step5:根据P2P网络流量的特征向量数确定径向基神经网络的输入层节点数,并根据一定的规则确定隐含层的节点数,根据P2P网络流量的类型确定输出层的节点数。
Step6:初始径向基神经网络的相关参数,如连接权值、聚类中心的数量等。
Step7:采用径向基神经网络对P2P网络流量学习样本进行学习,建立P2P网络流量识别模型。
为了分析神经网络的P2P网络流量识别效果,选择Andrew Moore提供的公共数据集作为实验对象,其共有11个数据集,每一个数据集中有P2P网络流量和非P2P网络流量,每一个数据集选择一定数量P2P网络流量和非P2P网络流量样本,如表2所示。
从表2可以看出,相对于非P2P网络流量,P2P网络流量样本数量相对较少,对于每一个数据集,根据3:1的比例形成训练样本集合和测试样本集合,采用VC++ 编程实现P2P网络流量识别实验。
选择文献[12]和文献[13]的P2P网络流量识别方法进行对比实验,统计每一个数据集。不同方法的P2P网络流量识别精度,如表3所示。
表2 P2P网络流量识别的实验对象
表3 不同方法的P2P网络流量识别精度比较
对表3的P2P网络流量识别精度进行对比和分析可以知道,本文方法的P2P网络流量识别精度最高,每一个数据集的识别精度超过95%,相对于文献[12]和文献[13],本文方法的P2P网络流量识别精度分别提高了8.70%和6.31%,获得了更加理想的P2P网络流量识别结果。
对于一个P2P网络流量识别方法,只有高精度的P2P网络流量识别结果还不行,还要分析其P2P网络流量的虚警率和漏报率。不同方法的P2P网络流量的虚警率和漏报率如图3、图4所示。
图3 不同方法的P2P网络流量的虚警率对比
图4 不同方法的P2P网络流量的漏报率对比
从图3、图4可以看出,无论是P2P网络流量的虚警率或者漏报率,本文方法更低,对比结果表明,本文方法的P2P网络流量识别整体性能更优。
由于P2P网络流量识别的计算性能也是重要的评价指标,因此统计不同方法的P2P网络流量学习时间(秒,s),每一种方法进行5次学习实验,如图5所示。
图5 不同方法的P2P网络流量学习对比
从图5的P2P网络流量识别的学习时间可以看出,本文方法的P2P网络流量学习时间要少于文献[12]和文献[13],从计算性能的角度分析,本文方法是最佳的P2P网络流量识别方法,可以对大规模的P2P网络流量数据进行分析。
随着P2P网络应用范围的不断拓宽,应用类型日趋复杂多样,给P2P网络的管理带来了一定的挑战,为了更加精细的对P2P网络进行管理,结合P2P网络流量变化特征,提出了神经网络的P2P流量识别方法,并通过具体P2P网络流量数据实例进行了仿真测试,结果表明,本文方法是一种精度高、速度快的P2P网络流量识别方法,并且P2P网络流量识别结果的稳定性要优于当前其它P2P网络流量的识别方法,具有十分广泛的应用前景。