專利名稱:一種能有效預(yù)防無結(jié)構(gòu)對(duì)等網(wǎng)絡(luò)覆蓋網(wǎng)分割問題的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種一種能有效預(yù)防無結(jié)構(gòu)對(duì)等網(wǎng)絡(luò)覆蓋網(wǎng)分割問題的方法,它的使 用還具有優(yōu)化覆蓋網(wǎng)拓?fù)浣Y(jié)構(gòu)、提高對(duì)等網(wǎng)絡(luò)在動(dòng)態(tài)環(huán)境下的容錯(cuò)性的效果。二、 背景技術(shù)分布式、自組織的對(duì)等網(wǎng)絡(luò)在過去幾年里以驚人的速度發(fā)展到巨大的規(guī)模,在世 界范圍內(nèi)被廣泛應(yīng)用到多個(gè)領(lǐng)域。雖然對(duì)等網(wǎng)絡(luò)中的結(jié)點(diǎn)在功能上互相平等,但實(shí)際 上其中某些結(jié)點(diǎn)對(duì)于整個(gè)網(wǎng)絡(luò)卻有特殊意義。 一方面,那些作為兩個(gè)或多個(gè)獨(dú)立子網(wǎng)之間唯一通道的結(jié)點(diǎn),對(duì)覆蓋網(wǎng)拓?fù)浣Y(jié)構(gòu)有重要影響,其失效很可能導(dǎo)致覆蓋網(wǎng)被分 割,而反過來覆蓋網(wǎng)被分割往往可以追溯到它們的失效。另一方面,那些成為系統(tǒng)性 能"瓶頸"的結(jié)點(diǎn),其能力影響到系統(tǒng)在動(dòng)態(tài)環(huán)境下工作的多方面性能,如査詢成功 率、數(shù)據(jù)(結(jié)點(diǎn))定位跳數(shù)、通信擁塞和時(shí)延等等。我們稱上述特殊意義的結(jié)點(diǎn)為"拓 撲關(guān)鍵點(diǎn)"。如果能在對(duì)等網(wǎng)絡(luò)中以分布式的方法有效地檢測(cè)到拓?fù)潢P(guān)鍵點(diǎn)并加以合 理的避免,就能從本質(zhì)上增強(qiáng)系統(tǒng)對(duì)覆蓋網(wǎng)分割的抵抗力,同時(shí)顯著地提高系統(tǒng)容錯(cuò) 性。目前,未見有效預(yù)防無結(jié)構(gòu)對(duì)等網(wǎng)絡(luò)覆蓋網(wǎng)被分割的方法。三、 發(fā)明內(nèi)容本發(fā)明目的是提出一種有效預(yù)防無結(jié)構(gòu)對(duì)等網(wǎng)絡(luò)覆蓋網(wǎng)被分割的方法,通過提 出"分點(diǎn)"這一概念來描述無結(jié)構(gòu)對(duì)等網(wǎng)絡(luò)的拓?fù)潢P(guān)鍵點(diǎn),提出一套簡(jiǎn)單、有效、分 布式的分點(diǎn)檢測(cè)和避免方法。為實(shí)現(xiàn)上述目的,本發(fā)明的技術(shù)方案是 一種能有效預(yù)防無結(jié)構(gòu)對(duì)等網(wǎng)絡(luò)覆蓋網(wǎng) 分割問題的方法,該方法包括以下步驟1、啟動(dòng)檢測(cè),即網(wǎng)絡(luò)中每個(gè)結(jié)點(diǎn)向其鄰居 發(fā)送啟動(dòng)檢測(cè)消息;2、探測(cè)可達(dá)性,即讓每個(gè)結(jié)點(diǎn)的鄰居可達(dá)性消息在整個(gè)網(wǎng)絡(luò)中 不斷更新和擴(kuò)散;3、劃分子集,即每個(gè)結(jié)點(diǎn)收集其鄰居可達(dá)性消息并據(jù)此將其鄰居 劃分到若干個(gè)子集中;4、判定分點(diǎn),即每個(gè)結(jié)點(diǎn)根據(jù)其鄰居劃分子集的結(jié)果判定自 身是否為分點(diǎn),分點(diǎn)是易導(dǎo)致覆蓋網(wǎng)分割的結(jié)點(diǎn);5、分點(diǎn)避免,即每個(gè)分點(diǎn)通過適 當(dāng)加邊的方法合并鄰居子集從而使自身成為非分點(diǎn)結(jié)點(diǎn);6、適當(dāng)減邊,某些分點(diǎn)由 于加邊操作可能導(dǎo)致負(fù)載過大,此時(shí)需要適當(dāng)減邊以平衡負(fù)載;7、結(jié)束。本發(fā)明與現(xiàn)有技術(shù)相比,其顯著優(yōu)點(diǎn)是它是純分布式的方法,實(shí)現(xiàn)起來十分簡(jiǎn) 單并且可以方便地嵌入到現(xiàn)有無結(jié)構(gòu)對(duì)等網(wǎng)絡(luò)中;同時(shí)它可以有效地優(yōu)化覆蓋網(wǎng)拓?fù)?結(jié)構(gòu)、提高對(duì)等網(wǎng)絡(luò)在動(dòng)態(tài)環(huán)境下的容錯(cuò)性。 四
圖l是分點(diǎn)檢測(cè)過程的示意圖。圖2是分點(diǎn)避免過程中線性鏈連接的例子。圖3是分點(diǎn)避免過程中帶弦環(huán)連接的例子。五具體實(shí)施方式
本發(fā)明可分為兩個(gè)階段分點(diǎn)檢測(cè)、分點(diǎn)避免。圖l中(0)網(wǎng)絡(luò)初始狀態(tài)、(1)啟動(dòng)檢測(cè)、(2a)探測(cè)可達(dá)性I、 (2b)探測(cè)可達(dá)性II、 (3)收集可達(dá)關(guān)系、(4)劃 分子集、判定分點(diǎn)。分點(diǎn)檢測(cè)的關(guān)鍵,就是在候選分點(diǎn)C不參與消息路由的前提下,探測(cè)其鄰居間的 可達(dá)關(guān)系,再依據(jù)可達(dá)關(guān)系將鄰居集分成互不可達(dá)的子集;若子集只有一個(gè),那么C不是分點(diǎn),否則,C是分點(diǎn)。具體說來,C為了檢測(cè)自己是否為分點(diǎn),分幾步進(jìn)行:(1) 啟動(dòng)檢測(cè)候選分點(diǎn)的結(jié)點(diǎn)C向每個(gè)鄰居w,,^,…,乂發(fā)送消息MsgJnit以啟動(dòng)檢測(cè),收到消息的鄰居必須回復(fù)Msg—Response,其中包含它的IP地址、帶寬、時(shí)延、 連接度等信息(見圖1 (l)),這些信息是以后的工作(分點(diǎn)避免)所必需的。如果C沒有收到鄰居W,的回復(fù),就認(rèn)為w,失效,將其從路由表中刪除。(2) 探測(cè)可達(dá)性C給每個(gè)鄰居發(fā)送探測(cè)消息Msg—Probe (見圖1 (2a)),此消息中包 含結(jié)點(diǎn)C的地址、跳數(shù)限制TTL和鄰居號(hào)乂。網(wǎng)絡(luò)中每個(gè)結(jié)點(diǎn)維護(hù)一張"連接表",每個(gè)候選分點(diǎn)在連接表中都有其對(duì)應(yīng)的一項(xiàng),形如< 候選分點(diǎn)地址,鄰居號(hào)l,鄰居 號(hào)2,… >。結(jié)點(diǎn)N的連接表中候選分點(diǎn)C所對(duì)應(yīng)的項(xiàng)表明C的哪些鄰居是互相可 達(dá)的。當(dāng)某個(gè)結(jié)點(diǎn)收到Msg—Probe消息時(shí),如果MSg_Probe中的鄰居號(hào)是新的,它就 把該消息發(fā)送給每個(gè)鄰居(除了消息發(fā)送者)(見圖1 (2b)),并且將消息中的鄰居號(hào)iv,添加到候選分點(diǎn)C的連接表項(xiàng)中。如果連接表項(xiàng)的鄰居號(hào)不止1個(gè),就給候選分點(diǎn)發(fā)送Msg一Arrival消息,此消息包含該表項(xiàng)中所有的鄰居號(hào),實(shí)際上就是告訴候 選分點(diǎn)哪些鄰居可達(dá)(見圖1 (3))。候選分點(diǎn)給其不同鄰居發(fā)出的探測(cè)消息所到 達(dá)的范圍是不重疊的(只在相交的那一點(diǎn)回發(fā)Msg—ArrWal消息報(bào)告鄰居間的可達(dá)關(guān) 系),避免了重復(fù)的可達(dá)性探測(cè)。(3) 劃分子集C不斷收集Msg—Arrival消息,計(jì)算其鄰居之間的可達(dá)關(guān)系,將可達(dá) 的結(jié)點(diǎn)劃分到同一個(gè)子集(這一步實(shí)際上是在計(jì)算等價(jià)類)。鑒于對(duì)等網(wǎng)絡(luò)的動(dòng)態(tài)性, 少數(shù)Msg—Arrival信息可能會(huì)丟失,所以C可以設(shè)置一個(gè)超時(shí)值Timeout (典型的具 體值為5000毫秒),在Timeout后認(rèn)為得到了最終的劃分。(4) 判定分點(diǎn)完成子集的劃分后,C根據(jù)子集的數(shù)目(典型的具體值為3 — 5)來判 定自己是否為分點(diǎn)如果所有鄰居歸到同一個(gè)子集,那么C不是分點(diǎn);否則,C是分 點(diǎn),進(jìn)入下一步一一分點(diǎn)的避免。
當(dāng)結(jié)點(diǎn)C判定自己是分點(diǎn)后,為避免成為分點(diǎn),C需要給其鄰居加邊以合并互不可達(dá)的多個(gè)子集。假設(shè)c的鄰居被分成多個(gè)子集s,,s2,***,s ,那么<:從每個(gè)子集&中找到最"適合"加邊的代表結(jié)點(diǎn)W"然后以某種方式將所有代表結(jié)點(diǎn)相連。為了找到最"適合"加邊的代表結(jié)點(diǎn),我們考慮如下原則(1)使每個(gè)結(jié)點(diǎn)的連接度盡量高 于某個(gè)常數(shù)下限(也就是盡可能提高對(duì)等網(wǎng)絡(luò)的最小結(jié)點(diǎn)度,典型的最小結(jié)點(diǎn)度限制 為3),從而提高系統(tǒng)容錯(cuò)性;(2)使每個(gè)結(jié)點(diǎn)盡量各盡所能,也就是使負(fù)載因子(= 結(jié)點(diǎn)度/結(jié)點(diǎn)能力)盡量趨于一致,從而開發(fā)對(duì)等網(wǎng)絡(luò)中普遍存在的結(jié)點(diǎn)異構(gòu)性?;谏鲜鲈瓌t,分點(diǎn)C首先找到子集&中連接度最低的結(jié)點(diǎn),看其結(jié)點(diǎn)度是否低于常數(shù)下限Min_Degree (典型的具體值為3),如果是則將此結(jié)點(diǎn)作為s,的代表結(jié)點(diǎn)否則,計(jì)算每個(gè)結(jié)點(diǎn)的負(fù)載因子,將負(fù)載因子最小的結(jié)點(diǎn)(也就是負(fù)擔(dān)最輕的結(jié)點(diǎn))作為代表結(jié)點(diǎn)乂。 選擇好代表結(jié)點(diǎn)后,代表結(jié)點(diǎn)之間相連最簡(jiǎn)單的連接方式是"線性鏈連接"給每個(gè)A^加一條到W,+,的邊(給A^加一條到W,的邊),這樣所有的代表結(jié)點(diǎn)就形成了一條閉合鏈,從而合并了互不可達(dá)的多個(gè)子集,避免了分點(diǎn)的存在。圖2是線性鏈連接的例子。各代表結(jié)點(diǎn)以線性鏈方式連接代表結(jié)點(diǎn)雖然簡(jiǎn)單,但很脆弱,以后如果有結(jié) 點(diǎn)失效,這條鏈很可能斷裂,從而又形成新的分點(diǎn)。因此,我們考慮稍復(fù)雜的連接方式,比如對(duì)代表結(jié)點(diǎn)W,、 W、 、 W ,讓每個(gè)乂不僅連接 +1)_,還連接AU,。^,也就是首先連成環(huán),然后在環(huán)上給每個(gè)代表結(jié)點(diǎn)加一條到對(duì)面的弦(見圖3)。通過模擬實(shí)驗(yàn)我們比較了帶弦環(huán)連接和線性鏈連接的性能,測(cè)量結(jié)果表明前者通常要優(yōu)于 后者。每個(gè)結(jié)點(diǎn)所可以維護(hù)的連接數(shù)(典型的連接數(shù)為3—20)是有限制的。連接度越 高,更新路由表的自適應(yīng)開銷就越大,因此每個(gè)結(jié)點(diǎn)只能根據(jù)自己的能力(帶寬、 存儲(chǔ)容量、計(jì)算能力等)維持一定數(shù)目的連接。所以,當(dāng)加邊操作導(dǎo)致結(jié)點(diǎn)連接度 超過其上限(典型的上限值為10—20之間,正比于結(jié)點(diǎn)能力),該結(jié)點(diǎn)需要減邊以 限制鄰居數(shù)。減邊遵循如下原則(1)為避免分點(diǎn)而新加的那些邊不能減;(2)對(duì) 于其它邊而言,計(jì)算每條邊所連接的結(jié)點(diǎn)的負(fù)載因子,將負(fù)載因子最大的結(jié)點(diǎn)(也 就是負(fù)擔(dān)最重的結(jié)點(diǎn))對(duì)應(yīng)的那條邊刪去。上述兩條原則的理由是明顯的,而實(shí)現(xiàn) 方法也很直觀,不再累述。需要注意的是原則(1)優(yōu)先于原則(2),否則可能產(chǎn)生覆蓋網(wǎng)因減邊再次分割的問題。
權(quán)利要求
1、一種能有效預(yù)防無結(jié)構(gòu)對(duì)等網(wǎng)絡(luò)覆蓋網(wǎng)分割問題的方法,其特征是該方法包括以下步驟(1)啟動(dòng)檢測(cè),即網(wǎng)絡(luò)中每個(gè)結(jié)點(diǎn)向其鄰居發(fā)送啟動(dòng)檢測(cè)消息;(2)探測(cè)可達(dá)性,即讓每個(gè)結(jié)點(diǎn)的鄰居可達(dá)性消息在整個(gè)網(wǎng)絡(luò)中不斷更新和擴(kuò)散;(3)劃分子集,即每個(gè)結(jié)點(diǎn)收集其鄰居可達(dá)性消息并據(jù)此將其鄰居劃分到若干個(gè)子集中;(4)判定分點(diǎn),即每個(gè)結(jié)點(diǎn)根據(jù)其鄰居劃分子集的結(jié)果判定自身是否為分點(diǎn),分點(diǎn)是易導(dǎo)致覆蓋網(wǎng)分割的結(jié)點(diǎn);(5)分點(diǎn)避免,即每個(gè)分點(diǎn)通過適當(dāng)加邊的方法合并鄰居子集從而使自身成為非分點(diǎn)結(jié)點(diǎn);(6)適當(dāng)減邊,某些分點(diǎn)由于加邊操作可能導(dǎo)致負(fù)載過大,此時(shí)需要適當(dāng)減邊以平衡負(fù)載;(7)結(jié)束。
2、 根據(jù)權(quán)利要求1所述的一種能有效預(yù)防無結(jié)構(gòu)對(duì)等網(wǎng)絡(luò)覆蓋網(wǎng)分割問題的方 法,其特征是所述分點(diǎn)所用到的的定位關(guān)系、可達(dá)關(guān)系都基于局部性的路由。
3、根據(jù)權(quán)利要求1所述的一種能有效預(yù)防無結(jié)構(gòu)對(duì)等網(wǎng)絡(luò)覆蓋網(wǎng)分割問題的方法, 其特征是步驟(2)中每個(gè)結(jié)點(diǎn)的鄰居可達(dá)性消息在整個(gè)網(wǎng)絡(luò)中的更新和擴(kuò)散是不重疊 的,因此避免了重復(fù)的可達(dá)性探測(cè)開銷。
4、 根據(jù)權(quán)利要求1所述的一種能有效預(yù)防無結(jié)構(gòu)對(duì)等網(wǎng)絡(luò)覆蓋網(wǎng)分割問題的方 法,其特征是步驟(5)和步驟(6)中做加邊或減邊操作時(shí)綜合原則是1)、使每個(gè)結(jié) 點(diǎn)的連接度盡量高于某個(gè)常數(shù)下限,提高系統(tǒng)容錯(cuò)性;2)、使每個(gè)結(jié)點(diǎn)盡量各盡所能, 也就是使負(fù)載因子盡量趨于一致,從而開發(fā)對(duì)等網(wǎng)絡(luò)中普遍存在的結(jié)點(diǎn)異構(gòu)性。
5、 根據(jù)權(quán)利要求1所述的一種能有效預(yù)防無結(jié)構(gòu)對(duì)等網(wǎng)絡(luò)覆蓋網(wǎng)分割問題的方 法,其特征是分點(diǎn)檢測(cè)方法,在候選分點(diǎn)的結(jié)點(diǎn)C不參與消息路由的前提下,探測(cè) 其鄰居間的可達(dá)關(guān)系,再依據(jù)可達(dá)關(guān)系將鄰居集分成互不可達(dá)的子集;若子集只有一 個(gè),那么C不是分點(diǎn),否則,C是分點(diǎn);檢測(cè)是否為分點(diǎn)的步驟(1)啟動(dòng)檢測(cè)候選分點(diǎn)的結(jié)點(diǎn)C向每個(gè)鄰居W,,W2,…,A^發(fā)送消息Msg—Init以啟動(dòng)檢 測(cè),收到消息的鄰居結(jié)點(diǎn)必須回復(fù)Msg一Response,其中包含它的IP地址、帶寬、時(shí) 延、連接度等信息,這些信息是分點(diǎn)避免所必需;如果C沒有收到鄰居^的回復(fù),就認(rèn)為W,失效,將其從路由表中刪除;(2)探測(cè)可達(dá)性候選分點(diǎn)的結(jié)點(diǎn)C給每個(gè)鄰 居發(fā)送探測(cè)消息Msg—Probe,此消息中包含結(jié)點(diǎn)C的地址、跳數(shù)限制TTL和鄰居結(jié)點(diǎn)號(hào)W,;網(wǎng)絡(luò)中每個(gè)結(jié)點(diǎn)維護(hù)一張"連接表",每個(gè)候選分點(diǎn)在連接表中都有其對(duì)應(yīng)的一項(xiàng);鄰居結(jié)點(diǎn)N的連接表中候選分點(diǎn)C所對(duì)應(yīng)的項(xiàng)表明C的哪些鄰居是互相可 達(dá)的;當(dāng)某個(gè)結(jié)點(diǎn)收到Msg一Probe消息時(shí),如果Msg一Probe中的鄰居結(jié)點(diǎn)號(hào)是新的,它就把該消息發(fā)送給每個(gè)鄰居;并且將消息中的鄰居結(jié)點(diǎn)號(hào)w,添加到候選分點(diǎn)C的連接表項(xiàng)中;如果連接表項(xiàng)的鄰居結(jié)點(diǎn)號(hào)不止1個(gè),就給候選分點(diǎn)發(fā)送Msg—Arrival 消息,此消息包含該表項(xiàng)中所有的鄰居結(jié)點(diǎn)號(hào),實(shí)際上就是告訴候選分點(diǎn)哪些鄰居可 達(dá);候選分點(diǎn)給其不同鄰居發(fā)出的探測(cè)消息所到達(dá)的范圍是不重疊的,避免了重復(fù)的 可達(dá)性探測(cè);(3)劃分子集候選分點(diǎn)的結(jié)點(diǎn)C不斷收集Msg—Arrival消息,計(jì)算其 鄰居之間的可達(dá)關(guān)系,將可達(dá)的結(jié)點(diǎn)劃分到同一個(gè)子集;鑒于對(duì)等網(wǎng)絡(luò)的動(dòng)態(tài)性,少 數(shù)MSg_Arrival信息可能會(huì)丟失,所以候選分點(diǎn)的結(jié)點(diǎn)C可以設(shè)置一個(gè)超時(shí)值 Timeout,在Timeout后認(rèn)為得到了最終的劃分;(4)判定分點(diǎn)完成子集的劃分后, 候選分點(diǎn)的結(jié)點(diǎn)C根據(jù)子集的數(shù)目來判定自己是否為分點(diǎn)如果所有鄰居歸到同一個(gè) 子集,那么C不是分點(diǎn);否則,C是分點(diǎn),進(jìn)入下一步一一分點(diǎn)的避免;分點(diǎn)的避免 方法當(dāng)候選分點(diǎn)的結(jié)點(diǎn)C判定自己是分點(diǎn)后,為避免成為分點(diǎn),C需要給其鄰居加邊以合并互不可達(dá)的多個(gè)子集。假設(shè)C的鄰居被分成多個(gè)子集S,,^,…,S。,那么C從每個(gè)子集S,中找到最"適合"加邊的代表結(jié)點(diǎn)W,,然后以某種方式以某種方式將所 有代表結(jié)點(diǎn)相連;基于上述原則,分點(diǎn)C首先找到子集s,中連接度最低的結(jié)點(diǎn),看其結(jié)點(diǎn)度是否低 于常數(shù)下限Min一Degree,如果是則將此結(jié)點(diǎn)作為s,的代表結(jié)點(diǎn)w,;否則,計(jì)算每個(gè) 結(jié)點(diǎn)的負(fù)載因子,將負(fù)載因子最小的結(jié)點(diǎn)作為代表結(jié)點(diǎn)w,;選擇好代表結(jié)點(diǎn)后,代表結(jié)點(diǎn)之間相連方式是最簡(jiǎn)單的連接方式是"線性鏈連接"給每個(gè)W,加一條到^+,的 邊或采用帶弦環(huán)連接方式,對(duì)代表結(jié)點(diǎn)W,、 W2、、 W ,讓每個(gè)W,不僅連接W(,,^,還連接 ,+ ,2— ,也就是首先連成環(huán),然后在環(huán)上給每個(gè)代表結(jié)點(diǎn)加一條到對(duì)面不相 鄰結(jié)點(diǎn)的弦。
全文摘要
本發(fā)明公開了一種能有效預(yù)防無結(jié)構(gòu)對(duì)等網(wǎng)絡(luò)覆蓋網(wǎng)分割問題的方法,包括以下步驟1.啟動(dòng)檢測(cè),即網(wǎng)絡(luò)中每個(gè)結(jié)點(diǎn)向其鄰居發(fā)送啟動(dòng)檢測(cè)消息;2.探測(cè)可達(dá)性,即讓每個(gè)結(jié)點(diǎn)的鄰居可達(dá)性消息在整個(gè)網(wǎng)絡(luò)中不斷更新和擴(kuò)散;3.劃分子集,即每個(gè)結(jié)點(diǎn)收集其鄰居可達(dá)性消息并據(jù)此將其鄰居劃分到若干個(gè)子集中;4.判定分點(diǎn),即每個(gè)結(jié)點(diǎn)根據(jù)其鄰居劃分子集的結(jié)果判定自身是否為分點(diǎn),分點(diǎn)是易導(dǎo)致覆蓋網(wǎng)分割的結(jié)點(diǎn);5.分點(diǎn)避免,即每個(gè)分點(diǎn)通過適當(dāng)加邊的方法合并鄰居子集從而使自身成為非分點(diǎn)結(jié)點(diǎn);6.適當(dāng)減邊;7.結(jié)束。本發(fā)明是純分布式的方法,實(shí)現(xiàn)起來十分簡(jiǎn)單并且可方便地嵌入到現(xiàn)有無結(jié)構(gòu)對(duì)等網(wǎng)絡(luò)中。
文檔編號(hào)H04L12/46GK101159655SQ20071013502
公開日2008年4月9日 申請(qǐng)日期2007年11月2日 優(yōu)先權(quán)日2007年11月2日
發(fā)明者李振華, 邱彤慶, 陳貴海 申請(qǐng)人:南京大學(xué)