一种基于主动检测方式的p2p协议识别方法

文档序号:7716181阅读:115来源:国知局
专利名称:一种基于主动检测方式的p2p协议识别方法
技术领域
本发明涉及计算机网络技术领域,特别涉及一种采用主动连接流对端,发送相应 的P2P协议交互报文,并依据对端回应的报文特征来判断该流是否属于此P2P协议的可用 于网关接入设备的P2P协议识别方法。
背景技术
众所周知,网关接入设备部署在各种网络接入点处,可以实时地捕获进出的报文 数据流,并对其进行智能分析以及智能管理。尤其是在当前的网络环境中,随着P2P应用软 件的盛行,使得现今网络中P2P协议流量占据了越来越多的部分,对web、email等其他重要 网络应用服务构成了严重的威胁。即使单纯地增加带宽也无可避免地会造成网络拥塞,因 为P2P应用软件设计的目标之一是最大化地利用网络带宽。因此更好的解决方法是识别出 哪些是P2P流并对其进行相应的控制,比如限速或者完全禁止等。这里最关键的部分是如 何准确、高效地识别出P2P流量。目前识别P2P流量主要有以下几种方法(1)端口识别法在P2P应用兴起的早期,大多数P2P应用软件使用的都是固定端 口,比如 BitTorrent 使用 6881-6889 端 口、Gnutella 使用 6346-6347 端 口等,这样对 P2P 应 用的识别就跟普通应用分组的识别完全相同了,只要检查传输层端口号就可以了。但是随 着P2P应用的发展,该方法已经不再适用了。(2)应用特征识别法根据P2P应用的报文中携带特定的报文信息来识别,比如 BitTorrent的TCP连接中可能会有“GET/ ? info_hash =”字段,如果检测到某条TCP流报 文中有该字段,就可以判断该流为BitTorrent流。这种方法能比较准确地识别P2P流量, 并且可以具体获悉是哪些P2P应用。但协议特征可能会随着P2P应用软件版本的变化而经 常变化,造成后续需要不断地更新特征,投入比较大。更有甚者,某些P2P应用会对刚开始 的一些协议交互信息进行加密,这直接导致了协议静态特征匹配的方法失效。如果对所有 报文进行解密再匹配(因为无法判断是否是加密过的P2P流),这势必会大大地影响效率, 根本无法应用到实际中。所以单纯地依靠静态特征库来精确识别P2P协议变得很困难,而 且随着P2P软件越来越“智能”,这种单纯依靠静态特征协议库来识别的方法可能会变得无 计可施。(3)流量模式识别方法P2P应用的流量特点相对于一些常见应用来说,还是有一 定区别的。其流量特点表现为持续时间长、平均速率高以及总的传输字节数高,而像传统的 HTTP协议具有持续时间短、平均速率高以及传输字节数高的特点。但是利用该方法进行识 别会造成误识别率比较高(比如web视频、ftp传输等也有持续时间长、平均速率高以及总 的传输字节数高这样的流特征),并且该方法无法获悉具体是哪些P2P流量,不利于监控和 管理。上述几种方法都有各自的缺陷,并且可扩展性不是很好。方法(1)随着P2P应用软 件端口可随机变化已经很少有被使用了 ;方法( 虽然能比较准确地识别出P2P流量,但后续投入也比较大,需要不断地更新特征库,而且对加密后的P2P流量毫无办法;方法(3)无 法分类具体的P2P应用,并且误识别率也比较高,实现策略也比较粗糙,无法进行更好地监 管。上述各种方法在实际应用在网关接入设备中都存在一些问题,还没有一种可靠、高效、 可扩展性好的方法来准确地识别P2P流量。

发明内容
鉴于上述P2P协议检测方法存在的问题,本发明目的是提供一种应用于网关接入 设备的P2P协议检测方法。该技术方案结合流量模式识别方法,当流量模式具有持续时间 短、平均速率高以及传输字节数高的特点时,就可怀疑该流可能是某种P2P流,接着向对端 发送特定P2P应用协议的交互报文进行主动检测,可以较好地解决以下目前识别P2P协议 流量主要存在的一些问题1.需要不断更新协议特征库以防止P2P应用软件的更新造成原先的特征库失效;2.无法准确并高效地识别加密后的P2P协议流量;3.无法准确地了解各种P2P应用的流量以方便监管等。为了实现上面发明目的,首先必须要知道特定P2P应用协议节点之间交互的特定 报文以及交互报文的特征,比如ed0nkey(电驴)节点向对端发送hello报文,对端就会回 应hello answer报文,而hello和hello answer报文的特征是固定的,我们称P2P应用协 议交互的报文及其特征为交互特征库。获得P2P应用协议的交互特征库是为了检测某一流 量是否为P2P流量所必须的,并且也是为了准确地了解该P2P流量具体是哪一种P2P应用 协议所必须的。具体步骤为通过P2P流量模式识别方法检测出该流量可能是某种P2P应用,即具 有持续时间长、平均速率高、总传输字节数高的特点。在怀疑某一流量可能为P2P流量后, 主动连接该流量的对端,并发送特定P2P协议报文给对端(如发送edonkey的helIo报文), 如果对端的回应报文是该特定P2P协议交互报文的回应(如回应edonkey的hello answer 报文),可以判断出该流量为P2P协议,并且也可获悉具体属于哪种P2P应用(即edonkey); 如果对端回应的报文不属于该特定协议,则继续尝试探测其是否属于其他的P2P应用协 议。最终当所有P2P协议的交互特征库都尝试遍了也没找到相应属于的P2P应用协议,则 可认为其“不属于”P2P流量。利用该方法,可以有效地避免不断地更新交互特征库,因为P2P应用软件也会考 虑到向后兼容的问题,老版本的P2P协议交互报文也会被新版本的P2P应用软件的节点所 辨认出,于是做出相应的回应。这样无论P2P应用软件版本如何变化,只要它考虑到向后兼 容的问题,那么原先的交互特征库就不会失效。并且利用该方法可以识别出加密的P2P流 量,也是考虑到P2P应用软件的向后兼容的特性。本发明方案的有益效果为既有的P2P协议的交互特征库可以不用随着版本的变 化而做更新,大大节约了后续的投入力度。更重要的一点是,即使P2P应用软件开始加密其 交互报文后也能很好地进行准确地识别。这样随着新的P2P协议的产生,只要研究其协议 的特定交互报文及其特征,并将其加入到交互特征库中,就可以很好地识别出哪些流量属 于该P2P应用。
以下结合附图和具体实施方式
来进一步说明本发明。

图1为本发明处理流经网关接入设备报文的流程图。图2为本发明主动检测P2P流量的过程流程图。
具体实施例方式为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结 合具体图示,进一步阐述本发明。根据上述所言,本发明所述的P2P协议识别方法,能够有效并准确地识别P2P流 量,而且无需跟踪特定的P2P应用协议并不断地更新其特征库,并且可以准确有效地识别 即使经过加密后的P2P协议并对其分类。下面是该方法具体实施时的步骤首先介绍报文流经网关接入设备的所做的处理(参见图1)步骤101 当一个报文进入网关接入设备时,根据IP五元组(即本地IP地址、对 端IP地址、本地端口号、对端端口号、协议类型)判断是否属于一条流,如果未找到所属的 流,则依据IP五元组新建一条流,并初始化其报文数和字节数,然后直接转发该报文;步骤102 当该报文找到了所对应的流,并且该报文所属的流是P2P流量时,则根 据用户的配置进行智能控制,比如进行限速或完全禁止等,然后进行相应的统计更新;步骤103 当该报文找到了所对应的流,并且该报文所属的流是未检测过的流,或 者已经检测出不是P2P流量时,则更新流的报文数、字节数等(这些在定时器任务中判断该 流是否可能属于P2P流量时有用),然后直接进行转发。下面介绍如何检测某一条流是否为P2P流量(参见图2)该检测机制将在一个定时器任务中完成,定期地对所有未检测过的流进行检测, 判断其是否属于某个P2P应用的流。步骤201 遍历那些未经检测过的流;步骤202 检查该流的流量特征是否符合P2P应用的流量特征,即持续时间长、平 均速率高、总传输字节数高,如果符合则怀疑该流量可能属于某种P2P流量,进行下一步 (步骤203)检测,否则直接跳过检查下一条流;步骤203 如果怀疑某一流量为P2P流量后,进行相应的主动检测,依次遍历P2P 协议交互特征库。步骤204 向对端主动发起相应的P2P协议交互报文(如果是TCP则先进行3次 握手),然后等待对端的回应报文;步骤205 如果对端回应的报文符合相应的P2P协议交互特征,则可判断该流为 P2P流量,并且可获知是何种P2P应用,而且可以判断所有对端相同的流都属于P2P流量。步骤206 当P2P协议交互特征库都遍历结束后,也未能找到所属的P2P协议,则 可以判断为非P2P流,并且标志为已检测,以后都不需要进行检测,相应的报文只需要做直 接转发即可。即所有对端IP地址、对端端口号、协议类型都相同的流具有相同的流量属性。综上所述,本发明中的P2P流量检测配置如下1.启动P2P流量检测功能;
Router_config#ip p2pfilter enable2.完全禁止P2P流量;Router_config#ip p2pfilter dropall3.将所有的P2P流量进行限速,限制在一定带宽内;Router_config#ip p2pfilter limit bandwith上述参数设置作为实现手段之一,作为说明和参考其形式和参数不是唯一的。以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术 人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本 发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变 化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其 等效物界定。
权利要求
1.一种基于主动检测方式的P2P协议识别方法,首先对经网关接入设备的报文流进行 处理,然后具体检测某一流是否为P2P流量;其特征在于,在怀疑某一流量可能为P2P流量后,主动连接该流量的对端,并发送特定P2P协议报文 给对端,如果对端的回应报文是该特定P2P协议交互报文的回应,可以判断出该流量为P2P 协议,并且也可获悉具体属于哪种P2P应用;如果对端回应的报文不属于该特定协议,则继 续尝试探测其是否属于其他的P2P应用协议;最终当所有P2P协议的交互特征库都尝试遍 了也没找到相应属于的P2P应用协议,则可认为其“不属于”P2P流量。
2.根据权利要求1的基于主动检测方式的P2P协议识别方法,其特征在于,所述对经网 关接入设备的报文流进行处理的步骤还包括(1)当一个报文进入网关接入设备时,根据IP五元组判断是否属于一条流,如果未找 到所属的流,则依据IP五元组新建一条流,并初始化其报文数和字节数,然后直接转发该 报文;(2)当该报文找到了所对应的流,并且该报文所属的流是P2P流量时,则根据用户的配 置进行智能控制,比如进行限速或完全禁止等,然后进行相应的统计更新;(3)当该报文找到了所对应的流,并且该报文所属的流是未检测过的流,或者已经检测 出不是P2P流量时,则更新流的报文数、字节数等,然后直接进行转发。
3.根据权利要求1的基于主动检测方式的P2P协议识别方法,其特征在于,所述判断报 文流是否属于某个P2P应用的流的具体步骤为(1)遍历那些未经检测过的流;(2)检查该流的流量特征是否符合P2P应用的流量特征,即持续时间长、平均速率高、 总传输字节数高,如果符合则怀疑该流量可能属于某种P2P流量,进行下一步检测,否则直 接跳过检查下一条流;(3)如果怀疑某一流量为P2P流量后,进行相应的主动检测,依次遍历P2P协议交互特 征库。(4)向对端主动发起相应的P2P协议交互报文(如果是TCP则先进行3次握手),然后 等待对端的回应报文;(5)如果对端回应的报文符合相应的P2P协议交互特征,则可判断该流为P2P流量,并 且可获知是何种P2P应用,而且可以判断所有对端相同的流都属于P2P流量。(6)如果P2P协议交互特征库都遍历结束后,也未能找到所属的P2P协议,则可以判断 其为非P2P流,并且标志为已检测,以后都不需要进行检测,相应的报文只需要做直接转发 即可。即所有对端IP地址、对端端口号、协议类型都相同的流具有相同的流量属性。
全文摘要
本发明公开了一种基于主动检测方式的应用于网关接入设备的P2P协议检测方法。该技术方案结合流量模式识别方法,当流量模式具有持续时间短、平均速率高以及传输字节数高的特点时,就可怀疑该流可能是某种P2P流,接着向对端发送特定P2P应用协议的交互报文进行主动检测,可以有效地避免不断地更新交互特征库,因为P2P应用软件也会考虑到向后兼容的问题,老版本的P2P协议交互报文也会被新版本的P2P应用软件的节点所辨认出,于是做出相应的回应。这样无论P2P应用软件版本如何变化,只要它考虑到向后兼容的问题,那么原先的交互特征库就不会失效。并且利用该方法可以识别出加密的P2P流量,也是考虑到P2P应用软件的向后兼容的特性。
文档编号H04L12/56GK102082699SQ20091019951
公开日2011年6月1日 申请日期2009年11月27日 优先权日2009年11月27日
发明者张李平, 汪革, 郭海涛 申请人:上海博达数据通信有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1