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

文档序号:7632457阅读:198来源:国知局

专利名称::一种基于阿瑞斯协议的对等网络缓存系统的实现方法
技术领域
:本发明是一种阿瑞斯(Ares)对等网络的缓存系统,主要用来缓解对等网络流量给骨干网带来的巨大压力,属于对等网络领域。
背景技术
:P2P网络(Peer-to-Peernetwork)即对等网络,是分布式系统与计算机网络相结合的产物,采用对等模式工作。其本质在于打破传统的C/S模式(Client/krvermode)即客户端/服务器模式,使一切网络成员享有自由、平等、互联的功能,它们既是客户端又是服务器,任何两个网络结点间都能共享文件、传递消息。Ares是一个非常不错的P2P文件共享体系,它始于2002年,开始作为一个Gnutella客户端在Gnutella网络上运营,2002年底经过改写,成为目前的Ares网络。目前的Ares网络采用混合架构,包含叶子结点和超级结点。Ares网络是一种基于超级节点的两层覆盖网络。在超级节点层,通过分布式哈希表(DHT)技术完成跨越搜索。和BitTorrent类似,Ares支持同步下载和从一个对等体到多个对等体的上载,同时支持直接超链接至P2P网络文件的能力。Ares的优点在于能快速地搜索和下载文件,并具有自设代理服务器、自订聊天社群、内建多媒体播放器和浏览器等功能,目前支持超过300,000用户,是非常流行的P2P网络。近年来,随着各种P2P应用的流行,P2P网络已成为互联网的重要组成部分。据统计,目前P2P流量占据了互联网流量的60%以上,其中Ares业务占很大一部分。快速增长的P2P流量给运营商带来了很大的问题,P2P用户能以运营商分配的带宽进行全速下载,而这些流量只有小部分请求本地内网结点,大部分以运营商出口流量的方式流向外网。为缓解P2P流量给骨干网带来的巨大压力,降低运营商的成本,目前解决该问题的方法主要分为限制和缓存两种方法。所谓限制是通过对P2P协议的识别,在网络出口处对P2P流量进行限速或拦截,但这种方法会在很大程度上会降低网络内的用户体验。所谓缓存是指在网络内部署P2P内容缓存服务器,使内网用户从缓存服务器上获得内容,来减少网络出口的P2P流量。鉴于复杂的Ares网络服务,通过部署P2P缓存系统,网络运营商可以利用有限的投入支撑增长的P2P业务需求,从而解决当前P2P技术带来的带宽冲击。另外,P2P缓存系统的使用还可以改善P2P应用的用户体验,从而吸引更多P2P客户,并可能为网络运营商带来更多客户。因此,P2P缓存系统的部署不仅能缓和P2P技术和网络运营商的矛盾,而且能引导二者协同发展,创造出双赢局面。
发明内容技术问题本发明的目的是提供一种基于阿瑞斯协议的对等网络缓存系统的实现方法,该方案具有新颖性、灵活性、易扩展性和易操作性,具有很好的市场前景。技术方案=Ares缓存系统包括以下三个组成部分协议分析器、索引服务器和缓存服务器。协议分析器根据哈希(Hash)搜索请求报文的应用层特征字,将报文识别,然后对报文进行分析、提取源地址和下载资源ID等信息,并把其发送到索引服务器,等待索引服务器返回资源节点列表信息,最后根据返回的信息,构造哈希搜索返回结果报文并传给Ares客户端。索引服务器接收协议分析器发送来的资源信息查询请求,将搜索到的拥有此资源的内网节点列表和缓存服务器的列表地址等信息返回。如果没有在索引服务器中查询到需要的文件信息,则通知协议分析器对用户的哈希搜索请求报文不做处理,并告知缓存服务器下载此文件以供内网用户分享,下载完成后通知索引服务模块进行信息更新。索引服务器设置阈值来对资源进行更新。缓存服务器主要功能有响应Ares内网节点的下载请求,为其提供下载服务;响应索引服务器发送来的下载请求和哈希搜索请求,根据超级节点的返回信息,构建资源节点列表并发送给索引服务器。该系统实现方法包括的步骤为步骤1).进行需求分析,对Ares缓存系统需要完成的功能进行分析,并生成需求分析文档;步骤幻.按照步骤1的分析文档设计模块,对各模块的功能进行详细分析,生成各个模块之间的逻辑关系和功能说明文档;步骤幻.按照步骤2的文档,设计与实现协议分析模块。协议分析模块由以下的几个部分组成报文识别、提取报文、发送报文以及构造报文。协议分析模块中的识别效率,影响着整个系统的工作效率。报文识别模块根据报文长度以及固定位特征字来识别Ares对等网络服务中的哈希搜索请求报文;提取报文模块是提取哈希搜索请求报文中的源地址和下载资源号信息,进而由源地址和下载资源号生成哈希值,用来标识不同用户的不同文件资源;发送报文模块将提取的下载资源号和生成的哈希值发送给索引服务器,并等待索引服务器返回查询结果;构造报文模块根据索引服务器返回的报文,判断索引服务器查询是否成功,如果索引服务器查询成功,说明内网有相关的下载资源并返回了内网中的资源列表,结合哈希搜索请求报文头部和索引服务器返回的内网资源列表,构造出哈希搜索返回结果报文并发送给Ares客户端,Ares客户端就可以根据返回的资源地址进行内网下载,如果索引服务器查询失败,说明内网中没有相关的下载资源,将相应哈希搜索请求报文放行到外网,不做其他处理;步骤4).按照步骤2的文档,设计与实现索引服务模块。索引服务模块主要完成数据检索功能以及和协议分析器、缓存服务器的交互功能。首先把内网节点列表信息存储在Memcached中,Memcached是一个高性能的分布式内存对象缓存系统。在Mysql数据库中存储缓存服务器的地址信息和文件哈希值并把Mysql数据库中的数据映射到Memcached中。当查询请求到来时,先在Memcached所管理的内存数据库中查找,若没有发现相应的资源,则需要在Mysql数据库中进行查询,找到数据后同步到Memcached中。若没有在Mysql数据库中发现所需查询的表项,索引服务器发送命令给协议分析系统,使其放弃对内网用户请求报文的篡改,同时发送下载请求给缓存服务器进行下载。下载完成后,Mysql数据库将文件哈希值和缓存服务器的信息添加至表中,完成更新工作,同时通过Mysql的触发机制,将表项同步至Memcached,以待用户查询;步骤5).按照步骤2的文档,设计与头现缓存服务模块。缓存服务器的主要功能有上传功能响应内网节点的下载请求,与内网节点协商传输端口,用协商好的传输端口为其提供下载服务;下载功能与超级节点建立连接,登陆4个超级节点,进行哈希搜索,并根据超级节点返回的资源列表进行文件分片下载;响应下载请求功能丌启特殊的端口进行监听,对索引服务器发送来的下载请求进行处理,并根据传输来的哈希值进行下载;响应哈希搜索请求功能对索引服务器发送来的哈希搜索请求进行响应,向超级节点发送哈希搜索请求,根据超级节点的返回信息,构建资源节点列表并发送给索引服务器。有益效果本发明是一个针对Ares对等网络缓存系统的实现方法,本发明通过引导内网P2P用户互联,充分利用内网P2P结点的服务能力,有效地降低了P2P缓存服务器负载压力,使得通过部署少量的P2P缓存服务器,就可以在不影响用户体验的前提下,减少P2P流量对网络运营商网络出口带宽的占用。在整体上提高了P2P缓存系统的性能。相比以往的方法有一些显著的优点良好的系统扩展性由于系统模块之间采用的是独立模块化,功能并行层次化设计,系统模块之间的通信机制完全采用层次化的结构,因此可以方便地添加新的功能,也可以很容易地升级现有的功能,所以该系统拥有良好的可扩展性。高度的可靠性和稳定性通过对Ares协议分析系统的单元测试、集成测试以及整个P2P缓存系统的系统测试,表明该协议分析系统运行状况良好,占用系统资源少,拥有良好的容错机制以及灾难恢复能力。图1是Ares缓存系统的物理组网图,图2是Ares缓存系统的结构图,图3是Ares缓存系统的流程图,图4是协议分析器的时序图,图5是索引服务器的流程图,图6是缓存服务器的时序图,图7是缓存服务器哈希搜索流程图。具体实施例方式体系结构协议分析器报文识别功能基于应用层数据检测的P2P流量识别技术是通过协议分析与还原技术,提取P2P应用层数据即P2P载荷,通过分析P2P载荷所包含的协议特征值,来判断是否属于P2P应用。因此,这类方法也叫做深层数据包检测技术(DPI)。本发明的报文识别部分即采用DPI扫描技术,根据固定位特征字来协议识别Ares特定P2P网络服务中的哈希搜索报文以及一些相关交互报文。协议分析器构造报文功能根据缓存于先进先出队列的索引服务器返回的拥有资源节点列表信息的报文与缓存于分离链接散列表中的哈希搜索请求报文,构造哈希搜索返回结果报文。报文构造成功后,按照原路返回给Ares客户端,使其完成下载。5索引服务器数据检索功能=Mysql数据库中的数据映射到Memcached中,当查询请求到来时,先在Memcached所管理的内存数据库中查找,若没有发现相应的资源,则需要在Mysql数据库中进行查询,找到数据后同步到Memcached中。若没有在Mysql数据库中发现所需查询的表项,索引服务器发送命令给协议分析系统,使其放弃对内网用户请求报文的篡改,同时发送下载请求给缓存服务器进行下载。下载完成后,Mysql数据库将文件hashid和缓存服务器的信息添加至表中,完成更新工作,同时通过Mysql的触发机制,将表项同步至Memcached,以待用户查询。索引服务器信息交互功能与协议分析模块的交互协议分析模块识别用户请求资源的报文,提取出其中的资源ID,发送给索引服务器,在索引服务器中查找后,如果有,则返回资源列表;如果没有,则要求缓存服务器到外网下载。与缓存服务器模块的交互缓存服务器上报其拥有的资源,通知索引服务器及时更新;提供和缓存系统之间的TCP资源查询功能;对命中缓存的次数进行统计;索引服务器统计在一定时间内用户请求资源文件的次数,确定是否进行资源更新。当达到事先设定的阈值后,发送HashID值到缓存服务器,由缓存服务器到外网为其进行资源更新。缓存服务器哈希搜索功能对索引服务器发送来的哈希搜索请求进行响应,向超级节点发送哈希搜索请求,根据超级节点的返回信息,构建资源节点列表并发送给索引服务器。缓存服务器文件下载功能丌启特殊的端口进行监听,对内网结点和索引服务器发送来的下载请求进行处理,与超级节点建立连接,登陆4个超级节点,进行哈希搜索,并根据超级节点返回的资源列表进行文件分片下载。方法流程该部分详细说明
发明内容各个部分的设计与实现协议分析器报文识别功能实现利用Linux的Netfilter防火墙里的TCP/IP协议栈的关键数据结构SocketBuffer(SkJxiff),来操作流经的数据包。如果是报文分片的,或是无连接数,则返回无操作。当一个报文流经Netfilter第一个钩子函数NF_IP_PRE_ROUTING,会被送到内存的控制结构sk_buff中暂时存储。在这个控制结构里,有个指向网络报文的指针(如Skb->nh),首先识别报文是否为TCP报文,再根据sk_bufT结构提供的网络层和传输层头部的大小,slA->nh加上之前两者的头部长度,指针就指向了应用层数据的头部(如Appdata指针)。sk_bufT里还提供数据包的总长度,通过减去网络层和传输层头部的大小,就能得到应用层数据的长度。上述准备工作完成后,就可以通过Appdata指针来比对需要识别的Ares报文,也就是通过对报文长度和固定位进行匹配来确定。本发明需要剖析Ares特定网络服务中的哈希搜索报文,判断是否为Ares的上行TCP数据包中的哈希搜索请求报文数据包,不是则放行数据包。协议分析器构造报文功能实现索引服务器进行检索,如果有该ID资源,则向协议分析系统返回构造哈希搜索返回结果报文所需的资源节点列表信息,协议分析模块在内核中构造哈希搜索返回结果报文,传给Ares客户端。构造报文的过程如下步骤一读取出当前数据包的slib结构体0ldslib;步骤二检查该数据包IP首部的frag_0fT成员,判断是否是分片包。对于IP分片,调用ip_defrag把它与已经收到的IP分片重组,并等待后来的IP分片,直至形成一个完整的IP数据包;步骤三检查TCP校验和是否正确,若不正确则丢弃该数据包;步骤四对截获的当前数据包的slib结构体,调用slib_COpy_eXpand0函数重新拷贝一个nslcb,包括slib结构体和数据部分;步骤五更新nslcb引用的路由项,将当前数据包的源IP当做路由的目的IP,同时由数据包的目的IP得到去往该源IP的路由;步骤六清除nslcb中链接跟踪相关的内容,交换源地址和目的地址的IP和端口,重新设置TCP头部的长度,TCP数据部分改为索引服务器返回的资源节点列表信息,并修改IP头部中记录的数据包的总长度;步骤七重新设置TCP的序列号和确认号,序列号为原slib中的确认号,确认号为原slA中的序列号与原TCP数据部分长度的和;步骤八重新计算TCP校验和,修改IP包的TTL,重新计算IP数据包头部校验和;步骤九使nskb和oldskb的链接记录关联,让新数据包经过NetfiIter的NF_IP_L0CAL_0UT点,然后查路由,最后经由NF_IP_P0ST_R0UTING点将数据包发送出去。索引服务器数据检索功能实现步骤一设计函数searchjiiemcached(),当协议分析系统截获到哈希搜索请求报文后,将其hashid发送到Memcached中查询,此函数实现了在内存中查找索引服务模块所存储的内网peerlist信息。步骤二设计函数search_mysql(),当Memcached中没有查找到所对应的hashid值的记录后,索引服务模块将在Mysql数据库中进行查询,如有相应的记录则先返回给协议分析系统,同时将其记录通过数据库的触发机制同步到Memcached中。若在数据库中没有发现相应的记录,则通知缓存服务器模块进行下载,下载完成后将得到的信息存储到Mysql中并将其同步到内存数据库。步骤三设计函数updatelistO,当数据库中的数据被访问的记录超过一定阈值的时候,数据库向缓存服务器发送更新列表的请求,当缓存服务器下载完成后将信息进行过滤(按照IP地址段进行过滤),将内网的节点信息进行保留,告知数据库进行更新,同时,将信息同步到Memcached中。索引服务器信息交互功能实现由于索引服务器涉及到和协议分析器及缓存服务器的信息交互,采用多线程技术搭建印oil模型。印oil是Linux下多路复用IO接口select/poll的增强版本,它能显著减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,印oil模型的工作流程为首先通过印ollcreate()函数来创建一个epoll的句柄。这个函数会返回一个新的印oil句柄,之后的所有操作将通过这个句柄来进行操作。在用完之后,用closeO来关闭这个创建出来的印oil句柄。之后在网络主循环里面,每一帧的调用印oll_Wait()函数来查询所有的网络接口,看哪一个可以读,哪一个可以写。当^olljait这个函数操作成功之后,epoll_events里面将储存所有的读写事件。max_events是当前需要监听的所有socket句柄数。timeout是印oll_wait的超时,为O的时候表示马上返回,为-1的时候表示一直等下去,直到有事件发生,为任意正整数的时候表示等这么长的时间,如果一直没有事件,则放弃。如果网络主循环是单线程,可以用-ι来等,这样可以保证效率,如果是和主逻辑在同一个线程,则可以用0来保证主循环的效率。印oll_Wait()范围之后应该是一个循环,遍利所有的事件如果是主socket的事件的话,则表示有新连接进入了,进行新连接的处理,并将新连接置于非阻塞模式。随后将新连接也加入印oil的监听队列。设置好event之后,将这个新的event通过印oll_ctl()函数加入到epoll的监听队列里面。如果不是主socket的事件的话,则代表是一个用户socket的事件,则来处理这个用户socket的事情。缓存服务器哈希搜索功能实现步骤一设计as_searchman_locate()函数创建并发送Hash搜索,调用as_hashtable_lookup()查询消息管理器是否包含此hash信息,若没有则调用as_search_create_locate()新建Hash搜索,然后调用as_hashtable_insert()插入此消息到管理器中,若插入失败,调用as_hashtable_remove_int()删除此Hash搜索消息,并as_search_free()释放此消息,最后调用asjessmaruforeach()依次发送管理器中的消息到相连的超级节点。步骤二设计hashtable_search()函数查询哈希表指定项,as_hashtable_create_mem()调用hashtable_new()为返回结果建立哈希表;as_hashtable_create_int()调用hashtablejewO建立哈希表存储已发送的超级节点信息,若失败则调用as_hashtable_free()释放结果哈希表,并释放此搜索消息。步骤三设计hashtable_entry()函数返回哈希表入口信息,hashtable_insert()函数插入指定项到哈希表,hashtable_remove()函数从哈希表删除某项;as_search_free()释放Hash搜索消息。步骤四设计send_search_itr()函数发送搜索消息到相连的超级节点,其中as_search_sent_count()用来返回已发送的超级节点数目,aS_Search_Sent_t0()用来判断此搜索消息是否已经发送到某超级节点,as_search_send()发送一个搜索请求到超级节;search_query_packet()^Csearch^;']packetH-ζ,ijffflas—session—send()发送报文,完毕则aS_paCket_free()释放报文,timer_add用来设置search消息的超时时间。缓存服务器文件下载功能实现该模块的主要功能能根据Hash搜索到的资源HashID信息,系统到外网去下载相应的资源,以便以后为内网用户提供上传服务。下载过程函数开始文件块下载函数aS_dOWnCOrm_Start()、文件块下载请求函数downconn_request()、发送文件块下载请求函数downconn_send_request()、力口密传输i青求函数as_encrypt_transfer_request()、下载连接函数downconn_connected()、读取传输包头部函数downconn_read_header()、PUSH回调函数downconn_push_calIback(),该函数将搜索得到的资源节点信息和资源节点答复报文中的信息进行比对,若一致则下载,否则视为无效,比对的信息有ip、port和^erName等。为方便描述,假定如下网络环境主机A上安装Ares软件客户端,在网桥上部署Ares协议分析器,主机A上所有报文流经网桥,并且在内网部署索引服务器和缓存服务器,构成Ares缓存系统。具体实施方式如下1、主机A连接hternet并打开Ares客户端;82、Ares客户端进行搜索并下载,网桥截获到报文交由协议分析器进行分析和处理,识别是否是Ares报文,以判断是否进行下一步的处理;3、如果是Ares哈希搜索请求报文,则提取哈希搜索请求报文的源地址和下载资源ID,进而由源地址和下载资源ID生成哈希值并发送给索引服务器,并等待索引服务器的返回报文;4、协议分析器读取索引服务器返回的报文,根据报文内容判断是否查询成功,如果索引服务器查询失败,说明内网中没有相关的下载资源,则放行相应的哈希搜索请求报文,使其到外网节点进行搜索;如果索引服务器查询成功,说明内网中有相关的下载资源,则根据索引服务器返回报文里的哈希值,并结合哈希搜索请求报文的头部和索引服务器返回报文里的资源列表信息构造出哈希搜索返回结果报文并返回给Ares用户,Ares客户端就可以根据构造的哈希搜索返回结果报文里的资源地址进行内网下载;5、若索引服务器无该Hash记录,则将该HashID发给缓存服务器,让缓存服务器去外网下载;6、缓存服务器根据该HashID到外网去进行Hash搜索并下载资源,下载完成后缓存服务器告知索引服务器,缓存中拥有该Hash资源的节点信息。索引服务器根据该信息选择15条内网节点信息和缓存服务器信息存入数据库;7、在索引服务器的数据表中设置一个点击次数字段,并为其设置一个阈值。当大于该阈值时,则发送它的HashID值给缓存服务器,请求缓存服务器为其进行资源列表更新;8、缓存服务器根据索引服务器告知的HashID信息,到Ares网络中进行资源列表更新,将最新的资源列表信息返回给索引服务器;9、索引服务器对外网节点按照IP地址网段进行过滤后,选择最优的15个内网节点资源进行存储更新。同时将点击次数字段置为0。权利要求1.一种基于阿瑞斯协议的对等网络缓存系统的实现方法,其特征在于该系统实现方法包括的步骤为步骤1).进行需求分析,对协议分析系统需要完成的功能进行分析,并生成需求分析文档;步骤幻.按照步骤1的分析文档设计模块,对协议分析模块、索引服务模块、缓存服务模块的功能进行详细分析,生成各个模块之间的逻辑关系和功能说明文档;步骤;3).按照步骤2的文档,设计与实现协议分析模块,协议分析模块由以下的几个部分组成报文识别模块、提取报文模块、发送报文模块以及构造报文模块;协议分析模块中的识别效率影响着整个系统的工作效率;报文识别模块根据报文长度以及固定位特征字来识别阿瑞斯对等网络服务中的哈希搜索请求报文;提取报文模块是提取哈希搜索请求报文中的源地址和下载资源号信息,进而由源地址和下载资源号生成哈希值,用来标识不同用户的不同文件资源;发送报文模块将提取的下载资源号和生成的哈希值发送给索引服务器,并等待索引服务器返回查询结果;构造报文模块根据索引服务器返回的报文,判断索引服务器查询是否成功,如果索引服务器查询成功,说明内网有相关的下载资源并返回了内网中的资源列表,结合哈希搜索请求报文头部和索引服务器返回的内网资源列表,构造出哈希搜索返回结果报文并发送给阿瑞斯客户端,阿瑞斯客户端就可以根据返回的资源地址进行内网下载,如果索引服务器查询失败,说明内网中没有相关的下载资源,将相应哈希搜索请求报文放行到外网,不做其他处理;步骤4).按照步骤2的文档,设计与实现索引服务模块,索引服务模块主要完成数据检索功能以及和协议分析器、缓存服务器的交互功能,把内网节点列表信息存储在内存对象缓存系统中,在数据库中存储缓存服务器的地址信息和文件哈希值并把数据库中的数据映射到内存对象缓存系统中,当查询请求到来时,先在内存对象缓存系统所管理的内存数据库中查找,若没有发现相应的资源,则需要在数据库中进行查询,找到数据后同步到内存对象缓存系统中;若没有在数据库中发现所需查询的表项,索引服务器发送命令给协议分析系统,使其放弃对内网用户请求报文的篡改,同时发送下载请求给缓存服务器进行下载,下载完成后,数据库将文件哈希值和缓存服务器的信息添加至表中,完成更新工作,同时通过数据库的触发机制,将表项同步至内存对象缓存系统,以待用户查询;步骤5).按照步骤2的文档,设计与实现缓存服务模块,缓存服务器的主要功能有上传功能响应内网节点的下载请求,与内网节点协商传输端口,用协商好的传输端口为其提供下载服务;下载功能与超级节点建立连接,登陆4个超级节点,进行哈希搜索,并根据超级节点返回的资源列表进行文件分片下载;响应下载请求功能开启特殊的端口进行监听,对索引服务器发送来的下载请求进行处理,并根据传输来的哈希值进行下载;响应哈希搜索请求功能对索引服务器发送来的哈希搜索请求进行响应,向超级节点发送哈希搜索请求,根据超级节点的返回信息,构建资源节点列表并发送给索引服务器。全文摘要基于阿瑞斯协议的对等网络缓存系统及其实现方法包括以下三个组成部分协议分析器、索引服务器和缓存服务器。协议分析器根据深层数据包检测技术识别哈希搜索请求报文,然后对报文进行分析、提取源地址和下载资源标识信息并发送到索引服务器,索引服务器将搜索到的拥有此资源的内网节点列表和缓存服务器的列表地址等信息返回。协议分析器根据返回的信息构造哈希搜索返回结果报文并传给阿瑞斯客户端,使对等网络用户从内网结点和缓存服务器下载资源。如果在索引服务器中没有查询到需要的文件信息,则通知协议分析器对用户的哈希搜索请求报文不做处理,并告知缓存服务器下载此文件以供内网用户分享,下载完成后通知索引服务模块进行信息更新。文档编号H04L29/08GK102130838SQ20111008570公开日2011年7月20日申请日期2011年4月2日优先权日2011年4月2日发明者徐鹤,李致远,王汝传,蒋华,邵星,韩志杰申请人:南京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1