宋靜靜
摘 要:大多數(shù)結構化P2P網(wǎng)絡都利用分布式哈希表(DHT)來實現(xiàn)無管理、容錯的覆蓋網(wǎng)絡,并保證在O(log N)跳內將消息發(fā)送到目的地。網(wǎng)絡中節(jié)點的頻繁加入和離開不僅會產生巨大的維護開銷,而且節(jié)點的各種行為和資源也會損害網(wǎng)絡的性能和安全性。本文通過結合不同的網(wǎng)絡拓撲感知技術,構建了一個與Internet拓撲結構緊密匹配的覆蓋網(wǎng)絡?;谶@種結構的P2P系統(tǒng)不僅路由效率高,而且即使在高度動態(tài)的環(huán)境下,維護開銷也很低。
一、引言
我們先討論如何構建一個與互聯(lián)網(wǎng)拓撲結構非常接近的覆蓋層,然后在此覆蓋層的基礎上構建一個查找效率高、維護開銷低、可用性高的P2P系統(tǒng)。
覆蓋結構背后的本質是根據(jù)節(jié)點在Internet中的物理網(wǎng)絡位置來組織節(jié)點。所有節(jié)點都可以按其自治系統(tǒng)(As)軌跡劃分為組。由于Internet是由AS組成的,每個AS都是一個單一管理權限下的網(wǎng)絡,因此它為P2P節(jié)點提供了一個良好的邊界。與Internet中的AS一樣,組是覆蓋中路由和組織節(jié)點的基本單元。但是,在許多情況下,僅按節(jié)點作為駐留來劃分節(jié)點可能過于粗糙。
二、P2P覆蓋網(wǎng)絡
為了支持類似DHT的ID查找操作,在覆蓋中采用了類似的ID機制。與當前的DHT設計一樣,網(wǎng)絡中的每個對象都被分配了一個128位的ID。使用兩級映射機制,而不是像當前網(wǎng)絡那樣將一小部分對象映射到每個節(jié)點。如前所述,我們的覆蓋層是由類似的組構成的。通常一個組包含10到50個節(jié)點。每個組都會選擇一個具有良好網(wǎng)絡帶寬和可用性的領導者。同時,每個組都會分配一個32位的Steam ID。這些ID在第一次出現(xiàn)在覆蓋圖中時隨機分配給每個組。
組是存儲對象的基本單元。兩個對象副本將保存在一個組中,以提高可靠性和可用性。一個副本保存在組的領導者中,以響應所有其他對等方的查詢。許多不穩(wěn)定的節(jié)點加入到系統(tǒng)路由中,只有選擇了帶寬和可用性都比較好的節(jié)點才能成為覆蓋層路由的代理。通常,3個代理可以提供足夠的可用性和性能,而不會影響其主機。
由于覆蓋層與Internet拓撲結構非常匹配,因此與當前的DHT設計相比,路由機制實際上很簡單。由于網(wǎng)絡中使用了兩級映射機制,路由表由兩部分組成。其中一個記錄網(wǎng)絡中每個組的ID和代理信息,稱為路由表。此表在每個代理和引導程序中維護,用于為正常節(jié)點路由消息。另一個記錄組中所有組的ID和領導信息,稱為交付表。給定一個對象ID,責任組及其代理可以通過路由表定位。消息將直接發(fā)送到目標組的代理,而不是逐跳接近目標組。當消息到達該代理時,它只是由傳遞表轉發(fā)給響應組領導。最后,領導解析并回復查詢。
三、節(jié)點維護
節(jié)點的加入和退出過程比較簡單。當一個新節(jié)點加入網(wǎng)絡時,它的軌跡可以由它的IP地址決定。通過網(wǎng)絡內的任何節(jié)點,加入請求將轉發(fā)到該AS的代理。在測量其地標向量之后,節(jié)點根據(jù)網(wǎng)絡的局部性加入一個組。如果一個組節(jié)點太多,則根據(jù)節(jié)點的網(wǎng)絡位置分成兩個組。如果加入節(jié)點是AS中的第一個節(jié)點,則加入請求將轉發(fā)到附近的物理組。節(jié)點最初成為組內的一個隊友,稱為母組,而不是組成一個新組。
對于正常節(jié)點,組自動容忍其離開或失敗。如果一個領導或代理節(jié)點離開,將選擇一個新的機制。在P2P環(huán)境下,不僅每個節(jié)點的離開和失敗都是不可預測的,而且每個節(jié)點都可以任意的加入和離開網(wǎng)絡,整個網(wǎng)絡也是高度動態(tài)的,這對所有P2P覆蓋網(wǎng)絡來說都是一個挑戰(zhàn)。
盡管代理和領導被認為比普通節(jié)點的更可用,但他們不是維護良好的服務器。這里使用一個環(huán)協(xié)議來監(jiān)視它們。例如,所有的領導節(jié)點都形成一個環(huán)作為它們的ID關系,并且每秒鐘每個節(jié)點都會向它的后續(xù)和前繼節(jié)點發(fā)送消息。盡管這個協(xié)議很簡單,但足以檢測出一個或多個領導者的失敗。同樣的方法也適用于不同的代理。通常,組的領導節(jié)點可以通過他們的查詢消息來監(jiān)控組成員的變化。然而,為了準確地區(qū)分每個節(jié)點的行為,以供領導者和代理的候選,每個節(jié)點被設計為每隔30秒向其領導節(jié)點發(fā)送一個查詢消息。
由于領導節(jié)點從組代理緩存在路由表,因此需要一些方法來保持它們的一致性。可以利用當前路由器廣泛支持的管理范圍的IP多播來有效地傳遞最新的代理信息。對于不支持多播協(xié)議的AS,使用以代理為根的分發(fā)樹將信息多播到所有的領導者。當組更大時,它會分成兩個或多個組。
如前所述,每個代理維護一個記錄所有代理信息的路由表。保持這些路由表的最新狀態(tài)對于查找的正確性至關重要。而且這種維護的開銷應該很低,否則,系統(tǒng)性能和可伸縮性都會受到影響。因此,我們的覆蓋被設計成這些維護工作集成到公共操作、查找中。當領導節(jié)點發(fā)送或應答消息時,有關已更改代理的最新信息將附加到消息中,到達目標組的一個代理,然后傳播到所有領導節(jié)點。同樣,這些信息將被發(fā)送到更多的組,并最終到達每個組。
四、網(wǎng)絡安全
識別每個節(jié)點是P2P覆蓋網(wǎng)絡安全的一個重要問題。然而,在P2P環(huán)境下,這是一個真正的挑戰(zhàn),以往的研究已經(jīng)指出,惡意攻擊和惡意節(jié)點之間的串通幾乎是不可避免的,甚至節(jié)點ID的分配都委托給一個可信的中心機構。當前的P2P覆蓋網(wǎng)絡通常通過其IP地址來識別節(jié)點。然而,由于不同的網(wǎng)絡配置和連接技術,超過40%的節(jié)點沒有真正的IP地址或不時地更改其IP地址。盡管已經(jīng)有人提出了一些安全地分配節(jié)點ID的解決方案,如支付證書費用和將節(jié)點ID綁定到真實身份,但是在P2P環(huán)境下,這些方案都不實用。
我們不只是使用可變的IP地址作為每個節(jié)點的標識符,而是提出通過每個節(jié)點準確的網(wǎng)絡物理特性來識別每個節(jié)點,稱為網(wǎng)絡打印,這是一組可以用來精確定位節(jié)點位置和網(wǎng)絡設備的信息。有兩個原因使它實用有效。如前所述,節(jié)點按其As軌跡組織,As在單一網(wǎng)絡管理下,因此一個As內的機器處于相同的網(wǎng)絡配置和策略下,例如DHCP、NAT和防火墻策略。另一個原因是可以直接使用許多功能強大的協(xié)議,例如ICMP,由于安全考慮,網(wǎng)絡管理員通常禁止外部訪問,而且由于通信量在附近的物理節(jié)點之間,因此開銷很小。
在一個節(jié)點加入一個組之前,它將測量AS中多個路由器,以形成其地標向量。網(wǎng)絡打印矢量不是直接使用該節(jié)點所聲稱的矢量,而是由這些路由器的子網(wǎng)絡中隨機選擇的節(jié)點所測量形成的。通過比較這兩個向量,可以很容易地檢測出作弊行為。此外,該方法還可以通過偽造網(wǎng)絡打印向量來偽裝惡意節(jié)點的合謀。此外,由于所有這些節(jié)點都在相同的范圍內,因此可以通過具有IP記錄路由的Internet控制消息協(xié)議(ICMP)進一步找到節(jié)點的默認路由器的IP。此外,MAC地址可以用作網(wǎng)絡打印的一部分,并且可以由同一子網(wǎng)絡下的其他對等方進一步識別。因此,即使在允許節(jié)點的IP地址動態(tài)變化的環(huán)境下,包括節(jié)點的默認路由器IP、MAC和地標向量的網(wǎng)絡打印也是每個節(jié)點的準確和可信任的標識符。
實際上,網(wǎng)絡打印本身就是一個自認證數(shù)據(jù),它可以被其他節(jié)點直接驗證。例如,一個節(jié)點M想要假裝為另一個節(jié)點A,甚至知道A的網(wǎng)絡打印,但是,其他節(jié)點可以通過比較所聲稱的網(wǎng)絡打印和直接測量的網(wǎng)絡打印來容易地驗證M。因此,惡意節(jié)點之間的串通幾乎是不可能的。雖然惡意節(jié)點可以在同一子網(wǎng)下偽裝成不同的節(jié)點進行攻擊,但是網(wǎng)絡打印技術可以有效地將其限制在較小的網(wǎng)絡范圍內。通過同時用一個獨特的計算難題挑戰(zhàn)這些節(jié)點,可以識別出惡意節(jié)點。
五、總結
針對開放網(wǎng)絡環(huán)境下P2P網(wǎng)絡所面臨的困難,從不同的角度探討了一種構建P2P覆蓋網(wǎng)絡的新方法。與當前的設計不同,我們的設計側重于自己的系統(tǒng)覆蓋層,我們的方法側重于物理網(wǎng)絡,并在物理網(wǎng)絡之后構建覆蓋網(wǎng)絡。自然地利用物理網(wǎng)絡的特性來構建一個高效、安全的P2P覆蓋網(wǎng)絡?;诠?jié)點的物理網(wǎng)絡特性,網(wǎng)絡打印為開放互聯(lián)網(wǎng)環(huán)境下的節(jié)點提供了一種實用的自認證標識。結合簡單的覆蓋路由機制,路由過程是安全的。
參考文獻:
[1] 李聰, 張文紅. 基于DHT的P2P覆蓋網(wǎng)絡的研究[J]. 計算機工程, 2018, 34(7): 101-103.
[2] M. Castro, P. Druschel, A. Ganesh, A. Rowstron, and D. S. Wallach. Secure routing for structured peer-to-peer overlay networks. In Proceedings of 5th Symposium on Operating Systems Design and Implementation (OSDI02), Boston,MA, Dec 2012.