專利名稱:會(huì)合聯(lián)盟內(nèi)的近鄰間通信的制作方法
會(huì)合聯(lián)盟內(nèi)的近鄰間通信
背景
1.背景和相關(guān)技術(shù)
計(jì)算機(jī)系統(tǒng)和相關(guān)技術(shù)影響社會(huì)的許多方面。的確,計(jì)算機(jī)系統(tǒng)處理信息的能力已改變?nèi)藗兩詈凸ぷ鞯姆绞健S?jì)算機(jī)系統(tǒng)現(xiàn)在通常執(zhí)行在計(jì)算機(jī)系統(tǒng)出現(xiàn)以前手動(dòng)執(zhí)行的許多任務(wù)(例如,文字處理、日程安排和數(shù)據(jù)庫(kù)管理)。最近,計(jì)算機(jī)系統(tǒng)被彼此耦合并被耦合到其它電子設(shè)備,以形成計(jì)算機(jī)系統(tǒng)和其它電子設(shè)備可以在其上傳送電子數(shù)據(jù)的有線和無(wú)線計(jì)算機(jī)網(wǎng)絡(luò)。結(jié)果,在計(jì)算機(jī)系統(tǒng)處執(zhí)行的許多任務(wù)(例如,語(yǔ)音通信、訪問電子郵件、控制家用電子
設(shè)備、Web瀏覽、以及打印文檔)包括多個(gè)計(jì)算機(jī)系統(tǒng)和/或其他電子設(shè)備之間經(jīng)由有線和/或無(wú)線計(jì)算機(jī)網(wǎng)絡(luò)的電子消息交換。
然而,為了利用網(wǎng)絡(luò)資源來(lái)執(zhí)行計(jì)算機(jī)化任務(wù),計(jì)算機(jī)系統(tǒng)必須具有標(biāo)識(shí)并訪問網(wǎng)絡(luò)資源的某一方式。因此,資源通常被分配唯一地標(biāo)識(shí)資源并可用于將一個(gè)資源與其它資源進(jìn)行區(qū)分的唯一標(biāo)識(shí)符,例如網(wǎng)絡(luò)地址。由此,期望利用資源的計(jì)算機(jī)系統(tǒng)可以使用對(duì)應(yīng)于該資源的網(wǎng)絡(luò)地址來(lái)連接到該資源。然而,如果計(jì)算機(jī)系統(tǒng)沒有關(guān)于網(wǎng)絡(luò)資源的網(wǎng)絡(luò)地址的先驗(yàn)知識(shí),則訪問網(wǎng)絡(luò)資源可能是困難的。例如,除非計(jì)算機(jī)系統(tǒng)(或另一聯(lián)網(wǎng)計(jì)算機(jī)系統(tǒng))知道網(wǎng)絡(luò)打印機(jī)的網(wǎng)絡(luò)地址,否則計(jì)算機(jī)系統(tǒng)不能在該網(wǎng)絡(luò)打印機(jī)處打印文檔。
因此,已經(jīng)開發(fā)了各種機(jī)帝ij(例如,域名系統(tǒng)("DNS")、現(xiàn)用目錄("AD")、分布式文件系統(tǒng)("DFS"))以供計(jì)算機(jī)系統(tǒng)標(biāo)識(shí)(和訪問)先前未知的資源。然而,由于可經(jīng)由不同計(jì)算機(jī)網(wǎng)絡(luò)訪問的資源(例如,設(shè)備和服務(wù))的數(shù)量和多樣性,開發(fā)者通常需要開發(fā)實(shí)現(xiàn)各種不同資源標(biāo)識(shí)和訪問機(jī)制的應(yīng)用程序。每一不同機(jī)制可以具有不同的編碼要求,并且可能不向開發(fā)者提供應(yīng)用程序中所需的所有功能。
例如,盡管DNS具有分布式管理體系結(jié)構(gòu)(即,不需要集中式管理),但DNS不夠動(dòng)態(tài)、不是自組織的、支持弱數(shù)據(jù)和査詢模型、且具有一組固定
8的根。另一方面,AD足夠動(dòng)態(tài),但是需要集中式管理。此外,不同機(jī)制的各方面可能不彼此兼容。例如,使用DNS標(biāo)識(shí)的資源可能不與DFS路由協(xié)議兼容。由此,開發(fā)者可能被迫選擇最合適的機(jī)制并放棄其它機(jī)制的優(yōu)點(diǎn)。
用于標(biāo)識(shí)資源的機(jī)制在對(duì)等網(wǎng)絡(luò)中尤其成問題。DNS提供了依賴于一組特殊根服務(wù)器來(lái)實(shí)現(xiàn)査找請(qǐng)求的査找服務(wù),其中主機(jī)名作為關(guān)鍵字且IP地址作為值。此外,DNS需要信息(NS記錄)的管理來(lái)允許客戶機(jī)導(dǎo)航名稱服務(wù)器分層結(jié)構(gòu)。由此,在一資源能在網(wǎng)絡(luò)上標(biāo)識(shí)之前該資源必須進(jìn)入DNS。在其中節(jié)點(diǎn)頻繁地與網(wǎng)絡(luò)連接和斷開的更大規(guī)模的網(wǎng)絡(luò)中,依賴于信息的輸入并不總是實(shí)用的。另外,DNS專用于找出主機(jī)或服務(wù)的任務(wù),并且一般不適用于其它類型的資源。
因此,已經(jīng)開發(fā)了用于資源標(biāo)識(shí)和訪問的其它機(jī)制以試圖解決這些缺點(diǎn)。多個(gè)機(jī)制包括比DNS更可伸縮的分布式查找協(xié)議。這些機(jī)制使用各種節(jié)點(diǎn)安排和路由算法來(lái)將請(qǐng)求路由到相應(yīng)的資源并存儲(chǔ)用于査找的信息。
這些機(jī)制中的至少一個(gè)在網(wǎng)絡(luò)中的每一節(jié)點(diǎn)處利用局部多級(jí)鄰居映射來(lái)將消息路由到目的地節(jié)點(diǎn)。這本質(zhì)上得到其中每一節(jié)點(diǎn)是相應(yīng)的節(jié)點(diǎn)樹(其鄰居映射中的節(jié)點(diǎn))的"根節(jié)點(diǎn)"的體系結(jié)構(gòu)。消息被遞增地逐位路由到目的地ID (例如,***6=>**46=>, *346=〉2346,其中*表示通配符)。這些類型的機(jī)制的路由效率是O(logN)個(gè)路由瑕L并且要求節(jié)點(diǎn)維護(hù)大小為O(logN)的路由表。
這些機(jī)制中的至少另一機(jī)制向節(jié)點(diǎn)分配從線性數(shù)字環(huán)中取得的唯一 ID。節(jié)點(diǎn)維護(hù)包含指向其直接后繼節(jié)點(diǎn)(根據(jù)ID值)以及其ID值是值ID+2i的最近后繼者的節(jié)點(diǎn)的指針的路由表。這些類型的機(jī)制的路由效率也是O(logN)個(gè)路由跳,并且要求節(jié)點(diǎn)維護(hù)大小為O(logN)的路由表。
至少一種另外的機(jī)制需要O(logN"d)個(gè)路由跳,并且要求節(jié)點(diǎn)維護(hù)大小為O(D)的路由表。由此,所有這些機(jī)制的路由效率都至少部分地取決于系統(tǒng)中的節(jié)點(diǎn)數(shù)。
此外,由于ID (對(duì)于至少某些機(jī)制)可以在環(huán)上均勻分布,因此始終存在環(huán)上的節(jié)點(diǎn)之間的路由將導(dǎo)致某種低效的某一可能性。例如,路由跳可以橫跨極大的地理距離,橫跨更昂貴的鏈接、或穿過(guò)不安全的域等等。另外,當(dāng)消
9息路由涉及多個(gè)跳時(shí),存在這些事件將發(fā)生多次的某一機(jī)率。不幸的是,這些機(jī)制都沒有考慮到節(jié)點(diǎn)相對(duì)于彼此的鄰近性(物理的或其它方面的)。例如,取決于環(huán)上的節(jié)點(diǎn)分布,將消息從紐約路由到波士頓可涉及將消息從紐約路由到倫敦、到亞特蘭大、到東京然后到波士頓。
因此,至少另一種更新近的機(jī)制通過(guò)將鄰近性定義為單個(gè)標(biāo)量鄰近性度量(例如,IP路由跳或地理距離)來(lái)考慮鄰近性。這些機(jī)制使用對(duì)路由表?xiàng)l目的基于鄰近性的選擇的概念。由于對(duì)每一路由表?xiàng)l目可能有許多"正確的"候選節(jié)點(diǎn),因此這些機(jī)制試圖從候選節(jié)點(diǎn)中選擇最接近的節(jié)點(diǎn)。為此,這些機(jī)制可以提供允許每一節(jié)點(diǎn)確定具有給定IP地址的節(jié)點(diǎn)到其自身的"距離"的功能。消息在更接近的節(jié)點(diǎn)之間路由,以在路由到更遠(yuǎn)的節(jié)點(diǎn)之前向著目的地前進(jìn)。由此,可保存某些資源,并且路由更高效。
不幸的是,這些現(xiàn)有機(jī)制通常沒有特別地提供節(jié)點(diǎn)之間的對(duì)稱關(guān)系(即,如果第一節(jié)點(diǎn)認(rèn)為第二節(jié)點(diǎn)是其伙伴,則第二節(jié)點(diǎn)也將第一節(jié)點(diǎn)認(rèn)為是其伙伴)、不能在環(huán)上的兩個(gè)方向(順時(shí)針和逆時(shí)針)上路由消息、不能基于多個(gè)鄰近性度量來(lái)劃分節(jié)點(diǎn)鏈表、并且不能基于多個(gè)鄰近性度量來(lái)路由消息。這些缺陷可能在諸如,例如當(dāng)將數(shù)據(jù)廣播到網(wǎng)絡(luò)的所有節(jié)點(diǎn)時(shí)限制網(wǎng)絡(luò)的節(jié)點(diǎn)之間的數(shù)據(jù)的動(dòng)態(tài)的、分布式的、且高效的傳輸。
簡(jiǎn)要概述
本發(fā)明涉及用于幫助會(huì)合聯(lián)盟(rendezvous federation)內(nèi)的近鄰間(inter-proximity)通信的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。在某些實(shí)施例中,維護(hù)關(guān)于節(jié)點(diǎn)的旁系環(huán)集入口表。節(jié)點(diǎn)訪問被配置成存儲(chǔ)關(guān)于該節(jié)點(diǎn)的旁系環(huán)集入口的旁系環(huán)集入口表。每一旁系環(huán)集入口被配置成指示節(jié)點(diǎn)的旁系環(huán),以及到該節(jié)點(diǎn)的旁系環(huán)的至少一個(gè)相應(yīng)的入口節(jié)點(diǎn)。發(fā)現(xiàn)來(lái)自維護(hù)涉及環(huán)樹配置的信息的可用資源的旁系環(huán)集入口表信息。旁系環(huán)集入口表基于所發(fā)現(xiàn)的旁系環(huán)集入口表信息用適當(dāng)?shù)呐韵淡h(huán)集入口狀態(tài)來(lái)更新。適當(dāng)?shù)呐韵淡h(huán)集入口狀態(tài)包括節(jié)點(diǎn)的旁系環(huán),以及到該節(jié)點(diǎn)的旁系環(huán)的至少一個(gè)相應(yīng)的入口節(jié)點(diǎn)。
在其它實(shí)施例中,在環(huán)樹中發(fā)送近鄰間通信。在近鄰間通信的一個(gè)實(shí)施例中,確定一節(jié)點(diǎn)要向節(jié)點(diǎn)的指定旁系環(huán)發(fā)送消息。該節(jié)點(diǎn)訪問被配置成存儲(chǔ)關(guān)
10于該節(jié)點(diǎn)的旁系環(huán)集入口的旁系環(huán)集入口表。每一旁系環(huán)集入口被配置成指示節(jié)點(diǎn)的旁系環(huán),以及到該節(jié)點(diǎn)的旁系環(huán)的相應(yīng)的至少一個(gè)入口節(jié)點(diǎn)。對(duì)于指定的旁系環(huán)的至少一個(gè)旁系環(huán)集入口從該節(jié)點(diǎn)的旁系環(huán)集入口表中標(biāo)識(shí)。至少一個(gè)旁系環(huán)集入口中的每一個(gè)都指示指定的旁系環(huán)的至少一個(gè)入口節(jié)點(diǎn)。消息被發(fā)送到至少一個(gè)指示的入口節(jié)點(diǎn)。
在近鄰間通信的另一實(shí)施例中,確定始發(fā)節(jié)點(diǎn)打算將消息路由到環(huán)樹內(nèi)的
目標(biāo)近鄰環(huán)中最接近給定節(jié)點(diǎn)ID的目的地節(jié)點(diǎn)。標(biāo)識(shí)已知是目標(biāo)近鄰環(huán)和該目標(biāo)近鄰環(huán)的祖先環(huán)中的至少一個(gè)的成員節(jié)點(diǎn)的一個(gè)或多個(gè)入口節(jié)點(diǎn)。消息被發(fā)送到所標(biāo)識(shí)的入口節(jié)點(diǎn)。該消息指示所標(biāo)識(shí)的入口節(jié)點(diǎn)要將該消息解析到目標(biāo)近鄰環(huán)中具有最接近所指示的目的地節(jié)點(diǎn)的節(jié)點(diǎn)ID的節(jié)點(diǎn)。
提供本概述以便以簡(jiǎn)化的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概念。該概述不旨在標(biāo)識(shí)所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。
另外的特征和優(yōu)點(diǎn)將在以下的描述中闡述,并且部分可從該描述中顯而易見,或者可以從此處的教示實(shí)踐中習(xí)得。本發(fā)明的特征和優(yōu)點(diǎn)可以通過(guò)在所附權(quán)利要求中特別指出的手段和組合來(lái)認(rèn)識(shí)并獲取。本發(fā)明的特征將從以下描述和所附權(quán)利要求書中變得完全顯而易見,或者可通過(guò)如下所述對(duì)本發(fā)明的實(shí)踐而獲知。
附圖簡(jiǎn)述
為了描述能夠獲得上述和其它優(yōu)點(diǎn)和特征的方式,將通過(guò)參考附圖中示出的各具體實(shí)施例來(lái)呈現(xiàn)對(duì)以上簡(jiǎn)述的主題的更為具體的描述。可以理解,這些附圖僅描述各典型實(shí)施例,從而不被認(rèn)為是對(duì)其范圍的限制,將通過(guò)使用附圖
用附加特征和細(xì)節(jié)來(lái)描述和說(shuō)明各實(shí)施例,附圖中
圖1示出了聯(lián)盟基礎(chǔ)結(jié)構(gòu)的一個(gè)示例。
圖2示出了幫助間接地將請(qǐng)求路由到伙伴的計(jì)算機(jī)體系結(jié)構(gòu)的示例。
圖3示出了聯(lián)盟基礎(chǔ)結(jié)構(gòu)中節(jié)點(diǎn)之間采用已排序列表和相應(yīng)的環(huán)的形式
的示例二元關(guān)系。
圖4示出了幫助鄰近路由的示例性環(huán)的環(huán)。
11圖5示出了幫助鄰近路由的示例性的、歸納了鄰近性的環(huán)的分區(qū)樹。圖5A以關(guān)于圖5的環(huán)的分區(qū)樹的各部分的附加細(xì)節(jié)示出了圖5的環(huán)的示例性的、歸納了鄰近性的分區(qū)樹。
圖6示出了用于本發(fā)明的原理的合適的操作環(huán)境。
圖7示出了考慮了鄰近性準(zhǔn)則的、用于填充節(jié)點(diǎn)路由表的方法的示例流程圖。
圖8示出了用于對(duì)聯(lián)盟基礎(chǔ)結(jié)構(gòu)的節(jié)點(diǎn)分區(qū)的方法的示例流程圖。圖9示出了用于填充節(jié)點(diǎn)路由表的方法的示例流程圖。圖IO示出了用于數(shù)值地將消息路由到目的地節(jié)點(diǎn)的方法的示例流程圖。圖11示出了用于鄰近地將消息路由到目的地節(jié)點(diǎn)的方法的示例流程圖。圖12A示出了節(jié)點(diǎn)建立現(xiàn)有聯(lián)盟內(nèi)的成員資格的示例。圖12B示出了聯(lián)盟基礎(chǔ)結(jié)構(gòu)內(nèi)的節(jié)點(diǎn)交換消息的示例。圖13示出了用于建立聯(lián)盟基礎(chǔ)結(jié)構(gòu)內(nèi)的成員資格的方法的示例流程圖。圖14示出了用于維護(hù)聯(lián)盟基礎(chǔ)結(jié)構(gòu)內(nèi)的成員資格的方法的示例流程圖。圖15示出了用于發(fā)現(xiàn)關(guān)于另一節(jié)點(diǎn)的活躍度信息的方法的示例流程圖。圖16示出了消息模型和相關(guān)的處理模型的示例。圖17示出了可在功能層和應(yīng)用層之間發(fā)生的多個(gè)活躍度交互的示例。圖18示出了形成請(qǐng)求-響應(yīng)消息交換模式的一部分的消息跨環(huán)上的節(jié)點(diǎn)路由的示例。
圖19A示出了幫助近鄰間通信的示例性的、歸納了鄰近性的環(huán)的分區(qū)樹。圖19B示出了圖19A中的示例性的、歸納了鄰近性的環(huán)的分區(qū)樹的另一視圖。
圖19C示出了圖19A中的示例性的、歸納了鄰近性的環(huán)的分區(qū)樹的一部分的分區(qū)視圖。
圖19D示出了圖19A中的示例性的、歸納了鄰近性的環(huán)的分區(qū)樹中的中間環(huán)的擴(kuò)展視圖。
圖19E示出了圖19A中的示例性的、歸納了鄰近性的環(huán)的分區(qū)樹的又一視圖。
圖19F示出了圖19A中的示例性的、歸納了鄰近性的環(huán)的分區(qū)樹的再一
12視圖。
圖19G示出了圖19F的一部分的擴(kuò)展視圖。
圖20示出了用于維護(hù)環(huán)樹中的節(jié)點(diǎn)的旁系環(huán)集的方法的示例流程圖。圖21示出了用于在環(huán)樹中發(fā)送近鄰間通信的方法的示例流程圖。圖22示出了用于在環(huán)樹中發(fā)送近鄰間通信的另一方法的示例流程圖。
詳細(xì)描述
本發(fā)明涉及用于幫助會(huì)合聯(lián)盟內(nèi)的近鄰間通信的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。在某些實(shí)施例中,維護(hù)關(guān)于節(jié)點(diǎn)的旁系環(huán)集入口表。節(jié)點(diǎn)訪問被配置成存儲(chǔ)關(guān)于該節(jié)點(diǎn)的旁系環(huán)集入口的旁系環(huán)集入口表。每一旁系環(huán)集入口被配置成指示節(jié)點(diǎn)的旁系環(huán),以及到該節(jié)點(diǎn)的旁系環(huán)的至少一個(gè)相應(yīng)的入口節(jié)點(diǎn)。發(fā)現(xiàn)來(lái)自維護(hù)涉及環(huán)樹配置的信息的可用資源的旁系環(huán)集入口表信息。旁系環(huán)集入口表基于所發(fā)現(xiàn)的旁系環(huán)集入口表信息用適當(dāng)?shù)呐韵淡h(huán)集入口狀態(tài)來(lái)更新。適當(dāng)?shù)呐韵淡h(huán)集入口狀態(tài)包括節(jié)點(diǎn)的旁系環(huán),以及到該節(jié)點(diǎn)的旁系環(huán)的至少一個(gè)相應(yīng)的入口節(jié)點(diǎn)。
在其它實(shí)施例中,在環(huán)樹中發(fā)送近鄰間通信。在近鄰間通信的一個(gè)實(shí)施例中,確定一節(jié)點(diǎn)要向節(jié)點(diǎn)的指定旁系環(huán)發(fā)送消息。該節(jié)點(diǎn)訪問被配置成存儲(chǔ)關(guān)于該節(jié)點(diǎn)的旁系環(huán)集入口的旁系環(huán)集入口表。每一旁系環(huán)集入口被配置成指示節(jié)點(diǎn)的旁系環(huán),以及到該節(jié)點(diǎn)的旁系環(huán)的相應(yīng)的至少一個(gè)入口節(jié)點(diǎn)。對(duì)于指定的旁系環(huán)的至少一個(gè)旁系環(huán)集入口從該節(jié)點(diǎn)的旁系環(huán)集入口表中標(biāo)識(shí)。至少一個(gè)旁系環(huán)集入口中的每一個(gè)都指示指定的旁系環(huán)的至少一個(gè)入口節(jié)點(diǎn)。消息被發(fā)送到至少一個(gè)指示的入口節(jié)點(diǎn)。
在近鄰間通信的另一實(shí)施例中,確定始發(fā)節(jié)點(diǎn)打算將消息路由到環(huán)樹內(nèi)的目標(biāo)近鄰環(huán)中最接近給定節(jié)點(diǎn)ID的目的地節(jié)點(diǎn)。標(biāo)識(shí)已知是目標(biāo)近鄰環(huán)和該目標(biāo)近鄰環(huán)的祖先環(huán)中的至少一個(gè)的成員節(jié)點(diǎn)的一個(gè)或多個(gè)入口節(jié)點(diǎn)。消息被發(fā)送到所標(biāo)識(shí)的入口節(jié)點(diǎn)。該消息指示所標(biāo)識(shí)的入口節(jié)點(diǎn)要將該消息解析到目標(biāo)近鄰環(huán)中具有最接近所指示的目的地節(jié)點(diǎn)的節(jié)點(diǎn)ID的節(jié)點(diǎn)。
本發(fā)明的范圍內(nèi)的實(shí)施例包括用于承載或其上儲(chǔ)存有計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的計(jì)算機(jī)可讀介質(zhì)。這類計(jì)算機(jī)可讀介質(zhì)可以是可由通用或?qū)S糜?jì)算機(jī)系統(tǒng)訪問的任何可用介質(zhì)。作為示例而非局限,這類計(jì)算機(jī)可讀介質(zhì)可包括諸如RAM、 ROM、 EEPROM、 CD-ROM或其它光盤存儲(chǔ)、磁盤存儲(chǔ)或其它磁存儲(chǔ)設(shè)備等物理存儲(chǔ)介質(zhì)、或可用來(lái)承載或儲(chǔ)存采用計(jì)算機(jī)可執(zhí)行指令、計(jì)算機(jī)可讀指令或數(shù)據(jù)結(jié)構(gòu)的形式的所期望的程序代碼裝置并可由通用或?qū)S糜?jì)算機(jī)系統(tǒng)訪問的任一介質(zhì)。
在本說(shuō)明書和所附權(quán)利要求書中,"網(wǎng)絡(luò)"被定義為允許在計(jì)算機(jī)系統(tǒng)和/或模塊(例如,硬件和/或軟件模塊)之間傳輸電子數(shù)據(jù)的一個(gè)或多個(gè)數(shù)據(jù)鏈路(可能具有不同的速度)。當(dāng)信息通過(guò)網(wǎng)絡(luò)或另一通信連接(要么是硬連線、無(wú)線,要么是硬連線或無(wú)線的組合)被傳送到或提供給計(jì)算機(jī)系統(tǒng)時(shí),該連接被適當(dāng)?shù)匾曌饔?jì)算機(jī)可讀介質(zhì)。因此,任何這樣的連接被適當(dāng)?shù)胤Q為計(jì)算機(jī)可讀介質(zhì)。以上的組合也應(yīng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍之內(nèi)。計(jì)算機(jī)可執(zhí)行指令包括例如使通用計(jì)算機(jī)系統(tǒng)或?qū)S糜?jì)算機(jī)系統(tǒng)執(zhí)行某一項(xiàng)或一組功能的指令和數(shù)據(jù)。計(jì)算機(jī)可執(zhí)行指令可以是例如二進(jìn)制代碼、諸如匯編語(yǔ)言等中間格式指令、或甚至源代碼。在某些實(shí)施例中,諸如,例如專用集成電路或門陣列等硬件模塊被優(yōu)化以實(shí)現(xiàn)本發(fā)明的原理。
在本說(shuō)明書和所附權(quán)利要求書中,"節(jié)點(diǎn)"被定義為一起工作來(lái)對(duì)電子數(shù)據(jù)執(zhí)行操作的一個(gè)或多個(gè)軟件模塊、 一個(gè)或多個(gè)硬件模塊、或其組合。例如,節(jié)點(diǎn)的定義包括個(gè)人計(jì)算機(jī)的硬件組件、以及諸如個(gè)人計(jì)算機(jī)的操作系統(tǒng)等軟件模塊。這些模塊的物理布局并不重要。節(jié)點(diǎn)可以包括經(jīng)由網(wǎng)絡(luò)耦合的一臺(tái)或多臺(tái)計(jì)算機(jī)。同樣,節(jié)點(diǎn)可以包括單個(gè)物理設(shè)備(諸如移動(dòng)電話或個(gè)人數(shù)字助理"PDA"),其中,內(nèi)部模塊(諸如存儲(chǔ)器和處理器) 一起工作來(lái)對(duì)電子數(shù)據(jù)執(zhí)行操作。此外,節(jié)點(diǎn)可以包括專用硬件,諸如,例如包括專用集成電路的路由器。
本領(lǐng)域的技術(shù)人員將理解,本發(fā)明可以在許多類型的節(jié)點(diǎn)配置的網(wǎng)絡(luò)計(jì)算環(huán)境中實(shí)踐,這些節(jié)點(diǎn)配置包括個(gè)人計(jì)算機(jī)、膝上型計(jì)算機(jī)、手持式設(shè)備、多處理器系統(tǒng)、基于微處理器的或可編程消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、移動(dòng)電話、PDA、尋呼機(jī)、路由器、網(wǎng)關(guān)、代理程序、代理服務(wù)器、防火墻、重定向器、網(wǎng)絡(luò)地址轉(zhuǎn)換器等。本發(fā)明也可以在通過(guò)網(wǎng)絡(luò)鏈接(或者通過(guò)硬連線數(shù)據(jù)鏈路、無(wú)線數(shù)據(jù)鏈路,或者通過(guò)硬連線和無(wú)線數(shù)據(jù)鏈路的組合)的本地和遠(yuǎn)程節(jié)點(diǎn)兩者都執(zhí)行任務(wù)的分布式系統(tǒng)環(huán)境中實(shí)踐。在分布式系統(tǒng)環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。聯(lián)盟體系結(jié)構(gòu)
圖1示出了聯(lián)盟基礎(chǔ)結(jié)構(gòu)100的一個(gè)示例。聯(lián)盟基礎(chǔ)結(jié)構(gòu)100包括可以形成不同類型的聯(lián)盟伙伴關(guān)系的節(jié)點(diǎn)101、 102、 103。例如,節(jié)點(diǎn)IOI、 102、 103可彼此聯(lián)盟為對(duì)等體而不需要根節(jié)點(diǎn)。節(jié)點(diǎn)101、 102和103中的每一個(gè)各自都有相應(yīng)ID 171、 182和193。
一般而言,節(jié)點(diǎn)IOI、 102、 103可利用聯(lián)盟協(xié)議來(lái)形成伙伴關(guān)系并交換信息(例如,涉及與其它節(jié)點(diǎn)的交互的狀態(tài)信息)?;锇殛P(guān)系的形成以及信息的交換便于對(duì)資源的更高效且更可靠的訪問。其它中間節(jié)點(diǎn)(未示出)可以存在于節(jié)點(diǎn)101、 102和103之間(例如,ID在171和193之間的節(jié)點(diǎn))。由此,例如在節(jié)點(diǎn)101和節(jié)點(diǎn)103之間路由的消息可穿過(guò)一個(gè)或多個(gè)其它中間節(jié)點(diǎn)。
聯(lián)盟基礎(chǔ)結(jié)構(gòu)100中的節(jié)點(diǎn)(包括其它中間節(jié)點(diǎn))可以包括相應(yīng)的會(huì)合協(xié)議棧。例如,節(jié)點(diǎn)101、 102和103分別包括相應(yīng)的會(huì)合協(xié)議棧141、 142和143。協(xié)議棧141、 142和143中的每一個(gè)包括應(yīng)用層(例如,應(yīng)用層121、 122和123)和其它較低層(例如,相應(yīng)的其它較低層131、 132和133)。會(huì)合協(xié)議棧中的每一層負(fù)責(zé)與將資源請(qǐng)求與相應(yīng)的資源會(huì)合相關(guān)的不同功能。
例如,其它較低層可包括信道層、路由層和功能層。 一般而言,信道層負(fù)責(zé)可靠地將消息(例如,使用WS-可靠消息通信(WS-ReliableMessaging)和簡(jiǎn)單對(duì)象訪問協(xié)議("SOAP"))從一個(gè)端點(diǎn)傳輸?shù)搅硪欢它c(diǎn)(例如,從節(jié)點(diǎn)101到節(jié)點(diǎn)103)。信道層還負(fù)責(zé)處理傳入和傳出的可靠消息通信首部,并維護(hù)與可靠消息通信會(huì)話相關(guān)的狀態(tài)。
一般而言,路由層負(fù)責(zé)計(jì)算向目的地的下一跳。路由層還負(fù)責(zé)處理傳入和傳出的尋址和路由消息首部并維護(hù)路由表。 一般而言,功能層負(fù)責(zé)發(fā)出并處理諸如加入和離開請(qǐng)求、查驗(yàn)、更新和其它消息等會(huì)合協(xié)議消息,以及生成對(duì)這些消息的響應(yīng)。功能層處理來(lái)自路由層的請(qǐng)求消息,并且如果有相應(yīng)的響應(yīng)消息,則使用路由層將其發(fā)回到始發(fā)節(jié)點(diǎn)。功能層還發(fā)起請(qǐng)求消息并利用路由層來(lái)傳遞請(qǐng)求消息。
一般而言,應(yīng)用層處理從功能層傳遞的非會(huì)合協(xié)議專用數(shù)據(jù)(即,應(yīng)用程序消息)。功能層可以訪問來(lái)自應(yīng)用層的應(yīng)用程序數(shù)據(jù),并且可以獲得會(huì)合協(xié) 議消息(例如,査驗(yàn)和更新)中的應(yīng)用程序數(shù)據(jù)以及將應(yīng)用程序數(shù)據(jù)置于該消 息中。S卩,功能層可使得應(yīng)用程序數(shù)據(jù)被承載在會(huì)合協(xié)議消息上,并且可使得 應(yīng)用程序數(shù)據(jù)被傳回接收會(huì)合協(xié)議節(jié)點(diǎn)中的應(yīng)用層。在某些實(shí)施例中,應(yīng)用程 序數(shù)據(jù)用于標(biāo)識(shí)資源和資源興趣。由此,應(yīng)用層可以包括處理從其它較低層接 收到的和發(fā)送到其它較低層的數(shù)據(jù)以標(biāo)識(shí)資源和資源興趣的應(yīng)用程序?qū)S眠?輯和狀態(tài)。
聯(lián)盟機(jī)制
節(jié)點(diǎn)可以使用各種不同的機(jī)制來(lái)聯(lián)盟。第一個(gè)聯(lián)盟機(jī)制包括對(duì)等節(jié)點(diǎn)將信 息轉(zhuǎn)發(fā)給所有其它對(duì)等節(jié)點(diǎn)。當(dāng)節(jié)點(diǎn)要加入一聯(lián)盟基礎(chǔ)結(jié)構(gòu)時(shí),該節(jié)點(diǎn)利用諸
如,例如WS發(fā)現(xiàn)(WS-Discovery)等廣播/多播發(fā)現(xiàn)協(xié)議來(lái)通告其存在并發(fā)出 廣播/多播尋找來(lái)檢測(cè)其它節(jié)點(diǎn)。該節(jié)點(diǎn)然后建立與已經(jīng)存在于網(wǎng)絡(luò)上的其它節(jié) 點(diǎn)的簡(jiǎn)單轉(zhuǎn)發(fā)伙伴關(guān)系,并接受與新加入的節(jié)點(diǎn)的新的伙伴關(guān)系。之后,該節(jié) 點(diǎn)只需將所有應(yīng)用程序?qū)S孟⑥D(zhuǎn)發(fā)給所有其伙伴節(jié)點(diǎn)。
第二種聯(lián)盟機(jī)制包括對(duì)等節(jié)點(diǎn)最高效地將應(yīng)用程序?qū)S孟l(fā)送到其目 的地。當(dāng)一新節(jié)點(diǎn)要加入一聯(lián)盟基礎(chǔ)結(jié)構(gòu)時(shí),該新節(jié)點(diǎn)利用諸如,例如WS發(fā) 現(xiàn)等廣播/多播發(fā)現(xiàn)協(xié)議來(lái)通告其存在并發(fā)出廣播/多播尋找來(lái)檢測(cè)作為該聯(lián)盟 基礎(chǔ)結(jié)構(gòu)的一部分的其它節(jié)點(diǎn)。在檢測(cè)到另一節(jié)點(diǎn)時(shí),該新節(jié)點(diǎn)建立與該另一 節(jié)點(diǎn)的伙伴關(guān)系。從所建立的伙伴關(guān)系中,該新節(jié)點(diǎn)獲知已經(jīng)參與聯(lián)盟基礎(chǔ)結(jié) 構(gòu)的其它節(jié)點(diǎn)的存在。它然后與這些新獲知的節(jié)點(diǎn)建立伙伴關(guān)系,并接受任何 新傳入的伙伴關(guān)系請(qǐng)求。
特定應(yīng)用程序?qū)S孟⒅械墓?jié)點(diǎn)到達(dá)/離開和興趣注冊(cè)在該聯(lián)盟基礎(chǔ)結(jié)構(gòu) 上洪泛(flood),導(dǎo)致每一節(jié)點(diǎn)都在應(yīng)用程序?qū)S孟⒅芯哂衅渌锇楣?jié)點(diǎn)和 興趣注冊(cè)的全局知識(shí)。有了這一全局知識(shí),任何節(jié)點(diǎn)可直接向已經(jīng)表達(dá)了對(duì)應(yīng) 用程序?qū)S孟⒌呐d趣的節(jié)點(diǎn)直接發(fā)送應(yīng)用程序?qū)S孟ⅰ?br>
第三種聯(lián)盟機(jī)制包括對(duì)等節(jié)點(diǎn)非直接地將所有應(yīng)用程序?qū)S孟l(fā)送到 其目的地。在該第三種機(jī)制中,節(jié)點(diǎn)被分配諸如,例如128位或160位ID等 標(biāo)識(shí)符(ID)。負(fù)責(zé)維護(hù)給定對(duì)應(yīng)用程序?qū)S孟⒌呐d趣的注冊(cè)的節(jié)點(diǎn)可被確 定為其ID最接近通過(guò)將應(yīng)用程序?qū)S孟⒌哪康牡厣矸?例如,URI)映射(例
16如,散列)到該128位或160位ID空間所獲得的ID的節(jié)點(diǎn)。
在該第三種機(jī)制中,節(jié)點(diǎn)到達(dá)和離開在整個(gè)結(jié)構(gòu)上洪泛。另一方面,對(duì)特 定應(yīng)用程序?qū)S孟⒌呐d趣的注冊(cè)被轉(zhuǎn)發(fā)給被確定為負(fù)責(zé)維護(hù)這一注冊(cè)信息 的節(jié)點(diǎn)。出于可伸縮性、負(fù)載平衡和容錯(cuò)的目的,接收對(duì)特定應(yīng)用程序?qū)S孟?息的興趣的注冊(cè)的節(jié)點(diǎn)可以在其鄰域集中可靠地洪泛該注冊(cè)信息。對(duì)于指定節(jié) 點(diǎn)的鄰域集可以被確定為其ID在該指定節(jié)點(diǎn)的ID的任一側(cè)上的預(yù)定范圍內(nèi)的 節(jié)點(diǎn)集。
類似于第二種機(jī)制,新加入的節(jié)點(diǎn)利用諸如,例如WS發(fā)現(xiàn)等廣播/多播 發(fā)現(xiàn)協(xié)議來(lái)通告其存在并發(fā)出局部廣播/多播尋找來(lái)檢測(cè)已經(jīng)是該聯(lián)盟基礎(chǔ)結(jié) 構(gòu)的一部分的節(jié)點(diǎn)。該新節(jié)點(diǎn)建立與所發(fā)現(xiàn)的節(jié)點(diǎn)的伙伴關(guān)系,并使用該伙伴 關(guān)系來(lái)獲知參與該聯(lián)盟基礎(chǔ)結(jié)構(gòu)的其它新節(jié)點(diǎn)的存在。該新節(jié)點(diǎn)然后與新發(fā)現(xiàn) 的節(jié)點(diǎn)建立進(jìn)一步的伙伴關(guān)系,并接受任何新傳入的伙伴關(guān)系請(qǐng)求。該新節(jié)點(diǎn) 接受從其所負(fù)責(zé)的伙伴傳入的對(duì)特定應(yīng)用層專用資源的興趣的注冊(cè),并且可在 其鄰域集上洪泛該注冊(cè)。由此,消息一般可經(jīng)由中間路由節(jié)點(diǎn)(例如,新加入 的節(jié)點(diǎn)與其具有伙伴關(guān)系或者伙伴節(jié)點(diǎn)知道的節(jié)點(diǎn))轉(zhuǎn)發(fā)到其最終目的地。
響應(yīng)于接收到傳入的應(yīng)用程序?qū)S孟?,該新?jié)點(diǎn)將該消息轉(zhuǎn)發(fā)給可能負(fù) 責(zé)維護(hù)關(guān)于在消息中指定的目的地的注冊(cè)信息的伙伴節(jié)點(diǎn)。由此,當(dāng)使用該第 三種機(jī)制時(shí),聯(lián)盟基礎(chǔ)結(jié)構(gòu)中的每一節(jié)點(diǎn)具有所有其它節(jié)點(diǎn)的全局知識(shí),但是 注冊(cè)信息在節(jié)點(diǎn)之間高效地分區(qū)。應(yīng)用程序?qū)S孟H經(jīng)由可能負(fù)責(zé)維護(hù)對(duì)這 些應(yīng)用程序?qū)S孟⒌呐d趣的注冊(cè)信息的伙伴節(jié)點(diǎn)來(lái)發(fā)送到其最終目的地。由 此,通過(guò)僅轉(zhuǎn)發(fā)給具有對(duì)所處理的消息的興趣的注冊(cè)信息的全局知識(shí)的伙伴節(jié) 點(diǎn)來(lái)實(shí)現(xiàn)了間接性。這與其中間接性是通過(guò)轉(zhuǎn)發(fā)給所有伙伴節(jié)點(diǎn)來(lái)實(shí)現(xiàn)的第一 種機(jī)制形成對(duì)比。
第四種聯(lián)盟機(jī)制包括對(duì)等節(jié)點(diǎn)將消息路由給其它對(duì)等節(jié)點(diǎn)。該第四種機(jī)制 與第三種機(jī)制的區(qū)別至少在于節(jié)點(diǎn)到達(dá)/離開和對(duì)特定應(yīng)用程序?qū)S孟⒌呐d 趣的注冊(cè)都被路由而不是洪泛。路由協(xié)議被設(shè)計(jì)成保證應(yīng)用程序?qū)S孟⒑捅?達(dá)對(duì)這些應(yīng)用程序?qū)S孟⒌呐d趣的注冊(cè)消息之間的會(huì)合。
圖2示出了幫助間接地將請(qǐng)求路由到伙伴的計(jì)算機(jī)體系結(jié)構(gòu)200的示例。 計(jì)算機(jī)體系結(jié)構(gòu)200描繪了可能分布在參與聯(lián)盟基礎(chǔ)結(jié)構(gòu)的多個(gè)局部發(fā)現(xiàn)范圍
17上的不同類型的計(jì)算機(jī)系統(tǒng)和設(shè)備。
工作站233可以包括已注冊(cè)PnP提供者實(shí)例。為向其伙伴告知該P(yáng)nP提 供者實(shí)例的存在,工作站233通過(guò)聯(lián)盟基礎(chǔ)結(jié)構(gòu)來(lái)路由注冊(cè)請(qǐng)求201。注冊(cè)請(qǐng) 求201最初被轉(zhuǎn)發(fā)給膝上型計(jì)算機(jī)231,后者進(jìn)而將注冊(cè)請(qǐng)求201轉(zhuǎn)發(fā)給消息 代理237,后者又進(jìn)而將注冊(cè)請(qǐng)求201轉(zhuǎn)發(fā)給消息網(wǎng)關(guān)241。消息網(wǎng)關(guān)241將 注冊(cè)信息注冊(cè)請(qǐng)求201保存在其數(shù)據(jù)庫(kù)中,并將成功消息204返回給工作站 233。
隨后,另一已注冊(cè)提供者實(shí)例,此次是運(yùn)行服務(wù)的提供者實(shí)例,在工作站 233內(nèi)變得活躍。此次,該節(jié)點(diǎn)知道消息網(wǎng)關(guān)241負(fù)責(zé)注冊(cè),并將注冊(cè)請(qǐng)求205 直接轉(zhuǎn)發(fā)給消息網(wǎng)關(guān)241。消息網(wǎng)關(guān)241將注冊(cè)信息注冊(cè)請(qǐng)求205保存在其數(shù) 據(jù)庫(kù)中,并將成功消息206返回給工作站233。
隨后,打印機(jī)236 (例如,UPnP打印機(jī))被通電,并發(fā)送通告207。服務(wù) 器234檢測(cè)到通告207,并將注冊(cè)請(qǐng)求208路由到消息代理237。消息代理237 將注冊(cè)請(qǐng)求208轉(zhuǎn)發(fā)給消息網(wǎng)關(guān)241。消息網(wǎng)關(guān)241將注冊(cè)信息注冊(cè)請(qǐng)求208 保存在其數(shù)據(jù)庫(kù)中,并將成功消息210返回給服務(wù)器234。
隨后,個(gè)人計(jì)算機(jī)242發(fā)出發(fā)現(xiàn)所有設(shè)備的査找請(qǐng)求211。由于個(gè)人計(jì)算 機(jī)242不知道將査找請(qǐng)求211轉(zhuǎn)發(fā)到何處,因此它通過(guò)工作站243來(lái)路由査找 請(qǐng)求211。由于注冊(cè)和査找請(qǐng)求被路由到同一目的地,因此路由協(xié)議本質(zhì)上保 證兩個(gè)請(qǐng)求之間的會(huì)合將導(dǎo)致工作站243將尋找請(qǐng)求211轉(zhuǎn)發(fā)給消息網(wǎng)關(guān)241 。 消息網(wǎng)關(guān)241査找其所維護(hù)的注冊(cè)信息,并將尋找請(qǐng)求211轉(zhuǎn)發(fā)給工作站233 和服務(wù)器234兩者。工作站233和服務(wù)器234將分別將響應(yīng)消息214和216發(fā) 送給個(gè)人計(jì)算機(jī)242。
該第四種機(jī)制通過(guò)將請(qǐng)求路由(而非洪泛)具有請(qǐng)求中所指定的注冊(cè)的全 局消息的節(jié)點(diǎn)(消息網(wǎng)關(guān)241)來(lái)工作。如將在以下更詳細(xì)描述的,該第四種 機(jī)制本質(zhì)上保證路由可在O(logN)個(gè)跳中實(shí)現(xiàn),其中N是參與聯(lián)盟基礎(chǔ)結(jié)構(gòu)的 節(jié)點(diǎn)數(shù)。由于該第四種機(jī)制高效地劃分了節(jié)點(diǎn)伙伴關(guān)系和注冊(cè)信息,因此它能 伸縮到非常大的網(wǎng)絡(luò),甚至因特網(wǎng)。
盡管描述了多種聯(lián)盟機(jī)制,但是本領(lǐng)域的技術(shù)人員在仔細(xì)閱讀了本說(shuō)明書 之后可以清楚其它聯(lián)盟機(jī)制也是可能的。
18聯(lián)盟中的節(jié)點(diǎn)之間的關(guān)系
因此,聯(lián)盟由在其間協(xié)作以形成其中可系統(tǒng)地且高效地散布并定位信息的 動(dòng)態(tài)且可伸縮網(wǎng)絡(luò)的一組節(jié)點(diǎn)構(gòu)成。節(jié)點(diǎn)使用自反的、反對(duì)稱的、傳遞的、總 的、且在節(jié)點(diǎn)身份域上定義的二元關(guān)系被組織為已排序列表來(lái)參與聯(lián)盟。該已 排序列表的兩端是聯(lián)接的,由此形成環(huán)。由此,該列表中的每一節(jié)點(diǎn)可將其自 身視為在該已排序列表的中間(作為使用模算術(shù)的結(jié)果)。此外,該列表被雙 重鏈接,使得任何節(jié)點(diǎn)可以在任一方向上遍歷該列表。
每一聯(lián)盟節(jié)點(diǎn)可被分配一來(lái)自0和某一固定上限之間的一組固定ID的ID (例如,由帶有重復(fù)檢測(cè)的隨機(jī)數(shù)生成器)。由此,將該固定上限的ID加1 將導(dǎo)致為0的ID (即,從鏈表的末尾移回該鏈表的開頭)。另外,定義了從 節(jié)點(diǎn)身份的值域到節(jié)點(diǎn)本身的1:1映射函數(shù)。
圖3描繪了示例鏈表304和相應(yīng)的環(huán)306。給定這一環(huán),可定義以下函數(shù) RouteNumerically(V, Msg):給定來(lái)自節(jié)點(diǎn)身份的值域的值V和消息 "Msg",將消息傳遞到其身份可使用該映射函數(shù)映射到V的節(jié)點(diǎn)X。
Neighborhood(X, S):Neighborhood (鄰域)是節(jié)點(diǎn)X的任一側(cè)上其勢(shì) 等于S的節(jié)點(diǎn)集。
當(dāng)該聯(lián)盟內(nèi)的每一節(jié)點(diǎn)具有該環(huán)的全局知識(shí)時(shí),通過(guò)直接將Msg發(fā)送到 其身份通過(guò)向V應(yīng)用該映射函數(shù)而獲得的節(jié)點(diǎn)X來(lái)實(shí)現(xiàn)RouteNumerically(V, Msg)。或者,當(dāng)節(jié)點(diǎn)具有其它節(jié)點(diǎn)的有限知識(shí)(例如,僅具有直接相鄰的節(jié)點(diǎn) 的知識(shí))時(shí),通過(guò)沿著環(huán)將消息轉(zhuǎn)發(fā)到連貫的節(jié)點(diǎn)直到其到達(dá)目的地節(jié)點(diǎn)X來(lái) 實(shí)現(xiàn)RouteNumerically(V, Msg)。
或者(且有利地),節(jié)點(diǎn)可以存儲(chǔ)關(guān)于環(huán)的足夠的知識(shí)來(lái)執(zhí)行分布式二分 搜索(而不必具有全局知識(shí)或?qū)崿F(xiàn)直接相鄰節(jié)點(diǎn)之間的路由)。環(huán)知識(shí)的量是 可配置的,使得維護(hù)環(huán)知識(shí)對(duì)于每一節(jié)點(diǎn)有足夠小的影響,但允許從減少環(huán)跳 數(shù)目中提高路由性能。
如上所述,ID可使用在自然數(shù)的足夠大的、有界的集合上定義的"〈"(小 于)關(guān)系來(lái)分配,這意味著其范圍在O和某一固定值之間(包括端點(diǎn))的一組
19有限數(shù)字上。由此,參與該聯(lián)盟的每一節(jié)點(diǎn)被分配落入o和某一適當(dāng)選擇的上
界之間(包括端點(diǎn))的自然數(shù)。范圍不必是緊密的,并且在分配給節(jié)點(diǎn)的數(shù)字 之間可以有間隙。分配給節(jié)點(diǎn)的數(shù)字用作其在環(huán)中的身份。映射函數(shù)通過(guò)將落 在兩個(gè)節(jié)點(diǎn)身份之間的數(shù)字映射到其身份在數(shù)值上更接近該數(shù)字的節(jié)點(diǎn)來(lái)解 決數(shù)字空間中的間隙。
該方法具有若干優(yōu)點(diǎn)。通過(guò)向每一節(jié)點(diǎn)分配均勻分布的數(shù)字,該環(huán)的所有 段都被均勻填充的可能性增加。此外,后繼者、前導(dǎo)者和鄰域計(jì)算可以使用模 算術(shù)來(lái)高效地完成。
在某些實(shí)施例中,聯(lián)盟節(jié)點(diǎn)被分配來(lái)自一ID空間的ID,該ID空間非常 大,以致于兩個(gè)節(jié)點(diǎn)被分配相同的ID的機(jī)率是高度不可能的(例如,當(dāng)使用 隨機(jī)數(shù)生成時(shí))。例如, 一節(jié)點(diǎn)可被分配范圍在0到b"-l的ID,其中b等于 例如8或16,而n等于例如128位或160位等效數(shù)字。因此,節(jié)點(diǎn)可被分配例 如范圍在0到164Q - 1 (或近似地1.461502E48)之間的ID。范圍0到164° - 1 將提供例如足夠數(shù)量的ID來(lái)向因特網(wǎng)上的每一節(jié)點(diǎn)分配唯一ID。
由此,聯(lián)盟中的每一節(jié)點(diǎn)可具有
ID,其是均勻分布在范圍0到b"-l中的數(shù)值;以及
由以下各項(xiàng)構(gòu)成的路由表(所有算術(shù)都以模b"完成) 后繼者節(jié)點(diǎn)(S); 前導(dǎo)者節(jié)點(diǎn)(p);
鄰域節(jié)點(diǎn)(pk,…,p1, P, S, S1,…,S1),使得
sU.id > (id + u/2), j》v/2-l,且pk.p.id < (id - u/2),且k》
V/2-1;以及
路由節(jié)點(diǎn)(r.(M), ..., r.h rb r。.,),使得 r±i = RouteNumerically(id ± bj, Msg)。 其中b是數(shù)基,n是以位數(shù)為單位的字段大小,u是鄰域范圍,v是鄰域 大小,且算術(shù)是以模b"來(lái)執(zhí)行的。為得到良好的路由效率和容錯(cuò),u和v的值 可以是u-b和v》max(log2(N), 4),其中N是物理上參與聯(lián)盟的節(jié)點(diǎn)的總數(shù)。N 可以例如在存在ID的均勻分布時(shí)從其長(zhǎng)度大于或等于b的環(huán)段上存在的節(jié)點(diǎn) 數(shù)中估算。b和n的典型值是b-8或16,且n-128位或160位等效數(shù)字。因此,路由節(jié)點(diǎn)可以形成橫跨環(huán)的對(duì)數(shù)索引。取決于節(jié)點(diǎn)在環(huán)上的位置,
例如,當(dāng)在集合id士bi (其中i-(l,2,.,.(n-l)))中的每一數(shù)字處有一現(xiàn)有節(jié) 點(diǎn)時(shí),精確的對(duì)數(shù)索引是可能的。然而,情況可以是在該集合中的每一數(shù)字處 沒有現(xiàn)有節(jié)點(diǎn)。在這些情況下,可選擇最接近idibi的節(jié)點(diǎn)作為路由節(jié)點(diǎn)。所 得的算術(shù)索引并不是精確的,并且甚至可能對(duì)集合中的某些數(shù)字缺少唯一路由節(jié)點(diǎn)。
再次參考圖3,圖3示出了聯(lián)盟基礎(chǔ)結(jié)構(gòu)中的節(jié)點(diǎn)之間采用已排序列表304 和相應(yīng)的環(huán)306的形式的二元關(guān)系的示例。已排序列表304的ID空間在范圍 0到28_1 (即255)中。艮卩,b-2且n-8。由此,圖3所示的節(jié)點(diǎn)被分配范圍 在0到255的ID。已排序列表304利用自反的、反對(duì)稱的、傳遞的、總的、 且在節(jié)點(diǎn)身份域上定義的二元關(guān)系。已排序列表304的兩端是聯(lián)接的,由此形 成環(huán)306。這使得圖3中的每一節(jié)點(diǎn)可將其自身視為在已排序列表304的中間。 已排序列表304被雙重鏈接,使得任何節(jié)點(diǎn)可以在任一方向上遍歷已排序列表 304。用于遍歷已排序列表304 (或環(huán)306)的算術(shù)以模28來(lái)執(zhí)行。由此,255 (或已排序列表304的末尾)+1=0 (或己排序列表304的開頭)。
路由表指示ID 64的后繼者是ID 76(從ID 64開始順時(shí)針的緊接著的ID)。 后繼者可以在例如新節(jié)點(diǎn)(例如,具有ID71)加入或現(xiàn)有節(jié)點(diǎn)(例如,ID 76) 離開聯(lián)盟基礎(chǔ)結(jié)構(gòu)時(shí)改變。同樣,路由表指示ID 64的前導(dǎo)者是ID 50(從ID 64 開始逆時(shí)針的緊接著的ID)。前導(dǎo)者可以在例如新節(jié)點(diǎn)(例如,具有ID59) 加入或現(xiàn)有節(jié)點(diǎn)(例如,ID 50)離開聯(lián)盟基礎(chǔ)結(jié)構(gòu)時(shí)改變。
路由表還指示對(duì)ID64的一組鄰域節(jié)點(diǎn)具有ID83、 76、 50和46。 一組鄰 居節(jié)點(diǎn)可以是在ID 64的指定范圍(即,鄰居范圍u)內(nèi)的指定數(shù)量的節(jié)點(diǎn)(即, 鄰域大小v)??赡苁褂酶鞣N不同的鄰域大小和鄰居范圍,諸如,例如V-4和 U=10來(lái)標(biāo)識(shí)鄰域節(jié)點(diǎn)集。鄰域集可以例如在節(jié)點(diǎn)加入或離開聯(lián)盟基礎(chǔ)結(jié)構(gòu)時(shí), 或在指定數(shù)量的節(jié)點(diǎn)或指定范圍改變時(shí)改變。
該路由表還指示ID64可以路由到ID為200、 2、 30、 46、 50、 64、 64、 64、 64、 76、 83、 98、 135和200的節(jié)點(diǎn)。該列表通過(guò)標(biāo)識(shí)最接近id ± 2;的集 合中的每一數(shù)字的節(jié)點(diǎn)來(lái)生成,其中i-(1,2,3,4,5,6,7)。艮卩,b-2且n-8。 例如,ID為76的節(jié)點(diǎn)可從計(jì)算對(duì)64 + 23,即72最接近的節(jié)點(diǎn)來(lái)標(biāo)識(shí)。
21節(jié)點(diǎn)可以將消息(例如,對(duì)資源訪問的請(qǐng)求)直接路由到前導(dǎo)者節(jié)點(diǎn)、后 繼者節(jié)點(diǎn)、鄰域節(jié)點(diǎn)集中的任何節(jié)點(diǎn)、或任何路由節(jié)點(diǎn)。在某些實(shí)施例中,節(jié) 點(diǎn)實(shí)現(xiàn)數(shù)值路由函數(shù)來(lái)路由消息。由此,可在節(jié)點(diǎn)X處實(shí)現(xiàn)RouteNumerically(V, Msg)來(lái)將Msg傳遞給聯(lián)盟中其ID數(shù)值上最接近V的節(jié)點(diǎn)Y,并將節(jié)點(diǎn)Y的 ID返回給節(jié)點(diǎn)X。例如,ID為64的節(jié)點(diǎn)可以實(shí)現(xiàn)RouteNumerically(243, Msg) 來(lái)使得消息被路由到ID為250的節(jié)點(diǎn)。然而,由于ID 250不是對(duì)于ID64的 路由節(jié)點(diǎn),因此ID64可將消息路由到ID2 (對(duì)243最接近的路由節(jié)點(diǎn))。ID 為2的節(jié)點(diǎn)可以進(jìn)而實(shí)現(xiàn)RouteNumerically(243,Msg)以使得消息被路由(直接 地或通過(guò)其它中間節(jié)點(diǎn))到ID為250的節(jié)點(diǎn)。由此,情況可以是 RouteNumerically函數(shù)被遞歸地調(diào)用,其中每一調(diào)用將消息路由到更接近目的 地的地方。
有利的是,本發(fā)明的其它實(shí)施例幫助基于一個(gè)或多個(gè)鄰近性類別(例如, 地理邊界、路由特性(例如,IP路由跳)、管理域、組織邊界等)的多個(gè)鄰近 性準(zhǔn)則來(lái)將環(huán)劃分成環(huán)的環(huán)或環(huán)的樹。應(yīng)當(dāng)理解,環(huán)可使用同一類型的鄰近性 準(zhǔn)則來(lái)多次劃分。例如,環(huán)可基于大陸鄰近性準(zhǔn)則和國(guó)家鄰近性準(zhǔn)則(兩者都 是地理邊界鄰近性類別)來(lái)劃分。
由于ID可在ID空間上均勻分布(隨機(jī)數(shù)生成的結(jié)果),因此循環(huán)ID空 間的任何給定段有很高的可能性包含屬于不同鄰近性類的節(jié)點(diǎn),只有這些類具 有大致相同的勢(shì)。該概率在存在足夠數(shù)量的節(jié)點(diǎn)來(lái)獲得有意義的統(tǒng)計(jì)行為時(shí)進(jìn) 一步增加。
由此,任何給定節(jié)點(diǎn)的鄰域節(jié)點(diǎn)從鄰近性的觀點(diǎn)來(lái)看通常是良好分散的。 由于所發(fā)布的應(yīng)用程序狀態(tài)可以在鄰域節(jié)點(diǎn)之間復(fù)制,因此所發(fā)布的信息從鄰 近性的觀點(diǎn)來(lái)看也是良好分散的。
圖4示出了幫助鄰近路由的環(huán)的環(huán)400。環(huán)401可被視為主或根環(huán),且包 含環(huán)402、 403和404的每一個(gè)中的所有節(jié)點(diǎn)。環(huán)402、 403和404的每一個(gè)可 包含來(lái)自環(huán)401的、基于指定的鄰近性準(zhǔn)則劃分的節(jié)點(diǎn)子集。例如,環(huán)401可 以基于地理位置來(lái)劃分,其中環(huán)402包含在北美的節(jié)點(diǎn),環(huán)403包含在歐洲的 節(jié)點(diǎn),而環(huán)404包含在亞洲的節(jié)點(diǎn)。
在包含65,536 (216)個(gè)ID的數(shù)值空間中,將消息從ID為5,345的北美節(jié)點(diǎn)路由到ID為23,345的亞洲節(jié)點(diǎn)可包括在環(huán)402內(nèi)路由消息,直到標(biāo)識(shí)了亞 洲節(jié)點(diǎn)的鄰居節(jié)點(diǎn)。該鄰居節(jié)點(diǎn)然后可將該消息路由到亞洲節(jié)點(diǎn)。由此,在北 美節(jié)點(diǎn)和亞洲節(jié)點(diǎn)之間形成了單個(gè)跳(而非多個(gè)跳)。因此,路由是以資源高
效的方式來(lái)執(zhí)行的。
圖5示出了幫助鄰近路由的示例性的、歸納了鄰近性的環(huán)的分區(qū)樹500。 如圖所示,環(huán)的分區(qū)樹500包括多個(gè)環(huán)。每一個(gè)環(huán)表示一已排序鏈表的一個(gè)分 區(qū)。每一個(gè)環(huán)包括其ID在該已排序鏈表中的多個(gè)節(jié)點(diǎn)。然而,為了清楚起見, 由于潛在節(jié)點(diǎn)的數(shù)量,未在環(huán)上明確地描繪節(jié)點(diǎn)(例如,分區(qū)樹500的ID空 間可以是b-16且n-40)。
在分區(qū)樹500內(nèi),根環(huán)501基于準(zhǔn)則571 (第一管理域邊界準(zhǔn)則)被劃分 成多個(gè)子環(huán),包括子環(huán)511、 512、 513和514。例如,DNS名稱的每一分量可 被認(rèn)為是一鄰近性準(zhǔn)則,它們之間的部分排序按照其從右到左出現(xiàn)在DNS名 稱中的次序來(lái)歸納。相應(yīng)地,子環(huán)511可基于準(zhǔn)則581 (第二管理域邊界準(zhǔn)則) 被進(jìn)一步劃分成多個(gè)子環(huán),包括子環(huán)521、 522和523。
子環(huán)522可基于準(zhǔn)則572 (地理邊界準(zhǔn)則)被進(jìn)一步劃分成多個(gè)子環(huán),包 括子環(huán)531、 532和533。基于位置的鄰近性準(zhǔn)則可以按照大陸、國(guó)家、郵政編 碼等來(lái)部分排序。郵政編碼本身是分層地組織的,這意味著它們能夠被視為進(jìn) 一步歸納了鄰近性準(zhǔn)則的部分排序的子列表。
子環(huán)531可基于準(zhǔn)則573 (第一組織邊界準(zhǔn)則)被進(jìn)一步劃分成多個(gè)子環(huán), 包括子環(huán)541、 542和543。鄰近性準(zhǔn)則的部分排序的列表可以按照一給定公司 在組織上如何結(jié)構(gòu)化(如分公司、部門和產(chǎn)品組)來(lái)歸納。相應(yīng)地,子環(huán)543 可基于準(zhǔn)則583 (第二組織邊界準(zhǔn)則)被進(jìn)一步劃分成多個(gè)子環(huán),包括子環(huán)551 和552。
在分區(qū)樹500內(nèi),每一節(jié)點(diǎn)具有單個(gè)ID,并沿著從根開始到葉的相應(yīng)分 區(qū)路徑參與環(huán)。例如,參與子環(huán)552的每一節(jié)點(diǎn)也參與子環(huán)543、 531、 522、 511和根501。路由到目的地節(jié)點(diǎn)(ID)可以通過(guò)如下實(shí)現(xiàn)RouteProximally函 數(shù)來(lái)完成
RouteProximally(V, Msg, P):給定來(lái)自節(jié)點(diǎn)身份的域的值V和消息 "Msg",按照鄰近性準(zhǔn)則P將消息傳遞到被認(rèn)為是等效的節(jié)點(diǎn)中其身份
23可被映射到V的節(jié)點(diǎn)Y。
由此,路由可以通過(guò)逐漸移向給定環(huán)內(nèi)更接近目的地節(jié)點(diǎn)的地方,直到如 從目的地節(jié)點(diǎn)位于當(dāng)前節(jié)點(diǎn)和其后繼者或前導(dǎo)者節(jié)點(diǎn)之間的條件所確定的在 該環(huán)內(nèi)的路由不能做出任何進(jìn)一步的進(jìn)展來(lái)完成。此時(shí),當(dāng)前節(jié)點(diǎn)開始經(jīng)由其 所參與的下一更大的環(huán)中其父節(jié)點(diǎn)路由。這一通過(guò)沿著分區(qū)路徑向著根環(huán)爬來(lái) 逐漸移向目的地節(jié)點(diǎn)的過(guò)程在如最初在RouteProximally調(diào)用中指定的在所請(qǐng) 求的鄰近上下文中達(dá)到最接近目的地節(jié)點(diǎn)的節(jié)點(diǎn)時(shí)終止。
路由跳可以保留在發(fā)起該請(qǐng)求的節(jié)點(diǎn)的鄰近鄰域中,直到由于目的地節(jié)點(diǎn) 位于其外部而在該鄰域中不能做出任何進(jìn)一步的進(jìn)展。此時(shí),鄰近性準(zhǔn)則被放 松以增加鄰近鄰域的大小來(lái)做出進(jìn)一步的進(jìn)展。重復(fù)該過(guò)程,直到足夠地?cái)U(kuò)展 了鄰近鄰域來(lái)包括目的地節(jié)點(diǎn)(ID)。在每一相繼的鄰近鄰域放松之后做出的 路由跳可能是在鄰近空間中與前一跳相比更大的跳躍,而在數(shù)值空間中做出相 應(yīng)的更小的跳躍。由此,僅絕對(duì)需要的數(shù)量的此類(環(huán)間)跳在到達(dá)目的地之 前做出。
情況可以是對(duì)于查找消息避免了某些跳,因?yàn)樗l(fā)布的應(yīng)用程序數(shù)據(jù)在其 在目的地節(jié)點(diǎn)的鄰域節(jié)點(diǎn)之中復(fù)制時(shí)沿著分區(qū)樹向下復(fù)制。
為實(shí)現(xiàn)鄰近路由,每一聯(lián)盟節(jié)點(diǎn)維護(hù)對(duì)其作為成員所參與的所有環(huán)中其后 繼者和前導(dǎo)者節(jié)點(diǎn)(類似于對(duì)于單個(gè)環(huán)的后繼者和前導(dǎo)者),即鄰近前導(dǎo)者、 鄰近后繼者和鄰近鄰域的引用。為了使得路由高效,節(jié)點(diǎn)還可維護(hù)對(duì)作為路由 伙伴的、最接近該環(huán)的任一半上距離呈指數(shù)地增加的其它節(jié)點(diǎn)(類似于對(duì)單個(gè) 環(huán)的路由節(jié)點(diǎn))的引用。在某些實(shí)施例中,落入一對(duì)連貫的后繼者和前導(dǎo)者節(jié) 點(diǎn)之間的路由伙伴節(jié)點(diǎn)參與由當(dāng)前節(jié)點(diǎn)和在后繼者和前導(dǎo)者節(jié)點(diǎn)對(duì)中數(shù)值上 最接近它的節(jié)點(diǎn)分別共享的同一最低環(huán)。由此,向著目的地節(jié)點(diǎn)的路由跳僅在 絕對(duì)需要來(lái)做出進(jìn)一步的進(jìn)展時(shí)才使用放松的鄰近性準(zhǔn)則來(lái)轉(zhuǎn)換(即,轉(zhuǎn)換到 更高的環(huán))。因此,消息可高效地與相應(yīng)的聯(lián)盟節(jié)點(diǎn)會(huì)合。
在某些實(shí)施例中,節(jié)點(diǎn)實(shí)現(xiàn)鄰近路由函數(shù)來(lái)基于等效性準(zhǔn)則關(guān)系路由消 息。由此給定數(shù)字V和消息"Msg",節(jié)點(diǎn)可以實(shí)現(xiàn)RouteProximally(V,Msg,P) 來(lái)按照鄰近性準(zhǔn)則P將消息傳遞到被認(rèn)為是等效的節(jié)點(diǎn)中其身份可被映射到V的節(jié)點(diǎn)Y。鄰近性準(zhǔn)則P標(biāo)識(shí)了分區(qū)樹中作為被其認(rèn)為鄰近地等效的所有節(jié)點(diǎn) 的公共祖先的最低環(huán)。它可被表示為通過(guò)將沿著從根環(huán)到由其標(biāo)識(shí)的環(huán)的路徑 找到的鄰近性準(zhǔn)則串接起來(lái)而獲得的串,由路徑分隔符'/'來(lái)分隔。例如,標(biāo) 識(shí)子環(huán) 542 的鄰近性準(zhǔn)則可被表示為 "Proximity:/.COM/Corp2/LocationA/Div2"。分區(qū)樹500中的每一個(gè)環(huán)可以例 如通過(guò)將其表示串用基于SHA的算法來(lái)散列而被分配唯一數(shù)字。如果為根環(huán) 保留了數(shù)字0,則可以推斷出RouteNumerically(V,Msg)三RouteProximally(V, Msg, 0)。
例如,子環(huán)544中的節(jié)點(diǎn)可以實(shí)現(xiàn)RouteProximally以標(biāo)識(shí)子環(huán)531中更 接近的節(jié)點(diǎn)(例如,對(duì)子環(huán)513中的節(jié)點(diǎn))。進(jìn)而,子環(huán)531可以實(shí)現(xiàn) RouteProximally以標(biāo)識(shí)子環(huán)522中更接近的節(jié)點(diǎn)。同樣,子環(huán)522可以實(shí)現(xiàn) RouteProximally以標(biāo)識(shí)子環(huán)511中更接近的節(jié)點(diǎn)。類似地,子環(huán)511可以實(shí)現(xiàn) RouteProximally以標(biāo)識(shí)環(huán)501中更接近的節(jié)點(diǎn)。由此,情況可以是 RouteProximally函數(shù)被遞歸地調(diào)用,其中每一調(diào)用將消息路由到更接近目的地 的地方。
由此,當(dāng)考慮鄰近性準(zhǔn)則時(shí),到最終目的地的路徑上的路由跳可以保留在 發(fā)起請(qǐng)求的節(jié)點(diǎn)的附近,同時(shí)在數(shù)值空間中在始發(fā)節(jié)點(diǎn)和目的地節(jié)點(diǎn)之間做出 顯著的進(jìn)展,直到或者到達(dá)目的地節(jié)點(diǎn),或者在所選鄰近性準(zhǔn)則下不能做出任 何進(jìn)一步的進(jìn)展,此時(shí)只需足夠地放松該準(zhǔn)則以向著目的地做出進(jìn)一步的進(jìn) 展。例如,鄰近性準(zhǔn)則可以對(duì)于要從環(huán)531向上路由到環(huán)522的消息足夠地放 松等等。
利用以上關(guān)于鄰近性的方法,有可能將所發(fā)布的信息限于一給定環(huán)。例如, 組織可能希望確保組織特有的信息不對(duì)其信任域之外的實(shí)體或者(l)以向其域 外部的節(jié)點(diǎn)的鄰域復(fù)制的形式隱式地,或者(2)以服務(wù)對(duì)這一信息査找請(qǐng)求的形 式顯示地可用。第一方面通過(guò)僅在與指定環(huán)內(nèi)的目標(biāo)ID相鄰的節(jié)點(diǎn)之中復(fù)制 所發(fā)布的信息來(lái)滿足。由于由節(jié)點(diǎn)發(fā)起的所有消息都通過(guò)向著根環(huán)相繼爬過(guò)它 所屬的環(huán)來(lái)路由,因此在一組織內(nèi)始發(fā)的所有查找請(qǐng)求有很大的可能性能夠定 位被限制到它的所發(fā)布的信息,由此隱式地滿足了第二方面。
并且,組織不希望節(jié)點(diǎn)自動(dòng)與其信任域外部的節(jié)點(diǎn)聯(lián)盟。這可例如在訪問
25的銷售人員將他/她的膝上型計(jì)算機(jī)連接到顧客房屋中的網(wǎng)絡(luò)時(shí)發(fā)生。理想地, 屬于該銷售人員的膝上型計(jì)算機(jī)希望定位到其歸屬域中所發(fā)布的信息和/或與 其歸屬域中從其最低的優(yōu)選鄰近環(huán)開始的節(jié)點(diǎn)聯(lián)盟。它通常不被允許與顧客的 域外部的節(jié)點(diǎn)聯(lián)盟。支持這一情形需要定位歸屬域中的種子節(jié)點(diǎn)的能力。這一 種子節(jié)點(diǎn)可用于定位在歸屬域中發(fā)布的信息,加入到歸屬聯(lián)盟、以及跨域選擇 性地導(dǎo)入和導(dǎo)出所發(fā)布的信息。種子節(jié)點(diǎn)有時(shí)被稱為消息網(wǎng)關(guān)。
在其它實(shí)施例中,實(shí)體發(fā)布對(duì)根環(huán)中的種子節(jié)點(diǎn)的引用。種子節(jié)點(diǎn)可以在 與環(huán)(作為目標(biāo)ID)相關(guān)聯(lián)的唯一數(shù)字(諸如通過(guò)散列其表示串獲得的)處
發(fā)布。種子節(jié)點(diǎn)信息可以由在到根環(huán)中的相應(yīng)目標(biāo)ID的路徑上的各個(gè)環(huán)中的 節(jié)點(diǎn)按需進(jìn)一步高速緩存。這一按需高速緩存提供了改進(jìn)的性能并減少了在相 當(dāng)頻繁地查找半靜態(tài)信息時(shí)可能發(fā)生的熱點(diǎn)。種子節(jié)點(diǎn)信息也可經(jīng)由諸如DNS 等其它手段來(lái)獲得。
為提供對(duì)于受限制的所發(fā)布信息的容錯(cuò),每一節(jié)點(diǎn)可以維護(hù)其所參與的所 有環(huán)中的一組鄰域節(jié)點(diǎn)。給定以上原因,由節(jié)點(diǎn)維護(hù)的狀態(tài)可概括如下- ID,其是均勻分布在范圍0到b"-l中的數(shù)值。
由以下各項(xiàng)構(gòu)成的路由表(所有算術(shù)都以模b"完成) o對(duì)節(jié)點(diǎn)參與的每一環(huán),如環(huán)d
■后繼者節(jié)點(diǎn)(Sd)
■前導(dǎo)者節(jié)點(diǎn)(Pd)
■ 鄰域節(jié)點(diǎn)(Pkd,…,Pid, Pd, Sd, sld,…,Sjd),使得Sjd.Sd.id > (id + u/2), j 2 v/2-l, pkd.pd.id < (id —u/2),且k^v/2-l。 o路由節(jié)點(diǎn)(r.(n.D,…,r小rb…,r^),使得r±i = RouteProximally(id ± bj, updateMsg, d),使得適當(dāng)時(shí)sd ^ id +sd+1或pd+1 S id誦b1 SPd。
其中b是數(shù)基,n是以位數(shù)為單位的字段大小,u是鄰域范圍,且v是鄰
域大小。
注意,由環(huán)"d"中的給定節(jié)點(diǎn)維護(hù)的鄰域節(jié)點(diǎn)的子集再次可作為鄰域節(jié) 點(diǎn)出現(xiàn)在給定節(jié)點(diǎn)也參與的子環(huán)"d+l"中。由此,可以得出由給定節(jié)點(diǎn)跨其所參與的所有D個(gè)環(huán)維護(hù)的鄰域節(jié)點(diǎn)的總數(shù)的上限為D*maX(u,V)/2。這考慮了僅保持對(duì)給定節(jié)點(diǎn)的一個(gè)引用,并且最壞情況的上限是針對(duì)平衡樹的。
應(yīng)當(dāng)注意,當(dāng)環(huán)被劃分成多個(gè)相應(yīng)的兄弟子環(huán)時(shí),例如通過(guò)別名化來(lái)準(zhǔn)許指定節(jié)點(diǎn)同時(shí)參與多個(gè)相應(yīng)兄弟子環(huán)中多于一個(gè)子環(huán)。別名化可以被實(shí)現(xiàn)來(lái)將例如來(lái)自不同子環(huán)的不同狀態(tài)與指定節(jié)點(diǎn)相關(guān)聯(lián)。由此,盡管對(duì)給定節(jié)點(diǎn)的別名具有相同的ID,但是每一別名可以具有與其相關(guān)聯(lián)的完全不同的狀態(tài)。別名化允許指定節(jié)點(diǎn)參與具有完全不同的鄰近性準(zhǔn)則的多個(gè)環(huán),這些完全不同的鄰近性準(zhǔn)則不必是更具體的鄰近性準(zhǔn)則的共同的祖先。即,指定節(jié)點(diǎn)可以參與鄰近性樹的多個(gè)分支。
例如,雙NIC (有線和無(wú)線)膝上型計(jì)算機(jī)可被認(rèn)為在鄰近性上等效于共享與該膝上型計(jì)算機(jī)相同的LAN段的兩個(gè)其它無(wú)線和有線節(jié)點(diǎn)。但是,這兩個(gè)不同的鄰近性準(zhǔn)則可被建模為僅在應(yīng)用了諸如,例如基于組織成員關(guān)系的不同的更高優(yōu)先級(jí)的鄰近性準(zhǔn)則之后才適用。由于該膝上型計(jì)算機(jī)屬于相同的組織,因此兩個(gè)子環(huán)中帶別名的節(jié)點(diǎn)表示1)有線LAN段中的成員資格,以及2)無(wú)線LAN段中的成員資格合并成表示該膝上型計(jì)算機(jī)所屬的組織的環(huán)中的單個(gè)節(jié)點(diǎn)。應(yīng)當(dāng)理解,RouteProximally如所預(yù)期的那樣工作,而沒有對(duì)別名化的存在有任何修改。
每一鄰近環(huán)可根據(jù)(可能不同的)環(huán)參數(shù)來(lái)配置。環(huán)參數(shù)可用于定義鄰域(例如,環(huán)參數(shù)可表示鄰域范圍、鄰域大小、用于查驗(yàn)和離開消息的查驗(yàn)消息和離開消息定時(shí)和分發(fā)模式)、指示特定的聯(lián)盟機(jī)制(例如,從上述先前描述的第一到第四種聯(lián)盟機(jī)制中,或從其它聯(lián)盟機(jī)制中)、或定義同一鄰近環(huán)中的路由伙伴之間的通信細(xì)節(jié)。某些環(huán)參數(shù)可能較概括,適用于多個(gè)不同的聯(lián)盟機(jī)制,而其它環(huán)參數(shù)更具體,且適用于特定類型的聯(lián)盟機(jī)制。
用于配置較高級(jí)鄰近環(huán)的環(huán)參數(shù)在某些實(shí)施例中可以由較低級(jí)鄰近環(huán)繼承。例如,情況可以是環(huán)543繼承環(huán)531的某些環(huán)參數(shù)(后者進(jìn)而從環(huán)522繼承,等等)。由此,與環(huán)531相關(guān)聯(lián)的鄰域大小和鄰域范圍也與環(huán)541相關(guān)聯(lián)。
然而,所繼承的環(huán)參數(shù)可以被更改,和/或鄰近環(huán)可以根據(jù)不同的環(huán)參數(shù)來(lái)個(gè)別地配置。例如,情況可以是環(huán)511是用于包含大量節(jié)點(diǎn)的管理域的,且因此上述第四種聯(lián)盟機(jī)制對(duì)環(huán)511更適當(dāng)。另一方面,情況可以是環(huán)521是用
27于具有相對(duì)較小數(shù)量的節(jié)點(diǎn)的小型企業(yè)的,且因此上述第二種聯(lián)盟機(jī)制對(duì)環(huán)
521更適當(dāng)。由此,與環(huán)521相關(guān)聯(lián)的環(huán)參數(shù)可以被設(shè)為(或?qū)⒗^承的參數(shù)改為)與同環(huán)511相關(guān)聯(lián)的環(huán)參數(shù)不同的值。例如,指示特定類型的聯(lián)盟機(jī)制的環(huán)參數(shù)可以在環(huán)511和521之間不同。類似地,定義鄰域的參數(shù)可以在環(huán)511和521之間不同。此外,環(huán)521可以根據(jù)對(duì)上述第二種聯(lián)盟機(jī)制專用的特定參數(shù)來(lái)配置,而環(huán)511根據(jù)對(duì)上述第四種聯(lián)盟機(jī)制專用的特定參數(shù)來(lái)配置。
因此,鄰近環(huán)可以基于鄰近環(huán)中的節(jié)點(diǎn)的特性(例如數(shù)量、所包括的資源等)來(lái)靈活地配置。例如,管理員可以使用配置過(guò)程(例如,通過(guò)用戶界面)為鄰近環(huán)選擇環(huán)參數(shù)。配置過(guò)程可以幫助配置鄰近環(huán)之間的繼承關(guān)系,以及配置個(gè)別鄰近環(huán),以便諸如,例如覆蓋以其它方式繼承的環(huán)參數(shù)。
圖8示出了用于對(duì)聯(lián)盟基礎(chǔ)結(jié)構(gòu)的節(jié)點(diǎn)分區(qū)的方法800的示例流程圖。方法800將參考圖5中的分區(qū)樹500的環(huán)來(lái)描述。方法800包括訪問包含已被分配給聯(lián)盟基礎(chǔ)結(jié)構(gòu)中的節(jié)點(diǎn)的節(jié)點(diǎn)ID的已排序鏈表的動(dòng)作(動(dòng)作801)。例如,可訪問由環(huán)501表示的已排序鏈表。已排序鏈表的節(jié)點(diǎn)ID (環(huán)501上所描繪的節(jié)點(diǎn))可以表示聯(lián)盟基礎(chǔ)結(jié)構(gòu)(例如,聯(lián)盟基礎(chǔ)結(jié)構(gòu)100)中的節(jié)點(diǎn)。
方法800包括訪問表示用于對(duì)已排序鏈表分區(qū)的多個(gè)不同鄰近性準(zhǔn)則的鄰近性類別的動(dòng)作(動(dòng)作802)。例如,可訪問表示域邊界561、地理邊界562、以及組織邊界563的鄰近性準(zhǔn)則。然而,在所訪問的鄰近性準(zhǔn)則中也可以表示其它鄰近性準(zhǔn)則,諸如信任域邊界。鄰近性類別可以包括先前創(chuàng)建的鄰近性準(zhǔn)則的部分排序的列表。環(huán)可以基于鄰近性準(zhǔn)則的部分排序的列表來(lái)劃分。
方法800包括基于第一鄰近性準(zhǔn)則將己排序鏈表劃分成一個(gè)或多個(gè)第一子列表的動(dòng)作(動(dòng)作803),其中一個(gè)或多個(gè)第一子列表中的每一個(gè)都包含來(lái)自已排序鏈表的節(jié)點(diǎn)ID的至少一個(gè)子集。例如,環(huán)501可以基于準(zhǔn)則571被劃分成子環(huán)511、 512、 513和514。子環(huán)511、 512、 513和514中的每一個(gè)可以包含來(lái)自環(huán)501的節(jié)點(diǎn)ID的不同子集。
方法800包括基于第二鄰近性準(zhǔn)則將選自一個(gè)或多個(gè)第一子列表的第一子列表劃分成一個(gè)或多個(gè)第二子列表的動(dòng)作(動(dòng)作804),其中一個(gè)或多個(gè)第二子列表的每一個(gè)都包含第一子列表中所包含的節(jié)點(diǎn)ID的至少一個(gè)子集。例如,子環(huán)511可以基于準(zhǔn)則581被劃分成子環(huán)521、 522和523。子環(huán)521、 522
28和523中的每一個(gè)可以包含來(lái)自子環(huán)511的節(jié)點(diǎn)ID的不同子集。
圖9示出了用于填充節(jié)點(diǎn)路由表的方法900的示例流程圖。方法900將參考圖3中的已排序鏈表304和環(huán)306來(lái)描述。方法卯0包括將前導(dǎo)者節(jié)點(diǎn)插入到路由表中的動(dòng)作(動(dòng)作901),該前導(dǎo)者節(jié)點(diǎn)在已排序鏈表的第一方向中相對(duì)于當(dāng)前節(jié)點(diǎn)在當(dāng)前節(jié)點(diǎn)之前。例如,ID為50的節(jié)點(diǎn)可作為ID為64的節(jié)點(diǎn)(當(dāng)前節(jié)點(diǎn))的前導(dǎo)者被插入到路由表中。在順時(shí)針方向321上移動(dòng)(從已排序鏈表304的A端向著已排序鏈表304的B端),ID為50的節(jié)點(diǎn)在ID為64的節(jié)點(diǎn)之前。插入前導(dǎo)者節(jié)點(diǎn)可以在當(dāng)前節(jié)點(diǎn)和前導(dǎo)者節(jié)點(diǎn)之間建立對(duì)稱伙伴關(guān)系,使得當(dāng)前節(jié)點(diǎn)是前導(dǎo)者節(jié)點(diǎn)的伙伴,而前導(dǎo)者節(jié)點(diǎn)是當(dāng)前節(jié)點(diǎn)的伙伴。
方法900包括將后繼者節(jié)點(diǎn)插入到路由表中的動(dòng)作(動(dòng)作902),該后繼者節(jié)點(diǎn)在己排序鏈表的第一方向中相對(duì)于當(dāng)前節(jié)點(diǎn)在當(dāng)前節(jié)點(diǎn)之后。例如,ID為76的節(jié)點(diǎn)可作為ID為64的節(jié)點(diǎn)(當(dāng)前節(jié)點(diǎn))的后繼者被插入到路由表中。在逆時(shí)針方向322上移動(dòng),ID為76的節(jié)點(diǎn)在ID為64的節(jié)點(diǎn)之后。插入后繼者節(jié)點(diǎn)可以在當(dāng)前節(jié)點(diǎn)和后繼者節(jié)點(diǎn)之間建立對(duì)稱伙伴關(guān)系,使得當(dāng)前節(jié)點(diǎn)是后繼者節(jié)點(diǎn)的伙伴,而后繼者節(jié)點(diǎn)是當(dāng)前節(jié)點(diǎn)的伙伴。
方法900包括將適當(dāng)?shù)泥徲蚬?jié)點(diǎn)插入到路由表中的動(dòng)作(動(dòng)作卯3),該鄰域節(jié)點(diǎn)基于鄰域范圍和鄰域大小在第一方向和第二相反方向兩個(gè)方向上從已排序鏈表中標(biāo)識(shí)。例如,ID為83、 76、 50和46的節(jié)點(diǎn)可作為ID為64的節(jié)點(diǎn)(當(dāng)前節(jié)點(diǎn))的鄰域節(jié)點(diǎn)被插入到路由表中?;卩徲蚍秶?0和鄰域大小4,可在順時(shí)針方向321上標(biāo)識(shí)ID為83和76的節(jié)點(diǎn),并在逆時(shí)針方向322上(從已排序鏈表304的B端移向已排序鏈表304的A端)標(biāo)識(shí)ID為50和46的節(jié)點(diǎn)。情況可以是在某些實(shí)施例中沒有標(biāo)識(shí)適當(dāng)?shù)泥徲蚬?jié)點(diǎn)。插入鄰域節(jié)點(diǎn)可以在當(dāng)前節(jié)點(diǎn)和鄰域節(jié)點(diǎn)之間建立對(duì)稱伙伴關(guān)系,使得當(dāng)前節(jié)點(diǎn)是鄰域節(jié)點(diǎn)的伙伴,而鄰域節(jié)點(diǎn)是當(dāng)前節(jié)點(diǎn)的伙伴。
方法900包括將適當(dāng)?shù)穆酚晒?jié)點(diǎn)插入到路由表中的動(dòng)作(動(dòng)作904),該路由節(jié)點(diǎn)基于聯(lián)盟基礎(chǔ)結(jié)構(gòu)的數(shù)基和ID空間的字段大小在第一和第二兩個(gè)方向上從已排序鏈表中標(biāo)識(shí),該路由節(jié)點(diǎn)表示在第一和第二兩個(gè)方向上該已排序鏈表的對(duì)數(shù)索引。例如,ID為200、 2、 30、 46、 50、 64、 64、 64、 64、 76、83、 98、 135和200的節(jié)點(diǎn)可作為ID為64的節(jié)點(diǎn)的路由節(jié)點(diǎn)被插入到路由表中?;跀?shù)基2和字段大小8,可在方向321上標(biāo)識(shí)ID為64、 64、 76、 83、98、 135和200的節(jié)點(diǎn),并在方向322上標(biāo)識(shí)ID為64、 64、 50、 46、 30、 2
和200的節(jié)點(diǎn)。如在環(huán)306內(nèi)描繪的,路由節(jié)點(diǎn)表示順時(shí)針方向321和逆時(shí)針方向322兩個(gè)方向上已排序鏈表304的對(duì)數(shù)索引。插入路由節(jié)點(diǎn)可以在當(dāng)前節(jié)點(diǎn)和路由節(jié)點(diǎn)之間建立對(duì)稱伙伴關(guān)系,使得當(dāng)前節(jié)點(diǎn)是路由節(jié)點(diǎn)的伙伴,而路由節(jié)點(diǎn)是當(dāng)前節(jié)點(diǎn)的伙伴。
圖7示出了考慮了鄰近性準(zhǔn)則的、用于填充節(jié)點(diǎn)路由表的方法700的流程圖。方法700將參考圖5的環(huán)來(lái)描述。方法700包括將關(guān)于當(dāng)前節(jié)點(diǎn)所參與的每一分層地劃分的路由環(huán)的前導(dǎo)者節(jié)點(diǎn)插入到路由表中的動(dòng)作(動(dòng)作701)。每一前導(dǎo)者節(jié)點(diǎn)在當(dāng)前節(jié)點(diǎn)所參與的每一分層地劃分的路由環(huán)中在第一方向(例如,順時(shí)針)上在當(dāng)前節(jié)點(diǎn)之前。分層地劃分的路由環(huán)根據(jù)相應(yīng)的鄰近性準(zhǔn)則來(lái)劃分,并且至少包含雙向鏈表的子集(可能是整個(gè)雙向鏈表)。例如,情況可以是指定節(jié)點(diǎn)參與根環(huán)501以及子環(huán)511、 522、 523、 531和542。由此,從環(huán)501和子環(huán)511、 522、 523、 531和542的每一個(gè)中為指定節(jié)點(diǎn)選擇一前導(dǎo)者節(jié)點(diǎn)。
方法700包括將關(guān)于當(dāng)前節(jié)點(diǎn)所參與的每一分層地劃分的路由環(huán)的后繼者節(jié)點(diǎn)插入到路由表中的動(dòng)作(動(dòng)作702)。每一后繼者節(jié)點(diǎn)在當(dāng)前節(jié)點(diǎn)所參與的每一分層地劃分的路由環(huán)中在第一方向上在當(dāng)前節(jié)點(diǎn)之后。例如,從環(huán)501和子環(huán)511、 522、 523、 531和542的每一個(gè)中為指定節(jié)點(diǎn)選擇一后繼者節(jié)點(diǎn)。
方法700包括將關(guān)于當(dāng)前節(jié)點(diǎn)所參與的每一分層地劃分的路由環(huán)的適當(dāng)?shù)泥徲蚬?jié)點(diǎn)插入到路由表中的動(dòng)作(動(dòng)作703)。鄰域節(jié)點(diǎn)可以基于鄰域范圍和鄰域大小從當(dāng)前節(jié)點(diǎn)所參與的分層地劃分的路由環(huán)中在第一方向(例如,順時(shí)針)和第二相反方向(例如,逆時(shí)針)兩個(gè)方向上標(biāo)識(shí)。例如,從環(huán)501和子環(huán)511、 522、 523、 531和542的每一個(gè)中為指定節(jié)點(diǎn)標(biāo)識(shí)鄰域節(jié)點(diǎn)。
方法700包括將關(guān)于當(dāng)前節(jié)點(diǎn)所參與的分層地劃分的路由環(huán)的適當(dāng)?shù)穆酚晒?jié)點(diǎn)插入到路由表中的動(dòng)作(動(dòng)作704)。例如,從環(huán)501和子環(huán)511、 522、523、 531和542的每一個(gè)中為指定節(jié)點(diǎn)標(biāo)識(shí)路由節(jié)點(diǎn)。
在某些實(shí)施例中,對(duì)節(jié)點(diǎn)Y所參與的除了葉環(huán)(或在利用別名化的實(shí)施例中的多個(gè)葉環(huán))之外的每一鄰近環(huán)d插入適當(dāng)?shù)穆酚晒?jié)點(diǎn)。適當(dāng)?shù)穆酚晒?jié)點(diǎn)
30可以基于以下表達(dá)式來(lái)插入
如果Y.Sd.id< Y.id + b、 Y.Sd+,.id為真,則使用環(huán)d;或者
如果Y.pd.id < Y.id - bj < Y.pd+1.id為真,則使用環(huán)d。
如果在前一步中未標(biāo)識(shí)環(huán),則使用葉(例如,環(huán)501)環(huán)作為環(huán)d?,F(xiàn)在,環(huán)d是節(jié)點(diǎn)Y應(yīng)在其中查找最接近z的路由伙伴的鄰近環(huán)。
圖IO示出了用于將消息向著目的地節(jié)點(diǎn)路由的方法IOOO的示例流程圖。方法1000將參考圖3中的已排序鏈表304和環(huán)306來(lái)描述。方法1000包括接收節(jié)點(diǎn)接收消息以及指示目的地的數(shù)字的動(dòng)作(動(dòng)作1001)。例如,ID為64的節(jié)點(diǎn)可接收指示目的地212的消息。
方法1000包括確定接收節(jié)點(diǎn)是數(shù)值上比相應(yīng)的前導(dǎo)者節(jié)點(diǎn)離目的地更遠(yuǎn)和數(shù)值上比相應(yīng)的后繼者節(jié)點(diǎn)離目的地更遠(yuǎn)中的至少一種的動(dòng)作(動(dòng)作1002)。例如,在方向322上,ID 64比ID50離目的地212更遠(yuǎn),而在方向321上,ID64比ID 76離目的地212更遠(yuǎn)。方法1000包括確定目的地不在對(duì)應(yīng)于接收節(jié)點(diǎn)的鄰域節(jié)點(diǎn)集內(nèi)的動(dòng)作(動(dòng)作1003)。例如,ID為64的節(jié)點(diǎn)可確定目的地212不在鄰域集83、 76、 50和46內(nèi)。
方法IOOO包括從對(duì)應(yīng)于接收節(jié)點(diǎn)的路由表中標(biāo)識(shí)中間節(jié)點(diǎn)的動(dòng)作(動(dòng)作1004),該中間節(jié)點(diǎn)數(shù)值上比相應(yīng)的路由表中的其它路由節(jié)點(diǎn)離目的地更近。例如,ID為64的節(jié)點(diǎn)可標(biāo)識(shí)ID為200的路由節(jié)點(diǎn)在數(shù)值上比其它路由節(jié)點(diǎn)離目的地212更近。方法1000包括將消息發(fā)送到中間節(jié)點(diǎn)的動(dòng)作(動(dòng)作1005)。例如,ID為64的節(jié)點(diǎn)可將消息發(fā)送到ID為200的節(jié)點(diǎn)。
圖11示出了用于基于鄰近性準(zhǔn)則將消息向著目的地節(jié)點(diǎn)路由的方法1100的示例流程圖。方法1100將參考圖4和圖5的環(huán)來(lái)描述。方法1100包括接收節(jié)點(diǎn)接收消息以及指示目的地和鄰近性準(zhǔn)則的數(shù)字的動(dòng)作(動(dòng)作1101)。鄰近性準(zhǔn)則定義了一個(gè)或多個(gè)節(jié)點(diǎn)類。接收節(jié)點(diǎn)作為基于鄰近性準(zhǔn)則從一個(gè)或多個(gè)節(jié)點(diǎn)類所選的當(dāng)前節(jié)點(diǎn)類的一部分接收消息。例如,ID為172的節(jié)點(diǎn)可接收指示目的地201的消息以及指示目的地節(jié)點(diǎn)是由環(huán)401所表示的類的一部分的鄰近性準(zhǔn)則。ID為172的節(jié)點(diǎn)可以接收作為環(huán)404的一部分的消息。
方法IIOO包括確定在所選節(jié)點(diǎn)類的節(jié)點(diǎn)中,接收節(jié)點(diǎn)是數(shù)值上比相應(yīng)的前導(dǎo)者節(jié)點(diǎn)離目的地更遠(yuǎn)和數(shù)值上比相應(yīng)的后繼者節(jié)點(diǎn)離目的地更遠(yuǎn)中的至少一種的動(dòng)作(動(dòng)作1102)。例如,在環(huán)404內(nèi),ID為172的節(jié)點(diǎn)在順時(shí)針方向上比ID為174的節(jié)點(diǎn)離目的地201更遠(yuǎn),且在逆時(shí)針方向上比ID為153的節(jié)點(diǎn)離目的地201更遠(yuǎn)。
方法1100包括確定對(duì)由鄰近性準(zhǔn)則定義的一個(gè)或多個(gè)節(jié)點(diǎn)類的任一個(gè),目的地不在接收節(jié)點(diǎn)的鄰域節(jié)點(diǎn)集內(nèi)的動(dòng)作(動(dòng)作1103)。例如,ID為172的節(jié)點(diǎn)可確定目的地201不在環(huán)404或環(huán)401中相應(yīng)的鄰域集內(nèi)。
方法1100包括從接收節(jié)點(diǎn)的路由表中標(biāo)識(shí)中間節(jié)點(diǎn)的動(dòng)作(動(dòng)作1104),該中間節(jié)點(diǎn)數(shù)值上比路由表中的其它路由節(jié)點(diǎn)離目的地更近。例如,ID為172的節(jié)點(diǎn)可標(biāo)識(shí)ID為194的節(jié)點(diǎn)在數(shù)值上比環(huán)404中的其它路由節(jié)點(diǎn)離目的地201更近。方法1100包括將消息發(fā)送到中間節(jié)點(diǎn)的動(dòng)作(動(dòng)作1105)。例如,ID為172的節(jié)點(diǎn)可將所接收到的消息發(fā)送到ID為194的節(jié)點(diǎn)。ID為172的節(jié)點(diǎn)可將所接收到的消息發(fā)送到ID為194的節(jié)點(diǎn),以遵循先前定義的鄰近性準(zhǔn)則的部分排序的列表。
節(jié)點(diǎn)194可在環(huán)404內(nèi)盡可能地接近目的地201。由此,可適度足夠地放松鄰近性以允許在下一分支中在環(huán)401內(nèi)向目的地進(jìn)一步路由。g卩,路由從環(huán)404轉(zhuǎn)換到環(huán)401,因?yàn)樵诃h(huán)404上不能做出向著目的地的任何進(jìn)一步進(jìn)展?;蛘?,情況可以是ID為201的節(jié)點(diǎn)在環(huán)401中ID為194的節(jié)點(diǎn)的鄰域內(nèi),導(dǎo)致沒有進(jìn)一步的路由。由此,在某些實(shí)施例中,放松鄰近性準(zhǔn)則以到達(dá)下一更高的環(huán)足以引起進(jìn)一步的路由。
然而,在其它實(shí)施例中,導(dǎo)致轉(zhuǎn)換到下一更高的環(huán)的鄰近性準(zhǔn)則的增量放松繼續(xù)直到能發(fā)生進(jìn)一步的路由(或直到遇到根環(huán))。即,在可做出進(jìn)一步的路由進(jìn)展之前發(fā)生向更高環(huán)的多個(gè)轉(zhuǎn)換。例如,現(xiàn)在參考圖5,當(dāng)在環(huán)531上不能做出進(jìn)一步路由進(jìn)展時(shí),可足夠地放松鄰近性準(zhǔn)則以轉(zhuǎn)換到環(huán)5U或甚至轉(zhuǎn)換到根環(huán)501。
節(jié)點(diǎn)階段
參與聯(lián)盟基礎(chǔ)結(jié)構(gòu)的節(jié)點(diǎn)可以在不同的操作階段中操作。對(duì)于節(jié)點(diǎn)的有效階段值可被定義為一有序集的成員。例如,{節(jié)點(diǎn)Id).(實(shí)例ID).(階段值[階段狀態(tài)值:插入,同步,路由,操作].[階段.未知指示:傳輸時(shí)已知的階段,傳輸時(shí)未知的階段]}定義了表示聯(lián)盟基礎(chǔ)結(jié)構(gòu)內(nèi)的給定節(jié)點(diǎn)的階段空間的一種可能的有序
32集。節(jié)點(diǎn)實(shí)例可以按序轉(zhuǎn)換(或前進(jìn))通過(guò)從插入到同步到路由到操作的節(jié)點(diǎn) 階段狀態(tài)。此外,在某些實(shí)施例中,節(jié)點(diǎn)實(shí)例可被配置成使得防止節(jié)點(diǎn)實(shí)例轉(zhuǎn) 換回先前的節(jié)點(diǎn)階段狀態(tài)。在某些實(shí)施例中,在每次節(jié)點(diǎn)上升時(shí),節(jié)點(diǎn)將其實(shí)
例ID前進(jìn)。
例如,可防止節(jié)點(diǎn)實(shí)例從路由轉(zhuǎn)換回同步(或轉(zhuǎn)換回插入),等等。因此, 在某些實(shí)施例中,當(dāng)已知給定節(jié)點(diǎn)實(shí)例(例如,由(節(jié)點(diǎn)Id,實(shí)例Id)標(biāo)識(shí))前進(jìn) 到特定的節(jié)點(diǎn)階段狀態(tài)(例如,操作),則也已知該給定節(jié)點(diǎn)實(shí)例不可能(且 在某些實(shí)施例中不會(huì))回退到先前的節(jié)點(diǎn)階段狀態(tài)(例如,回到路由、同步或 插入)。由此,在特定節(jié)點(diǎn)階段狀態(tài)之前的節(jié)點(diǎn)階段中的任何節(jié)點(diǎn)實(shí)例很有可 能是該節(jié)點(diǎn)的新(且前面的)實(shí)例。
在某些實(shí)施例中,將階段信息和相應(yīng)的實(shí)例W (當(dāng)節(jié)點(diǎn)上升時(shí)前進(jìn)) 一起 傳輸。由此,有可能確定對(duì)于同一實(shí)例的較小的節(jié)點(diǎn)階段狀態(tài)較舊。此外,當(dāng) 已知一較新的節(jié)點(diǎn)實(shí)例(在任何階段狀態(tài)值)時(shí),關(guān)于較舊實(shí)例的任何信息被 認(rèn)為是過(guò)時(shí)的。
節(jié)點(diǎn)經(jīng)??梢灾匦乱龑?dǎo)或者丟失與彼此的通信,諸如,例如在首次啟動(dòng)時(shí)、 通過(guò)優(yōu)雅離開、或作為異常終止(崩潰)的結(jié)果。由此,任何節(jié)點(diǎn)階段狀態(tài)中 的節(jié)點(diǎn)有可能重新引導(dǎo)或丟失與其它節(jié)點(diǎn)的通信。例如,崩潰可導(dǎo)致路由階段 狀態(tài)中的節(jié)點(diǎn)重新引導(dǎo)。在重新引導(dǎo)或丟失通信期間,可能沒有方法來(lái)確定一 節(jié)點(diǎn)在什么節(jié)點(diǎn)階段狀態(tài)。因此,當(dāng)一節(jié)點(diǎn)正在重新引導(dǎo)或丟失與節(jié)點(diǎn)的通信 時(shí),可設(shè)置[階段.未知指示]來(lái)指示該節(jié)點(diǎn)的階段狀態(tài)當(dāng)前是未知的。然而,可 維護(hù)任何先前表達(dá)的和/或檢測(cè)到的關(guān)于該節(jié)點(diǎn)的階段狀態(tài)且該狀態(tài)不會(huì)丟失。
可使用[階段.未知指示]來(lái)指示在發(fā)送階段狀態(tài)值時(shí)階段狀態(tài)是否已知(例 如,未設(shè)置階段.未知的階段值),或者階段狀態(tài)是否是先前表達(dá)的階段狀態(tài)且 該階段狀態(tài)在發(fā)送該階段狀態(tài)時(shí)不是已知的(例如,設(shè)置了階段.未知的階段 值)。由此,節(jié)點(diǎn)的階段(其階段值)可以使用階段狀態(tài)值和階段.未知指示兩 者來(lái)表示。
加入?yún)f(xié)議
有時(shí),節(jié)點(diǎn)可以加入和離開現(xiàn)有聯(lián)盟。節(jié)點(diǎn)可以實(shí)現(xiàn)用于加入和離開聯(lián)盟 的適當(dāng)協(xié)議。例如,節(jié)點(diǎn)可以實(shí)現(xiàn)Join()函數(shù)以成為現(xiàn)有聯(lián)盟的一部分。實(shí)現(xiàn)
33Join()函數(shù)的節(jié)點(diǎn)在到達(dá)最終的操作階段狀態(tài)之前可以轉(zhuǎn)換通過(guò)三個(gè)有序階段
狀態(tài)插入階段狀態(tài)、同步階段歡態(tài)以及ii由階段狀態(tài)。在其它實(shí)施例中,這
些特定的有序階段狀態(tài)可能不存在,而可以定義其它階段狀態(tài)。圖12A示出了 節(jié)點(diǎn)建立聯(lián)盟基礎(chǔ)結(jié)構(gòu)內(nèi)的成員資格的示例。圖12B示出了聯(lián)盟基礎(chǔ)結(jié)構(gòu)內(nèi)的 節(jié)點(diǎn)交換消息的示例。
插入階段節(jié)點(diǎn)Y通過(guò)發(fā)出加入消息來(lái)進(jìn)入該階段狀態(tài),該加入消息至 少包括其節(jié)點(diǎn)ID并指示對(duì)聯(lián)盟的加入動(dòng)作。加入消息可以是由新加入的節(jié)點(diǎn) (節(jié)點(diǎn)Y)在將其目的地特性設(shè)為新加入的節(jié)點(diǎn)的身份的情況下發(fā)送的路由的 消息。在該階段狀態(tài)中,新加入的節(jié)點(diǎn)被插入在聯(lián)盟中其前導(dǎo)者和后繼者節(jié)點(diǎn) 之間。插入階段狀態(tài)可以根據(jù)以下算法來(lái)實(shí)現(xiàn)(所有算術(shù)都以模b"來(lái)執(zhí)行)
IP1. Y標(biāo)識(shí)已經(jīng)是加入節(jié)點(diǎn)希望從中參與聯(lián)盟的最低環(huán)的一部分的現(xiàn)有 節(jié)點(diǎn)。這或者可被靜態(tài)地配置,或者可使用DHCP和/或DNS和/或WS發(fā)現(xiàn)或 (可能公知的)常量來(lái)動(dòng)態(tài)地發(fā)現(xiàn)。設(shè)該現(xiàn)有聯(lián)盟節(jié)點(diǎn)為E。
IP2. Y調(diào)用E.RouteNumerically(Y, joinMsg)來(lái)確定在節(jié)點(diǎn)Y所參與的每一 鄰近環(huán)中其ID在數(shù)值上最接近Y.id的節(jié)點(diǎn)X。這可包括將加入消息路由到多 個(gè)節(jié)點(diǎn)。
IP3.確定數(shù)值上的后繼者和前導(dǎo)者節(jié)點(diǎn)。(注意,完成以下插入所需的 數(shù)據(jù)可以在加入消息及其響應(yīng)中攜帶。由此,不需要附加的往返。) 情況1: X.id > Y.id Y.s = X, Y.p = X.p, X.p.s = Y,且X.p = Y 情況2: X.id<Y.id Y.p = X, Y.s = X.s, X.s.p = Y,且X.s = Y
響應(yīng)于加入消息,節(jié)點(diǎn)X (處理該加入消息的節(jié)點(diǎn))可以向節(jié)點(diǎn)Y發(fā)回 加入響應(yīng)。該加入響應(yīng)可以指示節(jié)點(diǎn)Y的前導(dǎo)者節(jié)點(diǎn)(Y.p)和后繼者節(jié)點(diǎn) (Y.s)。節(jié)點(diǎn)Y可以接收加入響應(yīng),并處理加入響應(yīng)以變得知曉其前導(dǎo)者和 后繼者節(jié)點(diǎn)。在處理了加入響應(yīng)之后,節(jié)點(diǎn)Y可以是聯(lián)盟中的弱路由參與者。 例如,節(jié)點(diǎn)Y可以僅僅將發(fā)送給它的消息轉(zhuǎn)發(fā)給或者其后繼者或者其前導(dǎo)者節(jié) 點(diǎn)。由此,節(jié)點(diǎn)Y被插入到聯(lián)盟基礎(chǔ)結(jié)構(gòu)中,但是未填充路由和鄰域表。在到 達(dá)這一點(diǎn)之前,節(jié)點(diǎn)Y將通過(guò)向發(fā)送節(jié)點(diǎn)返回指示節(jié)點(diǎn)Y的活躍度階段是處
34于插入階段狀態(tài)的狀態(tài)消息,來(lái)請(qǐng)求向其發(fā)送消息的其它節(jié)點(diǎn)通過(guò)不同的節(jié)點(diǎn) 重定向發(fā)送給它的消息。
一般而言,有時(shí),節(jié)點(diǎn)可以交換同步請(qǐng)求和響應(yīng)消息。同步請(qǐng)求和同步響 應(yīng)消息可以包括從發(fā)送者的觀點(diǎn)來(lái)看的關(guān)于其它節(jié)點(diǎn)的活躍度信息(例如,首 部)。也可在同步請(qǐng)求和響應(yīng)消息中包括鄰域狀態(tài),使得鄰域中的應(yīng)用層知曉 彼此的狀態(tài)。何時(shí)交換同步請(qǐng)求和響應(yīng)消息的一個(gè)示例是在同步加入節(jié)點(diǎn)的階 段狀態(tài)期間。然而,同步請(qǐng)求和響應(yīng)消息也可以在其它可操作階段狀態(tài)(例如, 在操作階段狀態(tài)中)期間交換。
圖16示出了消息模型和相關(guān)的處理模型1600的示例。如圖16所示,節(jié) 點(diǎn)可以發(fā)送和接收同步請(qǐng)求消息。例如,同步請(qǐng)求消息1601可以在功能層1651 處從新插入的節(jié)點(diǎn)(例如,圖12B中ID為144的節(jié)點(diǎn))接收。應(yīng)用程序數(shù)據(jù) 1602 (例如,命名空間訂閱)可以承載在同步請(qǐng)求消息1601中。功能層1651 可以將包括在同步請(qǐng)求消息中的任何應(yīng)用程序數(shù)據(jù)通知給應(yīng)用層1652。例如, 功能層161可以向應(yīng)用層1652調(diào)用包括應(yīng)用程序數(shù)據(jù)1602的鄰域狀態(tài)同步事 件1603。包括應(yīng)用程序數(shù)據(jù)1607的同步請(qǐng)求1631也可被發(fā)送到處理模型1600 中類似于對(duì)同步請(qǐng)求1601的處理來(lái)處理同步請(qǐng)求1631的另一節(jié)點(diǎn)。
響應(yīng)于某一功能層事件(例如,同步請(qǐng)求消息160K同步響應(yīng)消息1641、 或査驗(yàn)消息1612),功能層1651可以調(diào)用應(yīng)用層1652中的鄰域狀態(tài)請(qǐng)求功能 1604。鄰域狀態(tài)請(qǐng)求1604是對(duì)應(yīng)用層的獲得需要在鄰域中傳播的狀態(tài)的請(qǐng)求。 響應(yīng)于鄰域狀態(tài)請(qǐng)求1604,應(yīng)用層1652可以向功能層1651提供包括可任選應(yīng) 用程序數(shù)據(jù)1607的鄰域狀態(tài)1606?;蛘撸瑧?yīng)用層1652可以作為對(duì)某一應(yīng)用層 事件的反應(yīng)來(lái)發(fā)送包括可任選應(yīng)用程序數(shù)據(jù)1607的鄰域狀態(tài)1606。使用類似 于以上的內(nèi)部機(jī)制,功能層1651可以發(fā)送包括可任選應(yīng)用程序數(shù)據(jù)1607的同 步響應(yīng)消息1608來(lái)傳播應(yīng)用層鄰域狀態(tài)。
同步階段在處理了加入響應(yīng)消息之后,節(jié)點(diǎn)Y從插入階段狀態(tài)轉(zhuǎn)換到 同步階段狀態(tài)。在同步階段狀態(tài)中,新插入的節(jié)點(diǎn)Y與鄰域中的節(jié)點(diǎn)同步信息。 一般而言,節(jié)點(diǎn)Y可以至少向在插入階段狀態(tài)中標(biāo)識(shí)的其前導(dǎo)者和后繼者節(jié)點(diǎn) 發(fā)送同步消息。處理同步消息的這些節(jié)點(diǎn)可以返回指示這些處理節(jié)點(diǎn)的相應(yīng)的 鄰域和路由伙伴節(jié)點(diǎn)的同步響應(yīng)。在更具體的示例中,同步階段狀態(tài)可以根據(jù)
35以下算法來(lái)實(shí)現(xiàn)(所有算術(shù)都以模bn來(lái)執(zhí)行)
SP1.從節(jié)點(diǎn)Y所參與的每一鄰近環(huán)中的鄰域(Y.s)和鄰域(Y.p)節(jié)點(diǎn)的并集
來(lái)計(jì)算鄰域(Y)。該并計(jì)算可以如下完成
(Sj,…,s,, s, p, ph…,pk),使得Sj.s.id > (Y.id + u/2), j ^ v/2-l, pk.p.id < (Y.id-u/2),且k^v/2-l
SP2.簡(jiǎn)要地參考圖16,經(jīng)由鄰域狀態(tài)請(qǐng)求(例如,鄰域狀態(tài)請(qǐng)求1604) 査詢Y的本地應(yīng)用層(例如,應(yīng)用層1652)來(lái)獲得可任選的應(yīng)用程序?qū)S绵?域數(shù)據(jù)(例如,應(yīng)用程序?qū)S脭?shù)據(jù)1607)。
SP3.將至少包括從Y的觀點(diǎn)來(lái)看的每一鄰近鄰域和路由伙伴節(jié)點(diǎn)的活躍 度狀態(tài)信息的同步消息至少發(fā)送給鄰近后繼者和前導(dǎo)者節(jié)點(diǎn)。經(jīng)由SP2訪問的 任何可任選的應(yīng)用程序?qū)S绵徲驍?shù)據(jù)(例如,應(yīng)用程序數(shù)據(jù)1607)被包括在同 步請(qǐng)求1631中。
SP3.Y從處理在SP2中發(fā)送的同步消息的這些節(jié)點(diǎn)接收回同步響應(yīng)消息。 例如,節(jié)點(diǎn)Y可以與其計(jì)算的鄰域內(nèi)的一個(gè)或多個(gè)節(jié)點(diǎn)交換同步消息(請(qǐng)求/ 響應(yīng))。在與節(jié)點(diǎn)Y的至少一個(gè)以及可能所有的鄰域節(jié)點(diǎn)交換了同步消息之后, 計(jì)算的鄰域節(jié)點(diǎn)可以交換進(jìn)一步的消息以傳播同步的數(shù)據(jù)。同步消息(請(qǐng)求或 響應(yīng))可以是由節(jié)點(diǎn)發(fā)送的非路由消息,以主動(dòng)將其數(shù)據(jù)與例如在節(jié)點(diǎn)鄰域中 的目標(biāo)節(jié)點(diǎn)同步。
SP4.當(dāng)接收到SP3中的同步響應(yīng)消息(例如,同步響應(yīng)消息1641)時(shí), 可經(jīng)由鄰域狀態(tài)同步事件1603將這些接收到的同步響應(yīng)消息中存在的任何可 任選的應(yīng)用程序?qū)S绵徲驍?shù)據(jù)(例如,應(yīng)用程序數(shù)據(jù)1622)提供給Y的應(yīng)用 層1652。
作為同步階段狀態(tài)的一部分,鄰近后繼者(例如,Y.s)和前導(dǎo)者(Y.p) 節(jié)點(diǎn)與新插入的節(jié)點(diǎn)(例如,Y)交換其路由表。接收同步消息的節(jié)點(diǎn)可以通 過(guò)發(fā)送同步響應(yīng)來(lái)響應(yīng)。同步響應(yīng)類似于同步消息攜帶數(shù)據(jù),除了是從響應(yīng)節(jié) 點(diǎn)的觀點(diǎn)來(lái)看的之外。同步消息和同步響應(yīng)都可攜帶(或承載)應(yīng)用程序數(shù)據(jù)。 由此,應(yīng)用程序數(shù)據(jù)可在同步階段狀態(tài)期間在節(jié)點(diǎn)之間傳播。當(dāng)同步階段狀態(tài) 完成時(shí),節(jié)點(diǎn)可以處理目的地為它的消息,而非僅僅將其轉(zhuǎn)發(fā)給或者后繼者或 者前導(dǎo)者。然而,節(jié)點(diǎn)仍可被視為弱路由參與者,因?yàn)槠渎酚杀砦幢惶畛?。路由階段在完成了同步階段狀態(tài)之后,節(jié)點(diǎn)轉(zhuǎn)換到路由階段狀態(tài)。在路 由階段狀態(tài),新同步的節(jié)點(diǎn)(例如,節(jié)點(diǎn)Y)計(jì)算其路由節(jié)點(diǎn)。路由階段狀態(tài) 可以根據(jù)以下算法來(lái)實(shí)現(xiàn)(所有算術(shù)都以模b"來(lái)執(zhí)行)
RP1.如果路由階段狀態(tài)正作為平衡過(guò)程(稍后解釋)的一部分來(lái)執(zhí)行,則 確保后繼者節(jié)點(diǎn)(Y.s)和前導(dǎo)者節(jié)點(diǎn)(Y.p)在節(jié)點(diǎn)Y所參與的每一鄰近環(huán)中 都是活躍的。如果任一個(gè)不是活躍的,則通過(guò)選擇考慮中的環(huán)中的鄰域節(jié)點(diǎn)之 中的下一最佳后繼者或前導(dǎo)者節(jié)點(diǎn)來(lái)確定對(duì)故障節(jié)點(diǎn)的替換節(jié)點(diǎn)。
RP2. 對(duì)于l5iSn曙l
RP2a. 計(jì)算z=Y.id ± bj
RP2b.如果環(huán)d不是最具體的鄰近性,則找出節(jié)點(diǎn)Y所參與的且滿足 條件Y.Sd.id < Y.id + b1 < Y.sd+1.id或Y.pd,id < Y.id - b1 < Y.pd+1.id的鄰 近環(huán)d?;蛘撸沟铆h(huán)d成為最具體的鄰近環(huán)?,F(xiàn)在,環(huán)d是節(jié)點(diǎn)Y應(yīng) 在其中査找最接近z的路由伙伴的鄰近環(huán)。設(shè)Q是在Y.sd.r±i和Y.pd.r±i 之間數(shù)值上最接近z的節(jié)點(diǎn)。如果IQ.id-zl在bi的可配置百分比(通常是 20%)內(nèi),則只需令Y.r士「Q。如果Q.id比(Y.Sd.id士bi)或(Y.pd.id士bi)更 接近z,則意味著節(jié)點(diǎn)Y是鄰近環(huán)d中比Y.Sd或Y.pd更好的對(duì)節(jié)點(diǎn)Q 的伙伴路由節(jié)點(diǎn)。因此,如果尚未發(fā)送updageMsg (更新消息),則將 其發(fā)送給節(jié)點(diǎn)Q,該消息提供i和節(jié)點(diǎn)Y作為參數(shù),使得節(jié)點(diǎn)Q能夠建 立節(jié)點(diǎn)Y為r.i處其伙伴路由節(jié)點(diǎn)。
RP2c.如果該階段狀態(tài)正作為平衡過(guò)程的一部分來(lái)執(zhí)行,并且如果 Y.sd.r±i.id==Y.pd.r±i.id,則在(Y.Sd.id ± t)i)和(Y.pd.id ± "之間的數(shù)值范圍 中僅有一個(gè)節(jié)點(diǎn)。該節(jié)點(diǎn)是后繼者(或前導(dǎo)者)節(jié)點(diǎn)的路由節(jié)點(diǎn)&所指 向的節(jié)點(diǎn)。因此,只需令Y.ri「Y.Sd.r^。
RP2d.否則,通過(guò)對(duì)節(jié)點(diǎn)Q調(diào)用RouteProximally并將鄰近性準(zhǔn)則設(shè) 為環(huán)d的鄰近性準(zhǔn)則來(lái)計(jì)算路由伙伴Y.r±i 。這意味著 Y.r±i=Q.RouteProximally(z, updateMsg, d)。
RP3.此時(shí),節(jié)點(diǎn)Y不僅能處理目的地為它的消息,而且還能路由消息。 RP4.如果尚未訂閱,則對(duì)伙伴路由節(jié)點(diǎn)的端點(diǎn)ID訂閱從應(yīng)用層發(fā)送的活 躍度通知事件。并且,對(duì)于不再是伙伴路由節(jié)點(diǎn)的那些節(jié)點(diǎn),撤消先前與應(yīng)用
37層建立的任何活躍度事件訂閱。例如,訂閱和/或撤消請(qǐng)求可向上傳遞到實(shí)現(xiàn)用 于相應(yīng)的應(yīng)用程序(例如,命名空間應(yīng)用程序)的發(fā)布-訂閱邏輯的應(yīng)用層(例 如,應(yīng)用層121)。當(dāng)在應(yīng)用層處接收到后續(xù)的應(yīng)用程序?qū)S没钴S度消息(例 如,因命名空間訂閱所得的消息)時(shí),可將通知(事件)向下推至其它較低層
(例如,其它較低層131)以供處理。
圖17描繪了可在功能層1751和應(yīng)用層1752之間發(fā)生的多個(gè)活躍度交互 的示例。如圖17所示,端點(diǎn)是例如表示各節(jié)點(diǎn)的發(fā)布/訂閱話題(例如,由URL 或URI表示),并且可以是例如聯(lián)盟基礎(chǔ)結(jié)構(gòu)節(jié)點(diǎn)。訂閱活躍度事件1701可 以從功能層1751向應(yīng)用層1752調(diào)用以訂閱活躍度事件(例如,訂閱發(fā)布/訂閱 話題)。撤消活躍度訂閱1702可以從功能層1751向應(yīng)用層1752調(diào)用以撤消 對(duì)活躍度事件的訂閱。端點(diǎn)停機(jī)1703可以從應(yīng)用層1752向功能層1751發(fā)送 以指示端點(diǎn)可能停機(jī)并向功能層1751提供可任選的替換端點(diǎn)。端點(diǎn)停機(jī)事件 1703可以基于先前的訂閱(例如,訂閱活躍度事件1701)異步地發(fā)送。
節(jié)點(diǎn)停機(jī)1704可以從功能層1751向應(yīng)用層1752調(diào)用,以指示功能層1751
(或某一其它較低層)檢測(cè)到了故障節(jié)點(diǎn)并可任選地向應(yīng)用層1752提供替換 節(jié)點(diǎn)。應(yīng)用層1752可以隨后將檢測(cè)到可能的故障節(jié)點(diǎn)傳播到其它感興趣的各 方。節(jié)點(diǎn)停機(jī)事件1704可以在功能層1751或某一其它較低層檢測(cè)到可能的故 障節(jié)點(diǎn)的任何時(shí)刻異步地發(fā)送。發(fā)送活躍度1706可以在應(yīng)用層1752檢測(cè)到一 節(jié)點(diǎn)停機(jī)(例如,從節(jié)點(diǎn)停機(jī)事件1704或從某一其它帶外機(jī)制)時(shí)從應(yīng)用層 1752向功能層1751調(diào)用。發(fā)送活躍度事件1706可以使得功能層1751發(fā)送活 躍度消息。發(fā)送活躍度事件1706也可在應(yīng)用層1752檢測(cè)到節(jié)點(diǎn)停機(jī)并且不依 賴于任何先前建立的訂閱(經(jīng)由訂閱活躍度)的任何時(shí)刻異步地調(diào)用。
由此,在某些實(shí)施例中,功能層1751被遞歸地使用。例如,功能層1751 可以向應(yīng)用層1752指示對(duì)指定節(jié)點(diǎn)(例如,是開機(jī)或停機(jī)的特定節(jié)點(diǎn))的興 趣。應(yīng)用層1752可以制定對(duì)涉及該指定節(jié)點(diǎn)的通知的應(yīng)用程序?qū)S糜嗛啠?后重復(fù)使用功能層1751來(lái)將所制定的訂閱傳遞到其它聯(lián)盟節(jié)點(diǎn)中的適當(dāng)?shù)南?應(yīng)應(yīng)用層1752實(shí)例。例如,如果聯(lián)盟節(jié)點(diǎn)內(nèi)的應(yīng)用層1752實(shí)現(xiàn)命名空間發(fā)布 /訂閱行為,則功能層1751可以將該訂閱路由給管理關(guān)于指定節(jié)點(diǎn)的通知的發(fā) 布/訂閱管理器,該發(fā)布訂閱管理器被實(shí)現(xiàn)為至少是相關(guān)的聯(lián)盟節(jié)點(diǎn)中的應(yīng)用程序1752的一部分。因此,功能層1751用于路由功能層1751所引起的被生成 的訂閱。也可使用類似的遞歸機(jī)制來(lái)取消訂閱或以其它方式指示對(duì)指定節(jié)點(diǎn)不 再感興趣。
操作階段在完成了路由階段狀態(tài)之后,節(jié)點(diǎn)轉(zhuǎn)換到操作階段狀態(tài)。節(jié)點(diǎn)
可以保持在操作階段狀態(tài)中,直到其停機(jī)(例如,重新引導(dǎo))。在操作階段狀 態(tài)中,節(jié)點(diǎn)可以不時(shí)地將更新消息發(fā)送給路由伙伴。更新消息(更新請(qǐng)求和更 新響應(yīng))可包括關(guān)于發(fā)送節(jié)點(diǎn)(例如,關(guān)于所有感興趣的鄰近鄰域)的鄰域節(jié) 點(diǎn)活躍度信息。該發(fā)送的活躍度信息也可包括發(fā)送者的活躍度信息。更新消息 可以是節(jié)點(diǎn)發(fā)起的、周期性地更新其路由伙伴節(jié)點(diǎn)的路由的消息。應(yīng)用程序數(shù) 據(jù)可被承載在更新消息上,使得應(yīng)用程序數(shù)據(jù)可以在路由伙伴更新期間傳播。
消息目的地被設(shè)為期望路由索引處的理想路由伙伴的身份。該消息的消息ID 特性被分配一應(yīng)用程序序列號(hào),以便使處理該消息的節(jié)點(diǎn)能確定最新消息并且 該消息被鄰近地路由。
接收更新消息的節(jié)點(diǎn)可以用更新響應(yīng)來(lái)響應(yīng)。更新響應(yīng)攜帶了與更新消息 相同的數(shù)據(jù),除了該數(shù)據(jù)是從響應(yīng)節(jié)點(diǎn)的觀點(diǎn)來(lái)看的之外。通過(guò)交換更新消息 和更新響應(yīng),節(jié)點(diǎn)能夠交換路由信息。有時(shí),可操作節(jié)點(diǎn)可更新路由伙伴。
有時(shí),可操作節(jié)點(diǎn)也可發(fā)送査驗(yàn)消息(例如,查驗(yàn)消息1609和1611)。 査驗(yàn)消息是節(jié)點(diǎn)發(fā)送的單向消息,用于周期性地通告其存在并在其鄰域內(nèi)散布 關(guān)于其鄰域/路由節(jié)點(diǎn)的信息并復(fù)制(例如,承載)應(yīng)用程序數(shù)據(jù)。
原始節(jié)點(diǎn)可以向其一個(gè)或多個(gè)直接前導(dǎo)者和后繼者鄰域節(jié)點(diǎn)發(fā)送査驗(yàn)消 息。由此,取決于查驗(yàn)分發(fā)模式(即,向哪些節(jié)點(diǎn)發(fā)送查驗(yàn)消息),與原始節(jié) 點(diǎn)有關(guān)的信息被傳播給該原始節(jié)點(diǎn)的鄰域內(nèi)的環(huán)上的其它節(jié)點(diǎn)。例如,原始節(jié) 點(diǎn)可以僅將査驗(yàn)消息發(fā)送給其直接前導(dǎo)者和后繼者節(jié)點(diǎn),并且査驗(yàn)消息從原始 節(jié)點(diǎn)的位置(節(jié)點(diǎn)ID)在兩個(gè)方向上沿著環(huán)向外傳播到該原點(diǎn)的鄰域的邊緣。 或者,原始節(jié)點(diǎn)可以將査驗(yàn)消息發(fā)送給其鄰域中其前導(dǎo)者和后繼者兩個(gè)方向上 每第n個(gè)節(jié)點(diǎn)。
接收査驗(yàn)消息的每一節(jié)點(diǎn)檢査從鄰域范圍的觀點(diǎn)來(lái)看其對(duì)原始節(jié)點(diǎn)的興 趣。如果不感興趣,則它丟棄該查驗(yàn)消息。如果感興趣,則它處理該査驗(yàn)消息, 并且如果轉(zhuǎn)發(fā)被約束到始發(fā)節(jié)點(diǎn)的鄰域,則根據(jù)其指定的環(huán)模式來(lái)轉(zhuǎn)發(fā)該査驗(yàn)
39消息。例如,在處理了査驗(yàn)消息之后,如果發(fā)送和原始節(jié)點(diǎn)在其前導(dǎo)者節(jié)點(diǎn)集 中,則接收節(jié)點(diǎn)可將査驗(yàn)消息轉(zhuǎn)發(fā)給至少其后繼者節(jié)點(diǎn),或者如果發(fā)送和原始 節(jié)點(diǎn)在其后繼者節(jié)點(diǎn)集中,則至少轉(zhuǎn)發(fā)給其前導(dǎo)者節(jié)點(diǎn)。
由此,査驗(yàn)消息的向外傳播在該消息到達(dá)原始節(jié)點(diǎn)周圍的鄰域節(jié)點(diǎn)集的邊 緣時(shí)停止。查驗(yàn)消息的消息ID特性被分配一應(yīng)用程序序列號(hào),以便使處理該 消息的節(jié)點(diǎn)能確定來(lái)自原始節(jié)點(diǎn)的最新消息并避免重復(fù)處理或另外的不需要 的轉(zhuǎn)發(fā)。
回頭參考圖16,査驗(yàn)消息1609可以在功能層1651處從鄰域節(jié)點(diǎn)接收。 應(yīng)用程序數(shù)據(jù)1612 (例如,命名空間訂閱)可以被承載在查驗(yàn)消息1609中。 功能層1651可以將包括在査驗(yàn)消息中的任何應(yīng)用程序數(shù)據(jù)通知給應(yīng)用層 1652。類似地,功能層1651可以將包括在同步請(qǐng)求消息中的任何應(yīng)用程序數(shù) 據(jù)通知給應(yīng)用層1652。這兩種傳遞情況都可經(jīng)由向應(yīng)用層1652發(fā)送包括應(yīng)用 程序數(shù)據(jù)1612的鄰域狀態(tài)同步事件1603來(lái)實(shí)現(xiàn)。
響應(yīng)于某一功能層事件(例如,接收到査驗(yàn)消息1609),功能層1651可 以向應(yīng)用層1652發(fā)送鄰域狀態(tài)請(qǐng)求1604。鄰域狀態(tài)請(qǐng)求1604是在應(yīng)用層1652 上調(diào)用的,以獲得需要在鄰域中可任選地傳播的狀態(tài)。響應(yīng)于鄰域狀態(tài)請(qǐng)求 1604,應(yīng)用層1652可以向功能層1651返回包括可任選應(yīng)用程序數(shù)據(jù)1607的 鄰域狀態(tài)1606。功能層1651可以發(fā)送包括可任選應(yīng)用程序數(shù)據(jù)1607的查驗(yàn)消 息1611,以向鄰域和路由伙伴節(jié)點(diǎn)傳播活躍度信息以及可任選的應(yīng)用層鄰域狀 態(tài)。功能層1651也可發(fā)送包括可任選應(yīng)用程序數(shù)據(jù)1607的同步響應(yīng)1608來(lái) 傳播應(yīng)用程序狀態(tài)。
離開協(xié)議
當(dāng)對(duì)于節(jié)點(diǎn)而言離開聯(lián)盟是適當(dāng)?shù)臅r(shí)候,節(jié)點(diǎn)可以實(shí)現(xiàn)Depart (離幵)函 數(shù)來(lái)優(yōu)雅地從聯(lián)盟中移除。節(jié)點(diǎn)通過(guò)向其一個(gè)或多個(gè)直接鄰近前導(dǎo)者和后繼者 節(jié)點(diǎn),以及可能的同一鄰近鄰域中的其它節(jié)點(diǎn)發(fā)送離開消息來(lái)離開現(xiàn)有聯(lián)盟。 由此,取決于離開分發(fā)模式(即,向哪些節(jié)點(diǎn)發(fā)送離開消息),與離開節(jié)點(diǎn)有 關(guān)的信息被傳播給該離開節(jié)點(diǎn)的鄰域內(nèi)的環(huán)上的其它節(jié)點(diǎn)。離開消息是優(yōu)雅地 離開的節(jié)點(diǎn)獲得的單向消息,用于向其至少一個(gè)鄰近鄰域內(nèi)的一個(gè)或多個(gè)其它 節(jié)點(diǎn)通知其即將發(fā)生的離開。離開節(jié)點(diǎn)以類似于査驗(yàn)消息的傳播的方式來(lái)傳播
40離開消息(例如,在其鄰域內(nèi))。例如,ID為30的節(jié)點(diǎn)可將離開消息1219 發(fā)送到ID為17和40的節(jié)點(diǎn)。ID為30的節(jié)點(diǎn)然后可從給定鄰近環(huán)的觀點(diǎn)來(lái) 看將其自身從聯(lián)盟基礎(chǔ)結(jié)構(gòu)中移除。注意,節(jié)點(diǎn)有可能將其自身從一個(gè)鄰近鄰 域中移除,但不從其可能所屬的其它鄰域中移除。
由于在ID為30的節(jié)點(diǎn)被移除之后ID為17和40的節(jié)點(diǎn)(即,前導(dǎo)者和 后繼者節(jié)點(diǎn))可能是最接近ID 30的節(jié)點(diǎn),因此使ID為17和40的節(jié)點(diǎn)知曉 ID為30的節(jié)點(diǎn)的離開。由此,要傳遞給ID30的將來(lái)消息可在ID為17和40 的節(jié)點(diǎn)處適當(dāng)?shù)靥幚?。ID為17和40的節(jié)點(diǎn)可以將ID為30的節(jié)點(diǎn)的離開傳 播到環(huán)1206上的其它節(jié)點(diǎn)。在缺少ID為30的節(jié)點(diǎn)的情況下,ID為17和40 的節(jié)點(diǎn)也可重新計(jì)算前導(dǎo)者和后繼者指針,這些指針可能指向?qū)Ψ健?br>
離開消息的消息ID特性被分配與査驗(yàn)消息一樣的應(yīng)用程序序列ID,以使 處理該離開消息的節(jié)點(diǎn)能夠確定由原始節(jié)點(diǎn)發(fā)送的一系列査驗(yàn)和離開消息中 最新的消息。從聯(lián)盟鄰近環(huán)的優(yōu)雅離開是可任選的,但鼓勵(lì)這樣做。然而,聯(lián) 盟被設(shè)計(jì)成在節(jié)點(diǎn)突然離開的情況下自我復(fù)原。
活躍度
在聯(lián)盟的生存期期間,節(jié)點(diǎn)可以交換活躍度信息來(lái)維護(hù)該聯(lián)盟?;钴S度信 息可以按活躍度消息首部的形式被包括在在聯(lián)盟內(nèi)交換的實(shí)際上任何消息中。 例如,加入消息、加入響應(yīng)、同步消息、同步響應(yīng)、更新消息、更新響應(yīng)、應(yīng) 用程序?qū)S孟?、活躍度消息以及査驗(yàn)消息都可包括活躍度信息首部。當(dāng)聯(lián)盟 節(jié)點(diǎn)發(fā)送任何消息或響應(yīng)時(shí),該節(jié)點(diǎn)可以包括活躍度信息以供其它節(jié)點(diǎn)處理。 活躍度信息可被包括在活躍度消息的活躍度信息首部中。
指示節(jié)點(diǎn)的活躍度狀態(tài)的活躍度信息可以使用以下特性來(lái)表示:標(biāo)識(shí)其活躍度狀態(tài)正被表示的節(jié)點(diǎn)。節(jié)點(diǎn)可以基于進(jìn)一步包括[實(shí)
例ID]的[引用特性]來(lái)標(biāo)識(shí)。:在WS尋址規(guī)范中指定的元素信息項(xiàng)。WS尋址定義了 包括在引用特性集中的[實(shí)例ID]引用特性。:標(biāo)識(shí)節(jié)點(diǎn)的特定實(shí)例的數(shù)字??墒褂眠f增自舉計(jì)數(shù)(bootcount)作為節(jié)點(diǎn)的實(shí)例ID。:傳達(dá)所標(biāo)識(shí)的節(jié)點(diǎn)的階段。傳達(dá)所指示的節(jié)點(diǎn)實(shí)例已知已達(dá)到的最高階段狀態(tài) (插入、同步、路由、操作)。傳達(dá)當(dāng)前階段是已知還是未知的指示符。:傳達(dá)信息的新鮮度并且其值范圍從O到MaxFreshness。該值越 高,信息就越新鮮,0意味著沒有信息,而MaxFreshness是協(xié)議定義的常:標(biāo)識(shí)節(jié)點(diǎn)所屬的鄰近性等效類。具有相同色彩值的兩個(gè)節(jié)點(diǎn)總是 被認(rèn)為是最鄰近的,因?yàn)樗鼈兌紝儆谟缮手邓鶚?biāo)識(shí)的相同的等效類。鄰 近性等效類的數(shù)量可以在更多節(jié)點(diǎn)加入聯(lián)盟時(shí)隨著時(shí)間而增加。:提供節(jié)點(diǎn)能力度量,且其值范圍從O到MaxWeight。它測(cè)量聯(lián)盟 節(jié)點(diǎn)的所需特性,諸如大計(jì)算能力、高網(wǎng)絡(luò)帶寬和長(zhǎng)開機(jī)時(shí)間。該值越高, 則節(jié)點(diǎn)越能夠使其從伙伴關(guān)系的觀點(diǎn)來(lái)看合乎需要。
在某些環(huán)境中,節(jié)點(diǎn)的[節(jié)點(diǎn)]和[新鮮度]特性或者隱式地或者顯式地在諸 如[原始]和[發(fā)送者]消息首部等較大范圍內(nèi)傳達(dá),且因此,再次在活躍度首部 中包括上述特性將是重復(fù)的。例如,消息的發(fā)送者只需傳達(dá)其當(dāng)前階段、色彩 和權(quán)重信息,因?yàn)槠銲D、實(shí)例Id在消息尋址首部中提供且其新鮮度被蘊(yùn)含在內(nèi)。
活躍度狀態(tài)可以至少基于如下定義的"<"二元關(guān)系來(lái)部分排序 "U<L2,,為真,如果
421. "L1.[節(jié)點(diǎn)].[名銜^L2.[節(jié)點(diǎn)].[名稱]"為真,且在執(zhí)行了測(cè)試并按照 所列出的次序短回路時(shí)以下之一為真
Ll.[節(jié)點(diǎn)].[引用特性].[實(shí)例ID] 〈L2.[節(jié)點(diǎn)].[引用特性].[實(shí)例ID]
Ll.[階段.未知指示]!=真AND L2.[階段.未知指示]!=真AND L1.[階段狀態(tài)]〈L2.[階段狀態(tài)]
L1.[新鮮度]〈L2.[新鮮度]
2. 或者,"L1.[色劉-L2.[色彩]"為真,且在執(zhí)行了測(cè)試并按照所列出 的次序短回路時(shí)以下之一為真
L1.[階段狀態(tài)]〈L2.[階段狀態(tài)]
L1.[權(quán)重HL2.[權(quán)重]
此外,當(dāng)檢測(cè)到或懷疑指定節(jié)點(diǎn)變得不可用(例如,停機(jī))時(shí),可以向指 定節(jié)點(diǎn)發(fā)送活躍度"停機(jī)"消息。作為一個(gè)示例,當(dāng)應(yīng)用層(例如,應(yīng)用層 121)檢測(cè)到另一應(yīng)用層(例如,應(yīng)用層123)或主存另一應(yīng)用層的節(jié)點(diǎn)停機(jī)時(shí), 則檢測(cè)應(yīng)用層可以例如根據(jù)消息模型和相關(guān)的處理模型1600和/或1700通知其 它較低層(例如,其它較低層131)該節(jié)點(diǎn)可能停機(jī)。這一通知可使得諸如, 例如功能層1651等其它較低層發(fā)送活躍度停機(jī)消息。這僅是對(duì)活躍度停機(jī)消 息的生成的激勵(lì)的一個(gè)示例。
由于活躍度停機(jī)消息被路由且因此被傳遞給最接近被懷疑停機(jī)的那些節(jié) 點(diǎn)的節(jié)點(diǎn),因此如果對(duì)指定節(jié)點(diǎn)的活躍度停機(jī)消息被傳遞回到該指定節(jié)點(diǎn),則 或者該指定節(jié)點(diǎn)從未停機(jī),或者該指定節(jié)點(diǎn)是一不同的實(shí)例(例如,具有不同 的實(shí)例ID)。另一方面,如果活躍度停機(jī)消息被傳遞到另一節(jié)點(diǎn),則它指示 指定節(jié)點(diǎn)的確看似已停機(jī)。因此,如果接收活躍度停機(jī)消息的節(jié)點(diǎn)將其自身視 為在指定節(jié)點(diǎn)的鄰近鄰域中,則它可如所描述地將對(duì)該指定節(jié)點(diǎn)的離開消息發(fā) 送到該鄰近鄰域中,并向其應(yīng)用層指示(例如,使用節(jié)點(diǎn)停機(jī)1704)指定節(jié)點(diǎn) 可能停機(jī)且接收節(jié)點(diǎn)是其替換。對(duì)指定節(jié)點(diǎn)的活躍度停機(jī)消息可在將其目標(biāo)ID 設(shè)為可能停機(jī)的節(jié)點(diǎn)的ID的情況下鄰近地路由。
平衡過(guò)程
本發(fā)明的各實(shí)施例被設(shè)計(jì)成適應(yīng)大量節(jié)點(diǎn)在較短的一段時(shí)間內(nèi)加入和離
43開聯(lián)盟。如果在各節(jié)點(diǎn)處維護(hù)的對(duì)數(shù)搜索樹變得不平衡,則網(wǎng)絡(luò)中的這一改變 可導(dǎo)致路由延遲。即,如果在環(huán)的一側(cè)的節(jié)點(diǎn)要比另一側(cè)多。為促進(jìn)最優(yōu)路由 效率,參與聯(lián)盟的節(jié)點(diǎn)在滿足特定準(zhǔn)則時(shí)執(zhí)行平衡過(guò)程。
例如,當(dāng)以下條件中的任一個(gè)為真時(shí),任何節(jié)點(diǎn)可執(zhí)行平衡過(guò)程來(lái)確保平 衡的路由表以獲得最優(yōu)路由效率
接收到配置的數(shù)量的上述活躍度消息。
自從接收到最后一條上述活躍度消息以來(lái)已經(jīng)經(jīng)過(guò)了配置量的時(shí) 間。
鄰域在某些新節(jié)點(diǎn)已到來(lái)或某些現(xiàn)有節(jié)點(diǎn)已離開的意義上已改變。
平衡路由表是簡(jiǎn)單的過(guò)程。例如,具有未平衡的路由表的節(jié)點(diǎn)可以重新執(zhí) 行加入?yún)f(xié)議的同步和路由階段狀態(tài)。
與l)找出對(duì)一數(shù)字的最接近的路由節(jié)點(diǎn),2)節(jié)點(diǎn)遵循離開協(xié)議優(yōu)雅地離開 聯(lián)盟,以及3)節(jié)點(diǎn)遵循平衡過(guò)程接收活躍度消息相組合的動(dòng)作RP2b、 RP2d和 RP4在聯(lián)盟節(jié)點(diǎn)相當(dāng)快速且大量地加入和離開網(wǎng)絡(luò)時(shí)導(dǎo)致更快速的復(fù)原系統(tǒng)。
狀態(tài)消息
狀態(tài)消息是由接收者節(jié)點(diǎn)向發(fā)送者節(jié)點(diǎn)發(fā)送的非路由的消息,其通知發(fā)送 者節(jié)點(diǎn)先前轉(zhuǎn)發(fā)給接收者節(jié)點(diǎn)的相關(guān)消息的路由成功/失敗。圖18描繪了形成 請(qǐng)求-響應(yīng)消息交換模式的一部分的消息如何跨環(huán)上的節(jié)點(diǎn)路由的示例。狀態(tài) 消息可包括標(biāo)識(shí)其路由狀態(tài)正被報(bào)告的原始的相關(guān)消息的首部。由此,狀態(tài)消 息可以在節(jié)點(diǎn)之間用于指示消息被成功地從一個(gè)節(jié)點(diǎn)路由到下一節(jié)點(diǎn)。例如, 從節(jié)點(diǎn)1801到節(jié)點(diǎn)1806路由請(qǐng)求消息1811包括通過(guò)節(jié)點(diǎn)1802、 1803、 1804 和1805發(fā)送請(qǐng)求1811。對(duì)應(yīng)的層疊成功狀態(tài)消息(狀態(tài)1817、 1818、 1819、 1820和1821)可分別從節(jié)點(diǎn)1806發(fā)送到節(jié)點(diǎn)1805,從節(jié)點(diǎn)1805發(fā)送到節(jié)點(diǎn) 1804,從節(jié)點(diǎn)1804發(fā)送到節(jié)點(diǎn)1803,從節(jié)點(diǎn)1803發(fā)送到節(jié)點(diǎn)1802,以及從 節(jié)點(diǎn)1802發(fā)送到節(jié)點(diǎn)1801。響應(yīng)于請(qǐng)求1811,可從節(jié)點(diǎn)1807到節(jié)點(diǎn)1801端 對(duì)端地發(fā)送響應(yīng)1816。響應(yīng)1816是可任選的,并且可能不在單向消息交換模 式中存在。
圖13示出了節(jié)點(diǎn)加入聯(lián)盟基礎(chǔ)結(jié)構(gòu)的方法1300的示例流程圖。方法1300將參考圖12A和12B中的環(huán)1206來(lái)描述。方法1300包括向聯(lián)盟基礎(chǔ)結(jié)構(gòu)發(fā) 出加入消息的動(dòng)作(動(dòng)作1301)。例如,ID為144的節(jié)點(diǎn)可以向包括環(huán)1206 的聯(lián)盟基礎(chǔ)結(jié)構(gòu)發(fā)出加入1201。方法1300包括從加入節(jié)點(diǎn)接收加入消息的動(dòng) 作(動(dòng)作1308)。例如,包括環(huán)1206的聯(lián)盟基礎(chǔ)結(jié)構(gòu)中的現(xiàn)有節(jié)點(diǎn)可接收加 入1201。
方法1300包括向處理節(jié)點(diǎn)路由加入消息的動(dòng)作(動(dòng)作1309)。處理節(jié)點(diǎn) 可以是在路由加入消息時(shí)其ID數(shù)值上比聯(lián)盟基礎(chǔ)結(jié)構(gòu)中的其它活動(dòng)節(jié)點(diǎn)更接 近加入節(jié)點(diǎn)的ID的節(jié)點(diǎn)。例如,加入1201最初可在ID為64的節(jié)點(diǎn)處接收, 路由到ID為135的節(jié)點(diǎn),并路由到ID為151的節(jié)點(diǎn)。
方法1300包括為加入節(jié)點(diǎn)計(jì)算一個(gè)或多個(gè)前導(dǎo)者節(jié)點(diǎn)和一個(gè)或多個(gè)后繼 者節(jié)點(diǎn)的動(dòng)作(動(dòng)作1310)。例如,ID為151的節(jié)點(diǎn)可以為ID為144的節(jié)點(diǎn) 計(jì)算直接前導(dǎo)者節(jié)點(diǎn)和直接后繼者節(jié)點(diǎn)。在環(huán)1206內(nèi),ID為151的節(jié)點(diǎn)可以 計(jì)算ID為135的節(jié)點(diǎn)是直接前導(dǎo)者節(jié)點(diǎn),而ID為151的節(jié)點(diǎn)是直接后繼者節(jié) 點(diǎn)。可對(duì)其它鄰近環(huán)進(jìn)行類似的計(jì)算。
方法1300包括為加入節(jié)點(diǎn)計(jì)算一個(gè)或多個(gè)路由節(jié)點(diǎn)的動(dòng)作(動(dòng)作1311)。 例如,ID為151的節(jié)點(diǎn)可以為ID為144的節(jié)點(diǎn)計(jì)算路由節(jié)點(diǎn)(從ID為151 的節(jié)點(diǎn)的觀點(diǎn)來(lái)看)。在環(huán)1206內(nèi),ID為151的節(jié)點(diǎn)可例如計(jì)算ID為218 和40的節(jié)點(diǎn)為ID為144的節(jié)點(diǎn)的路由節(jié)點(diǎn)??蓪?duì)其它鄰近環(huán)進(jìn)行類似的計(jì)算。
方法1300包括向加入節(jié)點(diǎn)發(fā)送加入響應(yīng)的動(dòng)作(動(dòng)作1312)。加入響應(yīng) 可以在給定其當(dāng)前的聯(lián)盟基礎(chǔ)結(jié)構(gòu)視圖的情況下標(biāo)識(shí)如由處理節(jié)點(diǎn)所計(jì)算的 加入節(jié)點(diǎn)的所有前導(dǎo)者和后繼者鄰域和路由伙伴節(jié)點(diǎn)。例如,加入響應(yīng)1202 可以至少將ID為135的節(jié)點(diǎn)標(biāo)識(shí)為對(duì)ID為144的節(jié)點(diǎn)的直接前導(dǎo)者節(jié)點(diǎn),可 以將ID為151的節(jié)點(diǎn)標(biāo)識(shí)為對(duì)ID為144的節(jié)點(diǎn)的直接后繼者節(jié)點(diǎn),并可以將 標(biāo)識(shí)在ID為151節(jié)點(diǎn)處為ID為144的節(jié)點(diǎn)(新加入的節(jié)點(diǎn))計(jì)算的任何路由 節(jié)點(diǎn)(對(duì)于ID為144的節(jié)點(diǎn))。
方法1300包括從處理加入消息的聯(lián)盟節(jié)點(diǎn)接收加入響應(yīng)的動(dòng)作(動(dòng)作 1302)。例如,ID為144的節(jié)點(diǎn)可從ID為151的節(jié)點(diǎn)接收加入響應(yīng)1202。
方法1300包括向直接鄰近前導(dǎo)者節(jié)點(diǎn)和直接鄰近后繼者節(jié)點(diǎn)中的至少每 一個(gè)發(fā)送同步請(qǐng)求的動(dòng)作(動(dòng)作1303)。例如,現(xiàn)在參考圖12B, ID為144
45的節(jié)點(diǎn)可以向ID為135和151的節(jié)點(diǎn)發(fā)送同步請(qǐng)求1203。同步請(qǐng)求1203可 以包括ID為144的節(jié)點(diǎn)的任何鄰域節(jié)點(diǎn)的標(biāo)識(shí)和/或ID為144的節(jié)點(diǎn)的任何 路由伙伴的標(biāo)識(shí)。
ID為135和151的節(jié)點(diǎn)可接收同步請(qǐng)求1203。響應(yīng)于接收同步請(qǐng)求1203, ID為135和151的節(jié)點(diǎn)可以從相應(yīng)的路由表中標(biāo)識(shí)其鄰域和路由伙伴節(jié)點(diǎn)。ID 為135和151的節(jié)點(diǎn)可以在同步響應(yīng)1204中包括其標(biāo)識(shí)的鄰域和路由伙伴節(jié) 點(diǎn)的活躍度信息,并將同步響應(yīng)1204發(fā)送給ID為144的節(jié)點(diǎn)。
方法1300包括從鄰近前導(dǎo)者和后繼者節(jié)點(diǎn)中的每一個(gè)接收同步響應(yīng)的動(dòng) 作(動(dòng)作1304)。例如,ID為144的節(jié)點(diǎn)可從ID為135和151的節(jié)點(diǎn)接收同 步響應(yīng)1204。同步響應(yīng)1204可以包括關(guān)于環(huán)1206或聯(lián)盟基礎(chǔ)結(jié)構(gòu)中的其它環(huán) 上的一個(gè)或多個(gè)節(jié)點(diǎn)的活躍度信息。同步響應(yīng)1204還可標(biāo)識(shí)ID為144的節(jié)點(diǎn) 的任何預(yù)期的路由伙伴節(jié)點(diǎn)。
方法1300包括計(jì)算鄰居節(jié)點(diǎn)的動(dòng)作(動(dòng)作1305)。例如,ID為144的節(jié) 點(diǎn)可以基于Id為135和151的節(jié)點(diǎn)的鄰域節(jié)點(diǎn)的并集來(lái)計(jì)算相應(yīng)的鄰域節(jié)點(diǎn)。 鄰域節(jié)點(diǎn)可以基于加入響應(yīng)消息和任何同步響應(yīng)消息的概括視圖來(lái)計(jì)算。
方法1300包括計(jì)算路由節(jié)點(diǎn)的動(dòng)作(動(dòng)作1306)。例如,ID為144的節(jié) 點(diǎn)可以從環(huán)1206的節(jié)點(diǎn)中計(jì)算路由節(jié)點(diǎn)。路由伙伴可以基于加入響應(yīng)消息和 任何同步響應(yīng)消息的概括視圖來(lái)計(jì)算。
方法1300包括至少將鄰域節(jié)點(diǎn)信息與所計(jì)算的路由伙伴交換的動(dòng)作 (1307)。例如,ID為144的節(jié)點(diǎn)和ID為218的節(jié)點(diǎn)(計(jì)算的路由伙伴)可 以交換對(duì)應(yīng)于其各自的鄰域節(jié)點(diǎn)的狀態(tài)信息(例如,實(shí)例ID、階段狀態(tài)等)。 這些交換通過(guò)新加入的節(jié)點(diǎn)如在以上路由階段狀態(tài)中描述的向至少每一個(gè)唯 一計(jì)算的路由伙伴發(fā)送(路由)更新消息來(lái)實(shí)現(xiàn)。處理更新消息的節(jié)點(diǎn)作為對(duì) 從新加入的節(jié)點(diǎn)接收這些更新消息的反應(yīng),將發(fā)送相應(yīng)的更新響應(yīng)消息。更新 響應(yīng)至少包括其本身及其鄰域節(jié)點(diǎn)的活躍度信息。
方法1300還包括發(fā)起向至少一個(gè)鄰域節(jié)點(diǎn)的路由表的初始傳播的動(dòng)作。 例如,ID為144的節(jié)點(diǎn)可以在查驗(yàn)消息中包括計(jì)算的鄰域和路由伙伴節(jié)點(diǎn), 并將該査驗(yàn)消息發(fā)送給ID為174的節(jié)點(diǎn)(例如,計(jì)算的鄰域節(jié)點(diǎn)之一)。ID 為174的節(jié)點(diǎn)可以接收該查驗(yàn)消息,并用源自ID為144的節(jié)點(diǎn)處的活躍度信
46息來(lái)更新相應(yīng)的路由表。ID為174的節(jié)點(diǎn)可以在第二査驗(yàn)消息中還包括其相 應(yīng)的路由表,并將該第二查驗(yàn)消息在某一將來(lái)時(shí)刻發(fā)送給ID為144的節(jié)點(diǎn)。 ID為144的節(jié)點(diǎn)可以接收該第二查驗(yàn)消息,并可用包括在該第二査驗(yàn)消息中 的活躍度信息中的節(jié)點(diǎn)(即,ID為174的節(jié)點(diǎn)的路由表中的節(jié)點(diǎn))來(lái)更新其 相應(yīng)的路由表。ID為144的節(jié)點(diǎn)可以對(duì)環(huán)1206中的其它鄰域節(jié)點(diǎn)重復(fù)査驗(yàn)消 息的發(fā)送。
應(yīng)當(dāng)理解,當(dāng)新加入的節(jié)點(diǎn)加入聯(lián)盟時(shí),該新加入的節(jié)點(diǎn)可能未找到現(xiàn)有 聯(lián)盟成員,且因此變?yōu)槲ㄒ坏某蓡T。由此,可能沒有為該新加入的節(jié)點(diǎn)分配的 前導(dǎo)者、后繼者或鄰居節(jié)點(diǎn)。因此,新加入的節(jié)點(diǎn)在所有情況下都作為最佳路 由伙伴來(lái)映射。
此外,盡管方法1300是參考單個(gè)環(huán)(環(huán)1206)來(lái)描述的,但是應(yīng)當(dāng)理解, 在某些實(shí)施例中,本來(lái)加入一個(gè)環(huán)的節(jié)點(diǎn)也可加入一個(gè)或多個(gè)其它環(huán)。例如, 簡(jiǎn)要地回頭參考圖5,本來(lái)加入環(huán)551的節(jié)點(diǎn)也加入環(huán)543、 531、 522、 511 和501。由此,方法1300可被實(shí)現(xiàn)來(lái)加入多個(gè)環(huán)。在其它實(shí)施例中,可在加入 多個(gè)環(huán)時(shí)重復(fù)方法1300中的部分或所有動(dòng)作。例如,再次參考圖5,當(dāng)節(jié)點(diǎn)同 時(shí)加入環(huán)551和環(huán)514時(shí)(例如,別名化),可以重復(fù)1300的一個(gè)或多個(gè)動(dòng) 作。在任何情況下,可訪問加入節(jié)點(diǎn)ID,并用其來(lái)標(biāo)識(shí)已排序鏈表中的加入 節(jié)點(diǎn),以及該加入節(jié)點(diǎn)要參與的相應(yīng)的分層地劃分的子列表。從已排序鏈表和 每一劃分的子列表中標(biāo)識(shí)接收節(jié)點(diǎn)。加入消息被路由到已排序鏈表和每一劃分 的子列表中的處理節(jié)點(diǎn)(例如,基于ID)。從已排序鏈表和每一劃分的子列 表中的處理節(jié)點(diǎn)接收加入響應(yīng)。
圖14示出了節(jié)點(diǎn)維護(hù)聯(lián)盟基礎(chǔ)結(jié)構(gòu)中的成員資格的方法1400的示例流程 圖。方法1400將參考環(huán)1206來(lái)描述。方法1400包括向鄰域節(jié)點(diǎn)發(fā)送第一査 驗(yàn)消息的動(dòng)作(動(dòng)作1401)。第一查驗(yàn)消息指示發(fā)送第一查驗(yàn)消息的當(dāng)前節(jié)點(diǎn) 是鄰域節(jié)點(diǎn)的鄰居。第一査驗(yàn)消息還可包括當(dāng)前節(jié)點(diǎn)的路由伙伴和鄰域節(jié)點(diǎn)的 狀態(tài)。例如,ID為144的節(jié)點(diǎn)可將査驗(yàn)消息發(fā)送到ID為151的節(jié)點(diǎn)。在接收 到第一查驗(yàn)消息之后,可以使ID為151的節(jié)點(diǎn)知道ID為144的節(jié)點(diǎn)是ID為 151的節(jié)點(diǎn)的鄰居。節(jié)點(diǎn)151還可從節(jié)點(diǎn)144發(fā)現(xiàn)較新的活躍度信息(關(guān)于環(huán) 1206上的其它節(jié)點(diǎn)的),作為該動(dòng)作的副作用。査驗(yàn)消息可基于例如與查驗(yàn)消息要被發(fā)送到其中的鄰近環(huán)相關(guān)聯(lián)的配置 狀態(tài)來(lái)以指定的頻率周期性地重復(fù)。該頻率可以取決于配置狀態(tài)而變化。例如, 對(duì)WAN的指定査驗(yàn)頻率可以與對(duì)LAN的指定頻率不同。查驗(yàn)消息也可根據(jù) 査驗(yàn)分發(fā)模式來(lái)發(fā)送。對(duì)于始發(fā)節(jié)點(diǎn)的査驗(yàn)分發(fā)模式可以指示査驗(yàn)消息要被發(fā) 送到環(huán)上兩個(gè)方向上的鄰域節(jié)點(diǎn)。例如,ID為144的節(jié)點(diǎn)可以在ID為135的 節(jié)點(diǎn)的方向和ID為151的節(jié)點(diǎn)的方向這兩個(gè)方向上發(fā)送査驗(yàn)。査驗(yàn)分發(fā)模式 和頻率可以變化。例如,每一鄰近環(huán)不同。
方法1400包括從鄰域節(jié)點(diǎn)接收第二査驗(yàn)消息的動(dòng)作(動(dòng)作1402)。該第 二査驗(yàn)消息向當(dāng)前節(jié)點(diǎn)指示至少發(fā)起第二查驗(yàn)消息的鄰域節(jié)點(diǎn)是當(dāng)前節(jié)點(diǎn)的 鄰居。第二査驗(yàn)消息還可包括始發(fā)鄰域節(jié)點(diǎn)的路由伙伴和鄰域節(jié)點(diǎn)的狀態(tài)。例 如,ID為151的節(jié)點(diǎn)可將第二查驗(yàn)消息發(fā)送到ID為144的節(jié)點(diǎn)。在接收到第 二査驗(yàn)消息之后,可以使ID為144的節(jié)點(diǎn)知道ID為151的節(jié)點(diǎn)是ID為144 的節(jié)點(diǎn)的鄰居。第二査驗(yàn)消息還可包括關(guān)于環(huán)1206上的其它節(jié)點(diǎn)的活躍度信 息。由此, 一般而言,查驗(yàn)消息可以在鄰域內(nèi)交換,并且可用于維護(hù)聯(lián)盟內(nèi)存 在的節(jié)點(diǎn)的鄰域成員資格(對(duì)每一鄰近成員資格)和近似的公共領(lǐng)域視圖。
接收到的查驗(yàn)消息可被周期性地重復(fù)/轉(zhuǎn)發(fā)給向其中發(fā)起該查驗(yàn)(由始發(fā) 節(jié)點(diǎn)發(fā)送)的鄰近鄰域內(nèi)的其它節(jié)點(diǎn)。轉(zhuǎn)發(fā)的査驗(yàn)消息也可根據(jù)查驗(yàn)分發(fā)模式 來(lái)發(fā)送。對(duì)于轉(zhuǎn)發(fā)節(jié)點(diǎn)的查驗(yàn)分發(fā)模式可以指示查驗(yàn)消息要被發(fā)送到遠(yuǎn)離始發(fā) 節(jié)點(diǎn)的方向上的鄰域節(jié)點(diǎn)。例如,ID為1151的節(jié)點(diǎn)可以將發(fā)自ID為144的 節(jié)點(diǎn)的査驗(yàn)在ID為174的節(jié)點(diǎn)的方向上轉(zhuǎn)發(fā)。查驗(yàn)轉(zhuǎn)發(fā)分發(fā)模式可以例如在 每一鄰近環(huán)中變化。
節(jié)點(diǎn)可被配置成以相應(yīng)的間隔接收查驗(yàn)消息。當(dāng)未接收到預(yù)期的査驗(yàn)消息 時(shí),節(jié)點(diǎn)可以解釋通信失敗,并對(duì)應(yīng)發(fā)起該預(yù)期的、但至少晚了的査驗(yàn)消息的 節(jié)點(diǎn)將另一節(jié)點(diǎn)的階段.未知指示設(shè)為真。
方法1400包括將更新請(qǐng)求消息鄰近地路由到理想路由節(jié)點(diǎn)的動(dòng)作(動(dòng)作 1403)。更新請(qǐng)求消息向接收這一路由的更新請(qǐng)求的路由節(jié)點(diǎn)指示當(dāng)前節(jié)點(diǎn)正 作為接收路由節(jié)點(diǎn)的路由伙伴參與。更新請(qǐng)求消息還可至少包括當(dāng)前節(jié)點(diǎn)的鄰 域節(jié)點(diǎn)的身份(例如,采用活躍度信息的形式)。例如,ID為144的節(jié)點(diǎn)可 以將更新消息1216路由到ID為208的節(jié)點(diǎn)(從144偏移了 64的理想路由伙伴)。由于節(jié)點(diǎn)210 (先前計(jì)算的路由節(jié)點(diǎn))最接近208,因此它將接收并處 理路由的更新請(qǐng)求。在接收到更新消息1216之后,可以使ID為210的節(jié)點(diǎn)知 道(或得到加強(qiáng))ID為144的節(jié)點(diǎn)是ID為210的節(jié)點(diǎn)的路由伙伴。
方法1400包括從處理(接收)路由節(jié)點(diǎn)接收更新響應(yīng)消息的動(dòng)作(動(dòng)作 1404)。更新響應(yīng)向當(dāng)前節(jié)點(diǎn)指示處理路由節(jié)點(diǎn)正作為當(dāng)前節(jié)點(diǎn)的路由伙伴來(lái) 參與。更新響應(yīng)消息還可至少包括處理路由伙伴的鄰域節(jié)點(diǎn)的標(biāo)識(shí)符。例如, ID為210的節(jié)點(diǎn)可將更新響應(yīng)1207發(fā)送到ID為144的節(jié)點(diǎn)。在接收到更新 響應(yīng)1207之后,可以使ID為210的節(jié)點(diǎn)知道ID為210的節(jié)點(diǎn)是ID為144的 節(jié)點(diǎn)的路由伙伴。
方法1400還可包括適當(dāng)?shù)馗鹿?jié)點(diǎn)信息以指示當(dāng)前節(jié)點(diǎn)和鄰域節(jié)點(diǎn)正作 為鄰居參與,且當(dāng)前節(jié)點(diǎn)和鄰域節(jié)點(diǎn)正作為路由伙伴參與的動(dòng)作。例如,ID 為144的節(jié)點(diǎn)可以更新對(duì)應(yīng)于ID為151的節(jié)點(diǎn)的節(jié)點(diǎn)信息來(lái)指示ID為144和 141的節(jié)點(diǎn)正參與(鄰近)鄰域。類似地,ID為144的節(jié)點(diǎn)可以更新對(duì)應(yīng)于ID 為210的節(jié)點(diǎn)的節(jié)點(diǎn)信息來(lái)指示ID為144和210的節(jié)點(diǎn)作為路由伙伴參與。
在某些實(shí)施例中,在指定節(jié)點(diǎn)X處保存的應(yīng)用程序狀態(tài)使用可靠洪泛協(xié) 議在其鄰域(X)節(jié)點(diǎn)之中復(fù)制。應(yīng)用程序狀態(tài)中的每一項(xiàng)都有所分配的所有者, 這可以是創(chuàng)建該項(xiàng)的端點(diǎn)。應(yīng)用程序狀態(tài)中的每一項(xiàng)還有由其所有者給予的相 關(guān)聯(lián)的時(shí)間戳(也稱為序列號(hào))。時(shí)間戳具有至少三個(gè)分量
o擁有實(shí)體的實(shí)例ID (例如,無(wú)符號(hào)整數(shù))。必須至少是單調(diào)(>1) 遞增的。
o標(biāo)識(shí)由所有者生成的特定序列的序列ID (例如,URI)。該分量允
許同一擁有者生成多個(gè)獨(dú)立序列。 o標(biāo)識(shí)所標(biāo)識(shí)的應(yīng)用程序序列ID內(nèi)的偏移量的序數(shù)(例如,無(wú)符號(hào)
整數(shù))。
項(xiàng)時(shí)間戳用于在復(fù)制期間檢測(cè)與相應(yīng)的項(xiàng)相關(guān)聯(lián)的最新信息,因?yàn)轫?xiàng)時(shí)間 戳至少生成具有<實(shí)例ID,序列ID,和偏移量>三元組的部分排序。與所復(fù)制的 項(xiàng)相關(guān)聯(lián)的時(shí)間戳與本地時(shí)間戳(如果有)進(jìn)行比較以檢測(cè)最新的那一個(gè)。項(xiàng) 時(shí)間戳也用于支持創(chuàng)建/更新/刪除操作的冪等語(yǔ)義。例如,當(dāng)一節(jié)點(diǎn)接收到更
49新應(yīng)用程序狀態(tài)中的現(xiàn)有項(xiàng)的請(qǐng)求時(shí),該更新僅在與該更新請(qǐng)求相關(guān)聯(lián)的時(shí)間 戳要高于與本地項(xiàng)相關(guān)聯(lián)的時(shí)間戳的情況下才被接受??稍陧?xiàng)沒有被分配單個(gè) 所有者的情況下利用基于向量時(shí)間戳的沖突解決技術(shù)。應(yīng)用程序狀態(tài)復(fù)制提供 了容錯(cuò)并方便了跨鄰域節(jié)點(diǎn)的負(fù)載平衡請(qǐng)求。
作為一個(gè)可任選行為,(在一段時(shí)間之后)未檢測(cè)到來(lái)自(發(fā)自)其它伙 伴(路由和/或伙伴)節(jié)點(diǎn)的預(yù)期的更新或查驗(yàn)的節(jié)點(diǎn)可以認(rèn)為階段狀態(tài)未知, 將階段.未知指示設(shè)為真,并如此向其它第三方節(jié)點(diǎn)報(bào)告它。換言之,可能需要 更新和查驗(yàn)的周期性生成。該要求和實(shí)際超時(shí)值可以是各個(gè)鄰近環(huán)的屬性。例
如,環(huán)對(duì)于某些子環(huán)(例如,在LAN段中)可具有更限制性的定制要求,并 且節(jié)點(diǎn)故障檢測(cè)/報(bào)告相當(dāng)快。另一方面,環(huán)對(duì)于其它子環(huán)(例如,在因特網(wǎng)上) 可具有較不限制的定時(shí)要求(或甚至沒有定時(shí)要求),并且主動(dòng)節(jié)點(diǎn)故障檢測(cè) /報(bào)告相當(dāng)長(zhǎng)(或不存在)。
圖15示出了用于發(fā)現(xiàn)關(guān)于另一節(jié)點(diǎn)的活躍度信息的方法1500的示例流程 圖。方法1500將參考圖12A和12B中的環(huán)1206來(lái)描述。 一般而言,諸如, 例如同步1204、同步響應(yīng)1204、更新1216、更新響應(yīng)1207等任何消息可包括 至少一個(gè)活躍度首部。在某些實(shí)施例中,活躍度首部包括節(jié)點(diǎn)的<節(jié)點(diǎn)ID,實(shí) 例ID,階段[階段狀態(tài)值].[階段.未知指示],新鮮度值,色彩(鄰近性)值,以及 權(quán)重值>。在其它實(shí)施例中,活躍度首部包括<階段[階段狀態(tài)值].[階段.未知指 示],新鮮度值,色彩(鄰近性)值,以及權(quán)重值>。在這些其它實(shí)施例中,活躍 度首部可用于擴(kuò)充已經(jīng)包括了發(fā)送者和原始節(jié)點(diǎn)的節(jié)點(diǎn)ID和實(shí)例ID的尋址首 部。由于尋址首部已經(jīng)包括了節(jié)點(diǎn)ID和實(shí)例ID,因此該信息可在活躍度首部 中省略。
方法1500包括接收表示關(guān)于參與聯(lián)盟基礎(chǔ)結(jié)構(gòu)的節(jié)點(diǎn)的狀態(tài)信息的活躍 度首部的動(dòng)作(動(dòng)作1501)?;钴S度首部至少包括接收到的參與節(jié)點(diǎn)ID、接 收到的節(jié)點(diǎn)的實(shí)例ID、接收到的階段值、以及接收到的新鮮度值。例如,ID 為144的節(jié)點(diǎn)可從ID為151的節(jié)點(diǎn)接收同步響應(yīng)1204中的第一活躍度首部。 該第一活躍度首部可包括ID為174的節(jié)點(diǎn)的<參與節(jié)點(diǎn)ID,實(shí)例ID,階段[階 段狀態(tài)值].[階段.未知指示],新鮮度值,色彩(鄰近性)值,以及權(quán)重值>。階 段狀態(tài)值(例如,插入、同步、路由、操作)標(biāo)識(shí)在第一新鮮度值的時(shí)刻ID
50為174的節(jié)點(diǎn)的所表達(dá)的階段。階段值(例如,階段狀態(tài)[插入,同步,路由, 操作]和階段.未知)標(biāo)識(shí)在第一新鮮度值所指示的時(shí)刻ID為174的節(jié)點(diǎn)的所表 達(dá)的和/或檢測(cè)到的階段信息。
然而,新鮮度值可以因通信延遲而扣除。新鮮度值也可隨著時(shí)間的流逝而 衰減。對(duì)于新鮮度值的衰減曲線可以對(duì)不同階段狀態(tài)(包括未知)而不同(并 且可能不是線性和對(duì)稱的)。由此,跨不同的節(jié)點(diǎn)階段,新鮮度值的衰減可以 是非線性和/或非對(duì)稱的。
方法1500包括至少訪問在當(dāng)前節(jié)點(diǎn)處維護(hù)的參與節(jié)點(diǎn)的當(dāng)前實(shí)例ID、當(dāng) 前階段值、以及當(dāng)前新鮮度值的動(dòng)作(動(dòng)作1502)。例如,ID為144的節(jié)點(diǎn) 可以訪問先前接收并存儲(chǔ)的ID為174的節(jié)點(diǎn)的實(shí)例ID、階段值[階段狀態(tài) 值].[階段.未知指示]以及新鮮度值。
方法1500包括至少分別將接收到的實(shí)例ID、接收到的階段值和接收到的 新鮮度值與在當(dāng)前節(jié)點(diǎn)處的當(dāng)前實(shí)例ID、當(dāng)前階段值和當(dāng)前新鮮度值進(jìn)行比 較的動(dòng)作(動(dòng)作1503)。例如,ID為144的節(jié)點(diǎn)可以將先前接收并存儲(chǔ)的ID 為174的節(jié)點(diǎn)的實(shí)例ID、階段值[階段狀態(tài)].[階段.未知指示]和新鮮度值與在活 躍度首部中接收到的實(shí)例ID、階段值[階段狀態(tài)].[階段.未知指示]和新鮮度值進(jìn) 行比較。
ID為144的節(jié)點(diǎn)可基于(按序)第一實(shí)例ID大于當(dāng)前存儲(chǔ)的ID為174 的節(jié)點(diǎn)的實(shí)例ID、基于第一階段狀態(tài)值比當(dāng)前存儲(chǔ)的ID為174的節(jié)點(diǎn)的階段 狀態(tài)值更前、或基于第一新鮮度值是大于當(dāng)前存儲(chǔ)的ID為174的節(jié)點(diǎn)的新鮮 度值的值,確定ID為174的節(jié)點(diǎn)的當(dāng)前狀態(tài)信息(例如,從ID為151的節(jié)點(diǎn) 接收)是陳舊的。ID為144的節(jié)點(diǎn)還可確定至少一個(gè)階段.未知指示(或者是 當(dāng)前存儲(chǔ)的,或者是在活躍度首部中接收的)指示在檢測(cè)/發(fā)送階段狀態(tài)時(shí)階段 狀態(tài)是己知的。
方法1500包括基于比較確定參與節(jié)點(diǎn)的狀態(tài)信息是否要在當(dāng)前節(jié)點(diǎn)處更 新的動(dòng)作(動(dòng)作1504)。例如,基于ID為174的節(jié)點(diǎn)的值的比較,ID為144 的節(jié)點(diǎn)可確定ID為174的節(jié)點(diǎn)的狀態(tài)信息要被更新。更新ID為174的節(jié)點(diǎn)的 過(guò)時(shí)的狀態(tài)信息可包括用包括在活躍度首部中的值來(lái)替換當(dāng)前存儲(chǔ)的值(例 如,對(duì)于實(shí)例ID、階段狀態(tài)值、階段.未知指示或新鮮度值)。例如,ID為144的節(jié)點(diǎn)可以更新ID為174的節(jié)點(diǎn)的狀態(tài)信息以指示ID為174的節(jié)點(diǎn)已轉(zhuǎn)換到 更前面的階段狀態(tài)。
在某些實(shí)施例中,可以檢測(cè)到與參與節(jié)點(diǎn)的通信可能已丟失。例如,ID 為144的節(jié)點(diǎn)可以檢測(cè)到與ID為151的節(jié)點(diǎn)的通信已丟失。簡(jiǎn)要地參考圖17, 響應(yīng)于對(duì)活躍度事件1701的先前的訂閱(具有ID為151的節(jié)點(diǎn)的端點(diǎn)),應(yīng) 用層1752可以向功能層1751發(fā)送端點(diǎn)停機(jī)事件1703 (具有ID為151的節(jié)點(diǎn) 的端點(diǎn))。在這些實(shí)施例中,這些檢測(cè)到的活躍度條件可以在階段.未知指示符 被設(shè)為真且?guī)в猩弦粋€(gè)已知的階段狀態(tài)值的活躍度信息中指示。
方法1500還可包括從聯(lián)盟基礎(chǔ)結(jié)構(gòu)中的第二個(gè)不同的節(jié)點(diǎn)接收包括第二 活躍度首部的消息的動(dòng)作。例如,ID為144的節(jié)點(diǎn)可以接收包括第二活躍度 首部的狀態(tài)消息(從ID為103的節(jié)點(diǎn)或環(huán)1206的某一其它節(jié)點(diǎn))。該第二活 躍度首部可包括ID為174的節(jié)點(diǎn)的<參與節(jié)點(diǎn)ID,第二實(shí)例ID,第二階段值 [階段狀態(tài)值].[階段.未知指示],第二新鮮度值,第二色彩(鄰近性)值,以及第 二權(quán)重值>。第二階段狀態(tài)值(例如,階段狀態(tài)[插入,同步,路由,操作]和 階段.未知指示)標(biāo)識(shí)在第二新鮮度值的時(shí)刻ID為174的節(jié)點(diǎn)的所表達(dá)的/檢測(cè) 到的階段。
或者,在接收第一活躍度首部之后,ID為144的節(jié)點(diǎn)可嘗試直接與ID為 174的節(jié)點(diǎn)通信。如果通信成功,則ID為174的節(jié)點(diǎn)可以返回在尋址首部中 有節(jié)點(diǎn)ID和第二實(shí)例ID且具有活躍度首部的消息(例如,同步響應(yīng)),該活 躍度首部包括<第二階段值,第二新鮮度值,第二色彩(鄰近性)值,以及第二 權(quán)重值>。如果檢測(cè)到故障,貝ljID為144的節(jié)點(diǎn)生成內(nèi)部活躍度狀態(tài)改變(例 如,新鮮度=最大,且階段.未知指示=真)并如同該狀態(tài)改變是從另一節(jié)點(diǎn)接 收的那樣來(lái)處理該狀態(tài)改變。這一狀態(tài)改變具有最高新鮮度值。
方法1500還可包括將第二實(shí)例ID、第二階段值和第二新鮮度值分別與當(dāng) 前實(shí)例ID、當(dāng)前階段值和當(dāng)前新鮮度值進(jìn)行比較的動(dòng)作(動(dòng)作1506)。例如, 在從ID為103的節(jié)點(diǎn)接收到狀態(tài)消息之后,ID為144的節(jié)點(diǎn)可以基于(按序) 第二實(shí)例ID大于第一實(shí)例ID、第二階段比第一極端值更前、或第二新鮮度值 大于第一階段值,來(lái)確定ID為151的節(jié)點(diǎn)的當(dāng)前狀態(tài)信息是陳舊的。
方法1500還可包括基于比較來(lái)確定是否要更新參與節(jié)點(diǎn)的狀態(tài)信息的動(dòng)
52作。例如,基于ID為174的節(jié)點(diǎn)的值的比較,ID為144的節(jié)點(diǎn)可確定ID為 174的節(jié)點(diǎn)的狀態(tài)信息要被更新。更新ID為174的節(jié)點(diǎn)的過(guò)時(shí)的狀態(tài)信息可 包括用包括在第二活躍度首部中的值來(lái)替換當(dāng)前存儲(chǔ)的值(例如,對(duì)于實(shí)例ID、 階段狀態(tài)值、階段.未知指示或新鮮度值)。例如,ID為144的節(jié)點(diǎn)可以更新 ID為174的節(jié)點(diǎn)的狀態(tài)信息以指示ID為174的節(jié)點(diǎn)已轉(zhuǎn)換到更前面的階段狀 態(tài)。
在某些實(shí)施例中,在相等的色彩值的上下文中比較階段值。如上所述,節(jié) 點(diǎn)可參與多個(gè)鄰近環(huán)。參與多個(gè)鄰近環(huán)可以作為對(duì)更具體的環(huán)的參與蘊(yùn)含著對(duì) 更一般的環(huán)(沿著公共脊骨)的參與的結(jié)果而發(fā)生。例如,回頭參考圖5,節(jié) 點(diǎn)對(duì)環(huán)532的參與也蘊(yùn)含著節(jié)點(diǎn)正參與環(huán)522、 511和501。由此,更具體的環(huán) 的色彩也表示所有父鄰近環(huán)。同樣如上所述,對(duì)多個(gè)鄰近環(huán)的參與可以在一個(gè) 環(huán)中的節(jié)點(diǎn)被別名化到一個(gè)或多個(gè)其它環(huán)(可能沿著不同的脊骨)時(shí)發(fā)生。例 如,仍參考圖5,參與環(huán)532的節(jié)點(diǎn)可以被別名化到環(huán)531 (或甚至環(huán)541,這 蘊(yùn)含了對(duì)環(huán)531、 522、 511和501的參與)。由此, 一個(gè)環(huán)(例如,環(huán)531) 的色彩可被視為另一個(gè)環(huán)(例如,環(huán)532)的對(duì)等色彩(或鄰近性)。
當(dāng)一節(jié)點(diǎn)以別名化的方式參與多個(gè)鄰近環(huán)時(shí),該節(jié)點(diǎn)的階段值(例如,階 段狀態(tài)值和/或階段.未知指示)有可能在不同鄰近環(huán)之間有所不同。由此,接 收關(guān)于另一節(jié)點(diǎn)的狀態(tài)信息的節(jié)點(diǎn)在確定對(duì)該節(jié)點(diǎn)和色彩是否要更新當(dāng)前狀 態(tài)信息之前標(biāo)識(shí)關(guān)于狀態(tài)信息(色彩)的相應(yīng)的鄰近環(huán)。例如,ID為144的 節(jié)點(diǎn)可以在將所接收到的狀態(tài)信息與當(dāng)前狀態(tài)信息進(jìn)行比較之前標(biāo)識(shí)對(duì)于所 接收到的對(duì)應(yīng)于ID為174的節(jié)點(diǎn)的狀態(tài)信息的相應(yīng)的鄰近環(huán)。
標(biāo)識(shí)適當(dāng)?shù)泥徑h(huán)可以包括將接收到的色彩值與一個(gè)或多個(gè)當(dāng)前色彩值 進(jìn)行比較。當(dāng)接收到的色彩值和當(dāng)前色彩值相等時(shí),可將諸如,例如當(dāng)前實(shí)例 ID、當(dāng)前階段值和當(dāng)前新鮮度值等其它狀態(tài)信息與諸如,例如接收到的實(shí)例ID、 接收到的階段值和接收到的新鮮度值等相應(yīng)的接收到的狀態(tài)信息進(jìn)行比較。另 一方面,當(dāng)接收到的色彩值和當(dāng)前色彩值不同時(shí),不發(fā)生進(jìn)一步的比較。
色彩值之間的相等可以用多種方式來(lái)獲得。例如,色彩值之間的相等可以 在當(dāng)前色彩值和接收到的色彩值指示相同的鄰近環(huán)(例如,環(huán)532)時(shí)獲得。 此外,色彩值之間的相等可以在將更具體的色彩值與相應(yīng)的父色彩值(例如,沿著同一脊骨的另一環(huán))比較來(lái)獲得。例如,將環(huán)532的色彩值與環(huán)511 (或 環(huán)522或501)的色彩值進(jìn)行比較可得到相等。由此,子鄰近性是父鄰近性,
但是更為具體。
由此, 一般而言,聯(lián)盟基礎(chǔ)結(jié)構(gòu)中當(dāng)前可操作的節(jié)點(diǎn)可以甚至在與其它節(jié) 點(diǎn)的通信看似丟失時(shí)交換關(guān)于這些其它節(jié)點(diǎn)的所表達(dá)的和檢測(cè)到的活躍度狀
態(tài)信息。
程序引導(dǎo)機(jī)制
一般而言,為使節(jié)點(diǎn)成為聯(lián)盟的活動(dòng)成員(例如,加入),節(jié)點(diǎn)必須與已 經(jīng)是它打算加入的葉環(huán)的活動(dòng)成員的至少一個(gè)其它節(jié)點(diǎn)通信。為幫助確保該初 始形式的通信是可用的,聯(lián)盟可以利用程序引導(dǎo)機(jī)制。程序引導(dǎo)機(jī)制可用作當(dāng) 其它類型的通信無(wú)法標(biāo)識(shí)葉環(huán)的活動(dòng)成員或者安全約束要求新加入的節(jié)點(diǎn)最 初與諸如種子節(jié)點(diǎn)等一組特殊節(jié)點(diǎn)中的至少一個(gè)節(jié)點(diǎn)通信時(shí)的最后手段。艮卩, 當(dāng)其它類型的通信失敗或者由于安全要求,可使用程序引導(dǎo)機(jī)制來(lái)標(biāo)識(shí)葉環(huán)的 活動(dòng)成員節(jié)點(diǎn)。
在某些實(shí)施例中,使用種子節(jié)點(diǎn)來(lái)程序引導(dǎo)與聯(lián)盟的通信。種子節(jié)點(diǎn)提供 了對(duì)某些類型的跨近鄰(近鄰間)的通信的公知的入口點(diǎn)。種子節(jié)點(diǎn)因基礎(chǔ)結(jié) 構(gòu)故障/恢復(fù)和一般的動(dòng)態(tài)性而幫助復(fù)原環(huán)分區(qū)。每一個(gè)環(huán)可具有至少一個(gè)可操 作種子節(jié)點(diǎn)以便為聯(lián)盟提供基本程序引導(dǎo)特性。
對(duì)等種子節(jié)點(diǎn)可以在它們之中通信以便維護(hù)一近鄰的環(huán)結(jié)構(gòu)(例如,雙重 鏈表),該結(jié)構(gòu)至少由對(duì)于該近鄰的所有活動(dòng)種子節(jié)點(diǎn)構(gòu)成??墒褂脤S梅N子 節(jié)點(diǎn)同步協(xié)議來(lái)向每一種子節(jié)點(diǎn)至少提供所有其它種子節(jié)點(diǎn)的存在(活動(dòng))狀 態(tài)的總知識(shí)?;顒?dòng)種子節(jié)點(diǎn)是它所歸屬的鄰近性葉環(huán)以及該葉環(huán)的所有其它祖 先環(huán)的成員節(jié)點(diǎn)。由此,種子節(jié)點(diǎn)可以表示例如從種子節(jié)點(diǎn)的葉環(huán)到根環(huán)的整 個(gè)鄰近環(huán)脊骨。因此,種子節(jié)點(diǎn)可以作為這些鄰近環(huán)的每一個(gè)中的高度可靠且 公知的入口節(jié)點(diǎn)來(lái)運(yùn)作。結(jié)果,關(guān)于種子節(jié)點(diǎn)的存在狀態(tài)可用于聯(lián)盟內(nèi)的各種 形式的通信(例如近鄰間通信)。因此,種子節(jié)點(diǎn)可以提供多個(gè)特殊的特性, 諸如,例如擔(dān)當(dāng)對(duì)于加入節(jié)點(diǎn)的公知的"加入點(diǎn)",擔(dān)當(dāng)安全環(huán)授權(quán)機(jī)構(gòu),協(xié) 助復(fù)原基礎(chǔ)結(jié)構(gòu)分區(qū),以及擔(dān)當(dāng)對(duì)于其每一近鄰的穩(wěn)定"入口節(jié)點(diǎn)"。
為提供存在數(shù)據(jù),種子節(jié)點(diǎn)的到來(lái)和有序的離開可以被注冊(cè)為其每一近鄰
54中的會(huì)合點(diǎn)處的穩(wěn)定入口點(diǎn)。例如,注冊(cè)消息可被路由到其目的地ID是串 "Proximity:/"的SHA-1散列的固定URI。盡管在一個(gè)實(shí)施例中擔(dān)當(dāng)穩(wěn)定入口 點(diǎn)的種子節(jié)點(diǎn)以此方式來(lái)注冊(cè)其自身,但是存在其中所選的非種子節(jié)點(diǎn)也可用 同一方式并用此處對(duì)種子節(jié)點(diǎn)描述的相同或相似的協(xié)議來(lái)注冊(cè)其自身的其它 實(shí)施例。當(dāng)穩(wěn)定入口節(jié)點(diǎn)(諸如種子節(jié)點(diǎn))注冊(cè)時(shí),該穩(wěn)定入口節(jié)點(diǎn)可以指示 它是其成員的每一個(gè)環(huán)。由此,在由該固定URI標(biāo)識(shí)的會(huì)合點(diǎn)處維護(hù)的信息本 質(zhì)上是穩(wěn)定入口節(jié)點(diǎn)及其相應(yīng)的環(huán)成員的列表。因此,任何節(jié)點(diǎn)可以參考由該 固定URI標(biāo)識(shí)的會(huì)合點(diǎn)來(lái)獲得可用穩(wěn)定入口節(jié)點(diǎn)及其環(huán)成員的列表。
在一個(gè)實(shí)施例中,穩(wěn)定入口節(jié)點(diǎn)直接注冊(cè)這些到達(dá)和離開事件。在另一實(shí) 施例中,穩(wěn)定入口節(jié)點(diǎn)直接在其直接鄰近環(huán)內(nèi)的會(huì)合點(diǎn)處注冊(cè)這些事件,并且 該會(huì)合點(diǎn)透明地幫助(直接地或間接地)更新注冊(cè)/取消注冊(cè)穩(wěn)定入口節(jié)點(diǎn)所屬 的每一剩余的鄰近環(huán)中的所有其它適當(dāng)?shù)臅?huì)合點(diǎn)。聯(lián)盟的應(yīng)用程序狀態(tài)定序和 傳播特性可用于維護(hù)并傳播該穩(wěn)定入口節(jié)點(diǎn)注冊(cè)信息。例如,可使用可靠洪泛 協(xié)議來(lái)在節(jié)點(diǎn)的鄰域節(jié)點(diǎn)之間復(fù)制保存的應(yīng)用程序狀態(tài)。
穩(wěn)定入口節(jié)點(diǎn)的存在數(shù)據(jù)向著根環(huán)的提升允許聯(lián)盟中的其它節(jié)點(diǎn)在每一 近鄰中查找至少一個(gè)入口節(jié)點(diǎn)。入口節(jié)點(diǎn)査找可通過(guò)將節(jié)點(diǎn)査找消息向著執(zhí)行 査找的節(jié)點(diǎn)的葉環(huán)和期望的鄰近環(huán)的最低公共祖先環(huán)("LCAR")中的上述 確定的會(huì)合點(diǎn)路由來(lái)促進(jìn)。例如,參考圖5,環(huán)541中的節(jié)點(diǎn)可能期望與環(huán)533 中的節(jié)點(diǎn)通信。然而,環(huán)541中的節(jié)點(diǎn)可能沒有環(huán)533中的任何節(jié)點(diǎn)的直接知 識(shí)。由此,環(huán)541中的節(jié)點(diǎn)可以向環(huán)522 (環(huán)541和環(huán)533的LCAR環(huán))發(fā)送 節(jié)點(diǎn)査找消息。環(huán)522中處理入口節(jié)點(diǎn)存在信息(例如,由于該入口節(jié)點(diǎn)獲得 的注冊(cè)消息而導(dǎo)致存在于系統(tǒng)中)會(huì)合點(diǎn)節(jié)點(diǎn)可返回具有至少關(guān)于環(huán)533中的 已注冊(cè)穩(wěn)定入口節(jié)點(diǎn)的聯(lián)系信息的査找響應(yīng)消息。
在某些實(shí)施例中,穩(wěn)定入口節(jié)點(diǎn)是被特別地配置為用于維護(hù)各個(gè)近鄰的存 在數(shù)據(jù)的穩(wěn)定入口節(jié)點(diǎn)的種子節(jié)點(diǎn)。在其它實(shí)施例中,其它類型的節(jié)點(diǎn)也可擔(dān) 當(dāng)維護(hù)關(guān)于各個(gè)近鄰的存在數(shù)據(jù)的穩(wěn)定入口節(jié)點(diǎn),并且還可被配置成執(zhí)行其它 操作。例如,某些其它類型的節(jié)點(diǎn)可被配置(例如,由管理員)為高度可用, 且因此適用作穩(wěn)定入口節(jié)點(diǎn)(即,如上所述地注冊(cè))。然而,其它類型的節(jié)點(diǎn) 可能不包括附加種子節(jié)點(diǎn)功能(例如,可能不作為安全環(huán)授權(quán)機(jī)構(gòu)而被信任)。
55在某些實(shí)施例中,維護(hù)關(guān)于其直接近鄰的入口節(jié)點(diǎn)存在狀態(tài)的會(huì)合點(diǎn)可以在一 個(gè)或多個(gè)祖先環(huán)中將其自身注冊(cè)為穩(wěn)定入口節(jié)點(diǎn)。 近鄰間通信
本發(fā)明的各實(shí)施例還可方便諸如,例如環(huán)樹的不同鄰近分支中的節(jié)點(diǎn)之間 的近鄰間通信。近鄰間通信可用于向鄰近地劃分的環(huán)基礎(chǔ)結(jié)構(gòu)中的一個(gè)或多
個(gè),以及可能所有鄰近環(huán)和/或在這些鄰近環(huán)之間通信?,F(xiàn)在參考圖5A,圖5A 示出了示例性的、歸納了鄰近性的分區(qū)樹500,且更詳細(xì)地示出了分區(qū)樹500 的各部分。近鄰間通信可以發(fā)生在圖5A中的各節(jié)點(diǎn)之間。
如圖5A所示,環(huán)的分區(qū)樹500另外包括環(huán)513下的各個(gè)子環(huán)。另外的子 環(huán)的每一個(gè)表示一已排序鏈表的一個(gè)分區(qū)。如先前對(duì)于圖5所描述的,在分區(qū) 樹500內(nèi),根環(huán)501基于準(zhǔn)則571 (第一管理域邊界準(zhǔn)則)被劃分成多個(gè)子環(huán), 包括子環(huán)511、 512、 513和514。同樣如先前對(duì)圖5所描述的,子環(huán)511可基 于準(zhǔn)則581 (第二管理域邊界準(zhǔn)則)被進(jìn)一步劃分成多個(gè)子環(huán),包括子環(huán)521、 522和523。子環(huán)522下的其它子環(huán)基于其它準(zhǔn)則來(lái)進(jìn)一步劃分。
如上所述,在分區(qū)樹500內(nèi),每一節(jié)點(diǎn)具有單個(gè)ID,并沿著從根開始到 葉的相應(yīng)分區(qū)路徑(脊骨)參與環(huán)。例如,參與子環(huán)552的每一節(jié)點(diǎn)也參與子 環(huán)543、 531、 522、 511和根501。
在圖5A中,子環(huán)513也可以基于諸如,例如州管轄權(quán)等其它準(zhǔn)則被進(jìn)一 步劃分成多個(gè)子環(huán),包括子環(huán)561和562。子環(huán)562可以基于諸如,例如城市 管轄權(quán)等其它準(zhǔn)則被進(jìn)一步劃分成多個(gè)子環(huán),包括子環(huán)571和572。因此,在 圖5A內(nèi),可使用近鄰間通信將消息從環(huán)541的節(jié)點(diǎn)發(fā)送到環(huán)572的節(jié)點(diǎn),而 不要求該通信從環(huán)541沿著脊骨向上到根環(huán)501再?gòu)母h(huán)501向下回到環(huán)572。
近鄰間通信可作為諸如,例如廣播、多播或任意播等在環(huán)樹中實(shí)現(xiàn)的通信 模式的一部分來(lái)包括。廣播可包括將消息發(fā)送到環(huán)樹中的所有活動(dòng)節(jié)點(diǎn)。多播 可包括將消息發(fā)送到環(huán)樹中的一組節(jié)點(diǎn)。任意播可包括將消息發(fā)送到環(huán)樹中的 至少一個(gè)節(jié)點(diǎn)。
圖19A示出了幫助近鄰間通信的示例性的、歸納了鄰近性的環(huán)的分區(qū)樹 1900。在環(huán)的分區(qū)樹1900內(nèi),根環(huán)l卯l基于所選準(zhǔn)則(第一管理域邊界準(zhǔn)則) 被劃分成多個(gè)子環(huán),包括子環(huán)l、 2、 3和4。子環(huán)l被進(jìn)一步劃分成子環(huán)ll、21、 31和41。子環(huán)ll被進(jìn)一步劃分成子環(huán)lll、 211和311。子環(huán)21被進(jìn)一 步劃分成子環(huán)121、 221、 321、 421和521。盡管未明確描繪,但諸如,例如子 環(huán)2、 3、 4、 31和41等其它子環(huán)也可被進(jìn)一步劃分。
歸納了鄰近性的環(huán)的分區(qū)樹1900中的環(huán)的編號(hào)約定被配置為使得在第一 個(gè)數(shù)字之后的任何數(shù)字都指示環(huán)的父環(huán)。例如,環(huán)"311"中的"11"指示環(huán) 11是環(huán)311的父環(huán)。類似地,環(huán)"41"中的"1"指示環(huán)1是環(huán)41的父環(huán)。全 局環(huán)1901是用單個(gè)數(shù)字編號(hào)的任何環(huán),諸如,例如環(huán)1、 2、 3和4的父環(huán)。 類似于圖5A中的歸納了鄰近性的環(huán)的分區(qū)樹500,環(huán)的分區(qū)樹1900可以基于 各種鄰近性準(zhǔn)則來(lái)劃分。
在以下描述和所附權(quán)利要求書中,使用注釋R["<數(shù)字>"]來(lái)指代環(huán)號(hào)。 例如,R["ll"]指環(huán)11。在以下描述和所附權(quán)利要求書中,使用注釋N卜數(shù)字 >]來(lái)指代節(jié)點(diǎn)號(hào)。例如,N[1311]指節(jié)點(diǎn)1311。
為方便環(huán)樹中的通信,節(jié)點(diǎn)可維護(hù)將環(huán)匹配到這些環(huán)中的相應(yīng)入口節(jié)點(diǎn)的 入口表。如上所述,基于環(huán)的分區(qū)樹1900的配置,父環(huán)包含來(lái)自其每一子環(huán) 的所有節(jié)點(diǎn)。例如,環(huán)11包含來(lái)自R["lll"]、R["211"]和R["3ir,]的所有節(jié)點(diǎn)。
由此,將消息發(fā)送到環(huán)ii足以使該消息到達(dá)環(huán)R["iir,]、R["2ir]和R["3ir]
中的任何節(jié)點(diǎn)。因此,在某些實(shí)施例中,節(jié)點(diǎn)的入口表可被縮減為關(guān)于從這些 節(jié)點(diǎn)所駐留的環(huán)的觀點(diǎn)來(lái)看相當(dāng)不同的環(huán)的入口。例如,N[llll]可僅維護(hù)關(guān) 于R["21"] — N[1121〗的入口,因?yàn)榫S護(hù)關(guān)于多個(gè)子環(huán)或R["21"]的入口將是冗 余的。
旁系環(huán)集的創(chuàng)建和維護(hù)
在本說(shuō)明書和所附權(quán)利要求書中,指定環(huán)的任何對(duì)等環(huán)被定義為指定環(huán)的 "旁系環(huán)"。在本說(shuō)明書和所附權(quán)利要求書中,指定環(huán)的祖先環(huán)的任何對(duì)等環(huán) 也被定義為指定環(huán)的"旁系環(huán)"。指定環(huán)的任何旁系環(huán)也是該指定環(huán)中所包括 的所有節(jié)點(diǎn)的旁系環(huán)。
由此,例如,仍參考圖19A, R["211"]是R["lir]的旁系環(huán),因?yàn)镽["211"]
是R["iir']的對(duì)等體。R["2ir]也是R["iir]中包括的任何節(jié)點(diǎn),諸如,例如
N[1311]的旁系環(huán)。此夕卜,R["21"]是R["111"]的旁系環(huán),因?yàn)镽["21"]是R["11"] (即,R["lll"]的祖先)的對(duì)等體。R["21"]也是R["111"]中包括的任何節(jié)點(diǎn),
57諸如,例如N[1111]的旁系環(huán)。
在本說(shuō)明書和所附權(quán)利要求書中,"旁系環(huán)集"("CRS")被定義為從 指定環(huán)或指定環(huán)內(nèi)的節(jié)點(diǎn)的觀點(diǎn)來(lái)看的一個(gè)或多個(gè)旁系環(huán)的集合。例如,在圖 19A中,對(duì)R["221"],以及R["221"]中的任何節(jié)點(diǎn),諸如,例如N[8221]的旁 系環(huán)集包括R["11"]、 R["121"]、 R["31"]、 R["41"]、 R["2"]、 R["3"]和R["4"]。
由此,為方便近鄰間通信,節(jié)點(diǎn)可維護(hù)一 CRS入口表,該表包括一個(gè)或 多個(gè)旁系環(huán)以及對(duì)該一個(gè)或多個(gè)旁系環(huán)的一個(gè)或多個(gè)相應(yīng)的入口節(jié)點(diǎn)。CRS入 口表可以是包括一個(gè)或多個(gè)<旁系環(huán),1到N入口節(jié)點(diǎn)〉項(xiàng)的數(shù)據(jù)結(jié)構(gòu),其中N 是某一整數(shù)。例如,該數(shù)據(jù)結(jié)構(gòu)的格式可以是<旁系環(huán)_01,入口節(jié)點(diǎn)_01,入口 節(jié)點(diǎn)_02,...>,其中省略號(hào)表示對(duì)旁系環(huán)一Ol的一個(gè)或多個(gè)另外的入口節(jié)點(diǎn)。
為創(chuàng)建CRS入口表,節(jié)點(diǎn)可利用本地知識(shí)、用于在環(huán)樹中傳播狀態(tài)的會(huì) 合協(xié)議消息(例如,査驗(yàn)消息、更新消息和更新響應(yīng))、應(yīng)用程序消息、以及 用于方便環(huán)樹中的指定通信模式(例如,廣播、多播和任意播)的消息。
節(jié)點(diǎn)可利用來(lái)自節(jié)點(diǎn)所參與的所有級(jí)別的環(huán)的諸如,例如路由表信息等本 地知識(shí)。例如,仍參考圖19,N[1121]可以是R['T,]中N[1311]的鄰居。從N[1121] 的觀點(diǎn)來(lái)看N[1311]的一個(gè)旁系環(huán)是R["21"]。因此,N[1311]可以將對(duì)(R["21"], N[1121])(在這一情況下,具有單個(gè)入口節(jié)點(diǎn)的項(xiàng))插入到N[1311]的CRS入 口表中。通過(guò)利用這一類型的本地知識(shí),節(jié)點(diǎn)可將入口插入到CRS入口表中。
除了特別地預(yù)期的消息之外,節(jié)點(diǎn)可以在本來(lái)用于其它目的,諸如用于傳 播鄰域和路由伙伴狀態(tài)信息的消息中將其CRS入口表信息傳播到其它節(jié)點(diǎn)。 例如,節(jié)點(diǎn)可以在發(fā)送給鄰域節(jié)點(diǎn)的査驗(yàn)消息以及在路由伙伴節(jié)點(diǎn)之間交換的 更新消息和更新響應(yīng)中包括CRS入口表狀態(tài)。從另一節(jié)點(diǎn)接收CRS入口表狀 態(tài)的節(jié)點(diǎn)可以使用所接收到的CRS入口表狀態(tài)來(lái)擴(kuò)充和/或維護(hù)其自己的CRS 入口表。
例如,當(dāng)一節(jié)點(diǎn)與其鄰居/伙伴節(jié)點(diǎn)(例如,在會(huì)合協(xié)議層處)交換會(huì)合 查驗(yàn)/更新消息時(shí),該節(jié)點(diǎn)還可交換(至少部分,可能全部)其CRS入口表(并 使用從其鄰居/伙伴接收到的CRS入口表狀態(tài)來(lái)更新其自己的表)。例如,假 定N[1311]沒有關(guān)于R["3"]中的任何節(jié)點(diǎn)的先驗(yàn)知識(shí)(在環(huán)1901的上下文中)。 然而,N[1311]的確具有鄰居N[8221](在R["r]中),并且N[8221]的CRS入口表具有入口(R["3"],N[8223])。至少由于N[1311]和N[8221]是鄰居,N[1311] 和N[8211]可以不時(shí)地向?qū)Ψ桨l(fā)送查驗(yàn)消息。N[8221]可以在發(fā)送給N[1311]的 査驗(yàn)消息中包括(至少部分,可能全部)其CRS入口表。由此,當(dāng)N[Bll] 從N[8221]接收査驗(yàn)消息時(shí),該査驗(yàn)消息可包括N[8221]的CRS入口表。從 N[8221]的CRS入口表中,N[1311]可以標(biāo)識(shí)項(xiàng)〈R["3"], N[8223],...〉,并在其 自己的CRS入口表中包括項(xiàng)〈R["3"], N[8223], ...>。 N[131 l]還可在其CRS中 標(biāo)識(shí)關(guān)于其它環(huán)的其它項(xiàng),并在其自己的CRS入口表中包括這些其它項(xiàng)。
CRS入口表狀態(tài)可以類似地在環(huán)中的路由伙伴之間交換的更新消息和更 新響應(yīng)中交換。同樣,任何路由協(xié)議消息可用于獲知CRS入口節(jié)點(diǎn)(例如, 活躍度信息)。并且,可使用旨在維護(hù)CRS入口表的特定消息。
CRS入口表狀態(tài)也可在促進(jìn)環(huán)樹中的指定通信模式(例如,廣播、多播 和任意播)的消息中發(fā)現(xiàn)。例如,為將消息廣播到環(huán)樹中的每一節(jié)點(diǎn),廣播算 法可使用專用于廣播的各種類型的消息。發(fā)送這些廣播專用消息的節(jié)點(diǎn)可以在 廣播專用消息中包括CRS入口表狀態(tài)。類似地,當(dāng)將消息多播到一組節(jié)點(diǎn)中 的每一節(jié)點(diǎn)時(shí),多播算法可使用專用于多播的各種類型的消息。發(fā)送這些多播 專用消息的節(jié)點(diǎn)可以在多播專用消息中包括CRS入口表狀態(tài)。同樣,當(dāng)將消 息任意播到至少一個(gè)節(jié)點(diǎn)時(shí),任意播算法可以使用專用于任意播的各種類型的 消息。發(fā)送這些任意播專用消息的節(jié)點(diǎn)可以在任意播專用消息中包括CRS入 口表狀態(tài)。接收通信模式專用消息的節(jié)點(diǎn)可以標(biāo)識(shí)適當(dāng)?shù)娜肟?(例如, <旁系 環(huán),入口節(jié)點(diǎn)>項(xiàng)),并在其自己的CRS入口表中包括來(lái)自這些入口的部分或 全部狀態(tài)。
CRS狀態(tài)也可在應(yīng)用程序之間交換的應(yīng)用程序組件消息中發(fā)現(xiàn)。簡(jiǎn)要地 參考圖l,應(yīng)用層121、 122和/或123可以交換包括CRS狀態(tài)的應(yīng)用程序組件 消息。在接收到包括CRS狀態(tài)的應(yīng)用程序組件消息時(shí),應(yīng)用層可將該CRS狀 態(tài)向下傳送到相應(yīng)的其它較低層,諸如,例如傳送到會(huì)合協(xié)議層,以擴(kuò)充現(xiàn)有 CRS狀態(tài)。
CRS狀態(tài)可以是應(yīng)用程序提供的和/或硬連線的,并且可由環(huán)樹內(nèi)的節(jié)點(diǎn) 來(lái)配置。
回頭參考圖19A,如果節(jié)點(diǎn)發(fā)現(xiàn)它知道對(duì)于同一環(huán)的多個(gè)入口節(jié)點(diǎn),則它可決定對(duì)該環(huán)保留兩個(gè)或更多入口節(jié)點(diǎn)。在某些實(shí)施例中,節(jié)點(diǎn)從任何保留的 入口節(jié)點(diǎn)中隨機(jī)地選擇一入口節(jié)點(diǎn)。在其它實(shí)施例中,應(yīng)用策略以幫助從任何 保留的入口節(jié)點(diǎn)中選擇指定的入口節(jié)點(diǎn)。策略可指示所選入口節(jié)點(diǎn)每次都是相 同的入口節(jié)點(diǎn)。或者,策略可指示所選入口節(jié)點(diǎn)在任何保留的入口節(jié)點(diǎn)之中變 化。例如,在某些實(shí)施例中,每一節(jié)點(diǎn)以循環(huán)方式選擇,使得可在任何保留的 入口節(jié)點(diǎn)之間均勻地分布負(fù)載。
此外,當(dāng)保留多個(gè)入口節(jié)點(diǎn)時(shí),一節(jié)點(diǎn)可以例如在第一所選入口節(jié)點(diǎn)故障、 忙碌、或出于某一其它原因而不可用的情況下高效地轉(zhuǎn)換到一不同入口節(jié)點(diǎn)。
或者,節(jié)點(diǎn)可以對(duì)環(huán)保留單個(gè)入口節(jié)點(diǎn)。
有時(shí),節(jié)點(diǎn)可以檢測(cè)到對(duì)環(huán)的附加入口節(jié)點(diǎn)。在某些實(shí)施例中,當(dāng)一節(jié)點(diǎn) 保留單個(gè)入口節(jié)點(diǎn)或者缺少存儲(chǔ)附加入口節(jié)點(diǎn)的存儲(chǔ)器時(shí),該節(jié)點(diǎn)可確定新接
收到的入口節(jié)點(diǎn)是否替換現(xiàn)有的入口節(jié)點(diǎn)。在某些實(shí)施例中,節(jié)點(diǎn)可使用一函 數(shù)來(lái)用以下參數(shù)為每一候選入口節(jié)點(diǎn)計(jì)算排名入口節(jié)點(diǎn)的距離、入口節(jié)點(diǎn)信 息的新鮮度、以及入口節(jié)點(diǎn)的權(quán)重(例如,配置首選項(xiàng))。保留具有較高排名 的入口節(jié)點(diǎn)。
CRS入口表可以是或不是完整的。完整的CRS入口表在節(jié)點(diǎn)的CRS中包 括對(duì)每一個(gè)環(huán)的至少一個(gè)入口節(jié)點(diǎn)。例如,對(duì)節(jié)點(diǎn)1311的完整的CRS入口表 可包括對(duì)環(huán)lll、 211、 21、 31、 41、 2、 3和4的每一個(gè)的至少一個(gè)入口節(jié)點(diǎn)。
利用上述機(jī)制,有可能從鄰近環(huán)層次中的一個(gè)或多個(gè)環(huán)和/或節(jié)點(diǎn)的觀點(diǎn) 來(lái)看構(gòu)造完整的CRS入口表。在某些實(shí)施例中,情況可以是路由表狀態(tài)信息 獨(dú)自形成對(duì)環(huán)樹中的每一節(jié)點(diǎn)的完整的CRS入口表。例如,在環(huán)樹1900中傳 播的路由表相關(guān)信息(例如,在査驗(yàn)消息、更新請(qǐng)求消息和更新響應(yīng)消息中) 可形成關(guān)于所描繪的環(huán)的每一個(gè)中的每一節(jié)點(diǎn)的完整的CRS入口表。
然而,在其它分布式網(wǎng)絡(luò)環(huán)境中,環(huán)的動(dòng)態(tài)特性和/或交換入口表相關(guān)狀 態(tài)時(shí)的延遲可能會(huì)阻礙完整入口表的構(gòu)造。換言之,在這些其它環(huán)境中,在任 何給定時(shí)刻,可能有來(lái)自一個(gè)環(huán)或節(jié)點(diǎn)的旁系環(huán)集的、該節(jié)點(diǎn)或環(huán)不知道的一 個(gè)或多個(gè)環(huán)。例如,再次參考圖19A,假定N[8004]剛加入,并且在沒有屬于 R["4"]的節(jié)點(diǎn)之前,大多數(shù)節(jié)點(diǎn)都沒有關(guān)于R["4"]的入口節(jié)點(diǎn),直到消息話務(wù) (例如,査驗(yàn)/更新消息)或其它活動(dòng)導(dǎo)致該信息在整個(gè)環(huán)基礎(chǔ)結(jié)構(gòu)上分發(fā)。由
60此,由于網(wǎng)絡(luò)動(dòng)態(tài)性(例如,節(jié)點(diǎn)故障、通信故障、通信延遲、節(jié)點(diǎn)增加等),
在節(jié)點(diǎn)處維護(hù)完整的CRS入口表并不總是可能的。因此,在許多環(huán)境中,節(jié) 點(diǎn)維護(hù)包括對(duì)于該節(jié)點(diǎn)的CRS中的少于全部的環(huán)的入口節(jié)點(diǎn)的部分CRS入口表。
使用CRS入口表的近鄰間通信
節(jié)點(diǎn)可使用CRS入口表中的信息來(lái)發(fā)送近鄰間通信(例如,不必將消息 路由到發(fā)送環(huán)和目的地環(huán)的LCAR)。仍參考圖19A,基于CRS入口表中的適 當(dāng)入口,N[1311](例如,發(fā)布者節(jié)點(diǎn))能夠直接向R["lir,]、R["2ir,]、R["21"]、 R["31"]、 R["41"]、 R["2"]、 R["3"]和R["4"]中的一個(gè)或多個(gè)發(fā)送近鄰間通信。 例如,在某一時(shí)間點(diǎn),關(guān)于N[1311]的CRS入口表可包括以下入口
R["2"] :N[1112]
R["3"] : N[8223J
R["21"] :N[1121]
R["31"] :N[1131]
R["lll"] :N[llll]
R["211"] :N[1211].
這些入口可用于向R["lll"]、 R["211"]、 R["21"]、 R["31]、 R["2,,]禾卩R["3"] 的直接通信。例如,N[1311]可向R["111"]發(fā)送通信52, N[1311]可向R["211"] 發(fā)送通信51, N[1311]可向R["21"](N[1121]是R["21"]和R["221"]兩者的成員) 發(fā)送通信53, N[1311]可向R["31"]發(fā)送通信56, N[131 l]可向R["2"]發(fā)送通信 57,且N[1311]可向R["3"]發(fā)送通信58。隨著時(shí)間的推移,N["1311"]可標(biāo)識(shí)對(duì) 于R["41"]禾卩R["4"]的入口 (例如, <旁系環(huán),入口節(jié)點(diǎn)>項(xiàng))。這些入口可從 更新的本地知識(shí)、從包含在會(huì)合協(xié)議消息(例如,查驗(yàn)消息、更新消息和更新 響應(yīng))中的CRS入口表、通過(guò)包含在通信模式專用消息中的CRS入口表狀態(tài)、 以及通過(guò)諸如,例如應(yīng)用程序組件等其它機(jī)制來(lái)標(biāo)識(shí)。
向下路由算法
在會(huì)合聯(lián)盟(帶有或沒有CRS入口表)中,情況可以是消息要被路由到 指定鄰近環(huán)中最接近給定節(jié)點(diǎn)ID的節(jié)點(diǎn),該給定節(jié)點(diǎn)不是消息所始發(fā)的葉環(huán) 的祖先(或在該葉環(huán)中)(以下稱為"向下路由")。其一個(gè)示例是當(dāng)始發(fā)環(huán)中的節(jié)點(diǎn)不知道對(duì)于旁系環(huán)的入口節(jié)點(diǎn)時(shí)幫助從始發(fā)環(huán)中的節(jié)點(diǎn)到旁系環(huán)的
近鄰間通信。圖19B示出了示例性的、歸納了鄰近性的環(huán)的分區(qū)樹1900的另一視圖。例如,現(xiàn)在參考圖19B,情況可以是N[1311]要發(fā)送目的地為R["4"]或R["41"]中的節(jié)點(diǎn)的通信。
假定是會(huì)合聯(lián)盟,可定義以下函數(shù)
RouteDown(M, P, ID):聯(lián)盟要將消息M傳送到近鄰P中最接近ID的
節(jié)點(diǎn)。近鄰P可以是聯(lián)盟中不是始發(fā)節(jié)點(diǎn)的葉環(huán)的祖先(或在該葉環(huán)中)
的任何鄰近環(huán)(葉或中間環(huán))。
在某些實(shí)施例中,消息M從不在始發(fā)節(jié)點(diǎn)的葉環(huán)和目標(biāo)鄰近環(huán)P的LCAR內(nèi)的節(jié)點(diǎn)上路由。例如,為實(shí)現(xiàn)從N[1311]到R["41"]的向下路由,可能不需要在R["1"] (R["3ir]和R["41"]的LCAR)上路由消息。然而,在其它實(shí)施例中,如果適當(dāng),則消息可在LCAR上路由。
RouteDown(M, P, ID)函數(shù)可以包括標(biāo)識(shí)已知是目標(biāo)鄰近環(huán)P的成員的入口節(jié)點(diǎn)。發(fā)送節(jié)點(diǎn)可以使用各種不同的機(jī)制來(lái)標(biāo)識(shí)目標(biāo)鄰近環(huán)中的入口節(jié)點(diǎn)。發(fā)送節(jié)點(diǎn)可以是始發(fā)節(jié)點(diǎn)(第一發(fā)送節(jié)點(diǎn))。發(fā)送節(jié)點(diǎn)也可以是從始發(fā)節(jié)點(diǎn)或另 一 中間節(jié)點(diǎn)接收消息然后轉(zhuǎn)發(fā)該消息的中間節(jié)點(diǎn)。
發(fā)送節(jié)點(diǎn)可使用諸如,例如配置或本地高速緩存的信息(例如,除了CRS入口表之外)的本地知識(shí)來(lái)標(biāo)識(shí)對(duì)目標(biāo)鄰近環(huán)的入口節(jié)點(diǎn)。例如,N[1311]能夠訪問包括關(guān)于環(huán)樹1900中的環(huán)的配置或本地高速緩存的信息的高速緩存和配置1902。在某些環(huán)境中,關(guān)于聯(lián)盟的本地知識(shí)通過(guò)聯(lián)盟外的通信機(jī)制(即,帶外)獲得。本地知識(shí)可用于標(biāo)識(shí)確切的目標(biāo)鄰近環(huán)P中的任何節(jié)點(diǎn)。如果找到確切的目標(biāo)鄰近環(huán)中的任何節(jié)點(diǎn),則消息M可被轉(zhuǎn)發(fā)到它們中的一個(gè)。例如,N[1311]能夠使用髙速緩存和配置1902來(lái)標(biāo)識(shí)N[8004]并將消息1903轉(zhuǎn)發(fā)到R["4"〗。
發(fā)送節(jié)點(diǎn)可使用CRS條目表來(lái)定位目標(biāo)鄰近環(huán)P中的任何入口節(jié)點(diǎn)。如果找到目標(biāo)鄰近環(huán)的任何入口節(jié)點(diǎn),則消息M可被轉(zhuǎn)發(fā)到目標(biāo)鄰近環(huán)P中的入口節(jié)點(diǎn)。例如,當(dāng)N[7521]是消息1903的目的地時(shí),N[1311]可以將N[6521]標(biāo)識(shí)為R["521"]的入口節(jié)點(diǎn)。因此,消息1卯3可被路由到N[6521](或到R["521"]
62中)。在R["521"]內(nèi),N[6521]然后可嘗試使用環(huán)內(nèi)通信將消息1903路由到N[7521]。由此,如果發(fā)送節(jié)點(diǎn)能夠標(biāo)識(shí)目標(biāo)鄰近環(huán)的入口節(jié)點(diǎn),則其將消息轉(zhuǎn)發(fā)到確切的目標(biāo)鄰近環(huán)。例如,如果N["6521"]能夠標(biāo)識(shí)R["2r,]的入口節(jié)點(diǎn),則它將消息1卯3繼續(xù)轉(zhuǎn)發(fā)給R["21"](虛線)。
另一方面,當(dāng)發(fā)送節(jié)點(diǎn)不能標(biāo)識(shí)目的地目標(biāo)近鄰的任何入口節(jié)點(diǎn)(例如,從本地知識(shí)或CRS入口表)時(shí),發(fā)送節(jié)點(diǎn)可檢查其CRS入口表以定位目標(biāo)鄰近環(huán)的任何祖先環(huán)的入口節(jié)點(diǎn)。例如,情況可以是N[1311]正在嘗試將消息發(fā)送到R["121"]中的節(jié)點(diǎn),然而N[1311]可能無(wú)法標(biāo)識(shí)R["121]的入口節(jié)點(diǎn)。因此,N[1311]可以參考CRS入口表1904來(lái)定位N[6521](對(duì)R["21"]的入口節(jié)點(diǎn))。N[1311]可以將消息轉(zhuǎn)發(fā)給N[6521],后者現(xiàn)在變?yōu)橄⒌陌l(fā)送節(jié)點(diǎn)。
邏輯上,消息1903現(xiàn)在可以被視為"在R["21"]處",因?yàn)镹[6521]也是R[21]的節(jié)點(diǎn)。N[6521]然后可以嘗試標(biāo)識(shí)對(duì)R[221](目標(biāo)近鄰)的入口節(jié)點(diǎn)。例如,N[6521]可以參考本地知識(shí)、CRS入口表和/或可(遞歸地)應(yīng)用向下路由算法。情況可以是N[6521]將N[3221]標(biāo)識(shí)為對(duì)R[221]的入口節(jié)點(diǎn)。因此,N[6521]可以將消息l卯3發(fā)送給N[3221]。 N[3221]然后可以使用環(huán)內(nèi)通信將消息1903路由到R[221]中的適當(dāng)節(jié)點(diǎn)。
在適當(dāng)時(shí)(例如,樹中有比圖19B所示的多的深度),則消息可被傳遞到越來(lái)越接近目標(biāo)鄰近環(huán)的祖先,直到標(biāo)識(shí)了對(duì)該目標(biāo)鄰近環(huán)的入口節(jié)點(diǎn)或者沒有進(jìn)一步的祖先環(huán)可用。
發(fā)送節(jié)點(diǎn)還可將至少包含請(qǐng)求目標(biāo)鄰近性的入口節(jié)點(diǎn)查找請(qǐng)求路由到諸如,例如用于程序引導(dǎo)聯(lián)盟的入口節(jié)點(diǎn)目錄機(jī)制。入口節(jié)點(diǎn)査找請(qǐng)求的路由可以被約束到發(fā)送節(jié)點(diǎn)和目標(biāo)環(huán)的LCAR。例如,N[1311]可以將查找請(qǐng)求1906路由到會(huì)合點(diǎn)7651以請(qǐng)求R["31"]的入口節(jié)點(diǎn)。入口節(jié)點(diǎn)目錄機(jī)制可以返回潛在入口節(jié)點(diǎn)的列表。例如,會(huì)合點(diǎn)7651可以在查找響應(yīng)1907中返回潛在入口節(jié)點(diǎn)(包括N[8431p的列表,以及至少向關(guān)于該目標(biāo)近鄰的會(huì)合點(diǎn)注冊(cè)的種子節(jié)點(diǎn)。
發(fā)送節(jié)點(diǎn)考慮在査找響應(yīng)消息(從會(huì)合點(diǎn)發(fā)送)中標(biāo)識(shí)的任何新發(fā)現(xiàn)的節(jié)點(diǎn),并將消息M轉(zhuǎn)發(fā)給這些入口節(jié)點(diǎn)之一??紤]新發(fā)現(xiàn)的節(jié)點(diǎn)可以使得CRS入口表以及其它本地高速緩存的節(jié)點(diǎn)存在知識(shí)被擴(kuò)充或以其它方式維護(hù)。査找
63響應(yīng)消息還可包含其它節(jié)點(diǎn)存在信息。例如,已知對(duì)發(fā)送節(jié)點(diǎn)重要的特定入口
節(jié)點(diǎn)可被包括在發(fā)送節(jié)點(diǎn)的CRS入口表中。
由此,如果一個(gè)或多個(gè)可用機(jī)制至少產(chǎn)生目標(biāo)鄰近環(huán)中的入口節(jié)點(diǎn),則消息M被發(fā)送(或者由原始發(fā)送節(jié)點(diǎn)、目標(biāo)近鄰的祖先環(huán)中的入口節(jié)點(diǎn)、或者由查找的入口節(jié)點(diǎn))到目標(biāo)環(huán)中這些入口節(jié)點(diǎn)中的至少一個(gè)。消息M可包括對(duì)于鄰近目標(biāo)環(huán)中的入口節(jié)點(diǎn)將消息M路由到ID的指令。另一方面,如果沒有一個(gè)可用機(jī)制產(chǎn)生目標(biāo)鄰近環(huán)中的入口節(jié)點(diǎn),則可將向下路由請(qǐng)求向著原始發(fā)送節(jié)點(diǎn)故障返回(falutback)。
在某些實(shí)施例中,始發(fā)節(jié)點(diǎn)將端對(duì)端向下路由消息首部附加到消息,其中向下路由消息首部指定目標(biāo)近鄰URI。
如果上述機(jī)制中的任一個(gè)標(biāo)識(shí)了多個(gè)"下一跳"節(jié)點(diǎn),則可選擇單個(gè)節(jié)點(diǎn)。當(dāng)選擇單個(gè)節(jié)點(diǎn)(例如,打破平局)時(shí),可選擇更接近目標(biāo)近鄰P的節(jié)點(diǎn),然后可選擇具有較高權(quán)重的節(jié)點(diǎn),然后可選擇更接近M的目的地ID的節(jié)點(diǎn)。如果沒有機(jī)制導(dǎo)致選擇,則然后可隨機(jī)地選擇節(jié)點(diǎn)。如果在有多個(gè)候選節(jié)點(diǎn)時(shí)發(fā)生了轉(zhuǎn)發(fā)消息M的失敗的嘗試,則可重新嘗試轉(zhuǎn)發(fā),只要有未故障的候選節(jié)點(diǎn)。當(dāng)應(yīng)用程序消息從始發(fā)者通過(guò)中介傳遞到最終目的地節(jié)點(diǎn)時(shí),可建立反向狀態(tài)/錯(cuò)誤消息路徑。 一旦消息被傳遞到目的地或檢測(cè)到錯(cuò)誤,則相應(yīng)的錯(cuò)誤/狀態(tài)消息可沿著該路徑被發(fā)回始發(fā)者。
圖19C示出了示例性的、歸納了鄰近性的環(huán)的分區(qū)樹1900的一部分的分區(qū)視圖。圖19D示出了示例性的、歸納了鄰近性的環(huán)的分區(qū)樹1900中的環(huán)11的擴(kuò)展視圖。圖20示出了用于維護(hù)環(huán)樹中的節(jié)點(diǎn)的旁系環(huán)集的方法2000的示例流程圖。方法2000將參考圖19C和19D中的環(huán)、節(jié)點(diǎn)、消息和數(shù)據(jù)來(lái)描述。
方法2000包括節(jié)點(diǎn)訪問被配置成存儲(chǔ)關(guān)于該節(jié)點(diǎn)的旁系環(huán)集入口的旁系環(huán)集入口表的動(dòng)作(動(dòng)作2001)。每一旁系環(huán)集入口被配置成指示節(jié)點(diǎn)的旁系環(huán),以及對(duì)該節(jié)點(diǎn)的旁系環(huán)的至少一個(gè)相應(yīng)的入口節(jié)點(diǎn)。例如,N[1311]可訪問CRS入口表1904,該入口表被配置成對(duì)N[1311]以〈旁系環(huán),1到N入口節(jié)點(diǎn)>的格式來(lái)存儲(chǔ)旁系環(huán)集入口,其中N是某一整數(shù)。由此,CRS入口表1904可以包括零個(gè)或多個(gè)<旁系環(huán),入口節(jié)點(diǎn)>項(xiàng),其各自包括指示N[1311]的旁系環(huán)以及對(duì)該旁系環(huán)的一個(gè)或多個(gè)相應(yīng)的入口節(jié)點(diǎn)的項(xiàng)。例如,如圖19C所示,CRS入口表1904包括CRS入口〈R["51"], N[8651],...>,其指示N[8651]是對(duì)R[51] (N[1311]和R["311"]的旁系環(huán))的1到N個(gè)入口節(jié)點(diǎn)之一。
方法2000包括從維護(hù)與環(huán)樹的配置相關(guān)的信息的可用資源中發(fā)現(xiàn)旁系環(huán)集入口表信息的動(dòng)作(動(dòng)作2002)。例如,N[1311]可以從維護(hù)與環(huán)樹1900的配置相關(guān)的信息的源中發(fā)現(xiàn)旁系環(huán)集入口表信息。如上所述,對(duì)一節(jié)點(diǎn)可以有各種不同的CRS入口表信息源可用。例如,節(jié)點(diǎn)可能能夠訪問諸如,例如本地配置和高速緩存信息等本地指示,可能能夠訪問包括在諸如,例如査驗(yàn)消息、更新消息和更新響應(yīng)等用于在環(huán)樹中傳播狀態(tài)的會(huì)合協(xié)議消息中的CRS相關(guān)狀態(tài),可訪問包括在應(yīng)用程序消息中的CRS相關(guān)狀態(tài),并且可訪問用于方便環(huán)樹中諸如,例如廣播、多播和任意播等指定通信模式的消息中的CRS相關(guān)狀態(tài)。
由此,在圖19C中,情況可以是N[1311]訪問本地配置1921。從本地配置1921中,N[1311]可發(fā)現(xiàn)CRS入口〈R["111"],N[1111],...>,其指示N[U11]是對(duì)R["lir] (N[1311]和R["311"]的旁系環(huán))的至少一個(gè)入口節(jié)點(diǎn)。N[1311]還可接收應(yīng)用程序消息1971。從應(yīng)用程序消息1971中,N[1311]可發(fā)現(xiàn)CRS信息1972。 CRS信息1972可以包含或不包含關(guān)于N[1311]的CRS中的環(huán)的CRS狀態(tài)。N[1311]還可接收通信模式專用消息1973。從通信模式專用消息1973中,N[131 l]可以發(fā)現(xiàn)CRS狀態(tài)1974。CRS狀態(tài)1974可以包含或不包含關(guān)于N[1311]的CRS中的環(huán)的CRS狀態(tài)。
現(xiàn)在參考圖19D, N[1311]可以在會(huì)合協(xié)議消息中發(fā)現(xiàn)并交換CRS狀態(tài)。由于N[llll]是R["lll"]的成員,N[1211]是R["211"]的成員,而N[1311]是R["311"]的成員,因此節(jié)點(diǎn)N[llll]、 N[1211]、N[1311]中的每一個(gè)也是R["11"]的成員。如上所述,作為公共環(huán)的成員的節(jié)點(diǎn)可以交換查驗(yàn)消息、更新消息和
更新響應(yīng)來(lái)維護(hù)路由表信息。由此,R["ir]的節(jié)點(diǎn)可以交換查驗(yàn)消息、更新消
息和更新響應(yīng)來(lái)維護(hù)R["ll"]的路由表信息。CRS狀態(tài)可被包括在所交換的查
驗(yàn)消息、更新消息和更新響應(yīng)中,以及在節(jié)點(diǎn)之間的其它會(huì)合協(xié)議和應(yīng)用程序消息話務(wù)中。
例如,N[All] (R["11"]中N[1311]的鄰居)可以向N[1311]發(fā)送包括CRS狀態(tài)1932的查驗(yàn)消息1931。從CRS狀態(tài)1932中,N[1311]可發(fā)現(xiàn)CRS入口<R["31"],N[1131],...>,其指示N[1131]是對(duì)R["31"] (N[131 l]和R["31 l"]的旁系環(huán))的入口節(jié)點(diǎn)。CRS入口 1932可以是N[A11]的CRS入口表中的CRS條目的完整或部分列表。N[1311]還可向其鄰居發(fā)送包括CRS狀態(tài)的査驗(yàn)消息。例如,N[1311]可以向N[E11] (R["11"]中N[1311]的鄰居)發(fā)送包括CRS狀態(tài)1934的查驗(yàn)消息1945。 CRS入口 1934可以包括來(lái)自CRS入口表l卯4的CRS條目的完整或部分列表。
N[1311]還可發(fā)送和接收包括CRS相關(guān)信息的更新消息和更新響應(yīng)。例如,N[1311]可以向N[DU] (R["ll"]中N[1311]的鄰居)發(fā)送包括CRS入口 1934的更新消息1933。 N[D11]可以通過(guò)向N[1331]發(fā)送包括CRS入口 1938的更新響應(yīng)1937來(lái)響應(yīng)。CRS入口 1938可以是N[D11]的CRS入口表中的CRS的完整或部分列表。類似地,N[1311]可以從N[CU] (R["ll"]中N[1311]的路由伙伴)接收包括CRS入口 1942的更新消息1941。 CRS入口 1942可以是N[C11〗的CRS入口表中的CRS入口的完整或部分列表。N[1331]可以通過(guò)向N["C11"]發(fā)送包括CRS入口 1934的更新響應(yīng)1943來(lái)響應(yīng)。
節(jié)點(diǎn)還可從可用資源接收旁系環(huán)集入口表相關(guān)信息,該信息(直接地或間接地)指示CRS入口可能不再有效,例如,不能聯(lián)系入口節(jié)點(diǎn)的指示。用于發(fā)送CRS相關(guān)狀態(tài)的任何資源也可用于發(fā)送可被解釋為意味著CRS入口可能不再有效的指示。由此,情況可以是節(jié)點(diǎn)不時(shí)地接收到導(dǎo)致一個(gè)或多個(gè)CRS入口被添加到其CRS入口表的CRS相關(guān)狀態(tài),以及可導(dǎo)致移除不再恰當(dāng)?shù)囊粋€(gè)或多個(gè)CRS入口的指示。
方法2000包括基于所發(fā)現(xiàn)的旁系環(huán)集入口表信息用適當(dāng)?shù)呐韵淡h(huán)集入口狀態(tài)更新旁系環(huán)集入口表的動(dòng)作(動(dòng)作2003)。每一適當(dāng)?shù)呐韵淡h(huán)集入口狀態(tài)包括節(jié)點(diǎn)的旁系環(huán),以及到該節(jié)點(diǎn)的旁系環(huán)的至少一個(gè)相應(yīng)的入口節(jié)點(diǎn)。例如,N[1311]可以將在圖19C和19D中接收到的任何CRS入口包括在CRS入口表1904中。N[1311]還可從CRS入口表1904中移除被指示(例如,在配置、會(huì)合協(xié)議消息、應(yīng)用程序消息、或通信模式專用消息中)為可能不再恰當(dāng)?shù)娜魏蜟RS入口。因此,節(jié)點(diǎn)的CRS入口表可被更新以適當(dāng)?shù)胤磻?yīng)會(huì)合聯(lián)盟的改變結(jié)構(gòu)。
66圖19E示出了示例性的、歸納了鄰近性的環(huán)的分區(qū)樹1900的另一視圖。圖19E中所描繪的是CRS入口表1904,它可以基于在圖19C和19D中交換的CRS狀態(tài)信息來(lái)填充。圖21示出了用于在環(huán)樹中發(fā)送近鄰間通信的方法2100的示例流程圖。方法2100將參考圖19F中的節(jié)點(diǎn)、環(huán)、消息和數(shù)據(jù)來(lái)描述。
方法2100包括確定一節(jié)點(diǎn)要向該節(jié)點(diǎn)的旁系環(huán)發(fā)送消息的動(dòng)作(動(dòng)作2101)。例如,N[1311]可以接收要向R["2"]發(fā)送消息1976的指示。要向旁系環(huán)發(fā)送消息的指示可以從另一節(jié)點(diǎn)接收,根據(jù)路由邏輯來(lái)蘊(yùn)含,從N[1311]處的應(yīng)用程序接收,從多播設(shè)施接收,從廣播設(shè)施接收,從任意播設(shè)施接收等。
方法2100包括節(jié)點(diǎn)訪問被配置成存儲(chǔ)關(guān)于該節(jié)點(diǎn)的旁系環(huán)集入口的旁系環(huán)集入口表的動(dòng)作(動(dòng)作2102)。每一旁系環(huán)集入口被配置成指示節(jié)點(diǎn)的旁系環(huán),以及對(duì)該節(jié)點(diǎn)的旁系環(huán)的至少一個(gè)相應(yīng)的入口節(jié)點(diǎn)。例如,N[1311]可以訪問CRS入口表1904。CRS入口表1904中的每一 CRS入口可以指示N[1311]的旁系環(huán),以及對(duì)N[1311]的旁系環(huán)的至少一個(gè)相應(yīng)的入口節(jié)點(diǎn)。例如,入口<R["111',], N[llll],...>指示R["lll"]是N[1311]的旁系環(huán),而N[llll]是對(duì)R["l 1 l"]的至少一個(gè)入口節(jié)點(diǎn)之一。
方法2100包括從節(jié)點(diǎn)的旁系環(huán)集入口表中標(biāo)識(shí)對(duì)于旁系環(huán)的至少一個(gè)旁系環(huán)集入口的動(dòng)作(動(dòng)作2103)。至少一個(gè)旁系環(huán)集入口中的每一個(gè)都指示該旁系環(huán)的至少一個(gè)入口節(jié)點(diǎn)。例如,N[1311]可以從CRS入口表1094中標(biāo)識(shí)關(guān)于R["2"]的入口〈R["2"],N[1112],...>。入口〈R["2"],N[1112],...>指示N[1112](以及可能的其它節(jié)點(diǎn))是對(duì)R["2"]的入口節(jié)點(diǎn)。
基于包括在所標(biāo)識(shí)的旁系環(huán)集入口中的相應(yīng)入口節(jié)點(diǎn)的數(shù)量(例如,當(dāng)有兩個(gè)或更多入口節(jié)點(diǎn)時(shí)),方法2100還可包括從旁系環(huán)的多個(gè)入口節(jié)點(diǎn)解析到適當(dāng)?shù)娜肟诠?jié)點(diǎn)子集以及可能解析到單個(gè)適當(dāng)?shù)娜肟诠?jié)點(diǎn)的動(dòng)作。例如,可基于始發(fā)和目標(biāo)近鄰P之間的接近度、基于可選擇的節(jié)點(diǎn)權(quán)重、基于對(duì)目的地ID的接近度、或可隨機(jī)選擇地,來(lái)解析適當(dāng)?shù)娜肟诠?jié)點(diǎn)子集。
方法2100包括將消息發(fā)送到至少一個(gè)指示的入口節(jié)點(diǎn)的動(dòng)作(動(dòng)作2104)。例如,N[1311]可以將消息1976發(fā)送到N[1112]。將消息發(fā)送到至少一個(gè)節(jié)點(diǎn)可包括將消息發(fā)送到多個(gè)節(jié)點(diǎn)中的所有入口節(jié)點(diǎn)、發(fā)送到解析的適當(dāng)?shù)娜肟诠?jié)點(diǎn)子集中的每一入口節(jié)點(diǎn)、或發(fā)送到單個(gè)適當(dāng)?shù)娜肟诠?jié)點(diǎn)。在某些實(shí)
67施例中,當(dāng)對(duì)一個(gè)入口節(jié)點(diǎn)發(fā)生消息失敗時(shí),可以嘗試一個(gè)或多個(gè)其它入口節(jié)點(diǎn)。發(fā)送節(jié)點(diǎn)還可能作為失敗的結(jié)果來(lái)標(biāo)識(shí)新節(jié)點(diǎn)。
圖22示出了用于在環(huán)樹中發(fā)送近鄰間通信的方法2200的示例流程圖。方法2200將參考圖19F和19G中的節(jié)點(diǎn)、環(huán)、消息和數(shù)據(jù)來(lái)描述。
方法2200包括確定始發(fā)節(jié)點(diǎn)打算將消息路由到環(huán)樹內(nèi)的目標(biāo)鄰近環(huán)中最接近給定節(jié)點(diǎn)ID的目的地節(jié)點(diǎn)的動(dòng)作(動(dòng)作2201)。目標(biāo)鄰近環(huán)可以是始發(fā)節(jié)點(diǎn)的旁系環(huán),或是始發(fā)節(jié)點(diǎn)的旁系環(huán)的子環(huán)。例如,N[1311]可以接收要將消息1998向著ID30路由到R["1221"](目標(biāo)鄰近環(huán))的指示。要向旁系環(huán)或旁系環(huán)的子環(huán)發(fā)送消息的指示可以從另一節(jié)點(diǎn)、與N[1311]有關(guān)的應(yīng)用程序、多播設(shè)施、廣播設(shè)施、任意播設(shè)施等接收。
方法2200包括標(biāo)識(shí)已知是目標(biāo)近鄰環(huán)和該目標(biāo)近鄰環(huán)的袓先環(huán)中的至少一個(gè)的成員節(jié)點(diǎn)的一個(gè)或多個(gè)入口節(jié)點(diǎn)的動(dòng)作(動(dòng)作2202)。例如,N[1311]可將節(jié)點(diǎn)ID為56的N[41221]標(biāo)識(shí)為對(duì)R["1221"]的入口節(jié)點(diǎn)??墒褂酶鞣N不同的機(jī)制來(lái)標(biāo)識(shí)N[41221]。 N[1311]可以參考本地知識(shí)來(lái)試圖標(biāo)識(shí)對(duì)鄰近目標(biāo)環(huán)的入口節(jié)點(diǎn)。例如,N[1311]可以參考高速緩存和配置1902來(lái)試圖標(biāo)識(shí)對(duì)R["1221'"]的入口節(jié)點(diǎn)。
N[1311]還可參考CRS入口表來(lái)標(biāo)識(shí)對(duì)鄰近目標(biāo)環(huán)的祖先環(huán)的入口節(jié)點(diǎn)(例如,當(dāng)未標(biāo)識(shí)對(duì)目標(biāo)鄰近環(huán)的入口節(jié)點(diǎn)的時(shí)候)。情況可以是子環(huán)R["321"]貢獻(xiàn)節(jié)點(diǎn)N[4321]作為對(duì)R["21"]的入口節(jié)點(diǎn)。同樣,情況可以是R["2221"]貢獻(xiàn)節(jié)點(diǎn)N[12221]作為對(duì)R["221"]的入口節(jié)點(diǎn)。當(dāng)未標(biāo)識(shí)對(duì)R[1221]的入口節(jié)點(diǎn)時(shí),N[1311]可以試圖標(biāo)識(shí)對(duì)R["221"]的入口節(jié)點(diǎn),諸如,例如N[12221]。N[1331]還可試圖標(biāo)識(shí)對(duì)R["21"]的入口節(jié)點(diǎn),諸如,例如N[4321]。
情況可以是當(dāng)未標(biāo)識(shí)對(duì)目標(biāo)近鄰的入口節(jié)點(diǎn)時(shí),一節(jié)點(diǎn)在試圖標(biāo)識(shí)從指定目標(biāo)近鄰的觀點(diǎn)來(lái)看更遠(yuǎn)的祖先中的入口節(jié)點(diǎn)之前試圖標(biāo)識(shí)更近的祖先環(huán)中的入口節(jié)點(diǎn)。例如,當(dāng)未標(biāo)識(shí)對(duì)R["1221"]的入口節(jié)點(diǎn)時(shí),N[1311]可以首先試圖標(biāo)識(shí)對(duì)R["221"]的入口節(jié)點(diǎn)。如果未標(biāo)識(shí)對(duì)R["221"]的入口節(jié)點(diǎn),則N[1311]然后可以試圖標(biāo)識(shí)對(duì)R["21"]的入口節(jié)點(diǎn)。
N[1311]還可利用諸如,例如種子節(jié)點(diǎn)等程序引導(dǎo)機(jī)制。例如,N[1311]可以將請(qǐng)求已知(已注冊(cè))的入口節(jié)點(diǎn)(種子節(jié)點(diǎn)是一個(gè)示例)的入口節(jié)點(diǎn)查找請(qǐng)求路由到已知的會(huì)合點(diǎn),諸如,例如會(huì)合點(diǎn)N[7651]。響應(yīng)于査找請(qǐng)求,會(huì) 合點(diǎn)可以返回(發(fā)送)包括任何已知入口節(jié)點(diǎn)的査找響應(yīng)消息。例如,查找響 應(yīng)1997可以從會(huì)合點(diǎn)N[7651]返回到N[1311]。査找響應(yīng)1997可以包括向會(huì)合 點(diǎn)N[7651]注冊(cè)的任何入口節(jié)點(diǎn)的位置。
這些機(jī)制中的一個(gè)或多個(gè)可以將N[4221]標(biāo)識(shí)為對(duì)R["221"]的入口節(jié)點(diǎn)。 在某些實(shí)施例中,在其它入口節(jié)點(diǎn)標(biāo)識(shí)機(jī)制之前利用某一入口點(diǎn)標(biāo)識(shí)機(jī) 制。例如,發(fā)送節(jié)點(diǎn)可以在試圖標(biāo)識(shí)對(duì)目標(biāo)環(huán)的祖先環(huán)的入口節(jié)點(diǎn)或路由入口 節(jié)點(diǎn)查找請(qǐng)求之前參考本地知識(shí)。在這些相同的實(shí)施例中,發(fā)送節(jié)點(diǎn)還可在路 由入口節(jié)點(diǎn)查找請(qǐng)求之前試圖標(biāo)識(shí)對(duì)目標(biāo)環(huán)的祖先環(huán)的入口節(jié)點(diǎn)。然而,在其 它實(shí)施例中,可按不同的次序利用入口節(jié)點(diǎn)標(biāo)識(shí)機(jī)制,或可省略這些機(jī)制。
方法2200包括將消息發(fā)送到所標(biāo)識(shí)的入口節(jié)點(diǎn)的動(dòng)作(動(dòng)作2203)。該 消息指示該入口節(jié)點(diǎn)要將該消息解析到具有目標(biāo)近鄰環(huán)中最接近所指示的目 的地節(jié)點(diǎn)的節(jié)點(diǎn)ID的節(jié)點(diǎn)。例如,如由實(shí)線所指示的,N[1311]可以將帶有該 消息要被解析到節(jié)點(diǎn)ID 30的指示的消息1998發(fā)送到N[41221](對(duì)R["1221"] 的入口節(jié)點(diǎn)且節(jié)點(diǎn)ID為56) 。 N[41221]可以訪問其路由表和域鄰域來(lái)確定其 所知道的對(duì)節(jié)點(diǎn)ID 30的最接近的節(jié)點(diǎn)ID是節(jié)點(diǎn)ID為25的N[61221]。同樣, N[61221]可以訪問其路由表和域鄰域來(lái)確定其所知道的對(duì)節(jié)點(diǎn)ID 30的最接近 的節(jié)點(diǎn)ID是節(jié)點(diǎn)ID為28的N[71221]。 N[71221]可以參考其表和/或鄰域來(lái)確 定其節(jié)點(diǎn)ID,即節(jié)點(diǎn)ID28是對(duì)節(jié)點(diǎn)ID30的己知的最接近的節(jié)點(diǎn)ID,并可傳 遞該消息。
先前所描述的路由算法也可用于在R["221"]內(nèi)路由消息1998。 當(dāng)一消息被發(fā)送到所標(biāo)識(shí)的作為祖先環(huán)或目標(biāo)鄰近環(huán)的成員的入口節(jié)點(diǎn) 時(shí),方法2200可以在所標(biāo)識(shí)的入口節(jié)點(diǎn)處遞歸地應(yīng)用。S卩,所標(biāo)識(shí)的對(duì)祖先 環(huán)的入口節(jié)點(diǎn)可進(jìn)而試圖標(biāo)識(shí)對(duì)目標(biāo)鄰近環(huán)的入口節(jié)點(diǎn)。例如,如由虛線所指 示的,情況可以是方法2200的應(yīng)用導(dǎo)致消息1998被發(fā)送到入口節(jié)點(diǎn)N[12221] (由子環(huán)R["222r]貢獻(xiàn)的對(duì)R["221"]的入口節(jié)點(diǎn))。N[12221](從R["2221"] 的觀點(diǎn)來(lái)看)然后可以標(biāo)識(shí)對(duì)R["1221"]的入口節(jié)點(diǎn)。由此,在N[12221]處遞 歸地應(yīng)用方法2200可使得消息1998被發(fā)送到N[41221]。
如果祖先環(huán)中所標(biāo)識(shí)的入口節(jié)點(diǎn)不知道對(duì)目標(biāo)鄰近環(huán)的入口節(jié)點(diǎn),則所標(biāo)識(shí)的入口節(jié)點(diǎn)可試圖標(biāo)識(shí)對(duì)更接近目標(biāo)近鄰的另一祖先環(huán)的入口節(jié)點(diǎn)。對(duì)祖先 環(huán)的入口節(jié)點(diǎn)然后可將消息轉(zhuǎn)發(fā)給目標(biāo)鄰近環(huán)的更接近的祖先環(huán)的入口節(jié)點(diǎn)。 例如,如由虛線所指示的,情況可以是方法2200的應(yīng)用導(dǎo)致消息1998 被發(fā)送到入口節(jié)點(diǎn)N[4321](由子環(huán)R["32r]貢獻(xiàn)的對(duì)R["21"]的入口節(jié)點(diǎn))。 然而,N[4321](從R["321"]的觀點(diǎn)來(lái)看)可以標(biāo)識(shí)對(duì)R["1221"]的入口節(jié)點(diǎn)。 由此,N[4321](從R["321"]的觀點(diǎn)來(lái)看)可能無(wú)法標(biāo)識(shí)對(duì)R["221"]的入口節(jié) 點(diǎn)。因此,在N[4321]處方法2200的第一次遞歸應(yīng)用可使得消息1998被發(fā)送 到N[12221]。在N[12221]處方法2200的第二次遞歸應(yīng)用可使得消息1998被發(fā) 送到N[41221]。
然而,如果N[4321]的確標(biāo)識(shí)了對(duì)R["1221"]的入口節(jié)點(diǎn),則它可將消息直 接發(fā)送到入口節(jié)點(diǎn)。由此,對(duì)祖先環(huán)的入口節(jié)點(diǎn)可以在適當(dāng)時(shí)將消息轉(zhuǎn)發(fā)給目 標(biāo)鄰近環(huán)或目標(biāo)鄰近環(huán)的更接近的祖先環(huán)的入口節(jié)點(diǎn)(通常在轉(zhuǎn)發(fā)入口節(jié)點(diǎn)的 CRS中)。如所描述的,對(duì)更接近的祖先環(huán)的入口節(jié)點(diǎn)然后可以在適當(dāng)時(shí)將消 息轉(zhuǎn)發(fā)給目標(biāo)鄰近環(huán)或目標(biāo)鄰近環(huán)的還要接近的祖先環(huán)(通常在轉(zhuǎn)發(fā)"還要接 近的"入口節(jié)點(diǎn)的CRS中)。該過(guò)程可以重復(fù)(例如,通過(guò)對(duì)方法2200的遞
歸應(yīng)用),直到達(dá)到了目標(biāo)鄰近環(huán)入口節(jié)點(diǎn)。
當(dāng)達(dá)到目標(biāo)鄰近環(huán)時(shí),可使用先前描述的路由算法在目標(biāo)鄰近環(huán)中路由消息。
圖6和以下討論旨在提供其中可實(shí)現(xiàn)本發(fā)明的合適計(jì)算環(huán)境的簡(jiǎn)要概括 描述。雖然未作要求,但是本發(fā)明將在諸如程序模塊等正由計(jì)算機(jī)系統(tǒng)執(zhí)行的 計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述。 一般而言,程序模塊包括執(zhí)行特定任 務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等。計(jì)算機(jī) 可執(zhí)行指令、相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)和程序模塊表示用于執(zhí)行此處所公開的方法的 動(dòng)作的程序代碼裝置的示例。
參照?qǐng)D6,用于實(shí)現(xiàn)本發(fā)明的示例系統(tǒng)包括計(jì)算機(jī)系統(tǒng)620形式的通用計(jì) 算設(shè)備,包括處理單元621、系統(tǒng)存儲(chǔ)器622、以及將包括系統(tǒng)存儲(chǔ)器622的 各種系統(tǒng)組件耦合到處理單元621的系統(tǒng)總線623。處理單元621可以執(zhí)行被 設(shè)計(jì)成實(shí)現(xiàn)計(jì)算機(jī)系統(tǒng)620的特征(包括本發(fā)明的特征)的計(jì)算機(jī)可執(zhí)行指令。 系統(tǒng)總線623可以是幾種類型的總線結(jié)構(gòu)中的任何一種,包括存儲(chǔ)器總線或存
70儲(chǔ)控制器、外圍總線、以及使用各種總線體系結(jié)構(gòu)中的任一種的局部總線。系
統(tǒng)存儲(chǔ)器包括只讀存儲(chǔ)器("ROM" ) 624和隨機(jī)存取存儲(chǔ)器("RAM") 625。基本輸入/輸出系統(tǒng)("BIOS" ) 626可以被存儲(chǔ)在ROM 624中,它包 含有助于例如在啟動(dòng)期間在計(jì)算機(jī)系統(tǒng)620內(nèi)的各個(gè)元件之間傳送信息的基本 例程。
計(jì)算機(jī)系統(tǒng)620還可包括用于對(duì)磁硬盤639進(jìn)行讀寫的磁硬盤驅(qū)動(dòng)器 627,用于對(duì)可移動(dòng)磁盤629進(jìn)行讀寫的磁盤驅(qū)動(dòng)器628,以及用于對(duì)諸如 CD-ROM或其它光介質(zhì)等可移動(dòng)光盤631進(jìn)行讀寫的光盤驅(qū)動(dòng)器630。磁硬盤 驅(qū)動(dòng)器627、磁盤驅(qū)動(dòng)器628和光盤驅(qū)動(dòng)器630分別通過(guò)硬盤驅(qū)動(dòng)器接口 632、 磁盤驅(qū)動(dòng)器接口 633和光驅(qū)接口 634連接到系統(tǒng)總線623。驅(qū)動(dòng)器及其相關(guān)聯(lián) 的計(jì)算機(jī)可讀介質(zhì)為計(jì)算機(jī)系統(tǒng)620提供計(jì)算機(jī)可執(zhí)行指令、數(shù)據(jù)結(jié)構(gòu)、程序 模塊和其他數(shù)據(jù)的非易失性存儲(chǔ)。雖然這里所描述的示例環(huán)境使用磁硬盤639、 可移動(dòng)磁盤629和可移動(dòng)光盤631,但是可以使用用于存儲(chǔ)數(shù)據(jù)的其他類型的 計(jì)算機(jī)可讀介質(zhì),包括盒式磁帶、閃存卡、數(shù)字多功能盤、伯努里盒式磁帶、 RAM、 ROM等。
包括一個(gè)或多個(gè)程序模塊的程序代碼裝置可以被存儲(chǔ)在硬盤639、磁盤 629、光盤631、 ROM 624或RAM 625上,包括操作系統(tǒng)635、 一個(gè)或多個(gè)應(yīng) 用程序636、其他程序模塊637和程序數(shù)據(jù)638。用戶可以通過(guò)鍵盤640、定點(diǎn) 設(shè)備642或其他輸入設(shè)備(未示出)(例如,話筒、操縱桿、游戲手柄、掃描 儀或等)來(lái)將命令和信息輸入到計(jì)算機(jī)系統(tǒng)620中。這些和其他輸入設(shè)備可以 通過(guò)耦合到系統(tǒng)總線623的輸入/輸出接口 646連接到處理單元621。輸入/輸 出接口 646邏輯上表示各種各樣不同的接口中的任一個(gè),例如,串行端口接口 、 PS/2接口、并行端口接口、通用串行總線("USB")接口、或電氣和電子工
程師協(xié)會(huì)("IEEE" ) 1394接口 (即火線接口),或者甚至可以邏輯上表示 不同接口的組合。
監(jiān)視器647或其他顯示設(shè)備也經(jīng)由視頻接口 648連接到系統(tǒng)總線623。揚(yáng) 聲器669或其它音頻輸出設(shè)備也通過(guò)音頻接口 649連接到系統(tǒng)總線623。諸如 打印機(jī)等其它外圍輸出設(shè)備(未示出)也可連接到計(jì)算機(jī)系統(tǒng)620。
計(jì)算機(jī)系統(tǒng)620可以連接到諸如辦公室范圍或企業(yè)范圍的計(jì)算機(jī)網(wǎng)絡(luò)、家
71庭網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和/或因特網(wǎng)等網(wǎng)絡(luò)。計(jì)算機(jī)系統(tǒng)620可以通過(guò)這類網(wǎng)絡(luò)與諸如
遠(yuǎn)程計(jì)算機(jī)系統(tǒng)、遠(yuǎn)程應(yīng)用程序、和/或遠(yuǎn)程數(shù)據(jù)庫(kù)等外部源交換數(shù)據(jù)。
計(jì)算機(jī)系統(tǒng)620包括網(wǎng)絡(luò)接口 653,通過(guò)網(wǎng)絡(luò)接口 653,計(jì)算機(jī)系統(tǒng)620 從外部源接收數(shù)據(jù)和/或?qū)?shù)據(jù)發(fā)送到外部源。如圖6中所描繪的,網(wǎng)絡(luò)接口 653便于經(jīng)由鏈路651與遠(yuǎn)程計(jì)算機(jī)系統(tǒng)683交換數(shù)據(jù)。網(wǎng)絡(luò)接口 653可以邏 輯上表示一個(gè)或多個(gè)軟件和/或硬件模塊,例如,網(wǎng)絡(luò)接口卡和對(duì)應(yīng)的網(wǎng)絡(luò)驅(qū)動(dòng) 程序接口規(guī)范("NDIS")棧。鏈路651表示網(wǎng)絡(luò)的一部分(例如,以太網(wǎng) 段),并且,遠(yuǎn)程計(jì)算機(jī)系統(tǒng)683表示該網(wǎng)絡(luò)的節(jié)點(diǎn)。
同樣,計(jì)算機(jī)系統(tǒng)620包括輸入/輸出接口 646,通過(guò)輸入/輸出接口 646, 計(jì)算機(jī)系統(tǒng)620從外部源接收數(shù)據(jù)和/或?qū)?shù)據(jù)發(fā)送到外部源。輸入/輸出接口 646經(jīng)由鏈路659耦合到調(diào)制解調(diào)器654 (例如,標(biāo)準(zhǔn)調(diào)制解調(diào)器、電纜調(diào)制 解調(diào)器、或數(shù)字用戶線("DSL")調(diào)制解調(diào)器),通過(guò)調(diào)制解調(diào)器,計(jì)算機(jī) 系統(tǒng)620從外部源接收數(shù)據(jù)和/或?qū)?shù)據(jù)發(fā)送到外部源。如圖6中所描繪的,輸 入/輸出接口 646和調(diào)制解調(diào)器654便于經(jīng)由鏈路652與遠(yuǎn)程計(jì)算機(jī)系統(tǒng)693 交換數(shù)據(jù)。鏈路652表示網(wǎng)絡(luò)的一部分,并且,遠(yuǎn)程計(jì)算機(jī)系統(tǒng)693表示該網(wǎng) 絡(luò)的節(jié)點(diǎn)。
盡管圖6表示用于本發(fā)明的合適的操作環(huán)境,但本發(fā)明的原理可以被用于 能夠(如果必要的話,具有合適的修改)實(shí)現(xiàn)本發(fā)明的原理的任何系統(tǒng)中。圖 6中所展示的環(huán)境只起說(shuō)明的作用,決不表示其中可以實(shí)現(xiàn)本發(fā)明的原理的各 種各樣環(huán)境的甚至一小部分。
根據(jù)本發(fā)明,節(jié)點(diǎn)、應(yīng)用層、以及其它較低層,以及相關(guān)聯(lián)的數(shù)據(jù),包括 路由表和節(jié)點(diǎn)ID可從與計(jì)算機(jī)系統(tǒng)620相關(guān)聯(lián)的任何計(jì)算機(jī)可讀介質(zhì)存儲(chǔ)和 訪問。例如,這類模塊的各個(gè)部分和相關(guān)聯(lián)的程序數(shù)據(jù)的各個(gè)部分可以被包括 在操作系統(tǒng)635、應(yīng)用程序636、程序模塊637和/或程序數(shù)據(jù)638中,用于存 儲(chǔ)在系統(tǒng)存儲(chǔ)器622中。
當(dāng)諸如磁硬盤639等大容量存儲(chǔ)設(shè)備被耦合到計(jì)算機(jī)系統(tǒng)620時(shí),這類模 塊和相關(guān)聯(lián)的程序數(shù)據(jù)也可以被存儲(chǔ)在該大容量存儲(chǔ)設(shè)備中。在網(wǎng)絡(luò)化環(huán)境 中,相對(duì)于計(jì)算機(jī)系統(tǒng)620或其各個(gè)部分而描繪的程序模塊可以被存儲(chǔ)在諸如 與遠(yuǎn)程計(jì)算機(jī)系統(tǒng)683和/或遠(yuǎn)程計(jì)算機(jī)系統(tǒng)693相關(guān)聯(lián)的系統(tǒng)存儲(chǔ)器和/或大容量存儲(chǔ)設(shè)備等遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中??梢栽谌缜八龅姆植际江h(huán)境中實(shí)現(xiàn) 這類模塊的執(zhí)行。
本發(fā)明可具體化為其它具體形式而不背離其精神或本質(zhì)特征。所述實(shí)施例 在所有方面都應(yīng)被認(rèn)為僅是說(shuō)明性而非限制性的。從而,本發(fā)明的范圍由所附 權(quán)利要求書而非前述描述指示。落入權(quán)利要求書的等效方式的含義和范圍內(nèi)的 所有改變應(yīng)被權(quán)利要求書的范圍涵蓋。
權(quán)利要求
1. 一種在計(jì)算機(jī)系統(tǒng)處的用于在環(huán)樹(1900)中發(fā)送近鄰間通信的方法,所述方法包括確定一節(jié)點(diǎn)(1311)要將消息(1903)發(fā)送到所述節(jié)點(diǎn)(1311)的指定旁系環(huán)(21)的動(dòng)作;所述節(jié)點(diǎn)(1311)訪問被配置成存儲(chǔ)所述節(jié)點(diǎn)(1311)的旁系環(huán)集入口的旁系環(huán)集入口表(1904)的動(dòng)作,每一旁系環(huán)集入口被配置成指示所述節(jié)點(diǎn)(1311)的旁系環(huán)(21)以及對(duì)所述節(jié)點(diǎn)(1311)的旁系環(huán)(21)的相應(yīng)的至少一個(gè)入口節(jié)點(diǎn)(6521);從所述節(jié)點(diǎn)的旁系環(huán)集入口表(1904)中標(biāo)識(shí)對(duì)于所指定的旁系環(huán)(21)的至少一個(gè)旁系環(huán)集入口的動(dòng)作,所述至少一個(gè)旁系環(huán)集入口中的每一個(gè)指示所指定的旁系環(huán)(21)的至少一個(gè)入口節(jié)點(diǎn)(6521);以及將所述消息(1903)發(fā)送到至少一個(gè)所指示的入口節(jié)點(diǎn)(6521)的動(dòng)作。
2. 如權(quán)利要求1所述的方法,其特征在于,所述確定一節(jié)點(diǎn)要將消息發(fā) 送到所述節(jié)點(diǎn)的指定旁系環(huán)的動(dòng)作包括從與所述節(jié)點(diǎn)相關(guān)的應(yīng)用程序接收指 示的動(dòng)作。
3. 如權(quán)利要求1所述的方法,其特征在于,所述確定一節(jié)點(diǎn)要將消息發(fā) 送到所述節(jié)點(diǎn)的指定旁系環(huán)的動(dòng)作包括從所述環(huán)樹中的另一節(jié)點(diǎn)接收指示的 動(dòng)作。
4. 如權(quán)利要求1所述的方法,其特征在于,所述確定所述節(jié)點(diǎn)要將消息 發(fā)送到指定旁系環(huán)的動(dòng)作包括所述節(jié)點(diǎn)訪問一個(gè)或多個(gè)旁系環(huán)/入口節(jié)點(diǎn)項(xiàng)的動(dòng)作。
5. 如權(quán)利要求1所述的方法,其特征在于,所述從所述節(jié)點(diǎn)的旁系環(huán)集 入口表中標(biāo)識(shí)對(duì)于所指定的旁系環(huán)的至少一個(gè)旁系環(huán)集入口的動(dòng)作包括標(biāo)識(shí) 一旁系環(huán)/入口節(jié)點(diǎn)項(xiàng)的動(dòng)作,所述旁系環(huán)/入口節(jié)點(diǎn)項(xiàng)標(biāo)識(shí)了所指定的旁系環(huán) 以及對(duì)所指定的旁系環(huán)的多個(gè)入口節(jié)點(diǎn)。
6. 如權(quán)利要求5所述的方法,其特征在于,還包括 將所述多個(gè)入口節(jié)點(diǎn)解析成適當(dāng)?shù)娜肟诠?jié)點(diǎn)子集的動(dòng)作。
7. 如權(quán)利要求5所述的方法,其特征在于,還包括 將所述多個(gè)入口節(jié)點(diǎn)解析成單個(gè)適當(dāng)?shù)娜肟诠?jié)點(diǎn)的動(dòng)作。
8. —種在計(jì)算機(jī)系統(tǒng)處的用于在環(huán)樹(1900)中發(fā)送近鄰間通信的方法, 所述方法包括一節(jié)點(diǎn)(1311)確定始發(fā)節(jié)點(diǎn)打算將消息(1998)路由到所述環(huán)樹(1900) 內(nèi)的目標(biāo)鄰近環(huán)(1221)中最接近給定節(jié)點(diǎn)ID的目的地節(jié)點(diǎn)的動(dòng)作;標(biāo)識(shí)已知是所述目標(biāo)鄰近環(huán)(1221)和所述目標(biāo)鄰近環(huán)(1221)的祖先環(huán) (221)中的至少一個(gè)的成員節(jié)點(diǎn)的一個(gè)或多個(gè)入口節(jié)點(diǎn)(41221)的動(dòng)作;以及將所述消息(1998)發(fā)送到所標(biāo)識(shí)的入口節(jié)點(diǎn)(41221)的動(dòng)作,所述消 息(1998)指示所標(biāo)識(shí)的入口節(jié)點(diǎn)(41221)要將所述消息(1998)解析到所 述目標(biāo)鄰近環(huán)(1221)中具有最接近所指示的目的地節(jié)點(diǎn)的節(jié)點(diǎn)ID的節(jié)點(diǎn)。
9. 如權(quán)利要求8所述的方法,其特征在于,所述一節(jié)點(diǎn)確定始發(fā)節(jié)點(diǎn)打 算將消息路由到所述環(huán)樹內(nèi)的目標(biāo)鄰近環(huán)中最接近給定節(jié)點(diǎn)ID的目的地節(jié)點(diǎn) 的動(dòng)作包括所述節(jié)點(diǎn)訪問關(guān)于始發(fā)節(jié)點(diǎn)打算將消息路由到所述環(huán)樹內(nèi)的目標(biāo) 鄰近環(huán)中最接近給定節(jié)點(diǎn)ID的目的地節(jié)點(diǎn)的指示的動(dòng)作。
10. 如權(quán)利要求9所述的方法,其特征在于,所述節(jié)點(diǎn)訪問關(guān)于始發(fā)節(jié)點(diǎn) 打算將消息路由到所述環(huán)樹內(nèi)的目標(biāo)鄰近環(huán)中最接近給定節(jié)點(diǎn)ID的目的地節(jié) 點(diǎn)的指示的動(dòng)作包括所述節(jié)點(diǎn)接收關(guān)于發(fā)送節(jié)點(diǎn)打算將消息路由到作為所述 發(fā)送節(jié)點(diǎn)的旁系環(huán)的目標(biāo)鄰近環(huán)中最接近給定節(jié)點(diǎn)ID的目的地節(jié)點(diǎn)的指示的 動(dòng)作。
11. 如權(quán)利要求9所述的方法,其特征在于,所述節(jié)點(diǎn)訪問關(guān)于始發(fā)節(jié)點(diǎn) 打算將消息路由到所述環(huán)樹內(nèi)的目標(biāo)鄰近環(huán)中最接近給定節(jié)點(diǎn)ID的目的地節(jié) 點(diǎn)的指示的動(dòng)作包括所述節(jié)點(diǎn)接收關(guān)于發(fā)送節(jié)點(diǎn)打算將消息路由到作為所述 發(fā)送節(jié)點(diǎn)的旁系環(huán)的子環(huán)的目標(biāo)鄰近環(huán)中最接近給定節(jié)點(diǎn)ID的目的地節(jié)點(diǎn)的 指示的動(dòng)作。
12. 如權(quán)利要求9所述的方法,其特征在于,所述訪問關(guān)于始發(fā)節(jié)點(diǎn)打算 將消息路由到作為所述節(jié)點(diǎn)的旁系環(huán)的目標(biāo)鄰近環(huán)中最接近給定節(jié)點(diǎn)ID的目 的地節(jié)點(diǎn)的指示的動(dòng)作包括從與所述節(jié)點(diǎn)相關(guān)的應(yīng)用程序接收指示的動(dòng)作。
13. 如權(quán)利要求9所述的方法,其特征在于,所述訪問關(guān)于始發(fā)節(jié)點(diǎn)打算 將消息路由到作為所述節(jié)點(diǎn)的旁系環(huán)的目標(biāo)鄰近環(huán)中最接近給定節(jié)點(diǎn)ID的目 的地節(jié)點(diǎn)的指示的動(dòng)作包括在另一消息中接收指示的動(dòng)作。
14. 如權(quán)利要求13所述的方法,其特征在于,所述在另一消息中接收指 示的動(dòng)作包括在來(lái)自所述環(huán)樹中的另一節(jié)點(diǎn)的消息中接收指示的動(dòng)作。
15. 如權(quán)利要求9所述的方法,其特征在于,所述節(jié)點(diǎn)訪問關(guān)于始發(fā)節(jié)點(diǎn) 打算將消息路由到所述環(huán)樹內(nèi)的目標(biāo)鄰近環(huán)中最接近給定節(jié)點(diǎn)ID的目的地節(jié) 點(diǎn)的指示的動(dòng)作包括接收關(guān)于始發(fā)節(jié)點(diǎn)打算將消息路由到所述始發(fā)節(jié)點(diǎn)的旁 系環(huán)中最接近給定節(jié)點(diǎn)ID的目的地節(jié)點(diǎn)的指示的動(dòng)作。
16. 如權(quán)利要求9所述的方法,其特征在于,所述訪問關(guān)于始發(fā)節(jié)點(diǎn)打算 將消息路由到所述環(huán)樹內(nèi)的目標(biāo)鄰近環(huán)中最接近給定節(jié)點(diǎn)ID的目的地節(jié)點(diǎn)的 指示的動(dòng)作包括接收關(guān)于始發(fā)節(jié)點(diǎn)打算將消息路由到所述始發(fā)節(jié)點(diǎn)的旁系環(huán) 的子環(huán)中最接近給定節(jié)點(diǎn)ID的目的地節(jié)點(diǎn)的指示的動(dòng)作。
17. 如權(quán)利要求8所述的方法,其特征在于,所述節(jié)點(diǎn)確定始發(fā)節(jié)點(diǎn)打算 將消息路由到所述環(huán)樹內(nèi)的目標(biāo)鄰近環(huán)中最接近給定節(jié)點(diǎn)ID的目的地節(jié)點(diǎn)的 動(dòng)作包括所述始發(fā)節(jié)點(diǎn)確定所述始發(fā)節(jié)點(diǎn)打算將消息路由到所述環(huán)樹內(nèi)的目 標(biāo)鄰近環(huán)中最接近給定節(jié)點(diǎn)ID的目的地節(jié)點(diǎn)的指示的動(dòng)作。
18. 如權(quán)利要求8所述的方法,其特征在于,所述標(biāo)識(shí)已知是所述目標(biāo)鄰 近環(huán)和所述目標(biāo)鄰近環(huán)的祖先環(huán)中的至少一個(gè)的成員節(jié)點(diǎn)的一個(gè)或多個(gè)入口 節(jié)點(diǎn)的動(dòng)作包括參考所述節(jié)點(diǎn)處的本地知識(shí)以標(biāo)識(shí)所述目標(biāo)鄰近環(huán)中的任何 節(jié)點(diǎn)的動(dòng)作。
19. 如權(quán)利要求8所述的方法,其特征在于,所述標(biāo)識(shí)已知是所述目標(biāo)鄰 近環(huán)和所述目標(biāo)鄰近環(huán)的祖先環(huán)中的至少一個(gè)的成員節(jié)點(diǎn)的一個(gè)或多個(gè)入口 節(jié)點(diǎn)的動(dòng)作包括標(biāo)識(shí)作為所述目標(biāo)鄰近環(huán)的成員的入口節(jié)點(diǎn)的動(dòng)作。
20. 如權(quán)利要求8所述的方法,其特征在于,所述標(biāo)識(shí)已知是所述目標(biāo)鄰 近環(huán)和所述目標(biāo)鄰近環(huán)的祖先環(huán)中的至少一個(gè)的成員節(jié)點(diǎn)的一個(gè)或多個(gè)入口 節(jié)點(diǎn)的動(dòng)作包括標(biāo)識(shí)作為所述目標(biāo)鄰近環(huán)的祖先環(huán)的成員的入口節(jié)點(diǎn)的動(dòng)作。
21. 如權(quán)利要求20所述的方法,其特征在于,所述標(biāo)識(shí)作為所述目標(biāo)鄰 近環(huán)的祖先環(huán)的成員的入口節(jié)點(diǎn)的動(dòng)作包括標(biāo)識(shí)一入口節(jié)點(diǎn)的動(dòng)作,所述入口節(jié)點(diǎn)是作為所述目標(biāo)鄰近環(huán)的最接近的祖先環(huán)的所述目標(biāo)鄰近環(huán)的祖先環(huán)的成員。
22. 如權(quán)利要求8所述的方法,其特征在于,所述標(biāo)識(shí)已知是所述目標(biāo)鄰 近環(huán)和所述目標(biāo)鄰近環(huán)的祖先環(huán)中的至少一個(gè)的成員節(jié)點(diǎn)的一個(gè)或多個(gè)入口 節(jié)點(diǎn)的動(dòng)作包括所述節(jié)點(diǎn)參考旁系環(huán)集入口表以標(biāo)識(shí)發(fā)送節(jié)點(diǎn)的旁系環(huán)集入口表中在所述目標(biāo)鄰近環(huán)的祖先環(huán)中的節(jié)點(diǎn)的動(dòng)作;以及將所述消息發(fā)送到所述祖先環(huán)中所標(biāo)識(shí)的節(jié)點(diǎn)的動(dòng)作。
23. 如權(quán)利要求22所述的方法,其特征在于,還包括所述祖先環(huán)中的節(jié)點(diǎn)參考本地知識(shí)來(lái)標(biāo)識(shí)所述目標(biāo)鄰近環(huán)中的任何節(jié)點(diǎn) 的動(dòng)作。
24. 如權(quán)利要求22所述的方法,其特征在于,還包括所述祖先環(huán)中的節(jié)點(diǎn)參考旁系環(huán)集入口表以標(biāo)識(shí)所標(biāo)識(shí)的節(jié)點(diǎn)的旁系環(huán)集中在所述目標(biāo)鄰近環(huán)的最接近的祖先環(huán)中的另一節(jié)點(diǎn)的動(dòng)作;以及 將所述消息發(fā)送到所述另一節(jié)點(diǎn)的動(dòng)作。
25. 如權(quán)利要求8所述的方法,其特征在于,所述標(biāo)識(shí)已知是所述目標(biāo)鄰 近環(huán)和所述目標(biāo)鄰近環(huán)的祖先環(huán)中的至少一個(gè)的成員節(jié)點(diǎn)的一個(gè)或多個(gè)入口 節(jié)點(diǎn)的動(dòng)作包括所述節(jié)點(diǎn)利用入口節(jié)點(diǎn)目錄機(jī)制來(lái)標(biāo)識(shí)已知是所述目標(biāo)鄰近 環(huán)的成員節(jié)點(diǎn)的入口節(jié)點(diǎn)的動(dòng)作。
26. 如權(quán)利要求25所述的方法,其特征在于,所述發(fā)送節(jié)點(diǎn)利用入口節(jié) 點(diǎn)目錄機(jī)制來(lái)標(biāo)識(shí)已知是所述目標(biāo)鄰近環(huán)的成員節(jié)點(diǎn)的入口節(jié)點(diǎn)的動(dòng)作包括將入口節(jié)點(diǎn)査找請(qǐng)求消息路由到會(huì)合點(diǎn)的動(dòng)作;以及 接收對(duì)應(yīng)于所述查找請(qǐng)求的入口節(jié)點(diǎn)查找響應(yīng)的動(dòng)作,所述入口節(jié)點(diǎn)查找 響應(yīng)包括多個(gè)入口節(jié)點(diǎn)。
27. 如權(quán)利要求26所述的方法,其特征在于,所述接收對(duì)應(yīng)于所述査找 請(qǐng)求的入口節(jié)點(diǎn)査找響應(yīng)的動(dòng)作包括從所述會(huì)合點(diǎn)接收入口節(jié)點(diǎn)査找響應(yīng)的 動(dòng)作。
28. 如權(quán)利要求26所述的方法,其特征在于,所述接收對(duì)應(yīng)于所述査找 請(qǐng)求的入口節(jié)點(diǎn)查找響應(yīng)的動(dòng)作包括接收包括向入口節(jié)點(diǎn)目錄機(jī)制注冊(cè)的一個(gè)或多個(gè)入口節(jié)點(diǎn)的入口節(jié)點(diǎn)査找響應(yīng)的動(dòng)作。
29. 如權(quán)利要求28所述的方法,其特征在于,所述接收包括向入口節(jié)點(diǎn) 目錄機(jī)制注冊(cè)的一個(gè)或多個(gè)入口節(jié)點(diǎn)的入口節(jié)點(diǎn)査找響應(yīng)的動(dòng)作包括接收包 括向所述會(huì)合點(diǎn)注冊(cè)的一個(gè)或多個(gè)入口節(jié)點(diǎn)的入口節(jié)點(diǎn)査找響應(yīng)的動(dòng)作。
30. 如權(quán)利要求28所述的方法,其特征在于,所述接收包括向入口節(jié)點(diǎn) 目錄機(jī)制注冊(cè)的一個(gè)或多個(gè)入口節(jié)點(diǎn)的入口節(jié)點(diǎn)査找響應(yīng)的動(dòng)作包括接收包 括向所述會(huì)合點(diǎn)注冊(cè)其自身的入口節(jié)點(diǎn)的入口節(jié)點(diǎn)查找響應(yīng)的動(dòng)作。
31. 如權(quán)利要求28所述的方法,其特征在于,所述接收包括向入口節(jié)點(diǎn) 目錄機(jī)制注冊(cè)的一個(gè)或多個(gè)入口節(jié)點(diǎn)的入口節(jié)點(diǎn)査找響應(yīng)的動(dòng)作包括接收包 括由另一方向所述入口節(jié)點(diǎn)目錄機(jī)制注冊(cè)的入口節(jié)點(diǎn)的入口節(jié)點(diǎn)查找響應(yīng)的 動(dòng)作。
32. 如權(quán)利要求31所述的方法,其特征在于,所述接收包括由另一方向 所述入口節(jié)點(diǎn)目錄機(jī)制注冊(cè)的入口節(jié)點(diǎn)的入口節(jié)點(diǎn)査找響應(yīng)的動(dòng)作包括接收 包括由另一會(huì)合點(diǎn)向所述入口節(jié)點(diǎn)目錄機(jī)制注冊(cè)的入口節(jié)點(diǎn)的入口節(jié)點(diǎn)査找 響應(yīng)的動(dòng)作。
33. 如權(quán)利要求26所述的方法,其特征在于,還包括接收對(duì)入口節(jié)點(diǎn)的入口節(jié)點(diǎn)注冊(cè)請(qǐng)求的動(dòng)作;以及向所述會(huì)合點(diǎn)注冊(cè)所述入口節(jié)點(diǎn)的動(dòng)作。
34. —種在計(jì)算機(jī)系統(tǒng)處使用的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品用 于實(shí)現(xiàn)一種用于在環(huán)樹(1900)中發(fā)送近鄰間通信的方法,所述計(jì)算機(jī)程序產(chǎn) 品包括其上存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述指令在由處理器執(zhí)行時(shí)使得節(jié)點(diǎn)執(zhí)行以下動(dòng)作確定一節(jié)點(diǎn)(1311)要將消息(1903)發(fā)送到所述節(jié)點(diǎn)(1311)的指定旁系環(huán)(21);訪問被配置成存儲(chǔ)所述節(jié)點(diǎn)(1311)的旁系環(huán)集入口的旁系環(huán)集入口表 (1904),每一旁系環(huán)集入口被配置成指示所述節(jié)點(diǎn)(1311)的旁系環(huán)(21) 以及對(duì)所述節(jié)點(diǎn)(1311)的旁系環(huán)(21)的相應(yīng)的至少一個(gè)入口節(jié)點(diǎn)(6521);從所述節(jié)點(diǎn)的旁系環(huán)集入口表(1904)中標(biāo)識(shí)對(duì)于所指定的旁系環(huán)(21) 的至少一個(gè)旁系環(huán)集入口,所述至少一個(gè)旁系環(huán)集入口中的每一個(gè)指示所指定的旁系環(huán)(21)的至少一個(gè)入口節(jié)點(diǎn)(6521);以及將所述消息(1903)發(fā)送到至少一個(gè)所指示的入口節(jié)點(diǎn)(6521)。
35. 如權(quán)利要求34所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)可 讀存儲(chǔ)介質(zhì)包括系統(tǒng)存儲(chǔ)器。
36. 如權(quán)利要求34所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)可 讀存儲(chǔ)介質(zhì)包括磁盤。
37. —種在計(jì)算機(jī)系統(tǒng)處使用的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品用 于實(shí)現(xiàn)一種用于在環(huán)樹(1900)中發(fā)送近鄰間通信的方法,所述計(jì)算機(jī)程序產(chǎn) 品包括其上存儲(chǔ)有計(jì)算機(jī)可執(zhí)行指令的一個(gè)或多個(gè)計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述 指令在由處理器執(zhí)行時(shí)使得節(jié)點(diǎn)執(zhí)行以下動(dòng)作確定始發(fā)節(jié)點(diǎn)打算將消息(1998)路由到所述環(huán)樹(1900)內(nèi)的目標(biāo)鄰近 環(huán)(1221)中最接近給定節(jié)點(diǎn)ID的目的地節(jié)點(diǎn);標(biāo)識(shí)已知是所述目標(biāo)鄰近環(huán)(1221)和所述目標(biāo)鄰近環(huán)(12221)的祖先 環(huán)(221)中的至少一個(gè)的成員節(jié)點(diǎn)的一個(gè)或多個(gè)入口節(jié)點(diǎn)(41221);以及將所述消息(1998)發(fā)送到所標(biāo)識(shí)的入口節(jié)點(diǎn)(41221),所述消息(1998) 指示所標(biāo)識(shí)的入口節(jié)點(diǎn)(41221)要將所述消息(1998)解析到所述目標(biāo)鄰近 環(huán)(1221)中具有最接近所指示的目的地節(jié)點(diǎn)的節(jié)點(diǎn)ID的節(jié)點(diǎn)。
38. 如權(quán)利要求37所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)可 讀存儲(chǔ)介質(zhì)包括系統(tǒng)存儲(chǔ)器。
39. 如權(quán)利要求37所述的計(jì)算機(jī)程序產(chǎn)品,其特征在于,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)包括磁盤。
全文摘要
本發(fā)明涉及用于幫助會(huì)合聯(lián)盟內(nèi)的近鄰間通信的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品。節(jié)點(diǎn)維護(hù)包括旁系環(huán)和對(duì)旁系環(huán)的相應(yīng)入口節(jié)點(diǎn)的旁系環(huán)集入口表。節(jié)點(diǎn)可以在環(huán)樹內(nèi)的環(huán)的配置上交換旁系環(huán)集入口狀態(tài)以彼此更新。節(jié)點(diǎn)可以參考旁系環(huán)集入口表,以及其它節(jié)點(diǎn),來(lái)標(biāo)識(shí)對(duì)作為該節(jié)點(diǎn)的旁系環(huán)的環(huán)的入口節(jié)點(diǎn)。消息可以被發(fā)送到旁系環(huán)中的入口節(jié)點(diǎn)。消息可以包括目標(biāo)鄰近環(huán)中的入口節(jié)點(diǎn)要將消息解析到目標(biāo)鄰近環(huán)中具有最接近所指示的目的地節(jié)點(diǎn)的節(jié)點(diǎn)ID的節(jié)點(diǎn)的指示。
文檔編號(hào)H04L12/28GK101491006SQ200780024622
公開日2009年7月22日 申請(qǐng)日期2007年3月29日 優(yōu)先權(quán)日2006年6月30日
發(fā)明者G·K·R·卡基法亞, L·迅, R·L·哈薩 申請(qǐng)人:微軟公司