專利名稱::一種實現(xiàn)實物設(shè)備無縫接入網(wǎng)絡(luò)模擬器的系統(tǒng)及方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及網(wǎng)絡(luò)模擬仿真領(lǐng)域,特別是涉及網(wǎng)絡(luò)仿真平臺的一種實現(xiàn)實物設(shè)備無縫接入網(wǎng)絡(luò)模擬器的系統(tǒng)及方法。
背景技術(shù):
:網(wǎng)絡(luò)模擬是目前研究大規(guī)模網(wǎng)絡(luò)的重要方法,由于它具有真實性較高、模擬規(guī)模大、開發(fā)和運行成本較低、可用以研究當(dāng)前和未來網(wǎng)絡(luò)行為等優(yōu)點而備受廣大網(wǎng)絡(luò)研究人員的青睞。但是網(wǎng)絡(luò)模擬也存在缺點:1)一些在運行網(wǎng)絡(luò)模擬模型之前必須要設(shè)定的影響性能的參數(shù)很難確定,有時候很難給出合理的值甚至正確的建模。例如CPU處理一條指令所花的時間,其通常受到CPUcache的影響,和是否多核的影響。2)網(wǎng)絡(luò)模擬沒有真實網(wǎng)絡(luò)流量的參與,真實性不夠高,很難使用現(xiàn)有的網(wǎng)絡(luò)測量工具或部署實際的網(wǎng)絡(luò)測量系統(tǒng)。例如很難在一個模擬節(jié)點上運行Wireshark程序,也很難做到將一個入侵檢測系統(tǒng)無修改的部署到模擬網(wǎng)絡(luò)中。3)當(dāng)有關(guān)現(xiàn)實操作和部署的問題成為主要關(guān)注的對象的時候,研究人員更喜歡網(wǎng)絡(luò)仿真和物理的測試床,而將網(wǎng)絡(luò)模擬視為不可行的方法。一個重要的原因是需要額外的工作來開發(fā)網(wǎng)絡(luò)模擬模型來模擬現(xiàn)實應(yīng)用程序的行為,這將延長開發(fā)測試的時間,由于協(xié)議開發(fā)過程的復(fù)雜性,這將花費很大的精力而且容易出錯。網(wǎng)絡(luò)仿真在模擬網(wǎng)絡(luò)中引入真實網(wǎng)絡(luò)流量,它結(jié)合了網(wǎng)絡(luò)模擬與硬件測試床的優(yōu)勢,提高了實驗環(huán)境的真實性。在網(wǎng)絡(luò)仿真環(huán)境中我們可以利用現(xiàn)有的工具分析網(wǎng)絡(luò)流量和信息傳輸。實物設(shè)備接入之后的仿真平臺可以在真實主機上運行沒有修改的應(yīng)用程序,可以用真實路由器搭建網(wǎng)絡(luò)從而能夠獲得真實的性能測試。特別是在接入真實路由器后,可以在路由器部署未經(jīng)修改的檢測程序檢測路由器的鏡像流量,這對研究系統(tǒng)的有效性具有重要意義。模擬網(wǎng)絡(luò)中引入真實網(wǎng)絡(luò)流量后,真實流量在網(wǎng)絡(luò)環(huán)境中的作用不盡相同,可以分為兩類,分別定義為“真實網(wǎng)絡(luò)接入”和“實物設(shè)備接入”。“真實網(wǎng)絡(luò)接入”是將模擬網(wǎng)絡(luò)與真實網(wǎng)絡(luò)相連,使真實環(huán)境中的應(yīng)用程序可以與模擬網(wǎng)絡(luò)交互,而“實物設(shè)備接入”則更近一步,不但實現(xiàn)模擬網(wǎng)絡(luò)和真實網(wǎng)絡(luò)數(shù)據(jù)的交互,而且使模擬網(wǎng)絡(luò)中每個定義為可仿真的節(jié)點都可以用實物設(shè)備來代替,包括主機和路由器。目前主流模擬和仿真工具(NS-2、NS-3、OMNet++、EMULab、PRME)實現(xiàn)真實網(wǎng)絡(luò)流量引入的方法主要有以下三類:1.利用對混雜模式網(wǎng)卡的捕包和原始套接字這種方式主要是通過使用捕包工具(Iibpcap)從設(shè)為混雜模式的網(wǎng)卡上讀取真實網(wǎng)絡(luò)的流量,通過原始套接字將模擬環(huán)境中的數(shù)據(jù)發(fā)送到真實網(wǎng)絡(luò)中。NS-2對仿真的支持,NS-3通過EmuNetDevice類接入硬件測試床和Michael等人在OMNet++基礎(chǔ)上實現(xiàn)的網(wǎng)絡(luò)接口模塊都是使用這種方式。Netbed集成了NS的仿真功能所以也使用這種方式。然而從目前發(fā)表的研究成果來看,利用這種方式只做到了真實網(wǎng)絡(luò)接入,沒有實現(xiàn)實物設(shè)備接入。2.利用TAP設(shè)備和Bridge工具這種方式是利用IPC實現(xiàn)模擬器與宿主主機TAP設(shè)備的通信,再通過將實際網(wǎng)絡(luò)橋接到宿主主機TAP設(shè)備實現(xiàn)真實網(wǎng)絡(luò)與模擬器的連接。NS-3通過TapBridge實現(xiàn)的真實節(jié)點接入模擬器即使用此方法。雖然NS-3利用這種方法實現(xiàn)了實物設(shè)備的接入,但使用它的這一功能需要復(fù)雜的配置。這種方式的缺點是需要在網(wǎng)絡(luò)模擬器和接入的設(shè)備上進行復(fù)雜的配置,無法做到無縫接入,另外這種方式無法接入真是路由器。3.利用OpenVPN這種方式以PRME基于OpenVPN的仿真框架為代表,通過VPN實現(xiàn)模擬器與真實設(shè)備進行通信,它實現(xiàn)了現(xiàn)實設(shè)備的接入。這種方式需要在客戶機上運行OpenVPN的客戶端,在客戶機上建立一個虛擬網(wǎng)卡,也就是說需要對客戶機做一些修改,并運行額外的程序,這種方式的另一個缺點是,路由器上面很難運行應(yīng)用程序,所以很難實現(xiàn)真實路由器的接入。
發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題是提供一種實現(xiàn)實物設(shè)備無縫接入網(wǎng)絡(luò)模擬器的系統(tǒng)及方法,用于解決現(xiàn)有技術(shù)中實物設(shè)備接入存在的無法無縫接入和/或無法接入真實路由器等問題。本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種實現(xiàn)實物設(shè)備無縫接入網(wǎng)絡(luò)模擬器的系統(tǒng),包括實物設(shè)備、實物設(shè)備接入系統(tǒng)和網(wǎng)絡(luò)模擬器;所述實物設(shè)備,其連接到與實物設(shè)備接入系統(tǒng)連通的交換機上,用于向所述實物設(shè)備接入系統(tǒng)發(fā)送真實網(wǎng)絡(luò)數(shù)據(jù)包;其還通過所述實物設(shè)備接入系統(tǒng)與所述網(wǎng)絡(luò)模擬器模擬出的虛擬網(wǎng)絡(luò)通信,用于代替虛擬網(wǎng)絡(luò)中的對應(yīng)節(jié)點運行;所述實物設(shè)備接入系統(tǒng),其用于接收和處理接入的實物設(shè)備發(fā)送的真實網(wǎng)絡(luò)數(shù)據(jù)包,并通過TCP連接收發(fā)所述網(wǎng)絡(luò)模擬器導(dǎo)出和導(dǎo)入的虛擬網(wǎng)絡(luò)數(shù)據(jù)包,并用于實現(xiàn)虛擬網(wǎng)絡(luò)數(shù)據(jù)包與真實網(wǎng)絡(luò)數(shù)據(jù)包的轉(zhuǎn)換與轉(zhuǎn)發(fā);所述網(wǎng)絡(luò)模擬器,其運行在并行的若干服務(wù)器上,且通過TCP連接與所述實物設(shè)備接入系統(tǒng)通信,用于模擬出大規(guī)模的虛擬網(wǎng)絡(luò)。這里,服務(wù)器是并行運行的。在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進。進一步,所述實物設(shè)備接入系統(tǒng)包括ARP(AddressResolutionProtocol,地址解析協(xié)議)應(yīng)答模塊、接入測試模塊、捕包器模塊和轉(zhuǎn)發(fā)器模塊,且所述ARP應(yīng)答模塊、所述接入測試模塊、所述捕包器模塊和所述轉(zhuǎn)發(fā)器模塊均通過交換機與所述實物設(shè)備通信。所述ARP應(yīng)答模塊,其向所述實物設(shè)備發(fā)送ARP應(yīng)答包,用于保證所有從實物設(shè)備發(fā)出的真實網(wǎng)絡(luò)數(shù)據(jù)包首先到達系統(tǒng)監(jiān)聽的網(wǎng)卡,避免實物設(shè)備之間相互直接通信;所述接入測試模塊,其向所述實物設(shè)備發(fā)送ARP請求包,用于實時檢測實物設(shè)備的接入信息,并將接入信息發(fā)送給所述轉(zhuǎn)發(fā)器模塊和所述捕包器模塊;所述捕包器模塊,其用于捕獲所有接入的實物設(shè)備發(fā)出的真實網(wǎng)絡(luò)數(shù)據(jù)包,并根據(jù)真實網(wǎng)絡(luò)數(shù)據(jù)包的類型向所述ARP應(yīng)答模塊、所述接入測試模塊或所述轉(zhuǎn)發(fā)器模塊轉(zhuǎn)發(fā)真實網(wǎng)絡(luò)數(shù)據(jù)包;所述轉(zhuǎn)發(fā)器模塊,其用于接收所述模擬網(wǎng)絡(luò)器導(dǎo)入和導(dǎo)出的虛擬網(wǎng)絡(luò)數(shù)據(jù)包,并實現(xiàn)虛擬網(wǎng)絡(luò)數(shù)據(jù)包與真實網(wǎng)絡(luò)數(shù)據(jù)包的的轉(zhuǎn)換和轉(zhuǎn)發(fā)。進一步,所述實物設(shè)備包括主機和/或路由器。根據(jù)上述系統(tǒng),本發(fā)明的技術(shù)方案還提出了一種實現(xiàn)實物設(shè)備無縫接入網(wǎng)絡(luò)模擬器的方法,包括:步驟1,將實物設(shè)備接入到與實物設(shè)備接入系統(tǒng)連通的交換機上,并設(shè)置其在模擬環(huán)境中的網(wǎng)絡(luò)相關(guān)配置;在并行服務(wù)器上運行網(wǎng)絡(luò)模擬器,模擬出大規(guī)模的虛擬網(wǎng)絡(luò);步驟2,實物設(shè)備接入系統(tǒng)接收和處理實物設(shè)備發(fā)出的真實網(wǎng)絡(luò)數(shù)據(jù)包,并通過TCP連接收發(fā)所述網(wǎng)絡(luò)模擬器導(dǎo)出和導(dǎo)入的虛擬網(wǎng)絡(luò)數(shù)據(jù)包;步驟3,實物設(shè)備接入系統(tǒng)進行虛擬網(wǎng)絡(luò)數(shù)據(jù)包與真實網(wǎng)絡(luò)數(shù)據(jù)包之間的轉(zhuǎn)換與轉(zhuǎn)發(fā);步驟4,根據(jù)步驟I至步驟3,實物設(shè)備通過所述實物設(shè)備接入系統(tǒng)與所述網(wǎng)絡(luò)模擬器模擬出的虛擬網(wǎng)絡(luò)通信,代替虛擬網(wǎng)絡(luò)中的對應(yīng)節(jié)點運行。在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明所述的方法還可以做如下改進。進一步,所述步驟2中實物設(shè)備接入系統(tǒng)接收和處理實物設(shè)備發(fā)送的真實網(wǎng)絡(luò)數(shù)據(jù)包具體包括:步驟21,在實物設(shè)備接入系統(tǒng)中設(shè)置ARP應(yīng)答模塊、接入測試模塊、捕包器模塊和轉(zhuǎn)發(fā)器模塊;步驟22,捕包器模塊接收實物設(shè)備發(fā)送的真實網(wǎng)絡(luò)數(shù)據(jù)包,并將除ARP請求包和ARP應(yīng)答包之外的真實網(wǎng)絡(luò)數(shù)據(jù)包轉(zhuǎn)發(fā)給所述轉(zhuǎn)發(fā)器模塊;步驟23,轉(zhuǎn)發(fā)器模塊將接收的真實網(wǎng)絡(luò)數(shù)據(jù)包轉(zhuǎn)發(fā)給所述網(wǎng)絡(luò)模擬器模擬出的虛擬網(wǎng)絡(luò)中該實物設(shè)備對應(yīng)的模擬節(jié)點上,再由該模擬節(jié)點發(fā)到目的模擬節(jié)點;步驟24,重復(fù)步驟22和步驟23,處理所有實物設(shè)備發(fā)送的真實網(wǎng)絡(luò)數(shù)據(jù)包。進一步,所述步驟22中還包括:所述捕包器模塊向所述ARP應(yīng)答模塊發(fā)送ARP請求包,向所述接入測試模塊發(fā)送ARP應(yīng)答包,且所述ARP應(yīng)答模塊保存該實物設(shè)備的IP地址和MAC地址,所述接入檢測模塊記錄該實物設(shè)備的接入狀態(tài),并檢測其斷開時間。進一步,所述步驟23還包括:若目的模擬節(jié)點為已接入的實物設(shè)備,則真實網(wǎng)絡(luò)數(shù)據(jù)包會在模擬環(huán)境中的物理層和鏈路層轉(zhuǎn)發(fā)到實物設(shè)備對應(yīng)的模擬節(jié)點,該模擬節(jié)點再在網(wǎng)絡(luò)層將真實網(wǎng)絡(luò)數(shù)據(jù)包從所述網(wǎng)絡(luò)模擬器中轉(zhuǎn)出至所述轉(zhuǎn)發(fā)器模塊,轉(zhuǎn)發(fā)器模塊再通過原始套接字將該真實網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送到實物設(shè)備。進一步,所述轉(zhuǎn)發(fā)器轉(zhuǎn)發(fā)真實網(wǎng)絡(luò)數(shù)據(jù)包之前,需根據(jù)所述網(wǎng)絡(luò)模擬器的種類做相應(yīng)的轉(zhuǎn)化,用于保證該真實網(wǎng)絡(luò)數(shù)據(jù)包能被相應(yīng)的網(wǎng)絡(luò)模擬器識別。進一步,所述實物設(shè)備包括主機和/或路由器。本發(fā)明的有益效果是:本發(fā)明公開了一種實物設(shè)備接入網(wǎng)絡(luò)模擬器的方法及系統(tǒng),該系統(tǒng)不僅可以向模擬網(wǎng)絡(luò)中引入真實流量,實現(xiàn)模擬網(wǎng)絡(luò)與真實網(wǎng)絡(luò)的連通,而且可以做到模擬網(wǎng)絡(luò)中每個定義為可仿真的節(jié)點都可以用實物設(shè)備來代替,節(jié)點類型包括主機和路由器,接入的設(shè)備不需要進行額外的配置。另外,與已公開的方法相比,該方法具有如下優(yōu)點:1)能夠做到無縫接入,不需要在主機上進行與接入網(wǎng)絡(luò)無關(guān)的設(shè)置,更不需要在主機上安裝其他軟件;2)能夠?qū)崿F(xiàn)真實路由器的接入。圖1為本發(fā)明所述一種實物設(shè)備接入網(wǎng)絡(luò)模擬器的結(jié)構(gòu)示意圖;圖2為本發(fā)明所述一種實物設(shè)備接入網(wǎng)絡(luò)模擬器的方法的流程示意圖;圖3為本發(fā)明實施例中步驟2的流程流程示意圖;圖4為本發(fā)明實施例中系統(tǒng)啟動運行流程圖;圖5為本發(fā)明實施例中ARP應(yīng)答模塊的處理流程圖;圖6為本發(fā)明實施例中接入檢測模塊的處理流程圖;圖7為本發(fā)明實施例中捕包器模塊對各類數(shù)據(jù)包的處理流程;圖8為本發(fā)明實施例中轉(zhuǎn)發(fā)器模塊的處理流程圖。具體實施例方式以下結(jié)合附圖對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。如圖1所示,本實施例構(gòu)建了一種實現(xiàn)實物設(shè)備無縫接入網(wǎng)絡(luò)模擬器的系統(tǒng),包括實物設(shè)備(如主機和路由器)、實物設(shè)備接入系統(tǒng)和網(wǎng)絡(luò)模擬器,且所述實物設(shè)備接入到與實物設(shè)備接入系統(tǒng)連通的交換機上,所述網(wǎng)絡(luò)模擬器,其運行在若干并行服務(wù)器上,且通過TCP連接與所述實物設(shè)備接入系統(tǒng)通信,用于模擬出大規(guī)模的虛擬網(wǎng)絡(luò)。另外,在所述模擬網(wǎng)絡(luò)器與所述實物設(shè)備接入系統(tǒng)之間設(shè)置有防火墻。如圖1所示,本實施例的實物設(shè)備接入系統(tǒng)包括ARP應(yīng)答模塊、接入測試模塊、捕包器模塊和轉(zhuǎn)發(fā)器模塊;所述ARP應(yīng)答模塊,其用于保證所有從實物設(shè)備發(fā)出的真實網(wǎng)絡(luò)數(shù)據(jù)包首先到達系統(tǒng)監(jiān)聽的網(wǎng)卡,避免實物設(shè)備之間相互直接通信,并向所述實物設(shè)備發(fā)送ARP應(yīng)答包;所述接入測試模塊,其向所述實物設(shè)備發(fā)送ARP請求包,用于實時檢測實物設(shè)備的接入信息,并將接入信息發(fā)送給所述轉(zhuǎn)發(fā)器模塊和所述捕包器模塊;所述捕包器模塊,其用于捕獲所有接入的實物設(shè)備發(fā)出的真實網(wǎng)絡(luò)數(shù)據(jù)包,并根據(jù)真實網(wǎng)絡(luò)數(shù)據(jù)包的類型向所述ARP應(yīng)答模塊、所述接入測試模塊或所述轉(zhuǎn)發(fā)器模塊轉(zhuǎn)發(fā)真實網(wǎng)絡(luò)數(shù)據(jù)包;所述轉(zhuǎn)發(fā)器模塊,其用于接收所述模擬網(wǎng)絡(luò)器導(dǎo)入和導(dǎo)出的虛擬網(wǎng)絡(luò)數(shù)據(jù)包,并實現(xiàn)虛擬網(wǎng)絡(luò)數(shù)據(jù)包與真實網(wǎng)絡(luò)數(shù)據(jù)包的的轉(zhuǎn)換和轉(zhuǎn)發(fā)。如圖2所示,根據(jù)上述系統(tǒng),本實施例相應(yīng)地提出了一種實物設(shè)備接入網(wǎng)絡(luò)模擬器的方法,包括:步驟1,將實物設(shè)備接入到與實物設(shè)備接入系統(tǒng)連通的交換機上,并設(shè)置其在模擬環(huán)境中的網(wǎng)絡(luò)相關(guān)配置;在并行服務(wù)器上運行網(wǎng)絡(luò)模擬器,模擬出大規(guī)模的虛擬網(wǎng)絡(luò);步驟2,實物設(shè)備接入系統(tǒng)接收和處理實物設(shè)備發(fā)出的真實網(wǎng)絡(luò)數(shù)據(jù)包,并通過TCP連接收發(fā)所述網(wǎng)絡(luò)模擬器導(dǎo)出和導(dǎo)入的虛擬網(wǎng)絡(luò)數(shù)據(jù)包;步驟3,實物設(shè)備接入系統(tǒng)進行虛擬網(wǎng)絡(luò)數(shù)據(jù)包與真實網(wǎng)絡(luò)數(shù)據(jù)包之間的轉(zhuǎn)換與轉(zhuǎn)發(fā);步驟4,根據(jù)步驟I至步驟3,實物設(shè)備通過所述實物設(shè)備接入系統(tǒng)與所述網(wǎng)絡(luò)模擬器模擬出的虛擬網(wǎng)絡(luò)通信,代替虛擬網(wǎng)絡(luò)中的對應(yīng)節(jié)點運行。如圖3所示,所述步驟2中實物設(shè)備接入系統(tǒng)接收和處理實物設(shè)備發(fā)送的真實網(wǎng)絡(luò)數(shù)據(jù)包具體包括:步驟21,在實物設(shè)備接入系統(tǒng)中設(shè)置ARP應(yīng)答模塊、接入測試模塊、捕包器模塊和轉(zhuǎn)發(fā)器模塊。步驟22,捕包器模塊接收實物設(shè)備發(fā)送的真實網(wǎng)絡(luò)數(shù)據(jù)包,并將除ARP請求包和ARP應(yīng)答包之外的真實網(wǎng)絡(luò)數(shù)據(jù)包轉(zhuǎn)發(fā)給所述轉(zhuǎn)發(fā)器模塊。這里,所述捕包器模塊向所述ARP應(yīng)答模塊發(fā)送ARP請求包,向所述接入測試模塊發(fā)送ARP應(yīng)答包,且所述ARP應(yīng)答模塊保存該實物設(shè)備的IP地址和MAC地址,所述接入檢測模塊記錄該實物設(shè)備的接入狀態(tài),并檢測其斷開時間。步驟23,轉(zhuǎn)發(fā)器模塊將接收的真實網(wǎng)絡(luò)數(shù)據(jù)包轉(zhuǎn)發(fā)給所述網(wǎng)絡(luò)模擬器模擬出的虛擬網(wǎng)絡(luò)中該實物設(shè)備對應(yīng)的模擬節(jié)點上,再由該模擬節(jié)點發(fā)到目的模擬節(jié)點。這里,若目的模擬節(jié)點為已接入的實物設(shè)備,則該真實網(wǎng)絡(luò)數(shù)據(jù)包會在模擬環(huán)境中的物理層和鏈路層轉(zhuǎn)發(fā)到實物設(shè)備對應(yīng)的模擬節(jié)點,該模擬節(jié)點再在網(wǎng)絡(luò)層將真實網(wǎng)絡(luò)數(shù)據(jù)包從所述網(wǎng)絡(luò)模擬器中轉(zhuǎn)出至所述轉(zhuǎn)發(fā)器模塊,轉(zhuǎn)發(fā)器模塊再通過原始套接字將真實網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送到實物設(shè)備。步驟24,重復(fù)步驟22和步驟23,處理所有實物設(shè)備發(fā)送的真實網(wǎng)絡(luò)數(shù)據(jù)包。需注意的是,所述轉(zhuǎn)發(fā)器轉(zhuǎn)發(fā)真實網(wǎng)絡(luò)數(shù)據(jù)包之前,要根據(jù)所述網(wǎng)絡(luò)模擬器的種類做相應(yīng)的轉(zhuǎn)化,用于保證該真實網(wǎng)絡(luò)數(shù)據(jù)包能被相應(yīng)的網(wǎng)絡(luò)模擬器識別。此外,對于由ARP應(yīng)答模塊、接入測試模塊、捕包器模塊和轉(zhuǎn)發(fā)器模塊四部分組成的實物設(shè)備接入系統(tǒng),本實施例給出了系統(tǒng)及各模塊的實施流程。圖4是系統(tǒng)啟動運行時的流程圖,系統(tǒng)總體的實施步驟如下:I)為ARP應(yīng)答模塊、接入檢測模塊和轉(zhuǎn)發(fā)器模塊分配緩沖區(qū),它們分別是arpBuffer、accessDetectBuffer和forwardingBuffer;2)為每個緩沖區(qū)分配互斥鎖和“空”、“滿”信號量:arpBuffer、accessDetectBuffer和forwardingBuffer的互斥鎖分別為arpMutex、accessDetectMutex和forwardingMutex,“空”信號量分別為arpEmpty、accessDetectEmpty和forwardingEmpty,“滿”信號量分別是arpFull、accessDetectFull和forwardingFull。互斥鎖都初始化為1,“空”信號量初始化為緩沖區(qū)的大小,“滿”信號量初始化為O;3)從配置文件中讀取要接入設(shè)備的IP和MAC地址對,初始化捕包器模塊;4)開啟ARP欺騙線程、接入檢測線程、捕包器線程和轉(zhuǎn)發(fā)線程。圖5是ARP應(yīng)答模塊的處理流程圖,ARP應(yīng)答模塊的具體實施步驟如下:I)根據(jù)接入設(shè)備的配置文件和模擬網(wǎng)絡(luò)拓撲配置文件初始化ARP應(yīng)答模塊;2)對存在于配置文件中的設(shè)備發(fā)送一輪ARP欺騙包;3)等待緩沖區(qū)arpBuffer的“滿”信號量,即P(arpFull);4)獲得arpBuffer的互斥鎖arpMutex,即P(arpMutex);5)從緩沖區(qū)arpBuffer中讀取一個arp請求包;6)釋放arpBuffer的互斥鎖arpMutex,即V(arpMutex);7)釋放緩沖區(qū)arpBuffer的“空”信號量,即V(arpEmpty);8)判斷arp請求包所請求的IP地址是否是模擬網(wǎng)絡(luò)拓撲中的定義的IP,如果是則發(fā)送偽造的應(yīng)答包,應(yīng)答包中填入的MAC地址為系統(tǒng)運行網(wǎng)卡的MAC地址,否則丟棄;9)判斷是否結(jié)束該線程,如果不是則轉(zhuǎn)到3)繼續(xù)處理,如果是則結(jié)束ARP應(yīng)答模塊對應(yīng)的線程。圖6是接入檢測模塊的處理流程圖,接入檢測模塊的具體實施步驟如下:I)根據(jù)接入設(shè)備的配置文件初始化接入檢測模塊,將所有可接入設(shè)備的標志用一個環(huán)形鏈表來存儲,環(huán)形鏈表中的是否接入的標志位置為false;2)建立定時器,每過時間t,從環(huán)形鏈表中選擇接入標志為true的一個實物設(shè)備,并向它發(fā)送ARP請求包;3)等待緩沖區(qū)accessDetectBuffer的“滿”信號量,即P(accessDetectFull);4)獲得accessDetectBuffer的互斥鎖arpMutex,即P(accessDetectMutex);5)從緩沖區(qū)accessDetectBuffer中讀取一個arp應(yīng)答包;6)釋放accessDetectBuffer的互斥鎖arpMutex,即V(accessDetectMutex);7)釋放緩沖區(qū)accessDetectBuffer的“空”信號量,即V(accessDetectEmpty);8)判斷arp應(yīng)答包的發(fā)出設(shè)備所對應(yīng)的接入標志是否為true,如果是則更新其時間戳,否則將所對應(yīng)的接入標志是否為true;9)判斷是否結(jié)束該線程,如果不是則轉(zhuǎn)到3)繼續(xù)處理,如果是,則結(jié)束接入檢測模塊對應(yīng)的線程。圖7給出了捕包器模塊對各類數(shù)據(jù)包的處理流程,捕包器模塊的具體實施步驟如下:捕包器模塊是真實數(shù)據(jù)包進入模擬環(huán)境的入口,系統(tǒng)利用Iibpcap網(wǎng)絡(luò)數(shù)據(jù)捕獲庫在設(shè)置為混雜模式的網(wǎng)卡上進行捕包。在捕包開始之前,系統(tǒng)首先讀取接入的真實設(shè)備配置文件,建立Hash表,用于構(gòu)建捕包器的過濾器,以及在捕包過程中根據(jù)包的鏈路層信息判斷是否是由接入的實物設(shè)備所發(fā)出。通過構(gòu)建捕包器的過濾器,使捕包器只捕捉IP包和ARP包,它們的源MAC地址屬于接入的真實設(shè)備的MAC地址、目的MAC地址為捕包器所監(jiān)聽的網(wǎng)卡地址。在捕包的過程中,對于數(shù)據(jù)包而言,捕包器模塊對它進行了處理,而系統(tǒng)所在主機的協(xié)議棧也會對部分包進行處理,比如轉(zhuǎn)發(fā)到系統(tǒng)所在主機的網(wǎng)關(guān)地址或給出目的地址不存在的應(yīng)答。這顯然不是系統(tǒng)想要的行為。為了避免這種情況,本系統(tǒng)使用iptables進行包過濾。設(shè)置過濾規(guī)則,對于系統(tǒng)需要的包協(xié)議棧不再處理。捕包器對于捕到的包進行了解析,共有以下幾種情況:1)ARP應(yīng)答包這是接入檢測模塊發(fā)出的、測試連通性的ARP請求包,收到這樣的數(shù)據(jù)包之后直接轉(zhuǎn)發(fā)給接入測試模塊。2)ARP請求包ARP請求包是接入的真實設(shè)備發(fā)出的,用于請求目的IP地址的MAC地址。這類包捕包器轉(zhuǎn)發(fā)給ARP應(yīng)答模塊,后者偽造ARP應(yīng)答并發(fā)送出去。3)其他數(shù)據(jù)包這類包是從接入的真實設(shè)備發(fā)出的,需要傳進網(wǎng)絡(luò)模擬器的數(shù)據(jù)包。捕包器將這類數(shù)據(jù)包傳給轉(zhuǎn)發(fā)器模塊,后者將數(shù)據(jù)包傳入網(wǎng)絡(luò)模擬器。這里補充一點,捕包器再向ARP應(yīng)答模塊、接入檢測模塊和轉(zhuǎn)發(fā)器緩沖區(qū)中寫入數(shù)據(jù)包之前都先等待各個緩沖區(qū)的“空”信號量,再在獲得各個緩沖區(qū)的互斥鎖之后寫入數(shù)據(jù)。寫入數(shù)據(jù)完畢后釋放各自緩沖區(qū)的互斥鎖和“滿”信號量。圖8是轉(zhuǎn)發(fā)器模塊的處理流程圖,轉(zhuǎn)發(fā)器模塊的具體實施步驟如下:I)與網(wǎng)絡(luò)模擬器建立通信通道,一般來說,轉(zhuǎn)發(fā)器與模擬器有兩種通信方式:一是通過管道通信,此時本系統(tǒng)與網(wǎng)絡(luò)模擬器位于同一服務(wù)器;一是通過網(wǎng)絡(luò)建立TCP連接通信,這情況適用于分布式環(huán)境運行網(wǎng)絡(luò)模擬器;2)建立子線程處理與模擬器的通信,該子線程收到從模擬轉(zhuǎn)發(fā)出,發(fā)往接入實物設(shè)備的數(shù)據(jù)包后,立即通過原始套接字發(fā)給相應(yīng)的接入設(shè)備;3)等待緩沖區(qū)forwardingBuffer的“滿”信號量,即P(forwardingFull);4)獲得forwardingBuffer的互斥鎖forwardingMutex,即P(forwardingMutex);5)從緩沖區(qū)forwardingBuffer中讀取一個由接入的實物設(shè)備發(fā)出,發(fā)往網(wǎng)絡(luò)模擬器的數(shù)據(jù)包packet;6)釋放forwardingBuffer的互斥鎖arpMutex,即V(forwardingMutex);7)釋放緩沖區(qū)forwardingBuffer的“空”信號量,即V(forwardingEmpty);8)將讀取的數(shù)據(jù)包packet通過與網(wǎng)絡(luò)模擬器建立通信通道發(fā)出;9)判斷是否結(jié)束該線程,如果不是則轉(zhuǎn)到3)繼續(xù)處理,如果是,則結(jié)束轉(zhuǎn)發(fā)器模塊對應(yīng)的線程。以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。權(quán)利要求1.一種實現(xiàn)實物設(shè)備無縫接入網(wǎng)絡(luò)模擬器的系統(tǒng),其特征在于,包括實物設(shè)備、實物設(shè)備接入系統(tǒng)和網(wǎng)絡(luò)模擬器;所述實物設(shè)備,其連接到與實物設(shè)備接入系統(tǒng)連通的交換機上,用于向所述實物設(shè)備接入系統(tǒng)發(fā)送真實網(wǎng)絡(luò)數(shù)據(jù)包;其還通過所述實物設(shè)備接入系統(tǒng)與所述網(wǎng)絡(luò)模擬器模擬出的虛擬網(wǎng)絡(luò)通信,用于代替虛擬網(wǎng)絡(luò)中的對應(yīng)節(jié)點運行;所述實物設(shè)備接入系統(tǒng),其用于接收和處理接入的實物設(shè)備發(fā)送的真實網(wǎng)絡(luò)數(shù)據(jù)包,并通過TCP連接收發(fā)所述網(wǎng)絡(luò)模擬器導(dǎo)出和導(dǎo)入的虛擬網(wǎng)絡(luò)數(shù)據(jù)包,用于實現(xiàn)虛擬網(wǎng)絡(luò)數(shù)據(jù)包與真實網(wǎng)絡(luò)數(shù)據(jù)包的轉(zhuǎn)換與轉(zhuǎn)發(fā);所述網(wǎng)絡(luò)模擬器,其運行在并行的若干服務(wù)器上,且通過TCP連接與所述實物設(shè)備接入系統(tǒng)通信,用于模擬出大規(guī)模的虛擬網(wǎng)絡(luò)。2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述實物設(shè)備接入系統(tǒng)包括ARP應(yīng)答模塊、接入測試模塊、捕包器模塊和轉(zhuǎn)發(fā)器模塊,且所述ARP應(yīng)答模塊、所述接入測試模塊、所述捕包器模塊和所述轉(zhuǎn)發(fā)器模塊均通過交換機與所述實物設(shè)備通信;所述ARP應(yīng)答模塊,其向所述實物設(shè)備發(fā)送偽造的ARP應(yīng)答包,用于保證所有從實物設(shè)備發(fā)出的真實網(wǎng)絡(luò)數(shù)據(jù)包首先到達系統(tǒng)監(jiān)聽的網(wǎng)卡,避免實物設(shè)備之間相互直接通信;所述接入測試模塊,其向所述實物設(shè)備發(fā)送ARP請求包,用于實時檢測實物設(shè)備的接入信息,并將接入信息發(fā)送給所述轉(zhuǎn)發(fā)器模塊和所述捕包器模塊;所述捕包器模塊,其用于捕獲所有接入的實物設(shè)備發(fā)出的真實網(wǎng)絡(luò)數(shù)據(jù)包,并根據(jù)真實網(wǎng)絡(luò)數(shù)據(jù)包的類型向所述ARP應(yīng)答模塊、所述接入測試模塊或所述轉(zhuǎn)發(fā)器模塊轉(zhuǎn)發(fā)真實網(wǎng)絡(luò)數(shù)據(jù)包;所述轉(zhuǎn)發(fā)器模塊,其用于接收所述模擬網(wǎng)絡(luò)器導(dǎo)入和導(dǎo)出的虛擬網(wǎng)絡(luò)數(shù)據(jù)包,并實現(xiàn)虛擬網(wǎng)絡(luò)數(shù)據(jù)包與真實網(wǎng)絡(luò)數(shù)據(jù)包的的轉(zhuǎn)換和轉(zhuǎn)發(fā)。3.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述實物設(shè)備包括主機和/或路由器。4.一種實現(xiàn)實物設(shè)備無縫接入網(wǎng)絡(luò)模擬器的方法,其特征在于,包括:步驟I,將實物設(shè)備接入到與實物設(shè)備接入系統(tǒng)連通的交換機上,并設(shè)置其在模擬環(huán)境中的網(wǎng)絡(luò)相關(guān)配置;在并行服務(wù)器上運行網(wǎng)絡(luò)模擬器,模擬出大規(guī)模的虛擬網(wǎng)絡(luò);步驟2,實物設(shè)備接入系統(tǒng)接收和處理實物設(shè)備發(fā)出的真實網(wǎng)絡(luò)數(shù)據(jù)包,并通過TCP連接收發(fā)所述網(wǎng)絡(luò)模擬器導(dǎo)出和導(dǎo)入的虛擬網(wǎng)絡(luò)數(shù)據(jù)包;步驟3,實物設(shè)備接入系統(tǒng)進行虛擬網(wǎng)絡(luò)數(shù)據(jù)包與真實網(wǎng)絡(luò)數(shù)據(jù)包之間的轉(zhuǎn)換與轉(zhuǎn)發(fā);步驟4,根據(jù)步驟I至步驟3,實物設(shè)備通過所述實物設(shè)備接入系統(tǒng)與所述網(wǎng)絡(luò)模擬器模擬出的虛擬網(wǎng)絡(luò)通信,代替虛擬網(wǎng)絡(luò)中的對應(yīng)節(jié)點運行。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟2中實物設(shè)備接入系統(tǒng)接收和處理實物設(shè)備發(fā)送的真實網(wǎng)絡(luò)數(shù)據(jù)包具體包括:步驟21,在實物設(shè)備接入系統(tǒng)中設(shè)置ARP應(yīng)答模塊、接入測試模塊、捕包器模塊和轉(zhuǎn)發(fā)器模塊;步驟22,捕包器模塊接收實物設(shè)備發(fā)送的真實網(wǎng)絡(luò)數(shù)據(jù)包,并將除ARP請求包和ARP應(yīng)答包之外的真實網(wǎng)絡(luò)數(shù)據(jù)包轉(zhuǎn)發(fā)給所述轉(zhuǎn)發(fā)器模塊;步驟23,轉(zhuǎn)發(fā)器模塊將接收的真實網(wǎng)絡(luò)數(shù)據(jù)包轉(zhuǎn)發(fā)給所述網(wǎng)絡(luò)模擬器模擬出的虛擬網(wǎng)絡(luò)中該實物設(shè)備對應(yīng)的模擬節(jié)點上,再由該模擬節(jié)點發(fā)到目的模擬節(jié)點;步驟24,重復(fù)步驟22和步驟23,處理所有實物設(shè)備發(fā)送的真實網(wǎng)絡(luò)數(shù)據(jù)包。6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述步驟22中還包括:所述捕包器模塊向所述ARP應(yīng)答模塊發(fā)送ARP請求包,向所述接入測試模塊發(fā)送ARP應(yīng)答包,且所述ARP應(yīng)答模塊保存該實物設(shè)備的IP地址和MAC地址,所述接入檢測模塊記錄該實物設(shè)備的接入狀態(tài),并檢測其斷開時間。7.根據(jù)權(quán)利要求5所述的方法,其特征在于,對于步驟23,其還包括:若目的模擬節(jié)點為已接入的實物設(shè)備,則該真實網(wǎng)絡(luò)數(shù)據(jù)包會在模擬環(huán)境中的物理層和鏈路層轉(zhuǎn)發(fā)到實物設(shè)備對應(yīng)的模擬節(jié)點,該模擬節(jié)點再在網(wǎng)絡(luò)層將真實網(wǎng)絡(luò)數(shù)據(jù)包從所述網(wǎng)絡(luò)模擬器中轉(zhuǎn)出至所述轉(zhuǎn)發(fā)器模塊,轉(zhuǎn)發(fā)器模塊再通過原始套接字將該真實網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送到實物設(shè)備。8.根據(jù)權(quán)利要求6或7所述的方法,其特征在于,所述轉(zhuǎn)發(fā)器轉(zhuǎn)發(fā)真實網(wǎng)絡(luò)數(shù)據(jù)包之前,需根據(jù)所述網(wǎng)絡(luò)模擬器的種類做相應(yīng)的轉(zhuǎn)化,用于保證該真實網(wǎng)絡(luò)數(shù)據(jù)包能被相應(yīng)的網(wǎng)絡(luò)模擬器識別。9.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述實物設(shè)備包括主機和/或路由器。全文摘要本發(fā)明涉及一種實現(xiàn)實物設(shè)備無縫接入網(wǎng)絡(luò)模擬器的系統(tǒng)及方法,所述系統(tǒng)包括實物設(shè)備(如主機和路由器)、實物設(shè)備接入系統(tǒng)和網(wǎng)絡(luò)模擬器,其中實物設(shè)備接入系統(tǒng)包括ARP應(yīng)答模塊、接入測試模塊、捕包器模塊和轉(zhuǎn)發(fā)器模塊;ARP應(yīng)答模塊用于保證所有從實物設(shè)備發(fā)出的數(shù)據(jù)包首先到達系統(tǒng)監(jiān)聽的網(wǎng)卡;接入測試模塊用于實時檢測實物設(shè)備的接入信息;捕包器模塊用于用于捕獲所有接入的實物設(shè)備發(fā)出的真實網(wǎng)絡(luò)數(shù)據(jù)包,并根據(jù)真實網(wǎng)絡(luò)數(shù)據(jù)包的類型向其他模塊轉(zhuǎn)發(fā);轉(zhuǎn)發(fā)器模塊用于實現(xiàn)虛擬網(wǎng)絡(luò)數(shù)據(jù)包與真實網(wǎng)絡(luò)數(shù)據(jù)包的的轉(zhuǎn)換和轉(zhuǎn)發(fā)。本發(fā)明涉及的實物設(shè)備接入網(wǎng)絡(luò)模擬器的方法與上述系統(tǒng)相對應(yīng)。本發(fā)明實現(xiàn)實物設(shè)備的無縫接入及真實路由器的接入。文檔編號H04L12/26GK103078769SQ20131000984公開日2013年5月1日申請日期2013年1月10日優(yōu)先權(quán)日2013年1月10日發(fā)明者費海強,郝志宇,云曉春,張永錚,李倫,丁振全,孟丹申請人:中國科學(xué)院信息工程研究所