史建燾, 李秀坤
(哈爾濱工業(yè)大學 計算機科學與技術學院, 哈爾濱 150001)
·專題研討——虛擬仿真實驗(44)·
大型P2P網(wǎng)絡的虛擬仿真實驗床構建
史建燾, 李秀坤
(哈爾濱工業(yè)大學 計算機科學與技術學院, 哈爾濱 150001)
針對大規(guī)模P2P網(wǎng)絡的虛擬仿真實驗床,采用了虛實結合的系統(tǒng)架構、基于事件驅動的高并發(fā)IO框架、基于插件架構的業(yè)務邏輯處理以及應用了相關數(shù)學模型。以虛擬仿真實驗床為支撐設計的P2P污染實驗案例表明,實驗床既可支持8 000個節(jié)點以上的大規(guī)模虛擬仿真實驗,也可將系統(tǒng)接入Internet,在不影響實際網(wǎng)絡環(huán)境運行狀況的同時進行真實網(wǎng)絡實驗。通過這種以虛補實、以實補虛的方式,能夠加深學生對P2P等大規(guī)模網(wǎng)絡系統(tǒng)運行原理的理解,進而培養(yǎng)學生的綜合創(chuàng)新能力。
對等網(wǎng)絡; 網(wǎng)絡仿真; 大規(guī)模網(wǎng)絡; 內容污染; 實驗教學
隨著信息技術的迅猛發(fā)展,P2P(Peer-to-Peer,對等網(wǎng)絡)技術已經(jīng)成為業(yè)界研究和關注的一個熱點,其特有的自組織、分布性的特點,使其迅速發(fā)展,已經(jīng)成為互聯(lián)網(wǎng)不可分割的一部分。許多基于P2P技術的應用都應運而生,包括文件共享[1-2],流媒體[3-4],即時通信[5]以及分布式計算[6]等。在研究領域,P2P的結構優(yōu)化與設計[7],激勵機制[8]和安全性研究[9]都備受關注,同時有關P2P網(wǎng)絡的內容也被加入到了大多數(shù)高校的教學計劃中。但是,由于P2P技術摒棄了服務器和客戶端之分,大大顛覆了我們對傳統(tǒng)網(wǎng)絡模式的認知,同時P2P類網(wǎng)絡應用往往會涉及大量節(jié)點,其相關實驗多為大規(guī)模網(wǎng)絡實驗,P2P攻擊類實驗還會對互聯(lián)網(wǎng)產(chǎn)生不可逆的災難性后果,故傳統(tǒng)的實驗環(huán)境已經(jīng)無法滿足研究和實驗教學的需求。因此,在資源和客觀條件有限的情況下,使用虛擬仿真手段成為一個很好的選擇。目前,已經(jīng)有一些針對P2P網(wǎng)絡的仿真器,使用較多的有NS2[10-11]、Peersim[12]、Oversim[13]以及P2Psim[14]。但是,這些仿真器或多或少都存在著模擬規(guī)模有限,系統(tǒng)擴展性不強,不能與真實節(jié)點交互的缺點。因此,本文給出了一個針對大型P2P網(wǎng)絡的虛擬仿真實驗床。本著以虛補實、以實補虛的宗旨,不但在網(wǎng)絡拓撲上具有靈活的擴展性,適合不同的網(wǎng)絡規(guī)模。同時虛實結合的系統(tǒng)設計、基于事件驅動的高并發(fā)IO框架、基于插件架構的業(yè)務邏輯處理以及相關P2P數(shù)學模型的應用,使得實驗過程和結果都更加可信。
1.1 實驗床的系統(tǒng)架構及網(wǎng)絡拓撲
實驗床的系統(tǒng)架構以及網(wǎng)絡拓撲如圖1所示。一套虛擬仿真實驗床系統(tǒng)由若干仿真服務器和一臺域間調度服務器構成,仿真服務器數(shù)量可以根據(jù)需求擴展,理論上可以同時部署多套虛擬仿真實驗床。仿真服務器負責實現(xiàn)具體的虛擬節(jié)點并模擬業(yè)務流程;域間服務器負責調度所有仿真節(jié)點的行為,并控制仿真服務器之間的流量。
圖1 實驗床系統(tǒng)架構及網(wǎng)絡拓撲圖
仿真實驗床內的虛擬節(jié)點可以和局域網(wǎng)內的真實P2P主機和索引服務器相連,并通過防火墻接入到Internet。仿真服務器通過實際物理網(wǎng)卡在域間互聯(lián)并對外通信,使得虛擬P2P節(jié)點可以像真實節(jié)點一樣與其他節(jié)點或索引服務器通信。由于實際P2P網(wǎng)絡能夠正常運轉的前提,是需要P2P節(jié)點將接入信息發(fā)布到一個索引服務器上,并通過索引服務器發(fā)現(xiàn)其他節(jié)點。而我們的虛擬節(jié)點都是發(fā)布在防火墻內部自己搭建的索引服務器上的,通過防火墻的過濾,保證了實驗床上的虛擬仿真實驗不會對Internet造成影響。此外,為了滿足大規(guī)模實驗的要求,提高單臺服務器主機的節(jié)點承載能力,實驗床采用了高性能IO模塊、插件和配置管理模塊,接下來會詳細介紹相關的技術路線。
1.2 基于事件驅動的高并發(fā)IO框架
為了提高單臺仿真服務器的模擬規(guī)模,承載實驗產(chǎn)生的網(wǎng)絡流量,得到更為真實的網(wǎng)絡數(shù)據(jù),需要搭建一個高性能的數(shù)據(jù)處理平臺。由于大規(guī)模P2P實驗會在虛擬節(jié)點間產(chǎn)生大量TCP連接,需要仿真實驗平臺能夠承受巨大的連接壓力,對系統(tǒng)的IO處理能力有著較高的要求,對此本文搭建了一個具有高并發(fā)性的IO框架。主要有以下特點:
(1) 使用了非阻塞I/O和事件驅動模型。由主線程負責處理所有 TCP 連接上的數(shù)據(jù)讀取和發(fā)送,因此TCP的連接數(shù)不受線程數(shù)的限制。
(2) IO的接入處理和業(yè)務邏輯處理相分離。主線程讀取到的數(shù)據(jù)放入隊列,由業(yè)務線程池處理實際的P2P邏輯業(yè)務。 IO框架的整體設計如圖2所示。
圖2 高并發(fā)IO框架整體設計結構圖
圖2只是一個后端仿真主機與前端IO交互的情景,實際上可以有很多個后端仿真系統(tǒng)同時與前段IO交互。這里設計將數(shù)據(jù)途經(jīng)IO處理層而轉流入會話層是為了將所有關于描述符的IO事件處理全部集中于一處,方便更改和維護。當前IO的線程數(shù)與主機的CPU數(shù)相關,當只有1個CPU時,只有1個主線程,輔助線程有一個任務刪除線程和一個統(tǒng)計線程;當主機為處理器時,每個處理器綁定一個業(yè)務處理線程。IO框架采取proactor設計模式。實現(xiàn)了以下功能:
(1) 連接接入管理。包括TCP連接的接收和關閉,連接數(shù)據(jù)的接收和發(fā)送,連接超時的相關處理。
(2) P2P協(xié)議數(shù)據(jù)流的加解密。當仿真節(jié)點與外部真實節(jié)點互相通信時,需要對真實節(jié)點加密的控制報文進行解密。
(3) 會話數(shù)據(jù)管理。由于整個IO接入模塊是事件驅動的,故系統(tǒng)需要保存每個連接會話的相關數(shù)據(jù),當有可讀或可寫事件到來后需根據(jù)會話ID向會話管理子模塊查詢相關會話數(shù)據(jù)。
(4) 連接狀態(tài)的監(jiān)測。對當前TCP連接數(shù)、歷史接收和發(fā)送的數(shù)據(jù)量以及即時傳輸速率等信息進行監(jiān)測,并對外提供查詢接口。
(5) 消息的接收與分發(fā)。IO接入層和仿真節(jié)點邏輯層采用了相同的消息格式進行通信。IO層將P2P協(xié)議報文和控制報文等封裝成消息放入共享內存中,然后以FIFO的方式來通知仿真業(yè)務模塊讀取消息并處理。這種采用消息的方式將連接處理和業(yè)務處理異步化,一定程度上提高了IO的吞吐性能。
1.3 基于插件架構的P2P邏輯業(yè)務處理
進行大規(guī)模P2P網(wǎng)絡仿真時,為了保證實驗的真實性,需要模擬不同的節(jié)點業(yè)務處理流程,在同一仿真服務器上造成線程間運行的異步性。因此在實驗床設計時,采用了基于插件架構的P2P邏輯業(yè)務處理技術。在仿真服務器運行時,會有一個或多個線程負責后端P2P邏輯業(yè)務的處理。IO接入層和P2P邏輯層之間通過消息隊列來進行通信。P2P邏輯層的主要操作封裝在MessageHandler類中,實現(xiàn)了以下功能:
(1) 協(xié)議的解析。主要是P2P報文的解析,根據(jù)協(xié)議格式將收到的報文解析成不同的消息,提供給上層應用處理。
(2) 協(xié)議的處理。由于仿真場景的不同,業(yè)務模塊的處理策略可能會變動頻繁,為增強平臺的靈活性即可擴展性,這里采用了插件機制來實現(xiàn)。
P2P邏輯業(yè)務處理框架的整體設計如圖3所示。邏輯業(yè)務層中的插件架構是最為重要的部分,它使得節(jié)點行為策略獨立于整個IO框架系統(tǒng)。每種節(jié)點行為策略都以動態(tài)鏈接庫模塊的形式存在,策略模塊的編寫只需要專注于P2P消息的處理,而不需要考慮IO連接的情況。同時系統(tǒng)只需要通過配置文件就可以實現(xiàn)節(jié)點行為策略的選擇。
圖3 P2P邏輯業(yè)務處理框架整體設計結構圖
在系統(tǒng)啟動時,插件管理模塊會根據(jù)配置文件為不同仿真節(jié)點加載指定的業(yè)務插件。當有P2P連接到來時,在應用層連接握手階段將根據(jù)對方的節(jié)點標識在配置文件中查找相應的插件模塊名稱,然后根據(jù)名稱向插件管理模塊查詢模塊句柄,當有應用層消息到達時即可調用該句柄的處理函數(shù)進行處理。插件的所有處理函數(shù)接口定義都封裝在統(tǒng)一的消息處理接口模塊中。
1.4 相關數(shù)學模型的應用
實際的P2P系統(tǒng)具有較高的抖動性,如何真實的模擬大量節(jié)點的頻繁加入和離開,直接影響到仿真實驗的可信度。因此,本文在實驗床設計中引入了節(jié)點到達和離開數(shù)學模型,模型根據(jù)實際網(wǎng)絡中的測量數(shù)據(jù)進行擬合作為依據(jù),更為貼近現(xiàn)實場景。
通過對大量P2P網(wǎng)絡進行研究發(fā)現(xiàn),影響節(jié)點請求波動規(guī)律的因素主要有三方面:用戶興趣H(t),日周期性P(t),以及隨機噪聲N(t)。不同種子或者同一種子的不同時刻,這些因子所起的作用不同,將節(jié)點到達模型表示為:
λ(t)=k1·H(t)+k2·P(t)+k3·N(t)
(1)
將節(jié)點離開模型表示為:
γ(t)=l1·H(t)+l2·P(t)+l3·N(t)
(2)
式中:λ(t)為t時刻新到達的節(jié)點數(shù)量,稱為節(jié)點到達率;γ(t)為t時刻離開節(jié)點的數(shù)量;k1、k2、k3和l1、l2、l3分別為H(t)、P(t)、N(t)的權重。實際仿真系統(tǒng)中設定H(t)服從類高斯分布,P(t)服從類正弦的周期性分布,隨機噪聲根據(jù)不同實驗場景進行選擇。在實驗開始前,會根據(jù)實驗場景和網(wǎng)絡規(guī)模配置不同的參數(shù),并由域間調度服務器進行配置。
2.1 仿真實驗場景
本節(jié)通過一個實驗案例闡述如何應用實驗床進行P2P仿真實驗。實驗場景選取BitTorrent(簡稱BT)網(wǎng)絡下的數(shù)據(jù)污染實驗,實驗的目的是為了使學生了解BT分塊分片機制的脆弱性。
先了解下相關實驗背景:BT是當前最為流行的P2P應用系統(tǒng)之一,其用戶規(guī)模已經(jīng)達到了百萬級,流量一度占據(jù)了P2P網(wǎng)絡總體流量的53%[15]。BT下的數(shù)據(jù)污染攻擊是在數(shù)據(jù)交換過程中針對其分塊分片機制的一種攻擊方式,目的是減緩節(jié)點的下載速度[16]。攻擊者偽造大量節(jié)點加入到要攻擊的共享網(wǎng)絡,向其他節(jié)點發(fā)送偽造的分塊數(shù)據(jù),造成受害節(jié)點數(shù)據(jù)校驗失敗,丟棄整個分片并重新下載,這樣就減緩了用戶下載速度,甚至造成節(jié)點無法下載到整個文件。
實驗采用虛實結合,以實驗虛的方式,分別模擬2 000個良性節(jié)點和8 000個攻擊節(jié)點,并在Internet上選擇實際共享規(guī)模分別為500和2 000的兩個種子文件,對應的數(shù)據(jù)文件大小均為200 MB。隨機選擇P2P仿真節(jié)點對應的業(yè)務插件,包括攻擊行為插件和不同類型和版本的客戶端行為插件。在局域網(wǎng)內搭建一個索引服務器,運行3個不同類型的客戶端節(jié)點,包括比特彗星、比特精靈和uTorrent。
學生需要進行3個實驗步驟:① 不運行仿真節(jié)點,讓真實客戶端載入2個種子文件并完成下載,記錄下載用時。該步驟反映了真實的下載情況。② 運行實驗床上模擬的攻擊節(jié)點,配置不同的攻擊節(jié)點數(shù),讓真實客戶端載入2個種子文件,并完成下載,記錄下載用時。該步驟反映了攻擊對單一節(jié)點的影響。③ 運行實驗床上的模擬節(jié)點,并斷開與Internet的連接。分別配置不同的攻擊節(jié)點數(shù)和初始良性節(jié)點數(shù),配置節(jié)點到達模型和節(jié)點離開模型參數(shù),分別反映大小不同的兩個共享網(wǎng)絡規(guī)模,記錄單位時間完成下載的良性節(jié)點數(shù)。該步驟反映了攻擊對整個共享網(wǎng)絡的影響。
2.2 實驗測試結果
以下是在實驗床上運行得到的實驗結果。表1記錄了3種客戶端在真實環(huán)境正常下載2個文件的用時,文件1基本在1 h左右下載完成,文件2基本在0.5 h左右下載完成。
表1 各種客戶端在Internet實際網(wǎng)絡中的正常下載用時
表2分別記錄了數(shù)據(jù)污染攻擊對3種不同客戶端的影響,客戶端從Internet上的真實節(jié)點下載正常數(shù)據(jù),從虛擬仿真節(jié)點下載污染數(shù)據(jù)。攻擊大大減緩了客戶端的下載速度,完整的文件下載耗時很長,因此實驗只記錄3 h內的完成情況。只有uTorrent在2 000個攻擊節(jié)點的情況下能完成文件2的下載,但用時也超過2 h。
表2 攻擊對單個節(jié)點下載速度的影響
表3是實驗步驟3的結果,實驗在完全虛擬化的環(huán)境下進行3 h,分別記錄了完成下載的各種客戶端的數(shù)量。其中良性節(jié)點數(shù)只表示在線良性節(jié)點,實驗過程中隨時都有節(jié)點加入和離開共享網(wǎng)絡。
表3 攻擊對整個共享網(wǎng)絡的影響
實驗結束后通過對完成下載的節(jié)點類型進行統(tǒng)計,發(fā)現(xiàn)絕大多數(shù)為uTorrent節(jié)點,有少量的比特彗星節(jié)點,沒有比特精靈節(jié)點。通過對比實驗步驟2與3的結果,發(fā)現(xiàn)完全虛擬化環(huán)境中的實驗結果與實際網(wǎng)絡中的結果基本一致。
本文介紹的P2P網(wǎng)絡虛擬仿真實驗床,一方面可以同時模擬大量虛擬P2P節(jié)點,另一方面也可以接入Internet連接真實節(jié)點。通過這種虛實結合的設計,既能進行虛擬仿真實驗,獲取真實環(huán)境下無法獲得的實驗結果;同時在不影響實際網(wǎng)絡運行狀況的前提下,也可以完成實際網(wǎng)絡中的實驗,通過真實環(huán)境下的實驗結果來驗證虛擬仿真實驗。
以第2節(jié)中的實驗為例,由于真實環(huán)境下很難評估數(shù)據(jù)污染攻擊對P2P網(wǎng)絡整體的攻擊效果,學生可通過實驗床進行完全虛擬化的仿真實驗。與此同時,通過部署真實客戶端和半開放的實驗環(huán)境來評價攻擊對單個節(jié)點的影響。將實驗結果進行對比,可得到相同的結論:① 污染攻擊對小規(guī)模共享網(wǎng)絡影響更大;② 攻擊節(jié)點越多攻擊效果越好;③ 污染攻擊對比特精靈客戶端效果最好,對uTorrent客戶端效果最差。
這樣通過運用該仿真實驗床可以使學生更加深入了解P2P網(wǎng)絡的各種特性,對比不同客戶端的優(yōu)缺點。甚至可以對P2P網(wǎng)絡及其客戶端的實現(xiàn)進行改進,并通過虛擬仿真實驗進行驗證。因此,借助實驗床可以更好傳授學生理解、分析和研究問題的方法,培養(yǎng)學生的綜合創(chuàng)新能力。
[1] 陳 鋒,羅逢吉,文俊浩.基于JXTA的P2P文件共享系統(tǒng)的實現(xiàn)研究[J].計算機科學,2007,34(12):126-128.
[2] 馬素剛.P2P技術在大文件共享中的應用研究[J].實驗技術與管理,2016,33(3):147-150.
[3] 張明軍,彭 婭,俞文靜.P2P流媒體服務方案及其關鍵技術研究[J].計算機工程,2013,39(1):125-130.
[4] 張志明,周 晉,陳 震,等.基于網(wǎng)絡編碼的對等網(wǎng)流媒體傳輸模型和算法[J].軟件學報,2012,23(3):648-661.
[5] 王振華,王 攀,張順頤.基于綜合統(tǒng)計特征的Skype流量分析與識別[J].南京郵電大學學報(自然科學版),2006,26(1):1-7.
[6] 茂高偉,韓 華,代亞非.一種P2P環(huán)境下分布式文件存儲系統(tǒng)的緩存策略[J].計算機工程與應用,2004,40(30):45-48.
[7] 李 偉,趙慶展,曹傳東. 基于GIS與P2P的區(qū)域教育資源共建模式[J].實驗室研究與探索,2013,32(5):201-204.
[8] 王 焱,周天宏.基于多粒度和激勵機制的移動P2P網(wǎng)絡動態(tài)信任模型[J].實驗室研究與探索,2013,32(11):246-250.
[9] 聶捷楠,張 洋. 基于安全路由算法的P2P網(wǎng)絡安全性能優(yōu)化研究[J].科技通報,2013(9):149-151.
[10] 周德榮,夏 齡,舒 濤,等. NS2網(wǎng)絡協(xié)議虛擬仿真實驗平臺研究[J].實驗技術與管理,2014,31(3):87-90.
[11] 吉祖勤,黃津津. 基于NS2的隊列管理算法DropTail和RED仿真與研究[J].實驗室研究與探索,2014,33(1):5-8.
[12] 郭 俊,楊 忠. PeerSim模擬技術研究[J].現(xiàn)代計算機(專業(yè)版),2010(4):130-131.
[13] 崔建群,賴敏財,蔣文斌,等. OverSim:可擴展的應用層組播網(wǎng)絡仿真框架[J].計算機工程與科學,2012,34(10):1-5.
[14] 任 超,李戰(zhàn)懷,張 英. 異構P2P網(wǎng)絡的分布式查詢協(xié)議[J].電子科技大學學報,2009,38(1):108-112.
[15] 蘇馬婧. P2P文件共享系統(tǒng)測量及其安全性研究[D].哈爾濱:哈爾濱工業(yè)大學,2013.
[16] 史建燾,張宏莉,方濱興. BitTorrent假塊污染攻擊的對抗方法研究[J].計算機學報,2011,34(1):15-24.
A Virtual Simulation Experiment Bed towards Large Scale P2P Networks
SHIJiantao,LIXiukun
(School of Computer Science and Technology, Harbin Institute of Technology, Harbin 150001, China)
The characteristics of self-organization,distributing and large scale,make P2P network different from the traditional network. It is often difficult to realize P2P related experiments in the traditional experiment environment. The virtual simulation experiment bed towards large scale P2P networks uses system architecture combined by virtuality and reality, high concurrent IO framework driven events, plug-in unit based business logic processing and application of relevant mathematical models. Experiment cases show that the experiment bed can do both large scale virtual simulation experiment and real network experiment in the Internet. The real network experiment will not affect the actual operation of the P2P network. The methods of "reality supplying virtuality" and "reality verifying virtuality" can deepen students' understanding of the P2P network and cultivate students' comprehensive innovation ability.
P2P network; network simulation; large-scale network; content pollution; experimental teaching
2016-08-15
國家自然科學基金(61402137)資助
史建燾(1980-),男,黑龍江哈爾濱人,博士,工程師,研究方向:計算機網(wǎng)絡,云計算,信息安全。
Tel:0451-86413844,13826462016; E-mail:shijiantao@hit.edu.cn
TP 393.0
A
1006-7167(2017)04-0079-04