1 引言
無線Ad-Hoc網(wǎng)絡(luò)因其構(gòu)建容易、支持用戶移動性的特點,在無線通信領(lǐng)域中占有極其重要的地位并具有廣闊的應(yīng)用前景。無線通信技術(shù)、移動技術(shù)的發(fā)展為無線Ad-Hoc網(wǎng)絡(luò)(WANET)提供了更廣泛的應(yīng)用空間。經(jīng)常使用文件共享的P2P網(wǎng)非常適合 WANET。然而,在現(xiàn)有的無線Ad-Hoc網(wǎng)絡(luò)中直接應(yīng)用P2P技術(shù),會造成系統(tǒng)開銷大量增加,傳輸效率及查詢成功率不高,從而影響整個網(wǎng)絡(luò)的性能。在無線Ad-Hoc網(wǎng)絡(luò)(WANET)中方便快捷地實現(xiàn)P2P數(shù)據(jù)共享與交換,改善文件搜索和下載機(jī)制成為廣泛關(guān)注的課題。
這里提出一種將查詢功能和路由功能統(tǒng)一的跨層設(shè)計方案,利用分布式哈希表建立樹狀網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),使用P2P位置查找技術(shù)將文件位置信息分配在其間,每一網(wǎng)絡(luò)成員都存儲和保留系統(tǒng)資源的位置及路由信息,實現(xiàn)共享文件的定位查詢。在WANET中實現(xiàn)查詢和路由功能的統(tǒng)一,提高文件搜索和下載效率,定向查詢網(wǎng)絡(luò)資源,降低冗余開銷。
2 系統(tǒng)概述
這里WANET通過節(jié)點間的樹形邏輯結(jié)構(gòu)解決共享文件的定位查詢問題,隨著網(wǎng)絡(luò)新節(jié)點的加入樹形拓?fù)浣Y(jié)構(gòu)增大。新節(jié)點只能通過某一個鄰居節(jié)點加入 WANET,每個WANET向外提供唯一的網(wǎng)絡(luò)ID,在同一ID的網(wǎng)絡(luò)中,每個節(jié)點只能擁有一個雙親節(jié)點。網(wǎng)絡(luò)有一個層次分明的樹狀拓?fù)浣Y(jié)構(gòu),這種結(jié)構(gòu)有助于查找文件路徑(即從存放路徑的節(jié)點獲得到達(dá)文件存儲節(jié)點的路由),以便從文件存儲節(jié)點下載文件。
為了存儲和保留位置信息以及路由信息,系統(tǒng)使用全分布哈希表,關(guān)鍵詞是所要共享文件的文件名,值是共享文件的全球統(tǒng)一的位置信息(節(jié)點MAC地址和節(jié)點文件的全路徑)。用一維空間來存儲關(guān)鍵詞和哈希值對,通過統(tǒng)一的哈希函數(shù)將每個關(guān)鍵詞映射到哈希鏈上的對應(yīng)位置。統(tǒng)一的函數(shù)有助于節(jié)點之間信息分配的平衡, WANET中的每個節(jié)點負(fù)責(zé)存儲一段哈希鏈(與哈希表上的索引項對應(yīng))。如果某一節(jié)點負(fù)責(zé)哈希鏈段上包含某一文件哈希值,稱該節(jié)點為文件的路徑節(jié)點 (Pnode),存儲文件F的節(jié)點就稱為文件節(jié)點(Fnode)。因此Pnode存儲攜帶位置信息的索引,F(xiàn)node存儲實際文件。因此,訪問一個文件的步驟如下:查詢節(jié)點(Qnode)哈希被搜索的文件名以確定哈希鏈上的值;訪問Pnode(哈希值包含在Pnode負(fù)責(zé)的哈希鏈內(nèi));從Pnode獲取被搜索文件的位置(即Fnode)并確定從Pnode小節(jié)點到Fnode的路由;從Qnode獲取到Qnode-Fnode的路由,訪問Fnode,文件從 Fnode被下載。
3 樹形拓?fù)涞慕⒑凸?jié)點文件定位
圖1d表示一個含有7個節(jié)點的WANET網(wǎng)絡(luò),在該網(wǎng)絡(luò)中,假定節(jié)點A、B、C、D、E、F、G提供的共享文件分別為(α1α2)、(β1β2)、(γ1)、(δ1 δ2)、(σ1)、(ε1)、(η1η2)。
3.1 WANET網(wǎng)絡(luò)系統(tǒng)樹形拓?fù)涞慕?/p>
假設(shè)網(wǎng)絡(luò)組建初期只有一個初始節(jié)點A,要建立一個如圖1d所示的7個節(jié)點的WANET文件共享網(wǎng)絡(luò),樹形拓?fù)涞慕⑦^程如下:
(1)節(jié)點A對自己的兩個共享文件α1、α2哈希后將值映射到整段共享文件哈希鏈上,如圖2a所示。
(2)節(jié)點B(共享文件β1、β2)發(fā)現(xiàn)節(jié)點A并向節(jié)點A發(fā)起接入請求,即B要加入A組成的網(wǎng)絡(luò)。節(jié)點A收到B的接入請求后,將自己所負(fù)責(zé)的哈希鏈分成兩段并分配一半給B,文件α2因此落入節(jié)點B負(fù)責(zé)的一段哈希鏈,A將文件α2的位置索引送至B(文件雖然還存放在節(jié)點A,但A上α2的位置信息置空)。因此,A成為B的雙親節(jié)點。B存放著文件α2的位置信息[α2,A]。
(3)B向網(wǎng)絡(luò)插入其共享文件β1和β2,β1映射到B節(jié)點所負(fù)責(zé)的哈希鏈段,β2映射到A節(jié)點所負(fù)責(zé)哈希鏈段。則B節(jié)點存儲位置信息[β1,B],A節(jié)點存儲位置信息[β2,B],即B為文件β1的PnodeA為文件β2的Pnode,如圖2b所示。
(4)另一個新節(jié)點C(存儲文件γ1、γ2)發(fā)現(xiàn)節(jié)點B并對其發(fā)出接入請求,節(jié)點C從B接入網(wǎng)絡(luò),B將自己的哈希鏈段分出一半給C。節(jié)點C上的文件γ1、 γ2哈希后映射到哈希鏈上,如圖2c。α2落入C所負(fù)責(zé)的哈希鏈段,B將α2的信息送至C,節(jié)點C不僅保留α2的位置信息,也保留從C到文件α2的路徑信息。C將B加到路徑上,同時保存[α2,BA]的索引項。表明文件α2存儲在節(jié)點A,并且從C到節(jié)點A的路徑是“C-B-A”。節(jié)點B成為C的雙親節(jié)點。
(5)C向網(wǎng)絡(luò)插入共享文件γ1、γ2,γ1映射到C負(fù)責(zé)的哈希鏈段,γ2映射到A負(fù)責(zé)的哈希鏈段。