專利名稱:分布式路由表體系結構和設計的制作方法
分布式路由表體系結構和設計
背景
計算設備的網絡通常包括用作定向該網絡上的消息通信的"路由器"的至 少一個計算設備。傳統上,路由器連接兩個或更多子網以使得不同子網上的計
算設備之間的消息被定向到適當的子網以便傳遞到其目標目的地。路由器的功 能的中心是"路由表",其將各個計算設備的標識符與可用于到達該計算機的 網絡路徑相關。路由表能夠以各種方式實現,并且不限于傳統的査找表。的確, 雖然傳統的査找表可適用于實現用于包括有限數量的計算設備的網絡的路由 表,但用于諸如無處不在的因特網等包括數百萬個單獨的計算設備的大型網絡 的路由器表可改為以為高效信息檢索而設計的獨特構造的形式實現。
路由表中所包含的信息同樣可取決于所使用的路由類型而變化。例如,在 被稱為"逐跳路由"的簡單路由方案中,路由表可將各個計算設備的標識符與 沿著到該目的地的路徑的下一個設備(換言之,下一 "跳")的地址相關。或 者,更復雜的路由方案基于網絡拓撲結構的知識并且因此,這一方案中的路由 農可將各個計算設備的標識符與到該計算設備的一條或多條路徑相關。
因為路由器可包括對于網間通信而言是重要的信息,所以路由器很容易會 成為網絡通信的瓶頸。例如,如果路由器變成阻塞的或無響應的,則該路由器 可能減緩或甚至中斷各種網絡通信。為了消除這一瓶頸,可使用分布式路由表
(DRT),藉此多個計算設備能夠各自主存能夠以分布式方式使用的路由表的 部分或全部。例如,多個計算設備中的每一個都能夠主存DRT中包括關于網 絡上的計算設備的子集的信息的部分。由此,對于由計算設備接收到的目的地 并非該計算設備的每一個消息,該計算設備可參考其在DRT中的部分并標識 更有可能能夠最終將該消息傳遞到其預期接收者的另一計算設備。與在其發生 故障時不再能夠將消息定向到其預期目的地的集中式路由器不同,即使一個或 多個計算設備發生故障DRT也能夠繼續定向消息。在這一故障情形中,其余 可操作的計算設備將消息定向到其他仍舊可操作的計算設備即可,并由此最終 將消息傳遞至其預期目的地。概述
在 一個或多個計算設備上執行的多個應用程序可基于分布式路由表拓撲 結構來實現應用程序間通信。為了最小化給予這些應用程序之間的惡意行為的 機會,在--個實施例中消息可由從根證書中導出的證書來簽署。由此,可首先 驗證接收到的消息已由證書正確地簽署,并且隨后可驗證證書本身以確保該證 書是從一個或多個預先選擇的根證書中正確導出的。這些驗證可由模塊化的安 全模塊來執行,該模塊由于其模塊化的設計而能夠由可基于替換安全機制的另 一安全模塊來高效地替代。
這一模塊化方法可被應用于DRT操作中所使用的其他元件,從而向實現 DRT網絡的那些應用程序提供更大的靈活性。例如,在一個實施例中,可使用 模塊化的傳輸模塊來使得應用程序能夠使用多個獨特的網絡通信協議中的任 -個來進行通信。由此, 一個傳輸模塊能夠使用普遍存在的的傳輸控制協議 (TCP)來實現通信,而另一傳輸模塊能夠使用諸如用戶數據報協議(UDP) 等某--其他協議來實現通信。類似地,可使用模塊化的引導模塊來使得應用程 序能夠基于各種對等協議或其他名稱解析協議來形成和加入DRT網絡。例如, 一個引導模塊使得能夠基于對等名稱解析協議(PNRP)來形成和加入DRT網 絡,而另--引導模塊能夠與域名服務(DNS) —起工作。
在DRT的操作中所使用的模塊中, 一個實施例構想存在能夠基于網絡局 部性來維護路由表的路由表管理模塊。更具體而言,DRT中的每一個單獨的路 由表中的條目標識在網絡拓撲結構的意義上"靠近"路由表管理模塊在其上執 行的計算設備的計算設備。這些"靠近"的條目可通過例如將與將要添加到路 由表的設備的通信的往返時間與已經在該表中的設備的往返時間進行比較,并 且僅在到該新設備的通信的往返時間更短的情況下將該新設備添加到該表來 維護。通過提供引用本地計算設備的路由表,可提高DRT網絡的總體效率。
提供本概述是為了以簡化的形式介紹將在以下詳細描述中進一步描述的 -些概念。本概述并不旨在標識出所要求保護的主題的關鍵特征或必要特征, 也不旨在用于限定所要求保護的主題的范圍。
當參考附圖閱讀以下詳細描述時,將使得其它特征和優點是顯而易見的。
以下詳細描述在結合附圖參考時可得到最佳的理解,附圖中
圖1是示例性DRT網絡的網絡圖2是示例性計算設備的框圖3是可由應用程序調用的示例性DRT機制的框圖
圖4是用于實例化DRT機制的示例性步驟的流程閣5是用于加入DRT網絡的示例性步驟的流程圖6是使得能夠向DRT網絡注冊計算設備的一系列示例性通信的通信圖
以及
圖7是使得能夠搜索DRT網絡上的計算設備的一系列示例性通信的通信圖。
詳細描述
以下描述涉及用于實現并使用依靠分布式路由表(DRT)的計算設備的網 絡的機制。具體而言,每一個計算設備都可主存可擔當基于DRT的網絡的端 點的--個或多個應用程序。這些應用程序可實例化能夠維護DRT的每一個單 獨部分并且還可提供通信和安全基礎結構的進程,從而使得這些應用程序能夠 創建并使用依靠DRT的網絡。
與DRT的實現相關的各種任務可被組件化,以使得可互換的組件能夠提 供各種各樣的功能。在一個實施例中,安全模塊可由應用程序來從一個或多個 安全模塊中選擇,其中每一個安全模塊都可根據該模塊所實現的特定安全策略 來驗證傳入消息。在另一實施例中,傳輸模塊可由應用程序來從一個或多個傳 輸模塊中選擇,其中每一個傳輸模塊都可使用不同的網絡傳輸協議來提供通 信。同樣,其他實施例構想引導模塊或記錄模塊,這兩個模塊中的每一個都可
由應用程序來從提供相同的基本功能但各自實現該模塊專用的機制的一個或 多個模塊中選擇。
又一實施例構想路由表管理模塊,該模塊可管理DRT的每一部分的條目 以確保每--個路由表中的條目標識在網絡拓撲結構中最接近該計算設備的計算設備。在一個實施例中,路由表中的條目或潛在條目的接近度可通過由該條 目標識的計算設備和路由表管理模塊在其上執行的計算設備之間的通信的往 返時間來確定。由此,如果路由表已經包括足夠數量的條目,則在一個實施例 中,僅在潛在條目的往返時間少于當前在該路由表中的至少一個條目的往返時 間的情況下可添加該潛在條目。在一替換實施例中,可自由地向路由表添加條 目,但路由表管理模塊可周期性地或另外如所請求地測試該路由表中的一個或 多個條目的往返時間,并且可丟棄往返時間大于所確定的閾值的那些條目或者 只保留閾值數量的條目。
在另一實施例中,安全模塊可基于一個或多個預定義根證書來施加安全措
施。具體而言,在接收到關于基于DRT的網絡的管理的消息后,這一安全模 塊可驗證所接收到的消息已由與該消息一起提供的證書正確地簽署,以及所提 供的證書構成回頭通向預定義根證書中的--個的證書鏈。根證書可由本地認證 機構(CA)或諸如通過因特網來銷售和提供服務的商業CA中的任一個等外部 CA來提供。
此處所描述的技術聚焦于但不限于,用于創建、加入和管理在一個或多個 物理計算設備上執行的多個應用程序的網絡的機制,且每一個計算設備通過一 個或多個子網物理地連網到其他計算設備。為了在計算設備之間的物理網絡連 接與一系列互相通信的應用程序之間的物理網絡連接之間進行區分,后者將被 稱為"網格"。由此,使用分布式路由表(DRT)來路由網格中的消息的網格 將被稱為"DRT網格"。
轉向圖1,示出了示例性DRT網格99,其包括通過網絡90聯網在一起的 計算設備IO、 20、 30、 40和50。在所示的示例性DRT網格99中,參與的計 算設備IO、 20、 30、 40和50中的每一個都可包括鍵和路由表。每一個鍵都可 擔當計算設備本身或在該計算設備上執行的特定進程或應用程序的唯一標識 符。例如,普遍存在的網際協議(IP)地址是用于標識網絡中遵照該網際協議 的端點的一種類型的鍵。在所示的示例性DRT網格99中,計算設備IO、 20、 30、 40和50已被分別分配鍵1000、 2000、 3000、 4000和5000 。
計算設備10、 20、 30、 40和50的路由表11、 21、 31、 41和51中的每一 個分別只包括路由信息的可用部分。相反,擔當用于DRT網格99的單個分布式路由表的是路由表ll、 21、 31、 41和51的組合。例如,為了將通信發送到 訃算設備40,計算設備20首先可確定其正在搜索的鍵是鍵4000。 一旦計算設 備20標識了鍵4000,它就可參考其路由表21以搜索到鍵4000的最近條目。 在路由表21中,計算設備20可將鍵3000或鍵5000標識為最近。選擇例如鍵 3000可使得計算設備20發起與鍵3000所標識的計算設備30的通信并且請求 該計算設備30將通信從計算設備20轉發至具有鍵4000的計算設備。計算設 備30可參考其自己的路由表31并且可標識鍵4000。因此,將該通信從計算設 備20轉發至具有鍵4000的計算設備40。以此方式,通信可在參與圖1的DRT 網格99的任何計算設備之間路由,即使每一個計算設備都只包括總路由表的 -部分。
雖然未作要求,但以下描述將處在諸如程序模塊等正由一個或多個計算設 備執行的計算機可執行指令的一般上下文中。更具體而言,除非另外指明,否 則描述將參考一個或多個計算設備或外圍設備所執行的動作以及其所執行的 操作的符號表示。由此,可以理解,這些有時被稱為計算機執行的動作和操作 包括以結構化形式表示數據的電信號的處理單元的操縱。該操縱在存儲器中的 各個位置變換或維護數據,這以本領域技術人員都理解的方式重新配置或以其 他方式更改計算設備或外圍設備的操作。其中維護數據的數據結構是具有由該 數據的格式定義的特定特性的物理位置。
一般而言,程序模塊包括執行特定任務或實現特定抽象數據類型的例程、 程序、對象、組件、數據結構等。此外,本領域技術人員將會認識到這些計算 設備不必限于常規個人計算機,并且包括其他計算配置,包括手持式設備、 多處理器系統、基于微處理器的或可編程消費電子設備、網絡PC、小型計 算機、大型計算機等等。類似地,這些計算設備不必限于獨立計算設備,因 為各機制也可以在其中任務由通過通信網絡鏈接的遠程處理設備執行的分 布式計算環境中實現。在分布式計算環境中,程序模塊可以位于本地和遠程 存儲器存儲設備中。
參考圖2,示出了示例性計算設備100。計算設備100可表示圖1的計算 設備10、 20、 30、 40和50中的任一個。示例性計算設備100可包括但不限于, -個或多個中央處理單元(CPU) 120、系統存儲器130和將包括該系統存儲
10器在內的各種系統組件耦合至處理單元120的系統總線121。系統總線121可 以是兒種類型的總線結構中的任何--種,包括存儲器總線或存儲控制器、外圍 總線、以及使用各種總線體系結構中的任一種的局部總線。
計算設備100通常還包括能夠包括可由計算設備100訪問的任何可用介質 的計算機可讀介質,并且包括易失性和非易失性介質以及可移動和不可移動介 質兩者。作為示例而非限制,計算機可讀介質可包括計算機存儲介質和通信介 質。計算機存儲介質包括以用于存儲諸如計算機可讀指令、數據結構、程序模 塊或其它數據等信息的任何方法或技術來實現的介質。計算機存儲介質包括但 不限于,RAM、 ROM、 EEPROM、閃存或其它存儲器技術、CD-ROM、數字 多功能盤(DVD)或其它光盤存儲、磁帶盒、磁帶、磁盤存儲或其它磁性存儲 設備、或能用于存儲所需信息且可以由計算設備100訪問的任何其它介質。通 信介質通常以諸如載波或其它傳輸機制等已調制數據信號來體現計算機可讀 指令、數據結構、程序模塊或其它數據,并包括任意信息傳送介質。作為示例 而非限制,通信介質包括有線介質,諸如有線網絡或直接線連接,以及無線介 質,諸如聲學、RF、紅外線和其它無線介質。上述中任一組合也應包括在計算 機可讀介質的范圍之內。
系統存儲器130包括易失性和/或非易失性存儲器形式的計算機存儲介質, 如只讀存儲器(ROM) 131和隨機存取存儲器(RAM) 132。基本輸入/輸出系 統133 (BIOS)包含有助于諸如啟動時在計算設備100中元件之間傳遞信息的 基本例程,它通常存儲在ROM131中。RAM132通常包含處理單元120可以 立即訪問和/或目前正在其上操作的數據和/或程序模塊。作為示例而非限制, 圖2示出了操作系統134、其它程序模塊135和程序數據136。
計算機系統100還可包括其它可移動/不可移動、易失性/非易失性計算機 存儲介質。僅僅作為示例,圖2示出了對不可移動、非易失性磁性介質進行讀 寫的硬盤驅動器141。可以與示例性計算設備一起使用的其它可移動/不可移 動、易失性/非易失性計算機存儲介質包括但不限于,磁帶盒、閃存卡、數字多 功能盤、數字錄像帶、固態RAM、固態ROM等等。硬盤驅動器141通常通 過諸如接口 140的不可移動存儲器接口連接到系統總線121。
上文討論并在圖2中示出的驅動器及其相關聯的計算機存儲介質為計算設備100提供了對計算機可讀指令、數據結構、程序模塊和其它數據的存儲。 例如,在圖2中,硬盤驅動器141被示為存儲操作系統144、其它程序模塊145 和程序數據146。注意,這些組件可以與操作系統134、其它程序模塊135和 程序數據136相同,也可以與它們不同。操作系統144、其它程序模塊145和 程序數據146在這里被標注了不同的標號是為了說明至少它們是不同的副本。
關于以下描述,計算設備100可以使用到一個或多個遠程計算機的邏輯連 接在聯網環境中操作。為了說明簡便起見,計算設備100在圖2中被示為連接 到不限于任何特定網絡或聯網協議的網絡卯。圖2所描繪的邏輯連接是一般網 絡連接171,其可以是局域網(LAN)、廣域網(WAN)或其他網絡。計算設 備IOO通過網絡接口或適配器170連接到通用網絡連接171,網絡接口或適配 器170進而連接到系統總線121,但將會認識到,所示網絡連接是示例性的并 且可使用建立通信鏈路的其他手段。
在聯網環境中,相對于計算設備100或其部分或外圍設備所描繪的程序模 塊可被存儲在通過一般網絡連接171通信地耦合到計算設備100的一個或多個 貝:他計算設備的存儲器中。同樣,操作系統144和程序模塊145能夠與在計算 設備100可經由 '般網絡連接171和網絡90通信地耦合到的其他計算設備上 執行的其他操作系統和程序模塊進行通信。在一個實施例中,程序模塊145包 括至少-—個應用程序,該至少一個應用程序經由諸如圖1的DRT網格99等跨 網絡卯實現的DRT網格來與在其他計算設備上執行的其他應用程序進行通
信°
轉向圖3,諸如將由程序模塊145中的一個或多個來創建的應用程序進程 200被示為包括用于通過諸如DRT網格99等DRT網格來與其他應用程序進程 進行通信的元件。具體而言,圖3的應用程序進程包括應用程序代碼210和兩 個節點實例220和230。對這兩個節點實例的說明旨在僅僅是示例性的,因為 可實例化任何數量的一個或多個節點實例作為諸如應用程序進程200等單個應 用程序進程的一部分。
在一個實施例中,每一個節點實例都可包括用于實現特殊化任務的多個組 件或模塊。由此,如圖所示,節點實例220包括節點221、路由表管理模塊222、 傳輸模塊223、引導模塊224、安全模塊225和記錄模塊226。節點實例230可包括類似的模塊,但圖3只示出了節點231。最初,如圖3的上面的箭頭所 示,傳輸模塊223、引導模塊224、安全模塊225和記錄模塊226可由應用程 序代碼210來實例化到應用程序進程200中。隨后,節點221可由應用程序代 碼210來實例化到應用程序進程200中,并且可被提供指向已經實例化的傳輸 模塊223、引導模塊224、安全模塊225和記錄模塊226的實例的指針,如圖3 的下面的箭頭所示。節點221可實例化路由表管理模塊222并且可創建節點實 例220,該節點實例包括實例化的節點221、路由表管理模塊222、傳輸模塊 223、引導模塊224、安全模塊225和記錄模塊226的實例。
每一個節點實例220和230都可表示諸如圖1的DRT網格99等DRT網 格內的可唯一-標識的端點。由此,每一個節點實例220和230都可被分配對應 于該節點實例的鍵標識符,并且每一個節點實例都可允許應用程序代碼以獨立 的方式與 -個或多個其他節點實例進行通信。可以看出,單個計算設備且實際 上是單個應用程序能夠主存多個節點實例。由此,雖然圖1以及隨后的圖6和 7各自將計算設備示為單個節點實例,但不應將描述中的任何內容解讀成需要 這樣的節點實例與計算設備或者節點實例與在這些計算設備上執行的應用程 序之間的一對一對應關系。
轉向圖4,示出了例示可由應用程序發起以建立諸如圖3的節點實例220 或230等節點實例的--系列示例性步驟的流程圖300。雖然流程圖300的步驟 按特定次序示出,但這一系列步驟中的許多步驟之間的確切關系是無關的,并 且因此,存在等價于所示排序的對流程圖300的步驟的多種排序。然而, 一般 而言,將發生某一發起步驟以使得應用程序執行所示步驟。由此,在圖4中, -個這樣的發起步驟是在步驟310處的應用程序決定加入DRT網格。在這一 發起步驟之后,可發生多個實例化,但如圖所示,這些實例化的準確次序并不 受限。
在流程圖300所示的示例中,在步驟320,應用程序代碼210可實例化傳 輸模塊223。在一個實施例中,在步驟320處實例化的傳輸模塊223被特別設 計成使用特定傳輸協議來操作,并且應用程序代碼210無需為了使得節點221 能夠利用傳輸模塊223而執行任何進一步的動作。然而,在一替換實施例中, 傳輸模塊223能夠與多種不同的傳輸兼容。在這種情況下,應用程序代碼210
13還可在步驟320處實例化傳輸模塊223后在步驟325處向該傳輸模塊通知要使 用的底層協議。
隨后,在步驟330,應用程序代碼210可實例化安全模塊225,但是如先 前所指示的,安全模塊的實例化可等效地在傳輸模塊223的實例化之前發生。 旦實例化了安全模塊,在步驟335,應用程序代碼210就可向該安全模塊提 供適當的安全憑證。這些安全憑證可包括由應用程序代碼210使用的私鑰和公 切對以及公鑰證書。在一個實施例中,在步驟335處提供的公鑰證書可從通過 DRT網格進行通信的所有應用程序所共有的根證書中導出。
在步驟330和335處實例化了安全模塊225并向其提供了相關信息之后, 在步驟340,應用程序代碼210可實例化引導模塊224。或者,如先前所指示 的,引導模塊224的實例化也可等效地在傳輸模塊223和安全模塊225的實例 化中的任-'個或兩者之前發生。在一個實施例中,引導模塊224被特別設計成 使用從中發起與DRT網格的通信的特定網絡來操作,并且應用程序代碼210 無需為了使得節點221能夠利用引導模塊224而執行任何進一步的動作。在— ^換實施例中,引導模塊224可以更靈活,在這種情況下,應用程序代碼210 還可在步驟340處實例化引導模塊224后在步驟345處向該引導模塊通知要使 用的特定網絡。
在步驟360處實例化節點之前,應用程序代碼210可在步驟350處實例化 記錄模塊226。如同步驟320、 330和340的實例化一樣,記錄模塊226的實例 化不必按相對于傳輸模塊223、安全模塊225或引導模塊224的實例化的任何 特定次序來發生,并且能夠等效地在這些實例化中的任一個或全部之前發生。 隨后,在步驟355,應用程序代碼210可向記錄模塊226通知要使用的日志存 儲的名稱和位置。或者,諸如記錄模塊226等每一個記錄模塊都可被設計成使 用特定日志存儲,在這種情況下將不執行步驟355。
在傳輸模塊223、引導模塊224、安全模塊225和記錄模塊226已由應用 程序代碼210實例化之后,該應用程序代碼可繼續實例化節點221,并由此創 建DRT實例,諸如DRT實例220。由此,如流程圖300所示,在步驟360, 應用程序代碼210可實例化節點221 。應用程序代碼210還可將指向實例化的 傳輸模塊223、引導模塊224、安全模塊225和記錄模塊226的實例的指針傳遞給節點221,由此使得節點221能夠與傳輸、引導、安全和記錄模塊進行通 信并利用這些模塊。節點221然后可創建DRT實例220并且還可實例化路由 衣管理模塊222。
一旦創建了DRT實例220,在步驟365,應用程序代碼210就可指示節點 221加入DRT網格,諸如圖1的DRT網格99。在步驟370,應用程序代碼210 在加入DRT網格時的初始處理可結束。
為了諸如響應于步驟365來加入DRT網格,節點221可利用實例化的路 由表管理模塊222、傳輸模塊223、引導模塊224、安全模塊225和記錄模塊 226。轉向圖5,流程圖400示出了由節點221執行以加入DRT網格的一系列 示例性步驟。最初,如圖所示,在步驟410,節點221可從應用程序代碼210 接收加入DRT網格的請求。隨后,節點210可請求實例化的引導模塊224提 供該應用程序正試圖加入的DRT網格中的該引導模塊所知道的其他節點的列 表。如果如步驟430所確定的引導模塊224沒有返回任何節點,則在步驟440, 節點221可保持在離線狀態。
在一個實施例中,如果引導模塊224沒有返回任何節點,則應用程序代碼 210可請求該引導模塊發布其可用性,或者該引導模塊可自動發布其可用性。 邁具體地,為了使得至少兩個節點能夠在最初進行通信以便首先形成DRT網 格,引導模塊224可使用預先安排的會合(rendezvous)。這一會合可采取在 另一網絡的上下文中進行的發布或注冊的形式,以便通告節點實例220的可用 性及其形成DRT網格的意愿。具體地,引導模塊224可使用特定對等協議或 例如計算設備10、 20、 30、 40和50所慣用的其他名稱解析協議來形成網絡卯。 在一個實施例中,可針對諸如對等名稱解析協議(PNRP)等特定協議來定制 特定的個別引導模塊,由此使得應用程序能夠通過簡單地實例化適當的引導模 塊,依靠各種名稱解析協議來形成各網絡上的DRT網格。
一旦引導模塊224已使用網絡卯的名稱解析協議來通告節點實例220的 存在,該模塊就可等待另一節點變成在網絡卯上活動。這一后續節點然后可 經由網絡卯中的預先安排的會合點來檢查諸如節點實例220等任何其他節點 是否可用于創建DRT網格。該后續節點由此能夠獲悉節點實例220的存在, 并且這兩個節點可繼續進行通信以形成DRT網格。然而,如果在步驟430處確定引導模塊224已返回了至少一個節點,則節 點221可繼續加入或建立具有該節點的DRT網格。如圖所示,如果單個節點 先前已經在網絡卯上以預先安排的方式發布了其形成DRT網格的可用性,則 在步驟430,引導模塊224可返回這一節點。類似地,如果多個節點已經形成 了 DRT網格,則在步驟430,引導模塊224也可返回這些節點中的一個或多個。 在任--種情況下,在步驟450,節點221可請求安全模塊225確認由引導模塊 224返回的節點中的一個或多個。
為了使得節點實例220能夠更快地形成有用的路由表,由引導模塊224 返回的節點可向節點實例220提供關于這些節點所知道的其他節點的信息。這 些信息也可由安全模塊225來確認。
在一個實施例中,安全模塊225可通過驗證從節點接收到的信息己由附隨 該信息的證書正確地簽署以及該證書是從根證書中正確地導出的兩者來確認 由引導模塊224標識并提供的節點。例如,從節點接收到的信息可以用唯一鍵 編號來標識該節點。為了防止惡意實體通過提供使用相同鍵編號的信息來假裝 成該節點,可使用證書米簽署包括鍵編號的接收到的信息。使用已知密碼技術, 安全模塊225可驗證包括鍵編號的接收到的信息已由所提供的證書正確地簽 署。例如,安全模塊225可使用證書中所提供的公鑰來驗證所提供的信息和鍵 編號是由對應的私鑰簽署的。另外,在一個實施例中,鍵編號可從發布者的公 鑰中導出,由此使得安全模塊能夠進一步驗證該鍵編號。在使用證書來驗證消 息內容后,安全模塊225可進一步驗證該證書是預先批準的根證書或者是包括 預先批準的根證書的證書鏈的一部分。通過使用根證書而不是自簽署的證書, DRT網格可變得更安全并且安全措施可具有更大的靈活性。
--旦安全模塊225已在步驟450處確認了由引導模塊224返回的節點,在 步驟460,節點221就可請求路由表管理模塊222將得到驗證的節點和相關路 由添加到由節點實例220維護的路由表。在一個實施例中,路由表管理模塊222 可僅在這些節點在網絡拓撲結構中比已經在路由表中的節點中的一個或多個 更接近主存節點實例220的計算設備的情況下決定添加這些節點中的一個或多 個。在—替換實施例中,路由表管理模塊222最初可將由引導模塊224返回并 且得到安全模塊225的驗證的節點中的部分或全部添加到節點實例22Q的路由表。隨后,路由表管理模塊222可確定節點實例220的路由表中的條目數是否 超過預定閾值。如果超過這一閾值,則可基于網絡拓撲結構中的路由表中的條 目所引用的節點和主存節點實例220的計算設備之間的距離來移除條目。更具 體而言,能夠以有利于表示較接近的節點的條目的方式移除具有更大距離的條 目。路由表管理模塊對路由表的這一削減可在周期性的基礎上或在應用程序代 碼210或節點221請求時發生,或者以其他方式觸發,諸如由監視路由表中的 條目數的進程來觸發。
在網絡拓撲結構中,節點之間的距離或主存這些節點的計算設備之間的距 離可以不由節點之間的物理距離,而由節點之間的通信路徑的距離來定義。的 確,網絡拓撲結構通常不符合物理拓撲結構。例如,連接到公司網絡的計算設 備與連接到同一公司網絡的其他計算設備的通信能夠比該計算設備與連接到 不同的公司網絡的另一計算設備的通信更高效,即使連接到同一公司網絡的這 些計算設備在其它城市而連接到不同公司網絡的另一設備位于僅僅數個街區 之外。同-網絡分區上的兩個計算設備之間的通信路徑可能是短且直接的,即 使這兩個計算設備物理上彼此分開,而不同網絡分區上的兩個計算設備之間的 通信路徑可能需要大量網間傳輸并因此可能相當長且復雜。
為了確定節點的接近度,在一個實施例中路由表管理模塊222可測量從節 點實例220發送到正在測量其距離的節點的消息的往返時間。具有最短往返時 間的節點被認為是"較接近"的并因此被保留在路由表中。在另一實施例中, 路由表管理模塊222可基于主存正在估算其距離的節點的計算設備的網際協議 (IP)地址的特性與主存節點實例220的計算設備的IP地址的特性的比較來確 定哪一個節點"較接近"。在又一實施例中,可使用上述兩個實施例的組合。 例如,路由表管理模塊222最初可測量往返時間,但如果兩個或更多節點被測 得具有相似的往返時間并因此被認為與節點實例220的網絡拓撲距離大致相 等,則可選擇將具有更相似的IP地址的節點包括在路由表中。
然而,在最初加入DRT網格時,更有可能的情況是路由表所具有的條目 太少。如果路由表管理模塊222確定路由表需要其他條目,則該模塊可請求節 點221執行DRT網格中的搜索以獲取其他節點信息。如圖5的流程圖400所 示,在步驟470,節點221可接收這一獲取其他節點信息的請求。如果在步驟470處未接收到這一請求,則節點221為加入DRT網格而執行的處理可在步驟 4卯處結束。然而,如果在步驟470處接收到對其他節點信息的請求,則節點 221可在步驟480處執行對DRT網格的搜索。
---種可用于執行對DRT網格的搜索的機制由圖6的通信流500示出。最 初,節點,諸如由鍵2000標識并由計算設備20主存的節點可標識與正被搜索 的節點相關聯的鍵編號。正在搜索的節點無需確定正被搜索的節點的存在,因 為對任何鍵的搜索都將返回由大致等于正被搜索的鍵的鍵來標識的節點。在通 信流500所示的示例中,由鍵2000標識的節點可搜索由鍵4000標識的節點。 最初,如通信510所示,諸如節點221的節點可請求路由表管理模塊222在本 地路由表21中査找被搜索的鍵4000。作為響應,路由表管理模塊222可向節 點221返回到被搜索的鍵的路由或者到最接近被搜索的鍵的鍵的路由。在圖6 所示的特定示例中,被搜索的鍵4000不存在于路由表21中。因此,路由表管 理模塊222可向節點221提供到由存在于路由表21中的、與被搜索的鍵4000 垴接近的鍵3000標識的節點的路由。
有了到由鍵3000標識的節點的路由,節點221可建立與由鍵3000標識的 節點的通信并請求該節點在其路由表中查找由被搜索的鍵4000標識的節點。 由此,如圖6所示,這一請求能夠以從計算設備20到計算設備30的通信520 的形式作出,計算設備20可被認為主存圖3的節點實例220,計算設備30在 閣6的示例性DRT網格99中主存由鍵3000標識的節點。由鍵3000標識的節 點的路山表31在圖6所示的實施例中的確包括對應于由鍵4000標識的被搜索 的節點的條目。因此,在標識路由表31中的條目525后,由鍵3000標識的節 點可經由通信530來響應節點221以便向該節點221通知到由鍵4000標識的 節點的路由。
在一個實施例中,在確定已經定位了由鍵4000標識的被搜索的節點之前, 節點221可向由鍵4000標識的節點發送通信540以請求該節點同樣搜索其路 由表以査找由鍵4000標識的節點。這一消息可被稱為"詢問"消息,并在圖6 中經由從主存節點221的計算設備20到計算設備40的通信540示出,計算設 備40在圖6所示的示例中主存由鍵4000標識的節點。為了確保響應詢問消息 540的消息不被某--其他節點取得并重放,該詢問消息可包括可隨機生成的令
18牌"現時值"。后續響應消息然后可包括該令牌并且該消息的簽名可參考該令 牌來計算。
在接收到通信540后,由鍵4000標識的節點可響應它的確是節點221正 在搜索的節點。由此,如圖6所示,從主存由鍵4000標識的節點的計算設備 40到主存節點實例220的計算設備20的通信545可指示作出響應的節點用鍵 4000來標識。這一消息可被稱為"權威"消息并且可以是經數字簽名的并且與 包括公鑰的證書一起傳輸。如上所述,該權威消息還可包括來自詢問消息540 的隨機現時值并且證書中的簽名可參考該現時值來計算。另外,節點221可在 接收到通信545后請求安全模塊225驗證該權威消息已正確地簽署并且證書或 者是正確的根證書或者是包括正確的根證書的證書鏈的一部分。
一旦安全模塊225已驗證該權威消息,由此為節點221驗證它的確已找到 由被搜索的鍵4000標識的節點,節點221可向應用程序代碼210提供應用程 序凈荷。該應用程序凈荷是由用該鍵注冊的鍵4000所標識的節點表示的遠程 應用程序的信息。在一個實施例中,該應用程序凈荷可以是主存該遠程應用程 序的il算設備40的IP地址或其他常見網絡地址。在這種情況下, 一旦應用程 序代碼210接收到該IP地址,它就可繼續使用傳統TCP/IP通信來與該遠程應 用程序進行通信。
在一個實施例中,諸如以剛剛描述的方式的對另一節點的搜索可由DRT 網格99中的任一節點來執行。然而,在一替換實施例中,只有在DRT網格99 中注冊的節點才被允許搜索。為了向DRT網格99注冊其自身,諸如節點221 等節點可向該DRT網格中的其他節點中的一個或多個發布鍵或其他標識值。 轉向圖7,示出了通信流600,其示出了可使得由計算設備610主存的節點能 夠將K A身注冊為DRT網格99的一部分的一系列示例性通信。在一個實施例 中,最初,諸如節點實例220的節點221等由計算設備610主存的節點可請求 安全模塊225生成可用于在DRT網格99中標識節點實例220的唯一鍵。在--替換實施例中,取決于安全模塊225的功能,節點221自己選擇將在DRT網 格99中注冊該節點時使用的標識鍵即可。在圖7所示的示例中,可選擇鍵l卯0 來標識由計算設備610主存的節點實例220。
為了向DRT網格99注冊其自身,節點221最初可執行"解析"操作,藉此標識具有接近對應于節點實例220的所選鍵的鍵的節點。在一個實施例中,該解析操作可通過將鍵l卯0遞增一并且然后向DRT網格99搜索該新鍵值,即本示例中的l卯l來執行。由此,如通信流程圖600所示,來自計算設備610的通信620可搜索鍵l卯l。為了簡單起見,搜索請求620被示為被大致定向到DRT網格99而不是該DRT網格的特定節點,但如上文中所詳細描述的,這些搜索結果最初被定向到具有存儲在由正在搜索的節點維護的路由表中的相似鍵的節點,并且然后在適當時由每一個后續節點來重定向。類似地,為了簡單起見,搜索響應通信625被示為大致來自DRT網格99而不是特定節點,但同樣如在上文中所詳細描述的,這些搜索響應可從由正在搜索的節點聯系的一個或多個節點接收。
在圖7所示的示例中,響應通信625可指示由鍵2000標識的節點具有與被搜索的鍵l卯l最接近的鍵。一旦正在嘗試使用鍵l卯O來向DRT網格99注冊其自身的節點實例220知道由鍵2000標識的節點,該節點實例220就可向該節點發送"洪泛"消息630,該消息通告作為該DRT網格的一部分的節點實例220的存在并提供標識鍵1900。響應于接收到洪泛消息,節點最初可使用安全模塊來驗證該洪泛消息已被正確地簽署并且相關聯的證書或者是已批準的根證書或者是包括該已批準的根證書的證書鏈的一部分。 一且該洪泛消息得到驗證,諸如圖7所示的示例中的由鍵2000標識的節點等接收節點就可將所接收到的鍵和路由信息添加到其路由表21中。由此,如圖所示,可將對應于鍵1900的條目635添加到由鍵2000標識的節點的路由表21 。
除了將鍵l卯O添加到其路由表21之外,由鍵2000標識的節點還可在假設其路由表21中的其他條目也希望獲悉該新節點的情況下響應于洪泛消息630來將該洪泛消息轉發給這些其他條目。由此,如圖7所示,由鍵2000標識的節點可經由通信640來將轉發的洪泛消息發送到其路由表21中的其他節點,即由鍵IOOO、 3000和5000標識的節點。在接收到轉發的洪泛消息640后,接收節點中的每一個都能夠以類似于由鍵2000標識的節點在其接收洪泛消息630時的方式來響應;即,由鍵IOOO、 3000和5000標識的接收節點中的每—個都能夠在其各自的安全模塊驗證轉發的洪泛消息640的情況下將由鍵l卯O標識的節點添加到其各自的路由表ll、 31和51。--旦將關于對應于鍵1900的節點的路由信息存儲在構成DRT網格99的其他節點的一個或多個路由表中,對應于鍵1900的節點就可被認為是已注冊為該DRT網格的一部分。在另一實施例中,最少數量的節點必須在其路由表中具有對應于由鍵1卯0標識的節點的條目以使得該節點能夠被認為是DRT網格99的已注冊節點。在這種情況下,接收轉發的洪泛消息640的節點本身可將該洪泛消息進一步轉發給這些接收節點的路由表中所標識的節點。如果節點從不止一個源接收到洪泛消息,則該節點忽略重復的洪泛消息即可。然而,通過多次轉發洪泛消息,更多數量的節點的路由表可用該洪泛消息中所包含的鍵和路由信息來更新,從而使得發送該洪泛消息的節點在DRT網格99中注冊其自身能夠高效得多。
從以上描述中可以看出,DRT網格可由具有實現各種定義的任務的組件化模塊的節點來創建、維護和利用,這些組件化模塊包括安全模塊和路由表管理模塊,前者能夠允許使用根證書來驗證消息,而后者能夠提供包括在考慮網絡沐'撲結構時接近節點的條目的路由表。考慮此處所述的主題的眾多可能的變化,本發明要求保護落入以下權利要求書范圍內的所有這樣的實施例及其等效實施方式。
權利要求
1.一種或多種包括用于創建節點實例的計算機可執行指令的計算機可讀介質,所述節點實例表示分布式路由表網格的端點,所述計算機可執行指令涉及以下步驟,包括根據用于所述分布式路由表網格的網絡傳輸來選擇傳輸模塊;實例化所述傳輸模塊;根據用于發起與所述分布式路由表網格的其他節點的通信的預定義機制來選擇引導模塊;實例化所述引導模塊;根據與所述分布式路由表網格相關聯的一個或多個安全機制來選擇安全模塊;實例化所述安全模塊;以及實例化節點模塊,所述節點模塊用于利用所述傳輸模塊、所述引導模塊和所述安全模塊來參與所述分布式路由表網格。
2. 如權利要求1所述的計算機可讀介質,其特征在于,所述節點模塊包括用于實例化用于管理與所述節點實例相關聯的路由表中的條目的路由表管理模塊的計算機可執行指令。
3. 如權利要求1所述的計算機可讀介質,其特征在于,所述路由表管理模塊過濾與所述節點實例相關聯的路由表中的條目以保留根據網絡拓撲結構比不被保留的那些條目更接近所述節點實例的那些條目。
4. 如權利要求1所述的計算機可讀介質,其特征在于,與所述分布式路由表網格相關聯的一個或多個安全機制包括基于至少一個根證書的基于證書的安全機制。
5. 如權利要求1所述的計算機可讀介質,其特征在于,所述安全模塊包括用于通過參考與所述分布式路由表網格中的另一節點實例相關聯的證書以確保該證書鏈接到所述至少一個根證書來驗證從該另一節點實例接收到的消息 的計算機可執行指令。
6. 如權利要求1所述的計算機可讀介質,其特征在于,所述引導模塊使用 所述引導模塊專用的對等名稱解析協議來與其他節點實例進行通信。
7. 如權利要求1所述的計算機可讀介質,其特征在于,包括用于創建第二 節點實例的其他計算機可執行指令,所述計算機可執行指令執行以下步驟,包 括實例化第二節點模塊,所述第二節點模塊用于利用第二傳輸模塊、第二 引導模塊和第二安全模塊來參與所述分布式路由表網格。
8. 如權利要求1所述的計算機可讀介質,其特征在于,所述節點模塊包括用于執行以下步驟的計算機可執行指令請求所述引導模塊枚舉所述分布式 路由表網格中的其他節點,請求所述安全模塊驗證由所述引導模塊提供的所枚 舉的其他節點,以及請求路由表管理模塊將得到驗證的、所枚舉的其他節點添 加到與所述節點實例相關聯的路由表。
9. 如權利要求1所述的計算機可讀介質,其特征在于,所述節點模塊包括 用于執行以下步驟的計算機可執行指令向所述安全模塊請求與所述節點實 例相關聯的鍵,標識與另一鍵相關聯的另一節點,所述另一鍵在數值上最接近 所述鍵,以及向該另一節點發送包括所述鍵的洪泛消息。
10. —種或多種包括用于維護與節點實例相關聯的路由表的計算機可 執行指令的計算機可讀介質,所述節點實例表示分布式路由表網格的端點,所 述計算機可執行指令涉及以下步驟,包括根據網絡拓撲結構來確定與第一鍵相關聯的第一節點和所述節點實例之 間的第一距離;根據所述網絡拓撲結構來確定與第二鍵相關聯的第二節點和所述節點實 例之間的第二距離;如果所述第一距離小于所述第二距離,則維護與所述節點實例相關聯的路 由表以包括與所述第一節點相關聯的條目,該條目包括所述第一鍵和從所述節 點實例到所述第一節點的第一路由;以及如果所述第二距離小于所述第一 距離,則維護與所述節點實例相關聯的路 由表以包括與所述第二節點相關聯的條目,該條目包括所述第二鍵和從所述節 點實例到所述第二節點的第二路由。
11. —種用于創建節點實例的方法,所述節點實例表示分布式路由表網 格的端點,所述方法包括以下步驟根據用于所述分布式路由表網格的網絡傳輸來選擇傳輸模塊; 實例化所述傳輸模塊;根據用于發起與所述分布式路由表網格的其他節點的通信的預定義機制 來選擇引導模塊;實例化所述引導模塊;根據與所述分布式路由表網格相關聯的一個或多個安全機制來選擇安全 模塊;實例化所述安全模塊;以及實例化節點模塊,所述節點模塊用于利用所述傳輸模塊、所述引導模塊和 所述安全模塊來參與所述分布式路由表網格。
12. 如權利要求11所述的方法,其特征在于,所述節點模塊執行包括 實例化用于管理與所述節點實例相關聯的路由表中的條目的路由表管理模塊 的步驟。
13. 如權利要求12所述的方法,其特征在于,所述路由表管理模塊過 濾與所述節點實例相關聯的路由表中的條目以保留根據網絡拓撲結構比不被 保留的那些條目更接近所述節點實例的那些條目。
14. 如權利要求11所述的方法,其特征在于,與所述分布式路由表網格相關聯的一個或多個安全機制包括基于至少一個根證書的基于證書的安全 機制。
15. 如權利要求14所述的方法,其特征在于,所述安全模塊執行包括 通過參考與所述分布式路由表網格中的另一節點實例相關聯的證書以確保該 證書鏈接到所述至少一個根證書來驗證從該另一節點實例接收到的消息的步 驟。
16. 如權利要求11所述的方法,其特征在于,所述引導模塊使用所述 引導模塊專用的對等名稱解析協議來與其他節點實例進行通信。
17. 如權利要求ll所述的方法,其特征在于,還包括以下步驟創建第二節點實例,所述計算機可執行指令執行以下步驟,包括實例化第二節 點模塊,所述第二節點模塊用于利用第二傳輸模塊、第二引導模塊和第二安全 模塊來參與所述分布式路由表網格。
18. 如權利要求11所述的方法,其特征在于,所述節點模塊執行以下 步驟,包括請求所述引導模塊枚舉所述分布式路由表網格中的其他節點, 請求所述安全模塊驗證由所述引導模塊提供的所枚舉的其他節點,以及請求路 由表管理模塊將得到驗證的、所枚舉的其他節點添加到與所述節點實例相關聯 的路由表。
19. 如權利要求11所述的方法,其特征在于,所述節點模塊執行以下 步驟,包括向所述安全模塊請求與所述節點實例相關聯的鍵,標識與另一 鍵相關聯的另一節點,所述另一鍵在數值上最接近所述鍵,以及向該另一節點 發送包括所述鍵的洪泛消息。
全文摘要
分布式路由表(DRT)網格可包括兩個或更多節點,這些節點中的每一個都維護表示該DRT網格的總路由知識中的部分或全部的其自己的路由表。每一個節點都可包括模塊化組件,該組件能夠執行各種定義的功能以使得應用程序能夠基于哪些模塊化組件已被實例化來定制該節點的特征和能力。路由表管理模塊可維護每一個節點處的各個路由表,并且可確保在路由表中只維護在網絡拓撲結構的意義上靠近該節點的條目。另外,安全模塊可基于達成協議的根證書來驗證所接收到的消息。
文檔編號H04B7/26GK101657980SQ200880011670
公開日2010年2月24日 申請日期2008年3月18日 優先權日2007年4月13日
發明者B·R·里艾倫, J·L·德威利, K·C·蘭森, P·德, S·A·森克斯蒂, S·K·辛格豪爾, T·R·曼尼恩 申請人:微軟公司