專(zhuān)利名稱:維護(hù)覆蓋網(wǎng)絡(luò)中的分布式哈希表的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于維護(hù)覆蓋網(wǎng)絡(luò)(overlay network)中的分布式哈希表的機(jī)制。具 體來(lái)說(shuō),本發(fā)明可適用于處理節(jié)點(diǎn)離開(kāi)覆蓋網(wǎng)絡(luò)的優(yōu)化過(guò)程。
背景技術(shù):
對(duì)等或P2P網(wǎng)絡(luò)利用包括處理能力和通信帶寬在內(nèi)的參與節(jié)點(diǎn)的匯聚(pooled) 資源,以便促進(jìn)包括文件共享和VoIP電話的大量服務(wù)。在沒(méi)有中央服務(wù)時(shí),特定的P2P服 務(wù)可利用“覆蓋網(wǎng)絡(luò)”來(lái)優(yōu)化資源位置。覆蓋網(wǎng)絡(luò)包括通過(guò)表示延伸于基礎(chǔ)網(wǎng)絡(luò)(例如因 特網(wǎng))中可能的許多物理鏈路上的路徑的虛擬鏈路所連接的節(jié)點(diǎn)。覆蓋網(wǎng)絡(luò)中的各節(jié)點(diǎn)維 護(hù)包含到覆蓋網(wǎng)絡(luò)中的某些其它節(jié)點(diǎn)的一組鏈路的路由表。在節(jié)點(diǎn)之間傳遞資源請(qǐng)求,直 至它們到達(dá)負(fù)責(zé)那個(gè)資源的節(jié)點(diǎn)。分布式哈希表(DHT)提供用于將資源名稱(“關(guān)鍵字”)映射到覆蓋網(wǎng)絡(luò)中的位置 的有效方式。DHT利用哈希算法將例如歌曲標(biāo)題、SIP URI等關(guān)鍵字映射到有限值空間、如 128位。哈希算法選擇成確保在值空間上的哈希值的比較均勻散布。因此,例如,100個(gè)歌 曲標(biāo)題的哈??赡墚a(chǎn)生100個(gè)哈希值,它們?cè)谥悼臻g比較均勻地間隔開(kāi)。通過(guò)用戶名來(lái)標(biāo) 識(shí)覆蓋網(wǎng)絡(luò)中的節(jié)點(diǎn),用戶名本身被哈希成相應(yīng)哈希值。各節(jié)點(diǎn)則變?yōu)樨?fù)責(zé)值空間中的一 組哈希值,它們鄰近其自己的值。實(shí)際上,節(jié)點(diǎn)將存儲(chǔ)從其中可得到它“擁有”的資源、匹配 資源名稱的位置(例如IP地址)。當(dāng)覆蓋網(wǎng)絡(luò)中的節(jié)點(diǎn)接收對(duì)資源的請(qǐng)求時(shí),該節(jié)點(diǎn)確定 它是否擁有對(duì)應(yīng)哈希值。如果是,它則將資源的位置返回給請(qǐng)求方(經(jīng)由覆蓋網(wǎng)絡(luò))。如果 它不擁有該哈希值,則它檢查其路由表,以便在表中識(shí)別具有最接近請(qǐng)求的哈希值的哈希 值的那個(gè)節(jié)點(diǎn),并且將該請(qǐng)求轉(zhuǎn)發(fā)給那個(gè)節(jié)點(diǎn)。接收節(jié)點(diǎn)重復(fù)該過(guò)程,一直到該請(qǐng)求到達(dá)確 實(shí)擁有與該請(qǐng)求對(duì)應(yīng)的哈希值并且因此知道資源位置的節(jié)點(diǎn)。圖1示出組織為環(huán)的覆蓋網(wǎng)絡(luò)(僅示出環(huán)中的少量節(jié)點(diǎn))。在這個(gè)示例中,各節(jié) 點(diǎn)維護(hù)包含環(huán)中的少量后續(xù)和前趨節(jié)點(diǎn)(Predecessor nodes)以及少量更遠(yuǎn)節(jié)點(diǎn)的位置和 哈希值的路由表。在所示網(wǎng)絡(luò)中,節(jié)點(diǎn)X在其路由表中保存兩個(gè)后續(xù)節(jié)點(diǎn)和兩個(gè)前趨節(jié)點(diǎn) 以及三個(gè)遠(yuǎn)程節(jié)點(diǎn)的位置。雖然路由表中的大量條目在路由選擇方面可使網(wǎng)絡(luò)更為有效并 且針對(duì)節(jié)點(diǎn)撤消(withdrawal)更為健壯,但是大表很難維護(hù),并且因此增加網(wǎng)絡(luò)的不可靠 性。覆蓋網(wǎng)絡(luò)中的節(jié)點(diǎn)通過(guò)嘗試周期性地聯(lián)絡(luò)其鄰居,來(lái)確保其路由表中的信息是最 新的。多個(gè)不同機(jī)制可用于此目的。1)節(jié)點(diǎn)可周期性地發(fā)送保持活動(dòng)消息來(lái)檢查其路由表中所列的其它節(jié)點(diǎn)沒(méi)有離 開(kāi)覆蓋網(wǎng)絡(luò)。這種機(jī)制通過(guò)DHT方式來(lái)使用,例如Pastry [A. Rowstron和P. Druschel Pastry :Sealable, distributed object location and routing for large-scale peer-to-peer systems. Middleware,2001]、Chord[I.Stoica、R.Morris、D. Karger、 M. F.Kaashoek禾口H. Balakrishnan :Chord :A Scalable peer-to-peer Lookup Service for Internet Applications。在 ACM SIGC0MM,01 會(huì)議的會(huì)刊中,2001 年 8 月,San Diego,California, USA]禾口 Content Addressable Network(CAN)[S. Ratsanamy、P. Francis、 M. Handley> R. Karp 禾口 S.Shenker :A scalable content-addressable network。在 ACM SIGCOMM 2001 的會(huì)刊中,2001 年 8 月]。2)節(jié)點(diǎn)可周期性地發(fā)送查詢,以便了解可插入路由表以替換舊條目的新節(jié)點(diǎn)(例 如 Chord)。3)節(jié)點(diǎn)可周期性地向其直接鄰居發(fā)送查詢,請(qǐng)求關(guān)于其鄰居的路由表中的條目的 信息。這種信息用于更新該節(jié)點(diǎn)自己的路由表(例如Chord)。4)節(jié)點(diǎn)可周期性地向其鄰居發(fā)送它自己的路由表(例如CAN)。維護(hù)路由表的另一種(附加)方式涉及節(jié)點(diǎn)檢查資源請(qǐng)求的始發(fā)方是否可被插 入其路由表中(例如 Kademlia[P. Maymounkov 禾口 D. Mazieres :Kademlia :A peer-to-peer information system based on the xor metric。在 IPTPS02 的會(huì)干丨J中,Cambridge, USA, 2002 年 3 月])。考慮圖2,它示出DHT中的鄰居關(guān)系的一個(gè)示例。在圖中,采取環(huán)狀拓?fù)浣Y(jié)構(gòu)。節(jié) 點(diǎn)X將三個(gè)后續(xù)(S)和三個(gè)前趨(P)指針保存在其路由表中。應(yīng)當(dāng)清楚地知道,保存多個(gè) 后續(xù)和前趨指針的原因是提高健壯性。如果單個(gè)后續(xù)將出故障的概率為P,則全部三個(gè)后續(xù) 同時(shí)出故障的概率為P3。但是,在極大的現(xiàn)實(shí)世界的基于DHT的覆蓋網(wǎng)絡(luò)中,這對(duì)于保持網(wǎng) 絡(luò)中的連通性并不充分;如果給定節(jié)點(diǎn)的全部三個(gè)后續(xù)(或者備選地,全部三個(gè)前趨)在充 分短的時(shí)間周期之內(nèi)離開(kāi)網(wǎng)絡(luò),則網(wǎng)絡(luò)瓦解。節(jié)點(diǎn)可適度地(gracefully)或者不適度地離開(kāi)網(wǎng)絡(luò)。當(dāng)適度地離開(kāi)時(shí),節(jié)點(diǎn)在實(shí) 際離開(kāi)之前通知其鄰居關(guān)于它要離開(kāi)網(wǎng)絡(luò)的意圖。該節(jié)點(diǎn)可通過(guò)發(fā)送“離開(kāi)”消息(在應(yīng) 用層是理解的)來(lái)進(jìn)行這個(gè)操作。這允許鄰居立即從其路由表中刪除離開(kāi)節(jié)點(diǎn)。當(dāng)節(jié)點(diǎn)不 適度地離開(kāi)網(wǎng)絡(luò)時(shí),它沒(méi)有首先通知其鄰居便退出網(wǎng)絡(luò)。因此,鄰居必須自行檢測(cè)該節(jié)點(diǎn)已 經(jīng)離開(kāi)。不適度離開(kāi)的原因包括如下項(xiàng)(i)節(jié)點(diǎn)已經(jīng)崩潰,(ii)P2P應(yīng)用已經(jīng)崩潰或者意 外關(guān)閉,以及(iii)自私行為。在備選(iii)中,用戶可能選擇不適度地離開(kāi),以便避免適 度離開(kāi)中固有的延遲。在從覆蓋網(wǎng)絡(luò)不適度離開(kāi)的情況下,節(jié)點(diǎn)可通過(guò)兩種方式來(lái)了解鄰居已經(jīng)離開(kāi)1)當(dāng)基礎(chǔ)傳輸協(xié)議可靠時(shí)(例如TCP),從傳輸層連接中斷的事實(shí)迅速檢測(cè)到鄰居 的離開(kāi)。2)當(dāng)傳輸協(xié)議不可靠時(shí)(例如UDP),節(jié)點(diǎn)不知道鄰居已經(jīng)離開(kāi),直到它嘗試向該 鄰居發(fā)送下一個(gè)周期性DHT維護(hù)消息。除了等待下一個(gè)周期性維護(hù)消息的傳送之外,節(jié)點(diǎn) 在它可確定鄰居實(shí)際上已經(jīng)離開(kāi)之前還必須等到事務(wù)處理超時(shí)。在適度和不適度離開(kāi)的情況下,最終結(jié)果是,離開(kāi)節(jié)點(diǎn)的直接鄰居的每個(gè)在其路 由表中減少一個(gè)指針。例如,如果圖1中的節(jié)點(diǎn)Sl離開(kāi)網(wǎng)絡(luò),則節(jié)點(diǎn)X僅剩下兩個(gè)后續(xù)指 針,即S2和S3。如果此外S2和S3在節(jié)點(diǎn)X有機(jī)會(huì)找到附加后續(xù)之前也離開(kāi)網(wǎng)絡(luò),則覆蓋 網(wǎng)絡(luò)被分割,因?yàn)楣?jié)點(diǎn)X不再知道任何后續(xù)。對(duì)于節(jié)點(diǎn)X的前趨節(jié)點(diǎn),可出現(xiàn)類(lèi)似情況。因此,現(xiàn)有解決方案的問(wèn)題在于,如果給定節(jié)點(diǎn)的所有后續(xù)或前趨在短時(shí)間周期 之內(nèi)出故障,則網(wǎng)絡(luò)可被分割,并且資源請(qǐng)求無(wú)法填補(bǔ)該缺口。這個(gè)“短時(shí)間周期”指的是 兩個(gè)連續(xù)DHT維護(hù)消息之間的時(shí)間。如果這類(lèi)維護(hù)消息例如每隔60秒發(fā)送,則覆蓋網(wǎng)絡(luò)在 甚至單個(gè)節(jié)點(diǎn)的全部后續(xù)或前趨在這個(gè)60秒周期之內(nèi)離開(kāi)覆蓋網(wǎng)絡(luò)時(shí)被中斷。如果網(wǎng)絡(luò)
5正遇到高“變動(dòng)(churn)”率,則這不是不可能的事件。雖然對(duì)這個(gè)問(wèn)題的直觀解決方案是 更頻繁地發(fā)送DHT維護(hù)消息,但是不能使周期性維護(hù)消息之間的間隔任意小,因?yàn)樗a(chǎn)生 的信令負(fù)荷會(huì)使網(wǎng)絡(luò)超載。這個(gè)問(wèn)題通過(guò)S. Rhea、D. Geels、T. Roscoe和J. Kubiatowicz的 "Handling Churn in a DHT”,在USENIX Annual Technical Conference 的會(huì)刊中,2004年 6月)得到證實(shí)。
發(fā)明內(nèi)容
本發(fā)明的一個(gè)目的是在節(jié)點(diǎn)出故障或者從網(wǎng)絡(luò)撤消時(shí)使覆蓋網(wǎng)絡(luò)的中斷為最小。 本發(fā)明的至少某些實(shí)施例通過(guò)允許撤消節(jié)點(diǎn)或者撤消節(jié)點(diǎn)的相鄰節(jié)點(diǎn)更新其它鄰居的路 由表來(lái)實(shí)現(xiàn)這個(gè)目的。根據(jù)本發(fā)明的第一方面,提供一種在覆蓋網(wǎng)絡(luò)的節(jié)點(diǎn)維護(hù)路由表的方法,其中,給 定節(jié)點(diǎn)的路由表對(duì)于一組相鄰后續(xù)和前趨節(jié)點(diǎn)的每個(gè)包含節(jié)點(diǎn)的覆蓋網(wǎng)絡(luò)地址與節(jié)點(diǎn)的 物理定位符之間的映射。該方法包括在節(jié)點(diǎn)離開(kāi)覆蓋網(wǎng)絡(luò)時(shí)或者緊接節(jié)點(diǎn)離開(kāi)覆蓋網(wǎng)絡(luò)之前 (immediately before),從離開(kāi)節(jié)點(diǎn)(或者離開(kāi)節(jié)點(diǎn)的知道該離開(kāi)的相鄰節(jié)點(diǎn)之一)向各 相鄰節(jié)點(diǎn)(或者離開(kāi)節(jié)點(diǎn)的每個(gè)其它相鄰節(jié)點(diǎn))發(fā)送“離開(kāi)”請(qǐng)求,指示該離開(kāi)并且包含接 收方節(jié)點(diǎn)的路由表中沒(méi)有包含的節(jié)點(diǎn)的一個(gè)或多個(gè)映射。各相鄰節(jié)點(diǎn)(或者每個(gè)其它相鄰 節(jié)點(diǎn))接收“離開(kāi)”請(qǐng)求,并且使用所述映射來(lái)更新其路由表。本發(fā)明的實(shí)施例允許撤消節(jié)點(diǎn)的鄰居采用替換前趨或后續(xù)節(jié)點(diǎn)來(lái)迅速更新其路 由表。在網(wǎng)絡(luò)中的高變動(dòng)的情況下,極大降低網(wǎng)絡(luò)鏈的破裂風(fēng)險(xiǎn)。根據(jù)本發(fā)明的第二方面,提供一種在覆蓋網(wǎng)絡(luò)的節(jié)點(diǎn)維護(hù)路由表的方法,其中,給 定節(jié)點(diǎn)的路由表對(duì)于一組相鄰后續(xù)和前趨節(jié)點(diǎn)的每個(gè)包含節(jié)點(diǎn)的覆蓋網(wǎng)絡(luò)地址與節(jié)點(diǎn)的 物理定位符之間的映射。該方法包括緊接節(jié)點(diǎn)離開(kāi)覆蓋網(wǎng)絡(luò)之前,從離開(kāi)節(jié)點(diǎn)向離開(kāi)節(jié)點(diǎn)的各相鄰節(jié)點(diǎn) 發(fā)送“離開(kāi)”請(qǐng)求,該請(qǐng)求指示該離開(kāi)并且包含接收方節(jié)點(diǎn)的路由表中沒(méi)有包含的節(jié)點(diǎn)的一 個(gè)或多個(gè)覆蓋網(wǎng)絡(luò)地址到物理定位符映射。在各相鄰節(jié)點(diǎn)處接收到“離開(kāi)”請(qǐng)求時(shí),該節(jié)點(diǎn) 使用映射來(lái)更新其路由表。在本發(fā)明的這個(gè)方面的一個(gè)實(shí)施例中,“離開(kāi)”請(qǐng)求中包含的至少一個(gè)映射對(duì)應(yīng)于 接收方節(jié)點(diǎn)不知道的離開(kāi)節(jié)點(diǎn)的相鄰節(jié)點(diǎn)。根據(jù)本發(fā)明的第三方面,提供一種在覆蓋網(wǎng)絡(luò)的節(jié)點(diǎn)維護(hù)路由表的方法,其中,給 定節(jié)點(diǎn)的路由表對(duì)于一組相鄰后續(xù)和前趨節(jié)點(diǎn)的每個(gè)包含節(jié)點(diǎn)的覆蓋網(wǎng)絡(luò)地址與節(jié)點(diǎn)的 物理定位符之間的映射。該方法包括在節(jié)點(diǎn)離開(kāi)覆蓋網(wǎng)絡(luò)時(shí),從離開(kāi)節(jié)點(diǎn)的知道該離開(kāi)的相鄰節(jié)點(diǎn)之一 向離開(kāi)節(jié)點(diǎn)的其它相鄰節(jié)點(diǎn)發(fā)送“離開(kāi)”請(qǐng)求,該請(qǐng)求指示該離開(kāi)并且包含接收方節(jié)點(diǎn)的路 由表中沒(méi)有包含的節(jié)點(diǎn)的一個(gè)或多個(gè)映射。在所述每個(gè)其它相鄰節(jié)點(diǎn)處接收到“離開(kāi)”請(qǐng) 求時(shí),該節(jié)點(diǎn)使用所述映射來(lái)更新其路由表。在本發(fā)明的這個(gè)方面的一個(gè)實(shí)施例中,由于離開(kāi)節(jié)點(diǎn)無(wú)法響應(yīng)周期性地傳送的保 持活動(dòng)消息,發(fā)送“離開(kāi)”請(qǐng)求的節(jié)點(diǎn)檢測(cè)到離開(kāi)節(jié)點(diǎn)的離開(kāi)。它通過(guò)發(fā)送“離開(kāi)”請(qǐng)求對(duì) 檢測(cè)作出反應(yīng)。接收方節(jié)點(diǎn)的路由表中沒(méi)有包含的節(jié)點(diǎn)的所述一個(gè)或多個(gè)映射可以是發(fā)送“離開(kāi)”請(qǐng)求的節(jié)點(diǎn)的路由表中包含的映射。接收“離開(kāi)”請(qǐng)求的節(jié)點(diǎn)可確定接收方節(jié)點(diǎn)是否知道離開(kāi)節(jié)點(diǎn)的任何相鄰節(jié)點(diǎn),并 且發(fā)送“離開(kāi)”請(qǐng)求的節(jié)點(diǎn)不知道所述相鄰節(jié)點(diǎn)。如果是的話,則接收節(jié)點(diǎn)將“離開(kāi)”請(qǐng)求 發(fā)送給那個(gè)或那些節(jié)點(diǎn),“離開(kāi)”請(qǐng)求包含接收方節(jié)點(diǎn)的路由表中沒(méi)有包含的節(jié)點(diǎn)的一個(gè)或 多個(gè)覆蓋網(wǎng)絡(luò)地址到物理定位符映射。在所述或每個(gè)其它接收方節(jié)點(diǎn)處接收到“離開(kāi)”請(qǐng) 求時(shí),該節(jié)點(diǎn)更新其路由表。大家會(huì)理解,在接收方節(jié)點(diǎn)更新路由表的所述步驟可包括下列步驟刪除與離開(kāi) 節(jié)點(diǎn)對(duì)應(yīng)的映射;以及將所接收“離開(kāi)”請(qǐng)求中包含的新映射添加到路由表??捎欣亟Y(jié)合到本發(fā)明的實(shí)施例中的一個(gè)特征是高速緩存相應(yīng)路由表中沒(méi)有包 含的節(jié)點(diǎn)的一個(gè)或多個(gè)映射。在節(jié)點(diǎn)離開(kāi)網(wǎng)絡(luò)的情況下,離開(kāi)節(jié)點(diǎn)的至少一個(gè)相鄰節(jié)點(diǎn)的 路由表可更新成包含已高速緩存的映射的一個(gè)或多個(gè)。根據(jù)本發(fā)明的第四方面,提供一種在覆蓋網(wǎng)絡(luò)中使用并且包括用于存儲(chǔ)路由表的 存儲(chǔ)器的節(jié)點(diǎn),其中路由表對(duì)于一組相鄰后續(xù)和前趨節(jié)點(diǎn)的每個(gè)包含節(jié)點(diǎn)的覆蓋網(wǎng)絡(luò)地址 與節(jié)點(diǎn)的物理定位符之間的映射。該節(jié)點(diǎn)還包括處理單元,所述處理單元配置成在節(jié)點(diǎn)或 相鄰節(jié)點(diǎn)離開(kāi)網(wǎng)絡(luò)時(shí)將“離開(kāi)”請(qǐng)求發(fā)送到該節(jié)點(diǎn)的一個(gè)或多個(gè)相鄰節(jié)點(diǎn),“離開(kāi)”請(qǐng)求標(biāo)識(shí) 離開(kāi)節(jié)點(diǎn)并且包含接收方節(jié)點(diǎn)的路由表中沒(méi)有包含的節(jié)點(diǎn)的一個(gè)或多個(gè)覆蓋網(wǎng)絡(luò)地址到 物理定位符映射。該節(jié)點(diǎn)可包括另一處理單元,所述另一處理單元配置成從相鄰節(jié)點(diǎn)接收“離開(kāi)”請(qǐng) 求,從所述存儲(chǔ)器中包含的路由表中刪除與“離開(kāi)”請(qǐng)求中標(biāo)識(shí)的離開(kāi)節(jié)點(diǎn)對(duì)應(yīng)的映射,并 且將“離開(kāi)”請(qǐng)求中包含的一個(gè)或多個(gè)新映射添加到路由表。又一處理單元可配置成確定 “離開(kāi)”請(qǐng)求是否始發(fā)自離開(kāi)節(jié)點(diǎn),以及如果不是,則檢查所述路由表以識(shí)別發(fā)送“離開(kāi)”請(qǐng) 求的節(jié)點(diǎn)不知道的離開(kāi)節(jié)點(diǎn)的任何相鄰節(jié)點(diǎn),并且將“離開(kāi)”請(qǐng)求發(fā)送給任何這類(lèi)所識(shí)別節(jié) 點(diǎn)。該“離開(kāi)”請(qǐng)求標(biāo)識(shí)離開(kāi)節(jié)點(diǎn),并且包含接收方節(jié)點(diǎn)的路由表中沒(méi)有包含的節(jié)點(diǎn)的一個(gè) 或多個(gè)映射。該節(jié)點(diǎn)可包括另一存儲(chǔ)器,用于高速緩存路由表中沒(méi)有包含的節(jié)點(diǎn)的一個(gè)或多 個(gè)映射;以及另一處理器,用于在相鄰節(jié)點(diǎn)離開(kāi)網(wǎng)絡(luò)的情況下將路由表更新為包含已高速 緩存映射的一個(gè)或多個(gè)。根據(jù)本發(fā)明的第五方面,提供一種在覆蓋網(wǎng)絡(luò)的節(jié)點(diǎn)維護(hù)路由表的方法,其中,給 定節(jié)點(diǎn)的路由表對(duì)于一組相鄰后續(xù)和前趨節(jié)點(diǎn)的每個(gè)包含節(jié)點(diǎn)的覆蓋網(wǎng)絡(luò)地址與節(jié)點(diǎn)的 物理定位符之間的映射。該方法包括在所述節(jié)點(diǎn)之間周期性地交換維護(hù)消息,以便提供節(jié)點(diǎn)的已更新尋址 信息。當(dāng)在給定節(jié)點(diǎn)處收到對(duì)等節(jié)點(diǎn)的尋址信息并且那個(gè)對(duì)等節(jié)點(diǎn)沒(méi)有包含在給定節(jié)點(diǎn)的 路由表中時(shí),則在給定節(jié)點(diǎn)高速緩存該信息。在給定節(jié)點(diǎn)的路由表中包含的節(jié)點(diǎn)從網(wǎng)絡(luò)撤 消時(shí),使用已高速緩存的信息將對(duì)等節(jié)點(diǎn)添加到路由表。
圖1示意示出包括多個(gè)節(jié)點(diǎn)的基于DHT的環(huán)狀覆蓋網(wǎng)絡(luò);圖2還示出基于DHT的環(huán)狀覆蓋網(wǎng)絡(luò),示出節(jié)點(diǎn)之間的鄰居關(guān)系;圖3示意示出圖2的覆蓋網(wǎng)絡(luò)的節(jié)點(diǎn);
7
圖4是示出用于處理節(jié)點(diǎn)適度地離開(kāi)圖2的覆蓋網(wǎng)絡(luò)的機(jī)制的流程圖;以及圖5是示出用于處理節(jié)點(diǎn)不適度地離開(kāi)圖2的覆蓋網(wǎng)絡(luò)的機(jī)制的流程圖;以及
具體實(shí)施例方式這里所述的優(yōu)化DHT離開(kāi)操作依靠節(jié)點(diǎn)在相鄰節(jié)點(diǎn)的路由表受到節(jié)點(diǎn)離開(kāi)網(wǎng)絡(luò) 影響的情況下幫助相鄰節(jié)點(diǎn)迅速更新其路由表。離開(kāi)節(jié)點(diǎn)可以是相鄰節(jié)點(diǎn),即在適度離開(kāi) 的情況下,或者在不適度離開(kāi)的情況下是另一相鄰節(jié)點(diǎn)?,F(xiàn)在詳細(xì)思考這兩種情況。再次參照?qǐng)D2,它示出使用環(huán)狀拓?fù)浣Y(jié)構(gòu)的Chord的基于DHT的覆蓋網(wǎng)絡(luò)的一個(gè)示 例。雖然作為舉例在這里使用Chord DHT,但是所述的過(guò)程同樣可適用于其它基于DHT的覆 蓋網(wǎng)絡(luò)。在所示示例中,假定基于DHT的覆蓋網(wǎng)絡(luò)中的各節(jié)點(diǎn)保存到6個(gè)鄰居的指針即, 三個(gè)前趨節(jié)點(diǎn)和三個(gè)后續(xù)節(jié)點(diǎn)。當(dāng)然,所提出的機(jī)制與任何數(shù)量的后續(xù)和前趨指針配合工 作。圖2中,節(jié)點(diǎn)X具有三個(gè)后續(xù)S1、S2和S3。如果覆蓋網(wǎng)絡(luò)正遇到大“變動(dòng)”,則節(jié) 點(diǎn)X的所有后續(xù)可能選擇在短時(shí)間幀之內(nèi)離開(kāi)覆蓋網(wǎng)絡(luò)。假定節(jié)點(diǎn)適度地離開(kāi),它們將“離 開(kāi)”請(qǐng)求發(fā)送到其鄰居。但是,如上所述,節(jié)點(diǎn)X在全部三個(gè)后續(xù)離開(kāi)網(wǎng)絡(luò)之前可能沒(méi)有時(shí) 間識(shí)別任何其它后續(xù)節(jié)點(diǎn)。為了避免在這種情況下的網(wǎng)絡(luò)分割,打算離開(kāi)覆蓋的各節(jié)點(diǎn)在 實(shí)際離開(kāi)網(wǎng)絡(luò)之前幫助其鄰居采用備選相鄰節(jié)點(diǎn)來(lái)填充其路由表。下文中,術(shù)語(yǔ)“鄰居表”用于表示包含到直接鄰居的指針的路由表的一部分,術(shù)語(yǔ) “前趨表”用于表示鄰居表中包含前趨指針的部分,以及術(shù)語(yǔ)“后續(xù)表”用于表示鄰居表中包 含后續(xù)指針的部分??紤]圖2中的節(jié)點(diǎn)Sl選擇適度地離開(kāi)覆蓋網(wǎng)絡(luò)的情況。如同網(wǎng)絡(luò)中的所有其它 節(jié)點(diǎn)一樣,Sl將到相鄰節(jié)點(diǎn)的指針保存在其路由表中。圖2中,假定節(jié)點(diǎn)Sl保存三個(gè)前趨 和三個(gè)后續(xù)指針。節(jié)點(diǎn)Sl的后續(xù)是S2、S3和A。節(jié)點(diǎn)Sl的前趨包括X、Pl和P2。在離開(kāi) 網(wǎng)絡(luò)之前,節(jié)點(diǎn)Sl對(duì)其每個(gè)鄰居N重復(fù)進(jìn)行下列過(guò)程-如果節(jié)點(diǎn)N是節(jié)點(diǎn)Sl的前趨,則節(jié)點(diǎn)Sl為N構(gòu)建新的后續(xù)表,并且將它包含在 發(fā)送給節(jié)點(diǎn)N的“離開(kāi)”消息中。節(jié)點(diǎn)Sl不應(yīng)當(dāng)將其本身包含在它為節(jié)點(diǎn)N創(chuàng)建的后續(xù)表 中。后續(xù)表可包括Sl與N之間的節(jié)點(diǎn)以及Sl的后續(xù)。實(shí)際上,當(dāng)N不是Sl的直接前趨 時(shí),情況將會(huì)是這樣。這些中間節(jié)點(diǎn)的一部分可能是N先前未知的。(按照Chord DHT算 法,只有新加入節(jié)點(diǎn)的后續(xù)才知道該節(jié)點(diǎn)當(dāng)調(diào)度下一個(gè)周期性DHT維護(hù)消息時(shí),其它節(jié)點(diǎn) 將了解該新節(jié)點(diǎn)。)-如果節(jié)點(diǎn)N是節(jié)點(diǎn)Sl的后續(xù),則節(jié)點(diǎn)Sl為節(jié)點(diǎn)N構(gòu)建新的前趨表,并且將其包 含在發(fā)送給節(jié)點(diǎn)N的“離開(kāi)”消息中。這個(gè)表包含位于節(jié)點(diǎn)Sl與節(jié)點(diǎn)N之間的Sl的后續(xù) 的任一個(gè)。節(jié)點(diǎn)Sl當(dāng)然不應(yīng)當(dāng)將其本身包含在發(fā)送給節(jié)點(diǎn)N的前趨表中。-在已從節(jié)點(diǎn)Sl接收到包含后續(xù)/前趨表的“離開(kāi)”消息的情況下,節(jié)點(diǎn)N首先從 其路由表中刪除節(jié)點(diǎn)Si。隨后,N搜查“離開(kāi)”消息中攜帶的節(jié)點(diǎn)的列表。對(duì)于列表中的各 節(jié)點(diǎn),節(jié)點(diǎn)N將該節(jié)點(diǎn)與其后續(xù)和前趨表中的條目進(jìn)行比較,以及如果該節(jié)點(diǎn)尚未存在,則 將節(jié)點(diǎn)插入表中的正確位置。這個(gè)過(guò)程確保覆蓋網(wǎng)絡(luò)保持在穩(wěn)定狀態(tài),并且甚至在節(jié)點(diǎn)Sl離開(kāi)之后也保持完 全連通性。也就是說(shuō),節(jié)點(diǎn)Sl的離開(kāi)完全沒(méi)有妨礙網(wǎng)絡(luò)的操作。
如果節(jié)點(diǎn)(例如圖2中的節(jié)點(diǎn)A)沒(méi)有通知其鄰居便離開(kāi)網(wǎng)絡(luò),則出現(xiàn)不同的情 況。這由于突然崩潰或者P2P應(yīng)用的另外某種異常終止、或者由于在離開(kāi)節(jié)點(diǎn)的部分的自 私行為而可能發(fā)生。假定節(jié)點(diǎn)A的鄰居B是覆蓋網(wǎng)絡(luò)中檢測(cè)到節(jié)點(diǎn)A已經(jīng)出故障的第一個(gè) 節(jié)點(diǎn)(例如通過(guò)如下事實(shí)送往節(jié)點(diǎn)A的周期性保持活動(dòng)消息、維護(hù)消息或者任何其它消息 已經(jīng)失敗)。使節(jié)點(diǎn)B負(fù)責(zé)通知節(jié)點(diǎn)A的其它鄰居關(guān)于節(jié)點(diǎn)A的離開(kāi),并且負(fù)責(zé)更新其它 鄰居的鄰居表的內(nèi)容。但是,由于節(jié)點(diǎn)B無(wú)法重新創(chuàng)建節(jié)點(diǎn)A的完整鄰居表(在這個(gè)示例 中,節(jié)點(diǎn)B不了解作為節(jié)點(diǎn)A的鄰居但不是節(jié)點(diǎn)B的鄰居的Si),所以除了 B之外的鄰居必 須通過(guò)更新節(jié)點(diǎn)B不知道的那些鄰居的鄰居表來(lái)參與該過(guò)程。在第一個(gè)檢測(cè)到節(jié)點(diǎn)A的離開(kāi)的鄰居是節(jié)點(diǎn)A的最遠(yuǎn)后續(xù)或最遠(yuǎn)前趨的例外情況 下,則那個(gè)鄰居沒(méi)有其它鄰居尚未知道的任何信息可用。因此,最遠(yuǎn)的鄰居無(wú)法更新較近鄰 居的鄰居表的內(nèi)容。但是,最遠(yuǎn)的鄰居仍然可代表節(jié)點(diǎn)A發(fā)送空“離開(kāi)”消息,這將觸發(fā)較近 鄰居向其它鄰居發(fā)送具有鄰居表的“離開(kāi)”請(qǐng)求(較近鄰居具有使其它節(jié)點(diǎn)受益的信息)。作為舉例,假定圖2中的節(jié)點(diǎn)X離開(kāi)網(wǎng)絡(luò),而沒(méi)有通知其鄰居、即S1、S2、S3、P1、P2 和P3。還假定節(jié)點(diǎn)Sl是例如由于節(jié)點(diǎn)X無(wú)法響應(yīng)來(lái)自節(jié)點(diǎn)Sl的保持活動(dòng)消息而檢測(cè)到節(jié) 點(diǎn)X已經(jīng)離開(kāi)的第一個(gè)節(jié)點(diǎn)。在檢測(cè)到節(jié)點(diǎn)X的故障之后,節(jié)點(diǎn)Sl將立即創(chuàng)建節(jié)點(diǎn)X的鄰 居表的內(nèi)容的盡可能準(zhǔn)確表示。在這種情況下,Sl可重新創(chuàng)建關(guān)于節(jié)點(diǎn)X的6個(gè)鄰居中的 5個(gè)的信息。這是因?yàn)镾l知道節(jié)點(diǎn)X的全部后續(xù)以及節(jié)點(diǎn)X的前趨的兩個(gè)。隨后,節(jié)點(diǎn)Sl 為它知道的節(jié)點(diǎn)X的各鄰居N執(zhí)行下列過(guò)程-節(jié)點(diǎn)Sl構(gòu)建節(jié)點(diǎn)N的鄰居表的內(nèi)容。-節(jié)點(diǎn)Sl從它為節(jié)點(diǎn)N構(gòu)建的鄰居表中刪除節(jié)點(diǎn)X,從所恢復(fù)的節(jié)點(diǎn)X的鄰居表 中選擇適當(dāng)節(jié)點(diǎn),并且將這些節(jié)點(diǎn)插入節(jié)點(diǎn)N的新鄰居表中。更具體來(lái)說(shuō),如果節(jié)點(diǎn)N是節(jié) 點(diǎn)X的前趨,則節(jié)點(diǎn)Sl為節(jié)點(diǎn)N創(chuàng)建新的后續(xù)表。備選地,如果節(jié)點(diǎn)N是節(jié)點(diǎn)X的后續(xù),則 節(jié)點(diǎn)Sl為節(jié)點(diǎn)N創(chuàng)建新的前趨表。-節(jié)點(diǎn)Sl代表節(jié)點(diǎn)X向節(jié)點(diǎn)N發(fā)送“離開(kāi)”請(qǐng)求,并且在其中包含它已經(jīng)創(chuàng)建的新 的后續(xù)或前趨表。-節(jié)點(diǎn)N根據(jù)它從節(jié)點(diǎn)Sl接收到的“離開(kāi)”請(qǐng)求來(lái)更新其鄰居表。當(dāng)確定節(jié)點(diǎn)X的路由表的內(nèi)容時(shí),節(jié)點(diǎn)Sl不知道節(jié)點(diǎn)X的最遠(yuǎn)前趨、即P3的身份。 但是,Pl和P2都知道P3的身份。因此,當(dāng)節(jié)點(diǎn)X的鄰居N接收到另一個(gè)節(jié)點(diǎn)代表節(jié)點(diǎn)X所 發(fā)送的“離開(kāi)”請(qǐng)求時(shí)(它可檢測(cè)到這種情況,因?yàn)椤半x開(kāi)”請(qǐng)求的始發(fā)方的源地址與節(jié)點(diǎn)X 的地址不匹配),鄰居N執(zhí)行下列動(dòng)作-節(jié)點(diǎn)N重新創(chuàng)建節(jié)點(diǎn)X的鄰居表的內(nèi)容的表示。更具體來(lái)說(shuō),如果節(jié)點(diǎn)N是節(jié)點(diǎn) X的前趨,則節(jié)點(diǎn)N重新創(chuàng)建X的前趨表。另一方面,如果節(jié)點(diǎn)N是節(jié)點(diǎn)X的后續(xù),則節(jié)點(diǎn)N 重新創(chuàng)建節(jié)點(diǎn)X的后續(xù)表的表示。_根據(jù)它構(gòu)建的鄰居表,節(jié)點(diǎn)N檢查它是否知道“離開(kāi)”請(qǐng)求的發(fā)送方(即,節(jié)點(diǎn) Si)不知道的節(jié)點(diǎn)X的任何鄰居。假定節(jié)點(diǎn)N是圖2中的節(jié)點(diǎn)P2,P2檢測(cè)到“離開(kāi)”請(qǐng)求的 發(fā)送方、即節(jié)點(diǎn)Sl不知道節(jié)點(diǎn)P3( 即,節(jié)點(diǎn)X的第三個(gè)前趨)。-節(jié)點(diǎn)N代表節(jié)點(diǎn)X將“離開(kāi)”請(qǐng)求發(fā)送到“離開(kāi)”請(qǐng)求的發(fā)送方不知道的節(jié)點(diǎn)X的 每個(gè)鄰居。再次假定節(jié)點(diǎn)N是圖2的節(jié)點(diǎn)P2,并且發(fā)送方是Si,P2向節(jié)點(diǎn)P3發(fā)送“離開(kāi)” 請(qǐng)求。
-最后,節(jié)點(diǎn)N返回“離開(kāi)”請(qǐng)求的發(fā)送方(S卩,節(jié)點(diǎn)Si)不知道的節(jié)點(diǎn)X的鄰居的 列表(在節(jié)點(diǎn)N對(duì)“離開(kāi)”請(qǐng)求生成的響應(yīng)中)。然后,“離開(kāi)”請(qǐng)求的發(fā)送方(即,節(jié)點(diǎn)Si) 可將這些節(jié)點(diǎn)插入其前趨表中。在上述示例中,假定檢測(cè)到節(jié)點(diǎn)X已經(jīng)離開(kāi)覆蓋網(wǎng)絡(luò)的第一個(gè)節(jié)點(diǎn)是后續(xù)(Si)。 如果檢測(cè)到節(jié)點(diǎn)X已經(jīng)離開(kāi)覆蓋網(wǎng)絡(luò)的第一個(gè)節(jié)點(diǎn)是前趨,則前趨(例如Pi)不知道節(jié)點(diǎn) X的最遠(yuǎn)后續(xù),即,在這個(gè)示例中為S3。在這種情況下,節(jié)點(diǎn)X的后續(xù)之一、如節(jié)點(diǎn)Sl執(zhí)行 上述步驟。維護(hù)操作在DHT網(wǎng)絡(luò)中執(zhí)行,并且涉及參與節(jié)點(diǎn)之間的周期性消息交換,以便了 解新節(jié)點(diǎn),以及檢查相鄰節(jié)點(diǎn)的狀態(tài)。但是,基于DHT的覆蓋中的節(jié)點(diǎn)按常規(guī)僅使用它們從 其鄰居接收的信息的一部分來(lái)更新其自己的路由表,而丟棄信息的其余部分。例如,在圖2 的示例網(wǎng)絡(luò)中,雖然節(jié)點(diǎn)X從其直接鄰居Pl 了解節(jié)點(diǎn)E的存在,但是節(jié)點(diǎn)X通常丟棄這個(gè) 信息,因?yàn)樗鼉H將三個(gè)前趨指針、即前趨Pl、P2和P3保存在其前趨表中。但是,如果節(jié)點(diǎn)X 高速緩存節(jié)點(diǎn)E的聯(lián)絡(luò)信息,則它可從節(jié)點(diǎn)Pl (以及還有P2和P3)的可能不適度離開(kāi)更迅 速地恢復(fù)。換言之,雖然節(jié)點(diǎn)X沒(méi)有將節(jié)點(diǎn)E插入其鄰居表中,但是節(jié)點(diǎn)X可將節(jié)點(diǎn)E的聯(lián) 絡(luò)信息存儲(chǔ)到實(shí)現(xiàn)鄰居高速緩存的另一個(gè)數(shù)據(jù)結(jié)構(gòu)中。如果節(jié)點(diǎn)Pl突然離開(kāi)網(wǎng)絡(luò),則節(jié)點(diǎn) X可檢查該高速緩存,并且聯(lián)絡(luò)例如節(jié)點(diǎn)E,以便檢查它是否活動(dòng)以及可被添加到路由表?,F(xiàn)在參照?qǐng)D3,示意示出適合實(shí)現(xiàn)所述機(jī)制的基于DHT的覆蓋網(wǎng)絡(luò)的節(jié)點(diǎn)1。節(jié)點(diǎn) 1包括配置成存儲(chǔ)該節(jié)點(diǎn)的路由表的存儲(chǔ)器2。該節(jié)點(diǎn)配備有到覆蓋網(wǎng)絡(luò)中的其它節(jié)點(diǎn)的 接口 3 (通常是到IP網(wǎng)絡(luò)、如因特網(wǎng)的接口)。第一處理單元4配置成經(jīng)由接口 3接收來(lái)自 相鄰節(jié)點(diǎn)的“離開(kāi)”請(qǐng)求。在接收到“離開(kāi)”請(qǐng)求的情況下,第一處理單元使路由表按照上 述方式來(lái)更新?!半x開(kāi)”請(qǐng)求還由第二處理單元5接收,第二處理單元5確定離開(kāi)節(jié)點(diǎn)是否 為發(fā)送該請(qǐng)求的節(jié)點(diǎn)。如果情況不是這樣,則第二處理單元5檢查其路由表,以便識(shí)別發(fā)送 該請(qǐng)求的節(jié)點(diǎn)不知道的離開(kāi)節(jié)點(diǎn)的任何相鄰節(jié)點(diǎn)。然后,它構(gòu)建一個(gè)或多個(gè)其它“離開(kāi)”請(qǐng) 求,并且將其發(fā)送到已識(shí)別節(jié)點(diǎn)。第三處理單元6配置成處理節(jié)點(diǎn)從網(wǎng)絡(luò)的適度離開(kāi)。它通過(guò)向節(jié)點(diǎn)的鄰居發(fā)送標(biāo) 識(shí)各相鄰節(jié)點(diǎn)的一個(gè)或多個(gè)替換映射的“離開(kāi)”請(qǐng)求來(lái)進(jìn)行這個(gè)操作。這個(gè)第三處理單元 還配置成接收連通性檢測(cè)器7的通知,當(dāng)鄰居不適度離開(kāi)覆蓋網(wǎng)絡(luò)時(shí),負(fù)責(zé)向相鄰節(jié)點(diǎn)周 期性地發(fā)送保持活動(dòng)消息,以及向已離開(kāi)的節(jié)點(diǎn)的鄰居發(fā)送適當(dāng)?shù)摹半x開(kāi)”請(qǐng)求。第四處理單元8維護(hù)存儲(chǔ)器9中的高速緩存,其中包含當(dāng)前路由表中沒(méi)有包含的 節(jié)點(diǎn)的映射。在第四處理單元接收到來(lái)自鄰居的“離開(kāi)”請(qǐng)求的情況下,該單元可從高速緩 沖存儲(chǔ)器提取映射,并且將其添加到路由表?,F(xiàn)在參照?qǐng)D4,這示出在適度離開(kāi)情況下應(yīng)用的機(jī)制。在步驟Sl至S3,離開(kāi)節(jié)點(diǎn) 向其相鄰節(jié)點(diǎn)(僅示出其中三個(gè))發(fā)送“離開(kāi)”請(qǐng)求。在步驟S4至S6,相鄰節(jié)點(diǎn)的每個(gè)更 新其路由表。圖5示出在不適度離開(kāi)情況下應(yīng)用的機(jī)制。在步驟Tl,離開(kāi)節(jié)點(diǎn)的第一相鄰節(jié)點(diǎn) 向離開(kāi)節(jié)點(diǎn)發(fā)送周期性保持活動(dòng)消息。在第一鄰居處、其中沒(méi)有接收到對(duì)于保持活動(dòng)的響 應(yīng)的超時(shí)T2之后,第一鄰居在步驟T3更新其路由表,以便刪除已離開(kāi)節(jié)點(diǎn)的條目。在步驟 T4和T5,第一鄰居代表已離開(kāi)節(jié)點(diǎn)向已離開(kāi)節(jié)點(diǎn)的鄰居發(fā)送“離開(kāi)”請(qǐng)求。這包含如上所 述的新映射。在接收到“離開(kāi)”請(qǐng)求時(shí),在步驟T6和T7,鄰居更新其路由表。鄰居之一、在這種情況下的第三鄰居知道第一鄰居不知道的已離開(kāi)節(jié)點(diǎn)的另一個(gè)鄰居。在步驟T8,該鄰 居向那個(gè)另一個(gè)鄰居發(fā)送另一個(gè)“離開(kāi)”請(qǐng)求。在步驟T9,另一個(gè)鄰居更新其路由表。由于這里所述的機(jī)制改進(jìn)基于DHT的覆蓋網(wǎng)絡(luò)的健壯性,所以它對(duì)于例如由因特 網(wǎng)工程任務(wù)組(IETF)的P2PSIP工作組進(jìn)行標(biāo)準(zhǔn)化的這種P2PSIP電話網(wǎng)絡(luò)等關(guān)鍵的基于 DHT的系統(tǒng)特別有用。本領(lǐng)域的技術(shù)人員會(huì)理解,可在沒(méi)有背離本發(fā)明的范圍的情況下對(duì)上述實(shí)施例進(jìn) 行各種修改。
權(quán)利要求
1.一種在覆蓋網(wǎng)絡(luò)的節(jié)點(diǎn)維護(hù)路由表的方法,其中,給定節(jié)點(diǎn)的路由表對(duì)于一組相鄰 后續(xù)和前趨節(jié)點(diǎn)的每個(gè)包含所述節(jié)點(diǎn)的覆蓋網(wǎng)絡(luò)地址與所述節(jié)點(diǎn)的物理定位符之間的映 射,所述方法包括在節(jié)點(diǎn)離開(kāi)所述覆蓋網(wǎng)絡(luò)時(shí)或者緊接節(jié)點(diǎn)離開(kāi)所述覆蓋網(wǎng)絡(luò)之前,從所述離開(kāi)節(jié)點(diǎn)或 者所述離開(kāi)節(jié)點(diǎn)的知道所述離開(kāi)的相鄰節(jié)點(diǎn)之一向所述離開(kāi)節(jié)點(diǎn)的各相鄰節(jié)點(diǎn)或者每個(gè) 其它相鄰節(jié)點(diǎn)發(fā)送“離開(kāi)”請(qǐng)求,指示所述離開(kāi)并且包含所述接收方節(jié)點(diǎn)的所述路由表中沒(méi) 有包含的節(jié)點(diǎn)的一個(gè)或多個(gè)映射;以及在各相鄰節(jié)點(diǎn)或者在每個(gè)其它相鄰節(jié)點(diǎn)接收“離開(kāi)”請(qǐng)求,并且在所述接收方節(jié)點(diǎn)使用 所述映射來(lái)更新所述路由表。
2.一種在覆蓋網(wǎng)絡(luò)的節(jié)點(diǎn)維護(hù)路由表的方法,其中,給定節(jié)點(diǎn)的路由表對(duì)于一組相鄰 后續(xù)和前趨節(jié)點(diǎn)的每個(gè)包含所述節(jié)點(diǎn)的覆蓋網(wǎng)絡(luò)地址與所述節(jié)點(diǎn)的物理定位符之間的映 射,所述方法包括緊接節(jié)點(diǎn)離開(kāi)所述覆蓋網(wǎng)絡(luò)之前,從所述離開(kāi)節(jié)點(diǎn)向所述離開(kāi)節(jié)點(diǎn)的各相鄰節(jié)點(diǎn)發(fā)送 “離開(kāi)”請(qǐng)求,指示所述離開(kāi)并且包含所述接收方節(jié)點(diǎn)的所述路由表中沒(méi)有包含的節(jié)點(diǎn)的一 個(gè)或多個(gè)覆蓋網(wǎng)絡(luò)地址到物理定位符映射;以及在各相鄰節(jié)點(diǎn)接收“離開(kāi)”請(qǐng)求,并且在所述接收方節(jié)點(diǎn)使用所述映射來(lái)更新所述路由表。
3.如權(quán)利要求2所述的方法,其中,“離開(kāi)”請(qǐng)求中包含的至少一個(gè)映射對(duì)應(yīng)于所述接 收方節(jié)點(diǎn)不知道的所述離開(kāi)節(jié)點(diǎn)的相鄰節(jié)點(diǎn)。
4.一種在覆蓋網(wǎng)絡(luò)的節(jié)點(diǎn)維護(hù)路由表的方法,其中,給定節(jié)點(diǎn)的路由表對(duì)于一組相鄰 后續(xù)和前趨節(jié)點(diǎn)的每個(gè)包含所述節(jié)點(diǎn)的覆蓋網(wǎng)絡(luò)地址與所述節(jié)點(diǎn)的物理定位符之間的映 射,所述方法包括在節(jié)點(diǎn)離開(kāi)所述覆蓋網(wǎng)絡(luò)時(shí),從所述離開(kāi)節(jié)點(diǎn)的知道所述離開(kāi)的所述相鄰節(jié)點(diǎn)之一向 所述離開(kāi)節(jié)點(diǎn)的其它相鄰節(jié)點(diǎn)發(fā)送“離開(kāi)”請(qǐng)求,所述請(qǐng)求指示所述離開(kāi)并且包含所述接收 方節(jié)點(diǎn)的路由表中沒(méi)有包含的節(jié)點(diǎn)的一個(gè)或多個(gè)映射;以及在所述每個(gè)其它相鄰節(jié)點(diǎn)接收“離開(kāi)”請(qǐng)求,并且在所述接收方節(jié)點(diǎn)使用所述映射來(lái)更 新所述路由表。
5.如權(quán)利要求4所述的方法,其中,發(fā)送所述“離開(kāi)”請(qǐng)求的所述節(jié)點(diǎn)由于所述離開(kāi)節(jié) 點(diǎn)無(wú)法響應(yīng)周期性地傳送的保持活動(dòng)消息而檢測(cè)到所述離開(kāi)節(jié)點(diǎn)的所述離開(kāi),并且通過(guò)發(fā) 送所述“離開(kāi)”請(qǐng)求對(duì)所述檢測(cè)作出反應(yīng)。
6.如權(quán)利要求4或5所述的方法,其中,所述接收方節(jié)點(diǎn)的所述路由表中沒(méi)有包含的節(jié) 點(diǎn)的所述一個(gè)或多個(gè)映射是發(fā)送所述“離開(kāi)”請(qǐng)求的所述節(jié)點(diǎn)的所述路由表中包含的映射。
7.如權(quán)利要求4至6中的任一項(xiàng)所述的方法,包括在接收“離開(kāi)”請(qǐng)求的節(jié)點(diǎn),確定所 述接收方節(jié)點(diǎn)是否知道所述離開(kāi)節(jié)點(diǎn)的任何相鄰節(jié)點(diǎn)并且發(fā)送所述“離開(kāi)”請(qǐng)求的所述節(jié) 點(diǎn)不知道所述相鄰節(jié)點(diǎn),以及如果是的話,則向那個(gè)或那些節(jié)點(diǎn)發(fā)送“離開(kāi)”請(qǐng)求,所述“離 開(kāi)”請(qǐng)求包含所述接收方節(jié)點(diǎn)的所述路由表中沒(méi)有包含的節(jié)點(diǎn)的一個(gè)或多個(gè)覆蓋網(wǎng)絡(luò)地址 到物理定位符映射,以及在所述或每個(gè)其它接收方節(jié)點(diǎn)處接收到所述“離開(kāi)”請(qǐng)求時(shí),更新 所述節(jié)點(diǎn)的所述路由表。
8.如以上權(quán)利要求中的任一項(xiàng)所述的方法,其中,所述“離開(kāi)”請(qǐng)求包含所述接收方節(jié)點(diǎn)的新的后續(xù)和前趨路由表部分其中之一。
9.如以上權(quán)利要求中的任一項(xiàng)所述的方法,其中,所述覆蓋網(wǎng)絡(luò)是分布式哈希表網(wǎng)絡(luò), 并且所述覆蓋網(wǎng)絡(luò)地址是哈希值。
10.如以上權(quán)利要求中的任一項(xiàng)所述的方法,在接收方節(jié)點(diǎn)更新所述路由表的所述步 驟包括刪除與所述離開(kāi)節(jié)點(diǎn)對(duì)應(yīng)的所述映射;以及將所述所接收“離開(kāi)”請(qǐng)求中包含的所 述新映射添加到所述路由表。
11.如以上權(quán)利要求中的任一項(xiàng)所述的方法,包括在所述覆蓋網(wǎng)絡(luò)的節(jié)點(diǎn),高速緩存 所述相應(yīng)路由表中沒(méi)有包含的節(jié)點(diǎn)的一個(gè)或多個(gè)映射,并且在節(jié)點(diǎn)離開(kāi)所述網(wǎng)絡(luò)的情況 下,將所述離開(kāi)節(jié)點(diǎn)的至少一個(gè)相鄰節(jié)點(diǎn)的所述路由表更新成包含一個(gè)或多個(gè)已高速緩存 映射。
12.—種在覆蓋網(wǎng)絡(luò)中使用的節(jié)點(diǎn),包括用于存儲(chǔ)路由表的存儲(chǔ)器,所述路由表對(duì)于一組相鄰后續(xù)和前趨節(jié)點(diǎn)的每個(gè)包含所述 節(jié)點(diǎn)的覆蓋網(wǎng)絡(luò)地址與所述節(jié)點(diǎn)的物理定位符之間的映射;處理單元,配置成在所述節(jié)點(diǎn)或相鄰節(jié)點(diǎn)離開(kāi)所述網(wǎng)絡(luò)時(shí)將“離開(kāi)”請(qǐng)求發(fā)送到所述節(jié) 點(diǎn)的一個(gè)或多個(gè)相鄰節(jié)點(diǎn),所述“離開(kāi)”請(qǐng)求標(biāo)識(shí)所述離開(kāi)節(jié)點(diǎn)并且包含所述接收方節(jié)點(diǎn)的 所述路由表中沒(méi)有包含的節(jié)點(diǎn)的一個(gè)或多個(gè)覆蓋網(wǎng)絡(luò)地址到物理定位符映射。
13.如權(quán)利要求12所述的節(jié)點(diǎn),包括另一處理單元,配置成從相鄰節(jié)點(diǎn)接收“離開(kāi)”請(qǐng) 求,從所述存儲(chǔ)器中包含的所述路由表中刪除與所述“離開(kāi)”請(qǐng)求中標(biāo)識(shí)的所述離開(kāi)節(jié)點(diǎn)對(duì) 應(yīng)的所述映射,并且將所述“離開(kāi)”請(qǐng)求中包含的一個(gè)或多個(gè)新映射添加到所述路由表。
14.如權(quán)利要求13所述的節(jié)點(diǎn),包括又一處理單元,配置成確定所述“離開(kāi)”請(qǐng)求是否 始發(fā)自所述離開(kāi)節(jié)點(diǎn),以及如果不是,則檢查所述路由表以識(shí)別發(fā)送所述“離開(kāi)”請(qǐng)求的所 述節(jié)點(diǎn)不知道的所述離開(kāi)節(jié)點(diǎn)的任何相鄰節(jié)點(diǎn),并且將“離開(kāi)”請(qǐng)求發(fā)送給任何這類(lèi)所識(shí)別 節(jié)點(diǎn),所述“離開(kāi)”請(qǐng)求標(biāo)識(shí)所述離開(kāi)節(jié)點(diǎn),并且包含所述接收方節(jié)點(diǎn)的所述路由表中沒(méi)有 包含的節(jié)點(diǎn)的一個(gè)或多個(gè)映射。
15.如權(quán)利要求12至14中的任一項(xiàng)所述的節(jié)點(diǎn),包括另一存儲(chǔ)器,用于高速緩存所 述路由表中沒(méi)有包含的節(jié)點(diǎn)的一個(gè)或多個(gè)映射;以及另一處理器,用于在相鄰節(jié)點(diǎn)離開(kāi)所 述網(wǎng)絡(luò)的情況下將所述路由表更新為包含所述已高速緩存映射的一個(gè)或多個(gè)。
16.一種在覆蓋網(wǎng)絡(luò)的節(jié)點(diǎn)維護(hù)路由表的方法,其中,給定節(jié)點(diǎn)的路由表對(duì)于一組相鄰 后續(xù)和前趨節(jié)點(diǎn)的每個(gè)包含所述節(jié)點(diǎn)的覆蓋網(wǎng)絡(luò)地址與所述節(jié)點(diǎn)的物理定位符之間的映 射,所述方法包括在所述節(jié)點(diǎn)之間周期性地交換維護(hù)消息,以便為節(jié)點(diǎn)提供已更新尋址信息;當(dāng)在給定節(jié)點(diǎn)收到對(duì)等節(jié)點(diǎn)的尋址信息并且那個(gè)對(duì)等節(jié)點(diǎn)沒(méi)有包含在所述給定節(jié)點(diǎn) 的所述路由表中時(shí),在所述給定節(jié)點(diǎn)高速緩存所述信息;以及在所述給定節(jié)點(diǎn)的所述路由表中包含的節(jié)點(diǎn)從所述網(wǎng)絡(luò)撤消時(shí),使用已高速緩存的信 息將所述對(duì)等節(jié)點(diǎn)添加到所述路由表。
全文摘要
一種在覆蓋網(wǎng)絡(luò)的節(jié)點(diǎn)維護(hù)路由表的方法,其中,給定節(jié)點(diǎn)的路由表對(duì)于一組相鄰后續(xù)和前趨節(jié)點(diǎn)的每個(gè)包含節(jié)點(diǎn)的覆蓋網(wǎng)絡(luò)地址與節(jié)點(diǎn)的物理定位符之間的映射。該方法包括在節(jié)點(diǎn)離開(kāi)覆蓋網(wǎng)絡(luò)時(shí)或者緊接節(jié)點(diǎn)離開(kāi)覆蓋網(wǎng)絡(luò)之前,從離開(kāi)節(jié)點(diǎn)(或者離開(kāi)節(jié)點(diǎn)的知道該離開(kāi)的相鄰節(jié)點(diǎn)之一)向各相鄰節(jié)點(diǎn)(或者離開(kāi)節(jié)點(diǎn)的每個(gè)其它相鄰節(jié)點(diǎn))發(fā)送”離開(kāi)”請(qǐng)求,該請(qǐng)求指示該離開(kāi)并且包含接收方節(jié)點(diǎn)的路由表中沒(méi)有包含的節(jié)點(diǎn)的一個(gè)或多個(gè)映射。各相鄰節(jié)點(diǎn)(或者每個(gè)其它相鄰節(jié)點(diǎn))接收”離開(kāi)”請(qǐng)求,并且使用所述映射來(lái)更新其路由表。
文檔編號(hào)H04L29/06GK102037704SQ200880129498
公開(kāi)日2011年4月27日 申請(qǐng)日期2008年5月23日 優(yōu)先權(quán)日2008年5月23日
發(fā)明者J·馬恩帕 申請(qǐng)人:愛(ài)立信電話股份有限公司