闻建芬,何加铭,曾兴斌,陈 静
(宁波大学通信技术研究所,浙江宁波315211)
文件共享是P2P技术在实际应用中一个重要环节,网络逻辑结构健壮性,网络资源定位精准性,资源利用高效性及传输实时性是一个成熟文件共享系统的关键指标[1]。引入多线程下载技术,以进行文件批量传输,提高网络传输速率。针对ADSL网络上行/下行带宽对P2P网络中上行/下行链路数量的限制以及现有多线程下载技术中资源节点分配存在的节点单一化问题[1,3],提出了滑动窗口数据块动态调整策略和资源节点自适应选择策略。
本文所研究的网络系统是基于混合P2P网络的内容传输下载系统,由一个或多个跟踪服务器(Tracking Server)和若干个节点peer组成。每个节点在某一时刻只能和一个跟踪服务器连接,它就是该服务器(本地跟踪服务器)的本地客户节点(Local Cilent Peer)[4,5]。跟踪服务器记录了资源索引表CachedResourceInfoTable、本地节点信息表CachedClientInfoTable以及邻近服务器信息表ServerInfoTable。这些表的数据结构如图1所示,在表CachedResourceInfoTable中,ResourceIndex和PeerInfo是一对多的关系,PeerInfo对应于CachedClientInfoTable,其中ClientType是节点类型(本地客户和远程客户),CPU、Stroage、BandWidth0是节点的硬件性能,Load是节点负载。当节点需要共享资源时,Tracking Server在资源索引表中查看是否有该资源,若无添加该资源信息,若有则在该资源索引对应PeerInfo项中添加该节点信息。当节点查询下载资源时,Tracking Server首先在本地资源索引表中查找匹配,若找到匹配项则向查询发起点返回查询结果,若不存在则向邻近跟踪服务器转发查询请求。邻近服务器找到查询结果后,一方面将结果发给发出请求服务器,另一方面发给查询发起点。
图1 数据结构
在查询发起点发送查询请求消息之前,首先对文件进行分块,并对其编号,记为Blocknum,num∈[0,1,2,…,N],N为任意整数。Size_block=S*Size_piece;S∈[1,2,…,M],M为任意整数。其中Size_block表示分块大小,Size_piece表示分片大小即下载最小数据单位。开辟大小窗口大小为4*Size_block的滑动窗口,定义窗口内容为pair(Block,state),Block为数据分块,state为下载状态,未下载state=0、正在下载state=1、已下载state=2三种状态。
查询发起点向Tracking Server发送N个数据块索引,Tracking Server在本地资源索引表根据数据块索引进行匹配,将得到N个查询结果集合PeerInfo1,PeerInfo2,PeerInfo3…,PeerInfoN返回给查询发起点,PeerInfo可能有多个节点,节点数越多,说明该数据块的健康度越好[2]。将数据块按照健康度从小到大排序,健康度相同的按照编号从小到大排。将排好序的Blocknum串中头4个分块送入下载窗口,并设置状态为未下载。取出4个分块对应PeerInfo的4个下载节点地址,进行下载数据连接。下载开始,打开计时器t。当时间t=n×T时,n为整数,若窗口内存在已下载或未下载的分块,则从剩余N-4个分块中取出新分块代替该分块,同时未下载分块重新安排到窗口外剩余分块最后位置。这里T为查看周期:
式中,Speed_piece表示网络平均下载速度,单位为b/s。需要注意的是,在请求节点整个下载过程中一直与Tracking Server保持通信,每次取出健康度最小的代替已下载或未下载分块。
查询发起点从Tracking Server得到PeerInfo集合,该节点怎样从PeerInfo集合中选择合适的节点作为下载源,本文提出了资源节点自适应选择策略。
发起点可以从返回PeerInfo中得到节点CPU、内存(Storage)、初始带宽(BandWidth0)和当前负载量(Load),采用二级优先级,节点可用带宽BandWidth作为第一优先级,其次是CPU和Storage综合能力。BandWidth见式2,节点i的CPU和Storage综合能力用Capacity(i)=P(Cpu)*w1+P(Storage)*w2表示[2]。其中P(x)表示x能力的量度值,比如cpu在512M以下用1表示,在512M和1G之间用2表示,w1,w2表示权重配置系数,w1+w2=1。
在系统中,PeerInfo中所有节点的信息保存在CachedClientInfoTable,当自身发生变化时比如负载量(Load)增减等都会以消息形式通知Tracking Server,然后Tracking Server对CachedClientInfoTable进行更新。值得注意的是:为了避免节点过载,这里规定同一时间对多个不同的数据连接对象传输,所以在下载窗口内保证4个连接对象不同。
硬件配置:用作仿真的所有PC机及其相关参数设置如表1所示。
表1 参数设置
软件配置:用标准JXTA协议搭建混合P2P网络,网络拓扑结构:15台普通计算机分成两个对等组,对等组1有7个本地节点和跟踪服务器1,对等组2有8个本地节点和跟踪服务器2,对等组中的本地节点不相连,对等组间通过跟踪服务器相连接。
实验准备:从对等组1中随机选择3个节点分别放入大小为100×64K的文件,并向跟踪服务器1请求共享,从对等组2中选择2个节点分别放入相同的文件,并向跟踪服务器2请求共享,该网络中其余节点作为下载节点。假设在整个实验过程中不涉及节点的退出,当下载节点获取完文件后,继续为其他节点提供服务。
实验过程:采用滑动窗口数据块动态分配策略和资源节点自适应选择策略对全部节点完成文件下载平均时间的影响,资源节点自适应选择策略中w1和w2都取0.5。
实验结果:数据块随机选择条件下,采用资源节点随机选择和资源节点自适应选择两种情况的下载时间比较如图2(a)所示。在滑动窗口数据块动态分配下,采用资源节点随机选择和资源节点自适应选择两种情况的下载时间比较如图2(b)所示。
图2 仿真结果
实验分析:从图2(a)可以看出:一方面无论采用资源节点随机选择策略还是资源节点自适应选择策略,开始阶段随着下载节点数的增加,下载时间有所减少,因为下载节点增加使得资源节点供给也增加,系统中资源需求增长还没有超出供给的增长。但是当节点增加到一定程度,下载时间又有上升趋势,因为ADSL网络的上行/下行带宽对上行/下行链接数量有影响,请求节点的数据请求数量受到下行带宽的限制,出现了数据无效请求。另一方面,采用资源节点自适应选择在下载时间上比资源节点随机选择有所减少。
从图2(b)可以看出:一方面采用资源节点随机选择方法在下载节点数增加的开始阶段下载时间有所减少,这是因为可供下载节点随之增多。下载节点增加的后面阶段,下载时间出现不稳定,因为采用资源节点随机选择方法可能会因某一节点速度过慢而影响总体下载时间,而节点越多这种可能性越大。另一方面采用资源节点自适应选择方法,下载时间随节点数增加平稳减少最后趋向于稳定。
通过上述分析可以得出结论:采用本文提出的滑动窗口数据块动态分配策略,解决了ADSL下行链路带宽利用率低下的问题,避免了节点过载造成无效数据请求。采用资源节点自适应选择策略分配节点,选择最合适的节点提供下载,进一步优化资源下载环境,均衡节点负载,提高传输效率。
资源节点自适应选择策略,有效解决了现有机制中存在的节点分配单一化问题,从而优化资源下载环境,均衡节点负载,提高传输效率。滑动窗口动态调整策略则有效解决了当ADSL上行与下行速率不匹配的问题,避免了节点过载造成无效数据请求。
[1]茹林.p2p网络中多线程下载的研究[D].大连:大连海事大学,2009.
[2]詹晓强,胡德敏.基于P2P系统的动态负载均衡算法[J].计算机工程与设计(网络与通信技术版),2009,30(1):58-59.
[3]刘阿军.基于P2P网络的内容并行下载技术研究[D].武汉:华中科技大学,2007.
[4]Jiang S,Guo L,Zhang X.Light flood:An efficient flooding scheme for file search in unstructured peer-to-peer systems[c].Taiwan:Kaohsiung,2003.
[5]Madjid Merabti,Zhu Liu,Heather Yu,etal.Advances in Peer-to-Peer Content Search[J].Journal of Signal Processing System,2010,59(3):108-111.