聞建芬,何加銘,曾興斌,陳 靜
(寧波大學通信技術研究所,浙江寧波315211)
文件共享是P2P技術在實際應用中一個重要環(huán)節(jié),網(wǎng)絡邏輯結構健壯性,網(wǎng)絡資源定位精準性,資源利用高效性及傳輸實時性是一個成熟文件共享系統(tǒng)的關鍵指標[1]。引入多線程下載技術,以進行文件批量傳輸,提高網(wǎng)絡傳輸速率。針對ADSL網(wǎng)絡上行/下行帶寬對P2P網(wǎng)絡中上行/下行鏈路數(shù)量的限制以及現(xiàn)有多線程下載技術中資源節(jié)點分配存在的節(jié)點單一化問題[1,3],提出了滑動窗口數(shù)據(jù)塊動態(tài)調整策略和資源節(jié)點自適應選擇策略。
本文所研究的網(wǎng)絡系統(tǒng)是基于混合P2P網(wǎng)絡的內容傳輸下載系統(tǒng),由一個或多個跟蹤服務器(Tracking Server)和若干個節(jié)點peer組成。每個節(jié)點在某一時刻只能和一個跟蹤服務器連接,它就是該服務器(本地跟蹤服務器)的本地客戶節(jié)點(Local Cilent Peer)[4,5]。跟蹤服務器記錄了資源索引表CachedResourceInfoTable、本地節(jié)點信息表CachedClientInfoTable以及鄰近服務器信息表ServerInfoTable。這些表的數(shù)據(jù)結構如圖1所示,在表CachedResourceInfoTable中,ResourceIndex和PeerInfo是一對多的關系,PeerInfo對應于CachedClientInfoTable,其中ClientType是節(jié)點類型(本地客戶和遠程客戶),CPU、Stroage、BandWidth0是節(jié)點的硬件性能,Load是節(jié)點負載。當節(jié)點需要共享資源時,Tracking Server在資源索引表中查看是否有該資源,若無添加該資源信息,若有則在該資源索引對應PeerInfo項中添加該節(jié)點信息。當節(jié)點查詢下載資源時,Tracking Server首先在本地資源索引表中查找匹配,若找到匹配項則向查詢發(fā)起點返回查詢結果,若不存在則向鄰近跟蹤服務器轉發(fā)查詢請求。鄰近服務器找到查詢結果后,一方面將結果發(fā)給發(fā)出請求服務器,另一方面發(fā)給查詢發(fā)起點。
圖1 數(shù)據(jù)結構
在查詢發(fā)起點發(fā)送查詢請求消息之前,首先對文件進行分塊,并對其編號,記為Blocknum,num∈[0,1,2,…,N],N為任意整數(shù)。Size_block=S*Size_piece;S∈[1,2,…,M],M為任意整數(shù)。其中Size_block表示分塊大小,Size_piece表示分片大小即下載最小數(shù)據(jù)單位。開辟大小窗口大小為4*Size_block的滑動窗口,定義窗口內容為pair(Block,state),Block為數(shù)據(jù)分塊,state為下載狀態(tài),未下載state=0、正在下載state=1、已下載state=2三種狀態(tài)。
查詢發(fā)起點向Tracking Server發(fā)送N個數(shù)據(jù)塊索引,Tracking Server在本地資源索引表根據(jù)數(shù)據(jù)塊索引進行匹配,將得到N個查詢結果集合PeerInfo1,PeerInfo2,PeerInfo3…,PeerInfoN返回給查詢發(fā)起點,PeerInfo可能有多個節(jié)點,節(jié)點數(shù)越多,說明該數(shù)據(jù)塊的健康度越好[2]。將數(shù)據(jù)塊按照健康度從小到大排序,健康度相同的按照編號從小到大排。將排好序的Blocknum串中頭4個分塊送入下載窗口,并設置狀態(tài)為未下載。取出4個分塊對應PeerInfo的4個下載節(jié)點地址,進行下載數(shù)據(jù)連接。下載開始,打開計時器t。當時間t=n×T時,n為整數(shù),若窗口內存在已下載或未下載的分塊,則從剩余N-4個分塊中取出新分塊代替該分塊,同時未下載分塊重新安排到窗口外剩余分塊最后位置。這里T為查看周期:
式中,Speed_piece表示網(wǎng)絡平均下載速度,單位為b/s。需要注意的是,在請求節(jié)點整個下載過程中一直與Tracking Server保持通信,每次取出健康度最小的代替已下載或未下載分塊。
查詢發(fā)起點從Tracking Server得到PeerInfo集合,該節(jié)點怎樣從PeerInfo集合中選擇合適的節(jié)點作為下載源,本文提出了資源節(jié)點自適應選擇策略。
發(fā)起點可以從返回PeerInfo中得到節(jié)點CPU、內存(Storage)、初始帶寬(BandWidth0)和當前負載量(Load),采用二級優(yōu)先級,節(jié)點可用帶寬BandWidth作為第一優(yōu)先級,其次是CPU和Storage綜合能力。BandWidth見式2,節(jié)點i的CPU和Storage綜合能力用Capacity(i)=P(Cpu)*w1+P(Storage)*w2表示[2]。其中P(x)表示x能力的量度值,比如cpu在512M以下用1表示,在512M和1G之間用2表示,w1,w2表示權重配置系數(shù),w1+w2=1。
在系統(tǒng)中,PeerInfo中所有節(jié)點的信息保存在CachedClientInfoTable,當自身發(fā)生變化時比如負載量(Load)增減等都會以消息形式通知Tracking Server,然后Tracking Server對CachedClientInfoTable進行更新。值得注意的是:為了避免節(jié)點過載,這里規(guī)定同一時間對多個不同的數(shù)據(jù)連接對象傳輸,所以在下載窗口內保證4個連接對象不同。
硬件配置:用作仿真的所有PC機及其相關參數(shù)設置如表1所示。
表1 參數(shù)設置
軟件配置:用標準JXTA協(xié)議搭建混合P2P網(wǎng)絡,網(wǎng)絡拓撲結構:15臺普通計算機分成兩個對等組,對等組1有7個本地節(jié)點和跟蹤服務器1,對等組2有8個本地節(jié)點和跟蹤服務器2,對等組中的本地節(jié)點不相連,對等組間通過跟蹤服務器相連接。
實驗準備:從對等組1中隨機選擇3個節(jié)點分別放入大小為100×64K的文件,并向跟蹤服務器1請求共享,從對等組2中選擇2個節(jié)點分別放入相同的文件,并向跟蹤服務器2請求共享,該網(wǎng)絡中其余節(jié)點作為下載節(jié)點。假設在整個實驗過程中不涉及節(jié)點的退出,當下載節(jié)點獲取完文件后,繼續(xù)為其他節(jié)點提供服務。
實驗過程:采用滑動窗口數(shù)據(jù)塊動態(tài)分配策略和資源節(jié)點自適應選擇策略對全部節(jié)點完成文件下載平均時間的影響,資源節(jié)點自適應選擇策略中w1和w2都取0.5。
實驗結果:數(shù)據(jù)塊隨機選擇條件下,采用資源節(jié)點隨機選擇和資源節(jié)點自適應選擇兩種情況的下載時間比較如圖2(a)所示。在滑動窗口數(shù)據(jù)塊動態(tài)分配下,采用資源節(jié)點隨機選擇和資源節(jié)點自適應選擇兩種情況的下載時間比較如圖2(b)所示。
圖2 仿真結果
實驗分析:從圖2(a)可以看出:一方面無論采用資源節(jié)點隨機選擇策略還是資源節(jié)點自適應選擇策略,開始階段隨著下載節(jié)點數(shù)的增加,下載時間有所減少,因為下載節(jié)點增加使得資源節(jié)點供給也增加,系統(tǒng)中資源需求增長還沒有超出供給的增長。但是當節(jié)點增加到一定程度,下載時間又有上升趨勢,因為ADSL網(wǎng)絡的上行/下行帶寬對上行/下行鏈接數(shù)量有影響,請求節(jié)點的數(shù)據(jù)請求數(shù)量受到下行帶寬的限制,出現(xiàn)了數(shù)據(jù)無效請求。另一方面,采用資源節(jié)點自適應選擇在下載時間上比資源節(jié)點隨機選擇有所減少。
從圖2(b)可以看出:一方面采用資源節(jié)點隨機選擇方法在下載節(jié)點數(shù)增加的開始階段下載時間有所減少,這是因為可供下載節(jié)點隨之增多。下載節(jié)點增加的后面階段,下載時間出現(xiàn)不穩(wěn)定,因為采用資源節(jié)點隨機選擇方法可能會因某一節(jié)點速度過慢而影響總體下載時間,而節(jié)點越多這種可能性越大。另一方面采用資源節(jié)點自適應選擇方法,下載時間隨節(jié)點數(shù)增加平穩(wěn)減少最后趨向于穩(wěn)定。
通過上述分析可以得出結論:采用本文提出的滑動窗口數(shù)據(jù)塊動態(tài)分配策略,解決了ADSL下行鏈路帶寬利用率低下的問題,避免了節(jié)點過載造成無效數(shù)據(jù)請求。采用資源節(jié)點自適應選擇策略分配節(jié)點,選擇最合適的節(jié)點提供下載,進一步優(yōu)化資源下載環(huán)境,均衡節(jié)點負載,提高傳輸效率。
資源節(jié)點自適應選擇策略,有效解決了現(xiàn)有機制中存在的節(jié)點分配單一化問題,從而優(yōu)化資源下載環(huán)境,均衡節(jié)點負載,提高傳輸效率。滑動窗口動態(tài)調整策略則有效解決了當ADSL上行與下行速率不匹配的問題,避免了節(jié)點過載造成無效數(shù)據(jù)請求。
[1]茹林.p2p網(wǎng)絡中多線程下載的研究[D].大連:大連海事大學,2009.
[2]詹曉強,胡德敏.基于P2P系統(tǒng)的動態(tài)負載均衡算法[J].計算機工程與設計(網(wǎng)絡與通信技術版),2009,30(1):58-59.
[3]劉阿軍.基于P2P網(wǎng)絡的內容并行下載技術研究[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.