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