專利名稱:P2p系統(tǒng)中中轉(zhuǎn)節(jié)點(diǎn)的選擇方法及p2p節(jié)點(diǎn)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及P2P技術(shù)領(lǐng)域,特別涉及P2P系統(tǒng)中中轉(zhuǎn)節(jié)點(diǎn)的選擇方法 及P2P節(jié)點(diǎn)。
背景技術(shù):
點(diǎn)對(duì)點(diǎn)P2P ( Peer-To-Peer )系統(tǒng),是一種分布式網(wǎng)絡(luò)系統(tǒng),系統(tǒng)中各 節(jié)點(diǎn)之間不需要通過(guò)服務(wù)器進(jìn)行中轉(zhuǎn),可以直接互相傳輸數(shù)據(jù)或通過(guò)其他節(jié) 點(diǎn)進(jìn)行數(shù)據(jù)中轉(zhuǎn),被選擇作為數(shù)據(jù)中轉(zhuǎn)的節(jié)點(diǎn)稱為中轉(zhuǎn)節(jié)點(diǎn)。
中轉(zhuǎn)節(jié)點(diǎn)的選擇在P2P系統(tǒng)中是非常重要的,中轉(zhuǎn)節(jié)點(diǎn)的性能直接影響 源節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)之間的數(shù)據(jù)傳輸,例如P2P系統(tǒng)中的網(wǎng)絡(luò)電話VoIP (Voice-over-IP)應(yīng)用中,中轉(zhuǎn)節(jié)點(diǎn)到源節(jié)點(diǎn)和目的節(jié)點(diǎn)的延遲直接影響 VOIP的通話效果,因此一般來(lái)說(shuō),應(yīng)該選擇那些到源節(jié)點(diǎn)和目的節(jié)點(diǎn)延遲 的和較小的、較為穩(wěn)定的節(jié)點(diǎn)作為中轉(zhuǎn)節(jié)點(diǎn)。但是,在IPv4中,IP地址只 是一個(gè)人為劃分的邏輯地址,通過(guò)節(jié)點(diǎn)的IP地址信息無(wú)法判斷節(jié)點(diǎn)之間的 延遲大小。雖然通過(guò)IP地址可以查找到某節(jié)點(diǎn)所處的地理位置,但是,兩 節(jié)點(diǎn)地理位置同他們之間的網(wǎng)絡(luò)延遲并不存在 一 個(gè)明確的關(guān)系。而如果采用 主動(dòng)探測(cè)方式去測(cè)量到大量候選節(jié)點(diǎn)的延遲進(jìn)而選擇一條較好路徑的方法 時(shí),將會(huì)導(dǎo)致大量探測(cè)報(bào)文,系統(tǒng)不堪重負(fù)。
為了解決中轉(zhuǎn)節(jié)點(diǎn)的選擇問(wèn)題,目前也有一些成果,其中,有三種具有 代表性的選擇中轉(zhuǎn)節(jié)點(diǎn)的方法,具體如下
一、IP比對(duì)法。
利用節(jié)點(diǎn)間IP地址差的絕對(duì)值來(lái)判斷節(jié)點(diǎn)間的延遲大小。其代表是網(wǎng) 格媒體GridMedia系統(tǒng),在該系統(tǒng)中,當(dāng)某節(jié)點(diǎn)請(qǐng)求中轉(zhuǎn)節(jié)點(diǎn)時(shí),通過(guò)追蹤器Tracker返回的該節(jié)點(diǎn)與請(qǐng)求節(jié)點(diǎn)IP地址之差的絕對(duì)值來(lái)推測(cè)延遲大小, 從而選擇出延遲較小的節(jié)點(diǎn)作為中轉(zhuǎn)節(jié)點(diǎn)。這一方式雖然可以使得節(jié)點(diǎn)有機(jī) 會(huì)發(fā)現(xiàn)并選擇位于同 一 子網(wǎng)內(nèi)甚至是同 一 局域網(wǎng)內(nèi)的節(jié)點(diǎn)作為中轉(zhuǎn)節(jié)點(diǎn),但 因IP地址和網(wǎng)絡(luò)延遲之間并不存在明顯的相關(guān)性,因此,本方法的效果有 待商榷。
二 、 Landmark方法。
即利用IP地址與地理位置的對(duì)應(yīng)關(guān)系,在節(jié)點(diǎn)中插入一個(gè)表示位置的 特征值,通過(guò)特征值確定節(jié)點(diǎn)間的延遲大小。其代表是AnySee系統(tǒng),在該 系統(tǒng)中,使用Landmark標(biāo)識(shí)表示位置,Landmark是一個(gè)56位數(shù)據(jù)類型的 值,利用固定幾位分別表示國(guó)家、網(wǎng)絡(luò)類型、省份、城市和學(xué)校等信息。每 個(gè)加入AnySee系統(tǒng)的節(jié)點(diǎn)都有自己的一個(gè)Landmark值,它由地理位置與 IP的對(duì)應(yīng)關(guān)系和一定的編碼規(guī)則產(chǎn)生。在尋找中轉(zhuǎn)節(jié)點(diǎn)時(shí),可根據(jù)Landmark 值通過(guò)一定的算法計(jì)算出節(jié)點(diǎn)之間的距離,推測(cè)節(jié)點(diǎn)間的延遲大小,從而選 擇出延遲較小的中轉(zhuǎn)節(jié)點(diǎn)。這種方式因需要建立詳細(xì)的Landmark數(shù)據(jù)庫(kù), 數(shù)據(jù)收集困難;而且,這種數(shù)據(jù)庫(kù)的精度較低,很難確定如"中國(guó)科技大學(xué)"、 "中科院研究生院,,、"清華大學(xué)"三所大學(xué)內(nèi)節(jié)點(diǎn)延遲的關(guān)系。
三、網(wǎng)全備坐對(duì)示方法。
網(wǎng)絡(luò)坐標(biāo)方法是假設(shè)每個(gè)節(jié)點(diǎn)在邏輯拓樸中都有一個(gè)邏輯坐標(biāo)值,通過(guò) 計(jì)算兩節(jié)點(diǎn)的邏輯坐標(biāo)的歐氏距離可以推測(cè)出兩節(jié)點(diǎn)間的延遲大小。現(xiàn)有確 定網(wǎng)絡(luò)坐標(biāo)的典型方法包括l)全球網(wǎng)絡(luò)定位GNP(Global Networking Positioning),這種方法的思想是使用較多的穩(wěn)定服務(wù)器建立一個(gè)靜態(tài)坐標(biāo)系 統(tǒng),每個(gè)服務(wù)器在系統(tǒng)中都有一個(gè)坐標(biāo)值;這樣,新加入的節(jié)點(diǎn)可以通過(guò)測(cè) 量到這些服務(wù)器的延遲來(lái)確定自己在系統(tǒng)中的坐標(biāo)。2)維瓦迪(Vivaldi) 系統(tǒng)不使用固定坐標(biāo)服務(wù)器,節(jié)點(diǎn)加入系統(tǒng)時(shí)隨機(jī)選擇坐標(biāo)并通過(guò)節(jié)點(diǎn)間的 相互探測(cè)來(lái)不斷調(diào)整自身坐標(biāo),最終使系統(tǒng)收斂。3)實(shí)用英特網(wǎng)坐標(biāo) PIC(Practical Internet coordinates)系統(tǒng)使用了上述兩種探測(cè)方式的混合。網(wǎng)絡(luò) 坐標(biāo)雖然能夠較為準(zhǔn)確的反應(yīng)節(jié)點(diǎn)間的延遲關(guān)系,但是,目前還沒(méi)有應(yīng)用網(wǎng)絡(luò)坐標(biāo)選擇延遲較小的中轉(zhuǎn)節(jié)點(diǎn)的選擇方案。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種P2P系統(tǒng)中中轉(zhuǎn)節(jié)點(diǎn)的選擇方法,可以選擇出較 佳的中轉(zhuǎn)節(jié)點(diǎn),且無(wú)需服務(wù)器支持。
本發(fā)明實(shí)施例提供一種P2P節(jié)點(diǎn),可以選擇出較佳的中轉(zhuǎn)節(jié)點(diǎn),且無(wú)需
服務(wù)器支持。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案具體是這樣實(shí)現(xiàn)的
一種P2P系統(tǒng)中中轉(zhuǎn)節(jié)點(diǎn)的選^^方法,該方法包括
源節(jié)點(diǎn)根據(jù)節(jié)點(diǎn)網(wǎng)絡(luò)坐標(biāo)計(jì)算自身鄰居表中每一個(gè)鄰居節(jié)點(diǎn)到源節(jié)點(diǎn) 的歐氏距離以及到目的節(jié)點(diǎn)的歐氏距離之和;
源節(jié)點(diǎn)向所述歐氏距離之和最小的鄰居節(jié)點(diǎn)發(fā)送路由查詢請(qǐng)求;
所述收到路由查詢請(qǐng)求的節(jié)點(diǎn)執(zhí)行與上述源節(jié)點(diǎn)相同的步驟;
源節(jié)點(diǎn)將第N個(gè)接收到所述路由查詢請(qǐng)求的節(jié)點(diǎn)確定為中轉(zhuǎn)節(jié)點(diǎn),其 中N> 1。
一種P2P節(jié)點(diǎn),該節(jié)點(diǎn)包括
鄰居表維護(hù)模塊,用于維護(hù)自身鄰居表;
路由計(jì)算模塊,與所述鄰居表維護(hù)模塊相連,用于根據(jù)節(jié)點(diǎn)的網(wǎng)絡(luò)坐標(biāo) 計(jì)算所述鄰居表維護(hù)模塊所維護(hù)的鄰居表中每一個(gè)鄰居節(jié)點(diǎn)到源節(jié)點(diǎn)的歐 氏距離以及到目的節(jié)點(diǎn)的歐氏距離之和;
路由查詢模塊,與所述路由計(jì)算模塊相連,用于向所述歐氏距離之和最 小的鄰居節(jié)點(diǎn)發(fā)送路由查詢請(qǐng)求;
中轉(zhuǎn)節(jié)點(diǎn)確定模塊,與所述路由查詢模塊相連,用于將第N個(gè)接收到 路由查詢請(qǐng)求的節(jié)點(diǎn)確定為中轉(zhuǎn)節(jié)點(diǎn),其中N》1。
由上述的技術(shù)方案可見(jiàn),本發(fā)明的這種P2P系統(tǒng)中轉(zhuǎn)節(jié)點(diǎn)選擇方法和 P2P節(jié)點(diǎn),通過(guò)網(wǎng)絡(luò)坐標(biāo)對(duì)鄰居表中節(jié)點(diǎn)間的歐氏距離的計(jì)算,采用逐步逼 近的查詢方法,通過(guò)多次查詢,找到較好的中轉(zhuǎn)節(jié)點(diǎn)。由于網(wǎng)絡(luò)坐標(biāo)能夠較為準(zhǔn)確的反應(yīng)出節(jié)點(diǎn)間的真實(shí)延遲情況,因此通過(guò)本發(fā)明所設(shè)計(jì)的這種收斂 性較好的逐步逼近的查詢方式,可以選擇出更加合適的中轉(zhuǎn)節(jié)點(diǎn),且不需要 專用的服務(wù)器支持,不受服務(wù)期處理能力限制,具有易擴(kuò)展、成本低、效果
好的特點(diǎn)。
圖1為本發(fā)明實(shí)施例的中轉(zhuǎn)節(jié)點(diǎn)的選擇方法流程圖2為本發(fā)明實(shí)施例的空間坐標(biāo)超球面示意圖3為本發(fā)明實(shí)施例的中轉(zhuǎn)節(jié)點(diǎn)選擇示意圖4為本發(fā)明實(shí)施例的P2P節(jié)點(diǎn)結(jié)構(gòu)示意圖5為本發(fā)明實(shí)施例的鄰居表維護(hù)模塊具體結(jié)構(gòu)示意圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉 實(shí)施例,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
本發(fā)明實(shí)施例主要是利用現(xiàn)有的Vivaldi等網(wǎng)絡(luò)坐標(biāo)確定方案來(lái)確定 P2P系統(tǒng)內(nèi)各節(jié)點(diǎn)的網(wǎng)絡(luò)坐標(biāo),并在每個(gè)節(jié)點(diǎn)內(nèi)使用一定策略維護(hù)一個(gè)鄰居 表;源節(jié)點(diǎn)A在需要選擇到目的節(jié)點(diǎn)的中轉(zhuǎn)節(jié)點(diǎn)時(shí),將查找其鄰居表,并 發(fā)送查詢路由請(qǐng)求到它所知道的某個(gè)最佳節(jié)點(diǎn)B上,B節(jié)點(diǎn)進(jìn)一步查找出其 鄰居表內(nèi)A、 P之間的最佳節(jié)點(diǎn)C,并發(fā)送查詢路由請(qǐng)求到C,要求C繼續(xù) 查找,重復(fù)進(jìn)行數(shù)次后,即可查找到一個(gè)較好節(jié)點(diǎn),從而可以將該節(jié)點(diǎn)選擇 為中轉(zhuǎn)節(jié)點(diǎn)。
圖1為本發(fā)明實(shí)施例的中轉(zhuǎn)節(jié)點(diǎn)的選擇方法流程圖,如圖1所示,該流 程包括以下步驟
步驟IOI,源節(jié)點(diǎn)根據(jù)節(jié)點(diǎn)坐標(biāo)計(jì)算自身鄰居表中,每一個(gè)鄰居節(jié)點(diǎn)到 源節(jié)點(diǎn)的歐氏距離以及到目的節(jié)點(diǎn)的歐氏距離之和。
步驟102,源節(jié)點(diǎn)向所述歐氏距離之和最小的鄰居節(jié)點(diǎn)發(fā)送路由查詢請(qǐng)
求。
步驟103,收到路由查詢請(qǐng)求的節(jié)點(diǎn)執(zhí)行與上述源節(jié)點(diǎn)相同的步驟。 步驟104,源節(jié)點(diǎn)將第N個(gè)接收到路由查詢請(qǐng)求的節(jié)點(diǎn)確定為中轉(zhuǎn)節(jié)點(diǎn)。 其中N可以預(yù)設(shè)為4壬意大于1的正整數(shù),即N》1。 其中,在本發(fā)明中,不限定網(wǎng)絡(luò)坐標(biāo)確定方案,同時(shí),因?yàn)榫W(wǎng)絡(luò)坐標(biāo)的
產(chǎn)生是現(xiàn)有成熟技術(shù),這里也省略網(wǎng)絡(luò)坐標(biāo)產(chǎn)生的具體算法步驟。
步驟101中所述鄰居表的建立方法任意,可以從P2P系統(tǒng)中的所有節(jié)點(diǎn)中
隨機(jī)選擇一定數(shù)量的節(jié)點(diǎn)加入鄰居表中,也可以-接照一定的規(guī)則加入鄰居表中。
下面介紹 一種較佳的鄰居表建立方法
以P2P系統(tǒng)中的節(jié)點(diǎn)通過(guò)Vivaldi網(wǎng)絡(luò)坐標(biāo)確定算法獲取坐標(biāo)為例,節(jié)點(diǎn)間
的延遲可以通過(guò)計(jì)算坐標(biāo)間的歐氏距離而得出,因此可以使用節(jié)點(diǎn)間的歐氏距
離代表節(jié)點(diǎn)間的延遲,歐氏距離大的節(jié)點(diǎn)說(shuō)明延遲較大。
設(shè)有一節(jié)點(diǎn)A,其鄰居表的建立可以首先將坐標(biāo)空間以A節(jié)點(diǎn)坐標(biāo)為中心
的多個(gè)超球面劃分為多層空間,從每一層中,隨機(jī)選擇滿足該層歐氏距離條件
的鄰居節(jié)點(diǎn)加入鄰居表中相應(yīng)的表項(xiàng)中;構(gòu)成一個(gè)多層結(jié)構(gòu)的鄰居表。
圖2為本發(fā)明實(shí)施例的空間坐標(biāo)超球面示意圖,如圖2所示,以A節(jié)點(diǎn)自
身坐標(biāo)為中心,系統(tǒng)內(nèi)其它節(jié)點(diǎn)都位于到這一中心半徑大小不等的多個(gè)超球面
上或超球面間。其中,節(jié)點(diǎn)A將隨機(jī)選取滿足某個(gè)區(qū)間條件的若干個(gè)節(jié)點(diǎn)存入
某層的鄰居表中,其中,每層鄰居表中的節(jié)點(diǎn)選擇條件如下
當(dāng)L=l日寸,只有一層空間,即i=0,則可選擇d滿足0< Joo的節(jié)點(diǎn);
當(dāng)L〉1時(shí),若1=0,則可選擇d滿足0<^^^的節(jié)點(diǎn);
當(dāng)1>1日于,若(Ki〈L-l,則可選擇d滿足2'"""' 的節(jié)點(diǎn);
當(dāng)L>1時(shí),若i:L-l,則可選4奪d滿足2'+、<"<00的節(jié)點(diǎn);
其中,d為在網(wǎng)絡(luò)坐標(biāo)系中鄰居節(jié)點(diǎn)到A節(jié)點(diǎn)的歐氏距離,L表示空間
劃分的總層數(shù),L>1; i代表具體層數(shù),取值范圍為0~L-1, t為延遲的最小
單位,例如t可取值為10ms或其它任意值。在每一層上,A可以隨機(jī)選擇符合條件的若干個(gè)節(jié)點(diǎn)加入到其鄰居表的 相應(yīng)表項(xiàng)中。由于每層所覆蓋的延遲的范圍呈指數(shù)關(guān)系增長(zhǎng),這就形成了離
A節(jié)點(diǎn)近的節(jié)點(diǎn)的信息多,離A節(jié)點(diǎn)遠(yuǎn)的節(jié)點(diǎn)的信息少的狀態(tài)。也就是說(shuō),每 個(gè)節(jié)點(diǎn)都對(duì)自己附近的情況非常了解,而隨著歐氏距離的增大,了解的程度 不斷降低。這有利于查找過(guò)程的收斂。
另外,在建立起鄰居表后,節(jié)點(diǎn)還可以進(jìn)一步通過(guò)定期發(fā)送心跳消息探 測(cè)鄰居表中的鄰居節(jié)點(diǎn)是否失效,將失效的鄰居節(jié)點(diǎn)從所述鄰居表中刪除, 從而保證鄰居表的可用性。
除此以外,節(jié)點(diǎn)之間還可以定期交換鄰居表信息。通過(guò)鄰居表交換,節(jié) 點(diǎn)A可發(fā)現(xiàn)一些原來(lái)未知的新節(jié)點(diǎn),從而提高鄰居節(jié)點(diǎn)的可用性。具體來(lái) 說(shuō),若自身鄰居表中的鄰居節(jié)點(diǎn)數(shù)目沒(méi)有達(dá)到預(yù)設(shè)的閾值,則將其它鄰居節(jié) 點(diǎn)的鄰居表中包含的,自身鄰居表中沒(méi)有的新節(jié)點(diǎn)加入自身的鄰居表中;若 自身鄰居表中的鄰居節(jié)點(diǎn)數(shù)目已經(jīng)達(dá)到預(yù)設(shè)的閾值,則根據(jù)預(yù)設(shè)的規(guī)則用所 述新節(jié)點(diǎn)替換自身鄰居表中的節(jié)點(diǎn)。這個(gè)替換規(guī)則可以任意設(shè)置,例如判斷 新節(jié)點(diǎn)與原節(jié)點(diǎn)進(jìn)入P2P系統(tǒng)的時(shí)間,保留進(jìn)入系統(tǒng)時(shí)間長(zhǎng)的節(jié)點(diǎn)來(lái)替換掉 進(jìn)入系統(tǒng)時(shí)間短的節(jié)點(diǎn)?;蛘?,計(jì)算所述新節(jié)點(diǎn)與自身鄰居表內(nèi)屬于同一層 中的鄰居節(jié)點(diǎn)之間的平均延遲,以及該層中,原有鄰居節(jié)點(diǎn)與同一層中的其 它節(jié)點(diǎn)之間的平均延遲,將比新節(jié)點(diǎn)延遲小的原有鄰居節(jié)點(diǎn)替換為新節(jié)點(diǎn)。 例如設(shè)鄰居表中原節(jié)點(diǎn)為Pi,新節(jié)點(diǎn)為Pn,則可以計(jì)算Pi與其所在層的表 項(xiàng)內(nèi)其它原節(jié)點(diǎn)間的平均延遲,同時(shí)也計(jì)算新節(jié)點(diǎn)Pn同表項(xiàng)內(nèi)與其所在層
的其它原節(jié)點(diǎn)間的平均延遲,如果Pn〉Pj,則用新節(jié)點(diǎn)取代節(jié)點(diǎn)Pi。這種替
換方法可以使鄰居表中的節(jié)點(diǎn)盡量均衡的分布在坐標(biāo)空間中。
當(dāng)節(jié)點(diǎn)A的某層的表項(xiàng)中的鄰居節(jié)點(diǎn)較少時(shí),例如沒(méi)有達(dá)到預(yù)設(shè)的閾 值,A節(jié)點(diǎn)可以主動(dòng)發(fā)現(xiàn)一些符合條件的節(jié)點(diǎn)加入該表項(xiàng)內(nèi)。例如,節(jié)點(diǎn)A
隨機(jī)產(chǎn)生一個(gè)參考節(jié)點(diǎn)坐標(biāo)P,d,其中,節(jié)點(diǎn)A到P^d的歐氏距離d需要符 合上述的節(jié)點(diǎn)選擇條件,例如2、<"《2' 這一條件。節(jié)點(diǎn)A向其鄰居節(jié)點(diǎn)內(nèi)距離P,d最近的節(jié)點(diǎn)B發(fā)送搜索請(qǐng)求,收到這一搜索請(qǐng)求的節(jié)點(diǎn)B進(jìn)一 步將搜索請(qǐng)求發(fā)送給其鄰居表內(nèi)距離P^d更近的節(jié)點(diǎn)C上,同時(shí)B可以報(bào) 告A所知道的節(jié)點(diǎn)中C距離P^d較近,如此進(jìn)行多跳后停止,例如預(yù)設(shè)一 個(gè)搜索次數(shù)M, M>1,達(dá)到M次后,停止搜索,具體可以使用設(shè)定TTL 生存期的方法限制搜索次數(shù)。節(jié)點(diǎn)A最終可以發(fā)現(xiàn)在P^d附近的一些節(jié)點(diǎn), 從而可以從收到搜索請(qǐng)求的節(jié)點(diǎn)中,選擇一些合適的節(jié)點(diǎn)加入自身鄰居表中 其中。從而進(jìn)一步提高鄰居表的可用性。
最后,可以舉個(gè)具體的例子,說(shuō)明具體中轉(zhuǎn)節(jié)點(diǎn)的確定過(guò)程。
圖3為本發(fā)明實(shí)施例的中轉(zhuǎn)節(jié)點(diǎn)選擇示意圖,如圖3所示,源節(jié)點(diǎn)為A, 目的節(jié)點(diǎn)為P,當(dāng)節(jié)點(diǎn)A需要查找到節(jié)點(diǎn)P的中轉(zhuǎn)節(jié)點(diǎn)時(shí),節(jié)點(diǎn)A首先查 看自己鄰居表中的鄰居節(jié)點(diǎn),并計(jì)算這些鄰居節(jié)點(diǎn)到自身和到P的歐氏距離 之和,并最終選擇出歐氏距離之和最小的節(jié)點(diǎn)B。節(jié)點(diǎn)A將路由查詢請(qǐng)求發(fā) 送給節(jié)點(diǎn)B。節(jié)點(diǎn)B在收到這一消息后,同樣查看自己鄰居表中的節(jié)點(diǎn),并 計(jì)算這些鄰居節(jié)點(diǎn)到節(jié)點(diǎn)A和到節(jié)點(diǎn)P的歐氏距離之和,并最終確定節(jié)點(diǎn)C 到節(jié)點(diǎn)A、節(jié)點(diǎn)P的歐氏距離之和最小。節(jié)點(diǎn)B將路由查詢請(qǐng)求發(fā)送給節(jié)點(diǎn) C。節(jié)點(diǎn)C以同樣的計(jì)算方法,確定出節(jié)點(diǎn)D將查詢路由給節(jié)點(diǎn)D。如果預(yù) 先設(shè)置將第3次查詢到的節(jié)點(diǎn)作為中轉(zhuǎn)節(jié)點(diǎn),則節(jié)點(diǎn)A此時(shí)可以最終確定 節(jié)點(diǎn)D為中轉(zhuǎn)節(jié)點(diǎn),否則繼續(xù)查詢,逐步逼近。其中,每次發(fā)送查詢請(qǐng)求 的節(jié)點(diǎn)可以通過(guò)向源節(jié)點(diǎn)報(bào)告自己查詢到的節(jié)點(diǎn)的方式通知源節(jié)點(diǎn)哪個(gè)節(jié) 點(diǎn)更佳。 一般來(lái)說(shuō),查詢次數(shù)越多,選擇出的中轉(zhuǎn)節(jié)點(diǎn)越好,但是查詢次數(shù) 過(guò)多也會(huì)給網(wǎng)絡(luò)造成負(fù)擔(dān)。具體將第幾次查詢到的節(jié)點(diǎn)作為中轉(zhuǎn)節(jié)點(diǎn),可以 根據(jù)實(shí)際需要而定。
圖4為本發(fā)明實(shí)施例的P2P節(jié)點(diǎn)結(jié)構(gòu)示意圖,如圖4所示,該節(jié)點(diǎn)包括
鄰居表維護(hù)模塊401,用于維護(hù)自身鄰居表;
路由計(jì)算模塊402,與所述鄰居表維護(hù)模塊相連,用于根據(jù)節(jié)點(diǎn)坐標(biāo), 計(jì)算所述鄰居表維護(hù)模塊維護(hù)的鄰居表中,每一個(gè)鄰居節(jié)點(diǎn)到源節(jié)點(diǎn)的歐氏 距離以及鄰居節(jié)點(diǎn)到目的節(jié)點(diǎn)的歐氏距離之和;路由查詢模塊403,與所述路由計(jì)算模塊相連,用于向所述歐氏距離之 和最小的鄰居節(jié)點(diǎn)發(fā)送路由查詢請(qǐng)求;
中轉(zhuǎn)節(jié)點(diǎn)確定模塊404,與所述路由查詢模塊相連,用于將第N個(gè)接收 到路由查詢請(qǐng)求的節(jié)點(diǎn)確定為中轉(zhuǎn)節(jié)點(diǎn),其中N> 1。
圖5為本發(fā)明實(shí)施例的鄰居表維護(hù)模塊具體結(jié)構(gòu)示意圖,如圖5所示, 鄰居表維護(hù)模塊包括
存儲(chǔ)單元501,用于存儲(chǔ)鄰居表。
空間劃分單元502,用于將坐標(biāo)空間劃分為以自身節(jié)點(diǎn)坐標(biāo)為中心的L 層超球面;其中L》1;
節(jié)點(diǎn)選擇單元503,與所述空間劃分單元和存儲(chǔ)單元分別相連,用于從 每一層中,隨機(jī)選擇滿足該層歐氏距離條件的鄰居節(jié)點(diǎn)加入所述鄰居表中相 應(yīng)的表項(xiàng)內(nèi);構(gòu)成一個(gè)L層的鄰居表。
另外,鄰居表維護(hù)模塊401可以進(jìn)一步包括
節(jié)點(diǎn)維護(hù)單元,與存儲(chǔ)單元相連,用于通過(guò)心跳消息探測(cè)鄰居表中的鄰 居節(jié)點(diǎn)是否失效,將失效的鄰居節(jié)點(diǎn)從所述鄰居表中刪除。
或者,鄰居表維護(hù)模塊401可以進(jìn)一步包括或在包括節(jié)點(diǎn)維護(hù)單元的實(shí) 施例基礎(chǔ)上進(jìn)一步包括
節(jié)點(diǎn)交換單元,與所述存儲(chǔ)單元相連,用于與其它節(jié)點(diǎn)之間定期交換鄰 居表信息,若自身鄰居表中的鄰居節(jié)點(diǎn)數(shù)目沒(méi)有達(dá)到預(yù)設(shè)的閣值,則將其它 鄰居節(jié)點(diǎn)的鄰居表中包含的,且自身鄰居表中沒(méi)有的新節(jié)點(diǎn)加入自身的鄰居 表中;若自身鄰居表中的鄰居節(jié)點(diǎn)數(shù)目已經(jīng)達(dá)到預(yù)設(shè)的閾值,則根據(jù)預(yù)設(shè)的 規(guī)則用所述新節(jié)點(diǎn)替換自身鄰居表中的節(jié)點(diǎn)。
較佳地,鄰居表維護(hù)模塊401還可以進(jìn)一步包括
節(jié)點(diǎn)發(fā)現(xiàn)單元,與所述存儲(chǔ)單元相連,若自身鄰居表中的鄰居節(jié)點(diǎn)數(shù)目 沒(méi)有達(dá)到預(yù)設(shè)的閾值,則隨機(jī)產(chǎn)生一個(gè)參考節(jié)點(diǎn)坐標(biāo),并向自身鄰居表內(nèi)與 所述參考節(jié)點(diǎn)坐標(biāo)的歐氏距離最近的鄰居節(jié)點(diǎn)發(fā)送搜索請(qǐng)求;
收到搜索請(qǐng)求的節(jié)點(diǎn)繼續(xù)向自身鄰居表內(nèi)與所述參考節(jié)點(diǎn)坐標(biāo)的歐氏距離最近的鄰居節(jié)點(diǎn)發(fā)送搜索請(qǐng)求;
達(dá)到預(yù)設(shè)的搜索次數(shù)M次后,所述節(jié)點(diǎn)發(fā)現(xiàn)單元從收到搜索請(qǐng)求的節(jié) 點(diǎn)中,選擇合適的節(jié)點(diǎn)加入自身鄰居表中;其中M》1。
由上述的實(shí)施例可見(jiàn),本發(fā)明的這種P2P系統(tǒng)中轉(zhuǎn)節(jié)點(diǎn)選沖奪方法和P2P 節(jié)點(diǎn),通過(guò)對(duì)網(wǎng)絡(luò)坐標(biāo)的計(jì)算,采用逐步逼近的查詢方法,找到較好的中轉(zhuǎn) 節(jié)點(diǎn)。其利用網(wǎng)絡(luò)坐標(biāo)選擇中轉(zhuǎn)節(jié)點(diǎn),相比現(xiàn)有技術(shù)來(lái)說(shuō),可以以較小的代 價(jià)找到更好的中轉(zhuǎn)節(jié)點(diǎn)。另外,通過(guò)維護(hù)一個(gè)分層的鄰居表,每一層的取點(diǎn) 條件不同,有利于查詢過(guò)程的收斂。通過(guò)定期檢測(cè)鄰居表內(nèi)的節(jié)點(diǎn)是否失效、 節(jié)點(diǎn)之間交換鄰居表信息,以及通過(guò)生成隨機(jī)坐標(biāo)而主動(dòng)發(fā)現(xiàn)鄰居節(jié)點(diǎn)的機(jī) 制,可以有效提高鄰居表的可用性,提高中轉(zhuǎn)節(jié)點(diǎn)查詢的效果。
所應(yīng)理解的是,以上所述僅為本發(fā)明的較佳實(shí)施方式而已,并不用于限 定本發(fā)明的保護(hù)范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等 同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種P2P系統(tǒng)中中轉(zhuǎn)節(jié)點(diǎn)的選擇方法,其特征在于,該方法包括源節(jié)點(diǎn)根據(jù)節(jié)點(diǎn)網(wǎng)絡(luò)坐標(biāo)計(jì)算自身鄰居表中,每一個(gè)鄰居節(jié)點(diǎn)到源節(jié)點(diǎn)的歐氏距離以及鄰居節(jié)點(diǎn)到目的節(jié)點(diǎn)的歐氏距離之和;源節(jié)點(diǎn)向所述歐氏距離之和最小的鄰居節(jié)點(diǎn)發(fā)送路由查詢請(qǐng)求;所述收到路由查詢請(qǐng)求的節(jié)點(diǎn)執(zhí)行與上述源節(jié)點(diǎn)相同的步驟;源節(jié)點(diǎn)將第N個(gè)接收到所述路由查詢請(qǐng)求的節(jié)點(diǎn)確定為中轉(zhuǎn)節(jié)點(diǎn),其中N≥1。
2、 如權(quán)利要求1所述的P2P系統(tǒng)中中轉(zhuǎn)節(jié)點(diǎn)的選擇方法,其特征在于,所 述鄰居表的建立方法包括將網(wǎng)絡(luò)坐標(biāo)空間以自身節(jié)點(diǎn)坐標(biāo)為中心的L-l個(gè)超球面進(jìn)行劃分,從而得 到L層,從每一層中,隨機(jī)選擇滿足該層歐氏距離條件的鄰居節(jié)點(diǎn)加入鄰居表 中相應(yīng)的表項(xiàng)中;構(gòu)成一個(gè)L層的鄰居表,其中L》1。
3、 如權(quán)利要求2所述的P2P系統(tǒng)中中轉(zhuǎn)節(jié)點(diǎn)的選擇方法,其特征在于,所 述L層中每一層的歐氏距離條件為當(dāng)L=l時(shí),d滿足0<"<00 ; 當(dāng)L〉l且i二0時(shí),d滿足0〈rf^2r; 當(dāng)L〉1且(Ki〈L-l曰寸,d滿足2 〈fl^2'+'r; 當(dāng)1>1且i=L-l日寸,d滿足2'+'r〈t/〈oo;其中i為層數(shù),T為延遲的最小單位,d為在網(wǎng)絡(luò)坐標(biāo)系中節(jié)點(diǎn)自身坐標(biāo)與 鄰居節(jié)點(diǎn)坐標(biāo)之間的歐氏距離;
4、 如權(quán)利要求2或3所述的P2P系統(tǒng)中中轉(zhuǎn)節(jié)點(diǎn)的選擇方法,其特征在于, 所述鄰居表建立后,通過(guò)定期發(fā)送心跳消息探測(cè)鄰居表中的鄰居節(jié)點(diǎn)是否失效, 將失效的鄰居節(jié)點(diǎn)從所述鄰居表中刪除。
5、 如權(quán)利要求2或3所述的P2P系統(tǒng)中中轉(zhuǎn)節(jié)點(diǎn)的選擇方法,其特征在于, 所有節(jié)點(diǎn)之間定期交換鄰居表信息,若自身鄰居表中的鄰居節(jié)點(diǎn)數(shù)目沒(méi)有達(dá)到預(yù)設(shè)的閾值,則將其它鄰居節(jié)點(diǎn)的鄰居表中包含的且自身鄰居表中沒(méi)有的新節(jié)點(diǎn)加入自身的鄰居表中;若自身鄰居表中的鄰居節(jié)點(diǎn)數(shù)目已經(jīng)達(dá)到預(yù)設(shè)的閾值,則根據(jù)預(yù)設(shè)的規(guī)則 用所述新節(jié)點(diǎn)替換自身鄰居表中的節(jié)點(diǎn)。
6、 如權(quán)利要求5所述的P2P系統(tǒng)中中轉(zhuǎn)節(jié)點(diǎn)的選擇方法,其特征在于,所 述根據(jù)預(yù)設(shè)的規(guī)則用所述新節(jié)點(diǎn)替換自身鄰居表中的節(jié)點(diǎn)包括計(jì)算所述新節(jié)點(diǎn)與自身鄰居表內(nèi)屬于同一層中的鄰居節(jié)點(diǎn)之間的平均延 遲,以及該層中原有鄰居節(jié)點(diǎn)與同一層中的其它節(jié)點(diǎn)之間的平均延遲,將比新 節(jié)點(diǎn)延遲小的原有鄰居節(jié)點(diǎn)替換為新節(jié)點(diǎn)。
7、 如權(quán)利要求2或3所述的P2P系統(tǒng)中中轉(zhuǎn)節(jié)點(diǎn)的選擇方法,其特征在于, 所述鄰居表建立后,若自身鄰居表中的鄰居節(jié)點(diǎn)數(shù)目沒(méi)有達(dá)到預(yù)設(shè)的閾值,則 隨機(jī)產(chǎn)生一個(gè)參考節(jié)點(diǎn)坐標(biāo),并向自身鄰居表內(nèi)與所述參考節(jié)點(diǎn)坐標(biāo)的歐氏距 離最近的鄰居節(jié)點(diǎn)發(fā)送搜索請(qǐng)求;收到搜索請(qǐng)求的節(jié)點(diǎn)繼續(xù)向自身鄰居表內(nèi)與所述參考節(jié)點(diǎn)坐標(biāo)的歐氏距離 最近的鄰居節(jié)點(diǎn)發(fā)送搜索請(qǐng)求;達(dá)到預(yù)設(shè)的搜索次數(shù)M次后,從收到搜索請(qǐng)求的節(jié)點(diǎn)中,選擇至少一個(gè)合 適的節(jié)點(diǎn)加入自身鄰居表中,其中M》1。
8、 一種P2P節(jié)點(diǎn),其特征在于,該節(jié)點(diǎn)包括 鄰居表維護(hù)模塊,用于維護(hù)自身鄰居表;路由計(jì)算模塊,與所述鄰居表維護(hù)模塊相連,用于根據(jù)網(wǎng)絡(luò)節(jié)點(diǎn)坐標(biāo),計(jì) 算所述鄰居表維護(hù)模塊維護(hù)的鄰居表中,每一個(gè)鄰居節(jié)點(diǎn)到源節(jié)點(diǎn)的歐氏距離 以及鄰居節(jié)點(diǎn)到目的節(jié)點(diǎn)的歐氏距離之和;路由查詢模塊,與所述路由計(jì)算模塊相連,用于向所述歐氏距離之和最小 的鄰居節(jié)點(diǎn)發(fā)送路由查詢^"求;中轉(zhuǎn)節(jié)點(diǎn)確定模塊,與所述路由查詢模塊相連,用于將第N個(gè)接收到路由 查詢請(qǐng)求的節(jié)點(diǎn)確定為中轉(zhuǎn)節(jié)點(diǎn),其中N》1。
9、 如權(quán)利要求8所述的P2P節(jié)點(diǎn),其特征在于,所述鄰居表維護(hù)模塊包括存儲(chǔ)單元,用于存儲(chǔ)鄰居表??臻g劃分單元,用于將坐標(biāo)空間以自身節(jié)點(diǎn)坐標(biāo)為中心的L-l個(gè)超球面劃分為L(zhǎng)層空間;其中L> 1;節(jié)點(diǎn)選擇單元,與所述空間劃分單元和存儲(chǔ)單元分別相連,用于從每一層中,隨機(jī)選擇滿足該層歐氏距離條件的鄰居節(jié)點(diǎn)加入所述鄰居表中相應(yīng)的表項(xiàng) 內(nèi);構(gòu)成一個(gè)L層的鄰居表。
10、 如權(quán)利要求9所述的P2P節(jié)點(diǎn),其特征在于,所述鄰居表維護(hù)模塊進(jìn) 一步包括節(jié)點(diǎn)維護(hù)單元,與所述存儲(chǔ)單元相連,用于通過(guò)心跳消息探測(cè)鄰居表中的 鄰居節(jié)點(diǎn)是否失效,將失效的鄰居節(jié)點(diǎn)從所述鄰居表中刪除。
11、 如權(quán)利要求9所述的P2P節(jié)點(diǎn),其特征在于,所述鄰居表維護(hù)模塊進(jìn) 一步包括節(jié)點(diǎn)交換單元,與所述存儲(chǔ)單元相連,用于與其它節(jié)點(diǎn)之間定期交換鄰居 表信息,若自身鄰居表中的鄰居節(jié)點(diǎn)數(shù)目沒(méi)有達(dá)到預(yù)設(shè)的閾值,則將其它鄰居 節(jié)點(diǎn)的鄰居表中包含的,且自身鄰居表中沒(méi)有的新節(jié)點(diǎn)加入自身的鄰居表中; 若自身鄰居表中的鄰居節(jié)點(diǎn)數(shù)目已經(jīng)達(dá)到預(yù)設(shè)的閾值,則根據(jù)預(yù)設(shè)的規(guī)則用所 述新節(jié)點(diǎn)替換自身鄰居表中的節(jié)點(diǎn)。
12、 如權(quán)利要求9所述的P2P節(jié)點(diǎn),其特征在于,所述鄰居表維護(hù)模塊進(jìn) 一步包括節(jié)點(diǎn)發(fā)現(xiàn)單元,與所述存儲(chǔ)單元相連,若自身鄰居表中的鄰居節(jié)點(diǎn)數(shù)目沒(méi) 有達(dá)到預(yù)設(shè)的閾值,則隨機(jī)產(chǎn)生一個(gè)參考節(jié)點(diǎn)坐標(biāo),并向自身鄰居表內(nèi)與所述 參考節(jié)點(diǎn)坐標(biāo)的歐氏距離最近的鄰居節(jié)點(diǎn)發(fā)送搜索請(qǐng)求;收到搜索請(qǐng)求的節(jié)點(diǎn)繼續(xù)向自身鄰居表內(nèi)與所述參考節(jié)點(diǎn)坐標(biāo)的歐氏距離 最近的鄰居節(jié)點(diǎn)發(fā)送搜索請(qǐng)求;達(dá)到預(yù)設(shè)的搜索次數(shù)M次后,所述節(jié)點(diǎn)發(fā)現(xiàn)單元從收到搜索請(qǐng)求的節(jié)點(diǎn)中, 選擇合適的節(jié)點(diǎn)加入自身鄰居表中;其中M》1。
全文摘要
本發(fā)明公開(kāi)了一種P2P系統(tǒng)中中轉(zhuǎn)節(jié)點(diǎn)的選擇方法;源節(jié)點(diǎn)根據(jù)節(jié)點(diǎn)坐標(biāo)計(jì)算自身鄰居表中,每一個(gè)鄰居節(jié)點(diǎn)到源節(jié)點(diǎn)的歐氏距離以及鄰居節(jié)點(diǎn)到目的節(jié)點(diǎn)的歐氏距離之和;源節(jié)點(diǎn)向所述歐氏距離之和最小的鄰居節(jié)點(diǎn)發(fā)送路由查詢請(qǐng)求;所述收到路由查詢請(qǐng)求的節(jié)點(diǎn)執(zhí)行與上述源節(jié)點(diǎn)相同的步驟;源節(jié)點(diǎn)將第N個(gè)接收到所述路由查詢請(qǐng)求的節(jié)點(diǎn)確定為中轉(zhuǎn)節(jié)點(diǎn)。由于網(wǎng)絡(luò)坐標(biāo)能夠較為準(zhǔn)確的反應(yīng)出節(jié)點(diǎn)間的延遲情況,因此通過(guò)本發(fā)明設(shè)計(jì)的這種收斂性較好的逐步逼近的查詢方式,可以選擇出更加合適的中轉(zhuǎn)節(jié)點(diǎn),且不需要專用查詢服務(wù)器的支持,不受服務(wù)器處理能力的限制,易擴(kuò)展、成本低、效果好。本發(fā)明還同時(shí)公開(kāi)了一種P2P節(jié)點(diǎn)。
文檔編號(hào)H04L12/56GK101437045SQ20081018650
公開(kāi)日2009年5月20日 申請(qǐng)日期2008年12月18日 優(yōu)先權(quán)日2008年12月18日
發(fā)明者武廣柱 申請(qǐng)人:騰訊科技(深圳)有限公司