论文摘要
随着P2P得到越来越广泛的应用,P2P流量检测逐渐成为网络数据分析领域的一个热门问题。有关报告表明,P2P应用所产生的流量占据网络总流量的50%以上。由于P2P应用会导致网络拥塞,对于电信运营商来说,如何从全部网络流量中检测出P2P应用所产生的流量就成为一个非常重要的课题。P2P采用随机端口进行传输的机制,以及P2P系统本身的复杂性、分布性和多变性,都增加了P2P流量检测的难度。本文主要目的是研究如何有效地在大规模NetFlow数据上进行P2P流量检测。目前的P2P检测方法都是针对数据包的,对主干网上数量庞大的数据包进行分析要耗费大量存储和计算资源,因此学术界中大多数研究工作都无法得到实际应用。目前投入使用的P2P检测产品利用串接设备采集数据包内容,并依靠硬件来进行计算,具有部署代价昂贵、可扩展相差、侵犯隐私等弊端。本文用NetFlow数据进行P2P检测,克服了上述问题。NetFlow数据对数据包信息进行了汇总和统计,既保留了体现流量特征的重要信息,又降低了数据量,并且NetFlow技术作为业界标准已经在电信运营商中得到广泛使用。本文的主要贡献包括:1)根据P2P协议的运作原理,推测P2P在流量表现上可能具有的一系列特征。对每一条特征,都通过实验验证它在区分P2P流量和非P2P流量上的效果,根据实验结果选择有效的检测特征。2)设计了一个基于NetFlow数据的P2P流量检测算法。该算法将1)中选取的有效特征,按照检测逻辑组织起来,使检测更加高效。3)基于2)中的算法,实现了P2P流量检测系统INFOPAD。系统利用数据库实现数据的存储,用SQL查询的方式来实现检测算法,很好地解决了对大量流量数据进行存储和计算的问题。在系统中各个检测规则形成独立的模块,新规则可以作为新模块方便地整合到系统中来,系统架构具有良好的开放性和可扩展性。4)对INFOPAD系统采用上海电信路由器上采集的真实NetFlow数据进行实验,并根据上海电信提供的深度包检测(DPI)报告对检测结果进行验证。通过实验证明,INFOPAD系统的检测算法能够达到较高的准确率,并且系统的性能可以达到离线分析的要求。本文实现的检测系统适用于电信主干网络上的P2P流量检测。系统接收路由器输出的大量NetFlow数据并进行离线分析,提交出P2P流量报告。本系统已经在上海电信的日常网络管理中得到应用,和上海电信原来部署的深度包检测(DPI)产品相比,本系统可以达到同等程度的准确率,但是部署代价降低了很多,而且检测算法的维护和更新更加方便。