一种基于对等网络的阿瑞斯协议分析系统的实现方法

文档序号:7749732阅读:150来源:国知局
专利名称:一种基于对等网络的阿瑞斯协议分析系统的实现方法
技术领域
本发明是一种针对阿瑞斯(ARES)特定网络服务的协议分析系统,主要用来解决 阿瑞斯网络报文的协议分析问题,进而服务于P2P缓存系统,属于对等网络领域。
背景技术
近些年P2P应用的飞速发展,虽然丰富了互联网的内容,但其流量的爆发式增长 和不加限制的带宽占用,使得P2P流量成为网络的主要负担,甚至引起网络拥塞,影响和降 低其它业务的性能。据相关统计,迄今为止,P2P业务共占所有宽带数据吞吐量的80%以 上,其中P2P业务中阿瑞斯网络服务占很大比例。阿瑞斯的发展始于2002年,原本在Gnutella网络上运营。阿瑞斯开始是一个 Gnutella客户端,2002年底经过改写,成为目前的阿瑞斯网络。目前的阿瑞斯网络采用混 合架构,包含叶子(对等体)和超级结点。和BitTorrent类似,阿瑞斯支持同步下载和从 一个对等体到多个对等体的上载。阿瑞斯同时支持直接超链接至P2P网络文件的能力。阿 瑞斯目前支持超过300,000用户,是流行的音乐文件网络。阿瑞斯网络是一种基于超级节点的两层覆盖网络。在超级节点层,通过DHT技术 完成跨越搜索。阿瑞斯采用TCP通讯方式,连接多个知名超级节点,还会通过UDP来验证知 名超级节点的状态和同步信息,并且可以进入聊天室和其他用户在线聊天(TCP方式,无固 定端口)。阿瑞斯支持S0CK4、S0CK5代理以及使用多重代理超级节点。鉴于复杂的阿瑞斯网络服务,通过部署P2P缓存系统,基础网络运营商可以利用 有限的投入支撑增长的P2P业务需求,从而解决当前P2P技术带来的带宽冲击。另外,P2P 缓存系统的使用还可以改善P2P应用的用户体验,从而吸引更多P2P客户,并可能为基础网 络运营商带来更多客户。也就是说,P2P缓存系统的部署不仅可能缓和P2P技术和基础网 络运营商的矛盾,而且可能引导二者协同发展,创造出双赢局面。

发明内容
技术问题本发明的目的是对阿瑞斯的特定网络报文进行分析,进而服务于P2P 缓存系统的部署。本发明相比以往的方案,该方案具有新颖性、灵活性、易扩展性和易操作 性,具有很好的市场前景。技术方案本发明是集中的、可管的、可控的。其主要目的是对阿瑞斯网络的报文 进行识别、提取、缓存、发送和构造,以完成协议分析模块的核心功能。根据哈希搜索请求以及一些交互报文的应用层特征字,将报文识别,然后对哈希 搜索请求报文进行分析、提取{源地址、下载资源ID}信息,并把其发送到索引服务器,等待 索引服务器返回资源节点列表信息,最后根据返回的信息,构造哈希搜索返回结果报文。协议分析逻辑功能主要由以下几个部分组成报文识别功能、提取信息功能、缓存 报文功能、发送信息功能及构造报文功能的逻辑模块。该协议分析系统实现方法包括的步骤为
步骤1).进行需求分析,对协议分析系统需要完成的功能进行分析,并生成需求 分析文档;步骤2).按照步骤1的分析文档设计模块,对各模块的功能进行详细分析,生成各 个模块之间的逻辑关系和功能说明文档;步骤3).按照步骤2的文档,设计与实现协议分析系统的识别报文模块,在协议分 析系统中识别效率,影响着整个系统的工作效率,报文识别模块根据报文长度以及固定位 特征字来协议识别对等网络阿瑞斯的网络服务中的哈希搜索请求报文以及一些相关交互 报文;步骤4).按照步骤2的文档,设计与实现协议分析系统对识别后的哈希搜索请求 报文提取相关信息,并使用套接字通信完成发送报文功能模块的实现方式;提取报文模块 是提取哈希搜索请求报文中的{源地址、下载资源号}信息,进而由源地址和下载资源号生 成哈希值,哈希值是用来标识不同用户的不同文件资源;发送报文模块将提取的下载资源 号和生成的哈希值发送给索引服务器,并等待索引服务器返回查询结果;步骤5).按照步骤2的文档,设计与实现协议分析系统的缓存报文功能,缓存识别 模块根据提取报文模块生成的哈希值将相应的哈希搜索请求报文存进分离链接散列表,而 将索引服务器返回的报文存进先进先出队列里;步骤6).按照步骤2的文档,设计与实现协议分析系统的构造报文功能,构造报 文模块读取缓存于先进先出队列中的索引服务器返回的报文,根据返回的报文内容判断索 引服务器查询是否成功,如果索引服务器查询成功,说明内网有相关的下载资源并返回了 内网中的资源列表,进而根据索引服务器返回报文中的哈希值读取出分离链接散列表中相 应的哈希搜索请求报文,结合哈希搜索请求报文头部和索引服务器返回的内网资源列表, 构造出哈希搜索返回结果报文,将构造的哈希搜索返回结果报文发送给对等网络阿瑞斯的 客户端,阿瑞斯客户端就可以根据构造的哈希搜索返回结果报文里的资源地址进行内网下 载;如果索引服务器查询失败,说明内网中没有相关的下载资源,读取出分离链接散列表中 相应的哈希搜索请求报文并将其放行到外网,让其去外网进行资源下载。有益效果本发明提取一个针对阿瑞斯特定网络服务的协议分析系统的实现方 法,相比以往的方法有一些显著的优点识别效率高本发明在网络层进行报文识别,缩短报文识别路径,同时本发明只识 别上行流量,对下行流量不进行处理,减轻CPU的处理压力,提高报文的识别效率。报文的 识别准确率达到100%,不会出现漏判、误判等情况,而传统的在路由器上进行识别的方式 一般仅能达到90% 95%的识别命中率。模块化设计整个协议分析系统的按照功能模块进行划分,报文识别功能采用深 层扫描DPI技术,根据阿瑞斯报文的特征字来协议识别相关报文。提取信息功能则是提取 哈希搜索请求报文的{源地址IP、下载资源ID}并将相关信息通过发送报文模块发送给索 引服务器。缓存报文功能使用缓存队列,将识别出来的报文放进该缓存队列里。构造报文 功能则根据索引服务器返回的节点列表信息,构造哈希搜索返回报文。良好的系统扩展性由于系统模块之间采用的是独立模块化,功能并行层次化设 计,系统模块之间的通信机制完全采用层次化的结构,因此可以方便地添加新的功能,也可 以很容易地升级现有的功能,所以该系统拥有良好的可扩展性。
高度的可靠性和稳定性通过对阿瑞斯协议分析系统的单元测试,集成测试以及 整个P2P缓存系统的系统测试表明该协议分析系统运行状况良好,占用系统资源少,拥有 良好的容错机制以及灾难恢复能力。


图1是阿瑞斯协议分析系统的物理组网图,图2是阿瑞斯协议分析系统的时序图,图3是报文识别模块的流程图,图4是缓存报文模块的分离链接散列表结构图,图5是发送报文模块的原理图,图6是构造报文模块的流程图。
具体实施例方式体系结构报文识别功能基于应用层数据检测的P2P流量识别技术是通过协议分析与还原 技术,提取P2P应用层数据(即P2P载荷),通过分析P2P载荷所包含的协议特征值,来判断 是否属于P2P应用。因此,这类方法也叫做深层数据包检测技术(DPI)。在深层数据包检测 技术中,通过对具体的P2P协议及其对应的P2P系统的载荷进行特征提取,建立特征库。对 于流经的实时网络流,采用模式匹配算法,判断其中是否包含特征库中的特征串。如果特征 匹配成功,该网络流就是P2P数据。本发明的报文识别部分即采用DPI扫描技术,根据固定 位特征字来协议识别阿瑞斯特定网络服务中的哈希搜索报文以及一些相关交互报文。提取信息功能提取阿瑞斯网络服务的哈希搜索报文中的{源地址IP、下载资源 ID}信息,同时将提取的信息进行哈希取值,此值作为缓存报文功能里分离链接散列表的 hashkey 值。缓存报文功能将识别到的哈希搜索报文缓存到分离链接法散列表,理想的散列 表数据结构只不过是一个包含一些项的具有固定大小的数组,把表的大小记作TableSize, 将每个键映射到从0到TableSize-1这个范围中的某个数,并且将其放到适当的单元中。理 想情况下应该运算简单并且应该保证任何两个不同的键映射到不同的单元,而实际情况因 为单元的数目是有限的,而键实际上是用不完的。当一个键在插入时与一个已经插入的元 素散列到相同的值,就产生了冲突,这个冲突需要解决。本发明采用分离链接法解决这种冲 突,进而减少缓存哈希搜索报文的冲突。本发明使用先进先出队列储存索引服务器返回的报文。发送报文功能将提取的哈希搜索请求报文的{哈希值、下载资源ID}信息发 给索引服务器。本发明使用socket套接字处理发送报文的问题,内核与用户间通讯使用 Net 1 ink。Net 1 ink用于在内核模块与在用户地址空间中的进程之间传递消息,它包含了用 于用户进程的基于标准套接字的接口和用于内核模块的一个内部核心API。Net link是一种特殊的socket,它是Linux所特有的,类似于BSD中的AF_R0UTE但 又远比它的功能强大,目前在最新的Linux内核(2.6. 14)中使用Netlink进行应用与内核 通信的应用很多,包括路由daemon (NETLINK_R0UTE),1-wire子系统(NETLINK_W1),用户态 socket 协议(NETLINK_USERSOCK),防火墙(NETLINK_FIREWALL),socket 监视(NETLINK_ INET_DIAG),netfilter 日志(NETLINK_NFL0G),ipsec 安全策略(NETLINK_XFRM),SELinux 事件通知(NETLINK_SELINUX),iSCSI 子系统(NETLINK_ISCSI),IPv6 防火墙(NETLINK_IP6_ Fff), DECnet 路由信息(NETLINK_DNRTMSG),内核事件向用户态通知(NETLINK_KOBJECT_ UEVENT),通用 Netlink(NETLINK_GENERIC)。构造报文功能根据缓存于先进先出队列的索引服务器返回的拥有资源节点列 表信息的报文与缓存于分离链接散列表中的哈希搜索请求报文,构造哈希搜索返回结果报 文。报文构造成功后,按照原路返回给阿瑞斯客户端。方法流程该部分详细说明发明内容各个部分的设计与实现报文识别功能实现利用Linux netfilter里的TCP/IP协议栈的关键数据结构 Socket Buffer (sk_buff),来操作流经的数据。如果是报文分片的,或是无连接数,则返回 无操作。当一个报文流经第一个钩子函数NF_IP_PRE_ROUTING,会被送到内存的控制结构 sk_buff中暂时存储。在这个控制结构里,有个指向网络报文的指针(如skb->nh),首先识 别报文是否为TCP报文,再根据sk_bufT结构提供的网络层和传输层头部的大小,skb->nh 加上之前两者的头部长度,指针就指向了应用层数据的头部(如Appdata指针)。sk_buff 里还提供数据包的总长度,通过减去网络层和传输层头部的大小,就能得到应用层数据的 长度。上述准备工作完成后,就可以通过Appdata指针来比对需要识别的ares报文,也就 是通过对报文长度和固定位进行匹配来确定。sk_buff里存储的是网络字节序,所以比对时 需要用到_constant_htons()或_constant_htonl ()来统一网络字节序和主机字节序。本发明需要剖析阿瑞斯特定网络服务中的哈希搜索报文,判断是否为阿瑞斯的上 行TCP数据包中的哈希搜索请求报文数据包,不是阿瑞斯包则放行数据包。提取信息功能实现提取哈希搜索请求报文的{源地址、下载资源ID}信息。通过 本发明的报文识别功能,识别出阿瑞斯的哈希搜索请求报文后,提取出网络层的源地址,同 时对报文应用层数据进行信息处理,根据应用层的数据结构,可以通过指针偏移提取出下 载资源ID。缓存报文功能实现本发明设计缓存队列,用来存放识别出的哈希搜索请求报文 和索引服务器返回的报文。在此发明中,缓存的使用方式是分离链接散列表和先进先出的 两种队列。协议模块将识别出来的哈希搜索请求报文存进分离链接散列表中,而将索引服 务器返回的报文存进先进先出队列里。本发明设计一个分离链接散列表结构和Queue队列。分离链接散列表结构主要使 用在哈希搜索请求报文的存储,由于需要针对哈希搜索请求报文进行索引,所以使用普通 的线性表结构显然效率比较低下,而使用基于散列表结构的分离链接散列表可以大大增强 它的搜索命中率。只需要给出hash值,再计算一下所在分离链接散列表中线性表链的位 置,即可以减小搜索范围,至于散列表的长度可以根据实际需要来进行取值,当节点数比较 多时,选用的hash长度应该足够长,减小每条链的长度,当然也不可以过多,过多会占用过 多的内存,从而影响内存使用效率。Queue队列实现为静态存储的环形队列,不必每次分配 内存,而是一次性分配好一大块内存,环形地使用,将索引服务器返回的报文放进Queue队列里。发送报文功能实现本发明中,内核与用户之间通讯使用Netlink。内核模块提取 出哈希搜索报文的{哈希值,下载资源ID},然后通过Netlink套接字将提取出的信息传送 到用户态。用户态通过Socket套接字,将用户态接受的信息发送给索引服务器,等待索引 服务器返回的信息,再通过用户态传回给内核态进行处理。Netlink套接字的通信依据是一个对应于进程的标识,一般定为该进程的ID。当 通信的一端处于中断过程时,该标识为0。当使用Netlink套接字进行通信,通信的双方都 是用户态进程,则使用方法类似于消息队列。但通信双方有一端是中断过程,使用方法则不 同。Netlink套接字的最大特点是对中断过程的支持,它在内核空间接收用户空间数据时 不再需要用户自行启动一个内核线程,而是通过另一个软中断调用用户事先指定的接收函 数。当Netlink套接字用于内核空间与用户空间的通信时,在用户空间的创建方法和 一般套接字使用类似,但内核空间的创建方法则不同。Netlink套接字实现此类通信时创建 的过程如下步骤一内核态使用netlink_kernel_Create ()创建套接字,并指明接收函数;步骤二 用户空间进程创建套接字,并将进程ID发送至内核空间;步骤三内核态接收函数收到用户空间进程ID ;步骤四用户空间与内核空间可以通信。构造报文功能实现索引服务器进行检索,如果有该ID资源,则向协议分析系统 返回构造哈希搜索返回结果报文所需的资源节点列表信息,协议分析模块在内核中构造哈 希搜索返回结果报文,传给阿瑞斯客户端。构造报文的过程如下步骤一读取出当前数据包的skb结构体oldskb ;步骤二 检查该数据包IP首部的frag_ofT成员,判断是否是分片包。对于IP分 片,调用ip_defrag把它与已经收到的IP分片重组,并等待后来的IP分片,直至形成一个 完整的IP数据包;步骤三检查TCP校验和是否正确,若不正确则丢弃该数据包;步骤四对截获的当前数据包的skb结构体,调用Skb_COpy_eXpand()函数重新拷 贝一个nskb,包括skb结构体和数据部分;步骤五更新nskb引用的路由项,将当前数据包的源IP当做路由的目的IP,同时 由数据包的目的IP得到去往该源IP的路由;步骤六清除nskb中链接跟踪相关的内容,交换源地址和目的地址的IP和端口, 重新设置TCP头部的长度,TCP数据部分改为索引服务器返回的资源节点列表信息,并修改 IP头部中记录的数据包的总长度;步骤七重新设置TCP的序列号和确认号,序列号为原skb中的确认号,确认号为 原skb中的序列号与原TCP数据部分长度的和;步骤八重新计算TCP校验和,修改IP包的TTL,重新计算IP数据包头部校验和;步骤九使nskb和oldskb的链接记录关联,让新数据包经过NetfiIter的NF_IP_ L0CAL_0UT点,然后查路由,最后经由NF_IP_P0ST_R0UTING点将数据包发送出去。为方便描述,假定如下网络环境主机A上安装阿瑞斯软件客户端,在网桥系路上部署阿瑞斯协议分析系统。主机A上所有报文流经网桥,从而网桥上的阿瑞斯协议分析系 统要对报文进行识别工作。
具体实施方式
如下1、主机A打开阿瑞斯客户端,主机A连接Internet ;2、阿瑞斯客户端进行搜索并下载,网桥截获到报文交由协议分析系统进行分析和 处理,识别是否是阿瑞斯报文,以判断是否进行下一步的处理;3、如果是阿瑞斯哈希搜索请求报文,则提取哈希搜索请求报文的源地址和下载资 源ID,进而由源地址和下载资源ID生成哈希值,哈希值是用来标识不同用户的不同文件资 源,协议分析系统根据哈希搜索请求报文的哈希值存储于分离链接散列表里;4、网桥通过协议分析系统的发送报文功能将哈希值和下载资源ID发送给索引服 务器,并等待索引服务器的返回报文;5、网桥接收到索引服务器发送的资源列表信息以后,将其缓存于先进先出的 Queue队列中;6、协议分析系统读取缓存于Queue队列中的报文,根据报文内容判断是否查询成 功,如果索引服务器查询失败,说明内网中没有相关的下载资源,则通知分离链接散列表放 行相应的哈希搜索请求报文;如果索引服务器查询成功,说明内网中有相关的下载资源,则 根据索引服务器返回报文里的哈希值从分离链接散列表中读取出哈希搜索请求报文,并结 合哈希搜索请求报文的头部和索引服务器返回报文里的资源列表信息构造出哈希搜索返 回结果报文,协议分析系统将构造的哈希搜索返回结果报文返回给阿瑞斯用户,阿瑞斯客 户端就可以根据构造的哈希搜索返回结果报文里的资源地址进行内网下载;7、内网中无请求资源的时候,将哈希搜索请求发给外网节点进行搜索。8、外网节点返回哈希搜索结果报文返回给阿瑞斯客户端。
权利要求
一种基于对等网络的阿瑞斯协议分析系统的实现方法,其特征在于该协议分析系统实现方法包括的步骤为步骤1).进行需求分析,对协议分析系统需要完成的功能进行分析,并生成需求分析文档;步骤2).按照步骤1的分析文档设计模块,对各模块的功能进行详细分析,生成各个模块之间的逻辑关系和功能说明文档;步骤3).按照步骤2的文档,设计与实现协议分析系统的识别报文模块,在协议分析系统中识别效率,影响着整个系统的工作效率,报文识别模块根据报文长度以及固定位特征字来协议识别对等网络阿瑞斯的网络服务中的哈希搜索请求报文以及一些相关交互报文;步骤4).按照步骤2的文档,设计与实现协议分析系统对识别后的哈希搜索请求报文提取相关信息,并使用套接字通信完成发送报文功能模块的实现方式;提取报文模块是提取哈希搜索请求报文中的{源地址、下载资源号}信息,进而由源地址和下载资源号生成哈希值,哈希值是用来标识不同用户的不同文件资源;发送报文模块将提取的下载资源号和生成的哈希值发送给索引服务器,并等待索引服务器返回查询结果;步骤5).按照步骤2的文档,设计与实现协议分析系统的缓存报文功能,缓存识别模块根据提取报文模块生成的哈希值将相应的哈希搜索请求报文存进分离链接散列表,而将索引服务器返回的报文存进先进先出队列里;步骤6).按照步骤2的文档,设计与实现协议分析系统的构造报文功能,构造报文模块读取缓存于先进先出队列中的索引服务器返回的报文,根据返回的报文内容判断索引服务器查询是否成功,如果索引服务器查询成功,说明内网有相关的下载资源并返回了内网中的资源列表,进而根据索引服务器返回报文中的哈希值读取出分离链接散列表中相应的哈希搜索请求报文,结合哈希搜索请求报文头部和索引服务器返回的内网资源列表,构造出哈希搜索返回结果报文,将构造的哈希搜索返回结果报文发送给对等网络阿瑞斯的客户端,阿瑞斯客户端就可以根据构造的哈希搜索返回结果报文里的资源地址进行内网下载;如果索引服务器查询失败,说明内网中没有相关的下载资源,读取出分离链接散列表中相应的哈希搜索请求报文并将其放行到外网,让其去外网进行资源下载。
全文摘要
本发明的目的是提供一种基于对等网络阿瑞斯协议分析系统及其实现方法。目前P2P流量成为网络负担的问题,可以通过部署P2P缓存服务器得到解决,缓存服务器架构中的协议识别系统,避免了以往协议分析系统所存在的功耗高,不稳定性以及识别效率低等问题。根据哈希搜索以及一些交互报文的应用层报文的大小以及报文特征字,对报文进行高效的识别,然后对哈希搜索请求报文进行分析并提取{源地址、下载资源号}信息,将其发送到索引服务器,同时将相应哈希搜索请求报文复制后缓存于队列里,进而等待索引服务器的返回节点列表信息,最后根据索引服务器返回的信息,构造哈希搜索返回结果报文给对等网络阿瑞斯客户端。
文档编号H04L29/06GK101854391SQ201010182468
公开日2010年10月6日 申请日期2010年5月25日 优先权日2010年5月25日
发明者徐鹤, 李致远, 王汝传, 蒋峥峥, 赵丹, 邵星, 韩志杰 申请人:南京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1