宋靜靜
摘 要:大多數結構化P2P覆蓋網絡是利用分布式哈希表(DHT)來實現無管理、容錯的覆蓋網絡,并保證在O(logn)跳內將消息傳遞到目標。雖然從理論上講很完善,但這些系統在開放環境下面臨著一些困難。節點頻繁的加入和離開不僅會產生巨大的維護開銷,而且節點的各種行為和資源也會影響網絡的性能和安全性。本文構建了一個與互聯網拓撲結構緊密匹配的獨特的覆蓋網絡?;谶@種結構的P2P系統不僅路由效率高,而且即使在高動態環境下,維護開銷也很低。
我們將首先討論如何構造一個近似于互聯網拓撲的覆蓋層,然后基于該覆蓋層構建一個高效查找、低維護開銷和高可用性的P2P系統。
覆蓋網絡的本質是根據節點在Internet中的物理網絡位置來組織節點,所有節點都可以通過其自治系統(AS)軌跡劃分為組。由于互聯網由ASE組成,每個AS都是一個單一管理權限下的網絡,因此它為P2P節點提供了良好的邊界。與Internet中的一樣,組是網絡中路由和組織節點的基本單元。
一、P2P覆蓋網絡
為了支持類似DHT的ID查找操作,覆蓋網采用了類似的ID機制。與當前的DHT設計一樣,覆蓋網的每個對象都被分配了一個128位的ID。覆蓋網的每個節點不需要映射一個小范圍的對象,而是使用兩級映射機制,第一個級別是在這些組中,第二個級別是在簇中。一個簇中的節點數量是可變的,以便于群集物理附近的節點,并增加系統下的穩定性。
通常一個簇包括10到50個節點。每個簇都將選擇一個擁有良好網絡帶寬和可用性的領導者。此外,每個簇還分配了一個32位的ID。這些ID將隨機分配給每個組及其簇,因為它們首先出現在覆蓋網中。對象ID的前64位分為兩部分。前32位用于映射組ID,后32位用于簇ID。每個組使用自身和下一組之間的ID對對象進行充電,簇也是如此。
簇是存儲對象的基本單元。為了提高可靠性和可用性,每個簇將保留兩份對象副本。一份副本保存在領導者中,以響應所有其他同行的查詢。另一個將通過擦除代碼技術分塊存儲在簇成員中。由于大多數對等端都是通過對稱網絡連接的,因此從許多相鄰對等端讀取數據的速度明顯快于從一個對等端讀取數據的速度。這一特點有助于舊領導失敗后,迅速重建新領導。
二、路由機制
除了讓許多不穩定的節點參與系統路由之外,只有選定的具有適當帶寬和可用性的節點將成為覆蓋路由的代理。通常,3個代理可以在不影響其主機的情況下提供足夠的可用性和性能。
由于我們的覆蓋網與Internet拓撲結構緊密匹配,因此與當前的DHT設計相比,路由機制實際上很簡單。由于覆蓋網使用了兩級映射機制,因此路由表由兩部分組成。一個記錄覆蓋網中每個組的ID和代理信息,稱為路由表。此表在每個代理和領隊中維護,以路由普通節點的消息。另一個記錄了簇中所有簇的ID和領導信息,稱為交付表。給定一個對象ID,可以通過路由表找到負責組及其代理。消息將直接發送到目標組的代理,而不是一個接一個地到達目標組。當消息到達該代理時,只需通過傳遞表將其轉發給響應簇負責人。最后,領隊解析并回復查詢。
三、節點加入與離開
節點的加入和離開過程很簡單。當一個新節點加入覆蓋時,它的軌跡可以由它的IP地址決定。通過覆蓋網的任何節點,加入請求將被轉發給代理。在測量其地標向量后,節點將根據網絡位置加入一個簇。如果一個簇人口太多,它將根據節點的網絡位置劃分為兩個簇。如果加入節點是網絡中的第一個節點,則加入請求將轉發到附近的物理組。而不是形成一個新的組,節點最初將成為組內的一個隊友。當其中的節點足以容納三個簇時,將選擇代理并生成一個單獨的新組。
對于正常節點,簇會自動容忍其離開或失敗。如果領導或代理離開,將選擇一個新的領導或代理,并且信息將快速傳播。
四、維護機制
在P2P環境下,由于每個節點都可以任意加入和退出覆蓋層,所以不僅每個節點的離開和失敗都是不可預測的,而且整個覆蓋層都是高度動態的。對于所有的P2P覆蓋網絡來說,這確實是一個挑戰。
雖然代理和領導被認為比普通的更可用,但他們并不是維護良好的服務器。這里使用一個環協議來監視它們。例如,所有領導者都將形成一個環作為他們的ID關系,并且每秒鐘每個節點都會向其繼任者和前任發送一條保持活動的消息。雖然這個協議很簡單,但它足以檢測到一個或多個領導者的失敗。同樣,一個簇的領導者也可以通過他們的查詢消息來監控隊友的變化。但是,為了準確區分每個節點對于領導者和代理候選人的行為,每個節點設計30秒向領導者發送一個查詢或保持活動的消息。
由于領隊緩存來自組代理的路由表,因此需要一些方法來保持它們的一致性。對于有幾十個簇的小簇,領導者可以直接與附近的代理交換信息。但是,如果一個組非常大,其中有數百個簇,那么這樣簡單的時間表將不會具有可伸縮性。因此,可以利用當前路由器廣泛支持的管理范圍的IP多播有效地傳遞最新的代理信息。對于不支持多播協議的網絡,將使用以代理為根的分發樹將信息多播給所有領導者。當組更大時,它將被劃分為兩個或多個組。
如前所述,每個代理都維護一個路由表,記錄所有代理的信息。使這些路由表保持最新對于查找的正確性至關重要。此外,這種維護的開銷應該很低,否則,系統性能和可擴展性都會受到影響。因此,我們的覆蓋網設計成將維護工作集成到公共操作、查找中。
五、總結
針對開放互聯網環境下P2P覆蓋結構面臨的困難,從不同角度提出了一種構建P2P覆蓋網絡的新方法。與當前專注于自身系統覆蓋的設計不同,我們的方法側重于物理網絡,并按照物理網絡構建覆蓋網絡。自然地利用物理網絡特性,構建高效、安全的P2P覆蓋網絡?;诠濣c的物理網絡特性,網絡打印為開放Internet環境下的節點提供了一個實用的自認證標識符。結合簡單的覆蓋路由機制,路由過程是安全的。此外,覆蓋網絡還可以通過彈出惡意節點來自我修復。