張 麗, 瞿國慶
(江蘇商貿(mào)職業(yè)學(xué)院 電子與信息學(xué)院, 江蘇 南通 226011)
移動無線網(wǎng)絡(luò)是電子信息專業(yè)的重要教學(xué)內(nèi)容[1],無線網(wǎng)絡(luò)設(shè)備的類型繁雜且功能豐富,理論知識學(xué)習(xí)難以全面地理解無線網(wǎng)絡(luò)的運(yùn)行原理,因此,該課程的實(shí)驗(yàn)室建設(shè)是高等院校電子信息專業(yè)的重要需求[2]。無線移動網(wǎng)絡(luò)設(shè)備包括無線通信基礎(chǔ)設(shè)施、無線自組網(wǎng) (Ad hoc)移動設(shè)備、交換機(jī)、集線器、無線信道與無線終端等設(shè)備[3],這為實(shí)驗(yàn)室建設(shè)帶來了較大的經(jīng)濟(jì)負(fù)擔(dān)。通過虛擬化技術(shù)模擬網(wǎng)絡(luò)結(jié)構(gòu)是當(dāng)前的一個可靠方案,目前已有一些基于虛擬化技術(shù)的計(jì)算機(jī)網(wǎng)絡(luò)仿真器,例如:優(yōu)化網(wǎng)絡(luò)工程工具(Optimized Network Engineering Tool, Opnet)[4]、品質(zhì)網(wǎng)絡(luò)工程工具(Quality Network Engineering Tool, QualNet)[5]、網(wǎng)絡(luò)仿真器 (Network Simulator, NS-2)[6]、快速仿真器(Quick Emulator, QEMU)[7]等,但此類網(wǎng)絡(luò)仿真器僅支持靜態(tài)與固定的網(wǎng)絡(luò)場景,無法用于動態(tài)移動網(wǎng)絡(luò)的仿真與實(shí)驗(yàn)。
隨著移動互聯(lián)網(wǎng)、物聯(lián)網(wǎng)的飛速發(fā)展,無線網(wǎng)絡(luò)的移動性與動態(tài)性是當(dāng)前無線網(wǎng)絡(luò)的主要特點(diǎn),而opnet、QualNet、NS-2等網(wǎng)絡(luò)仿真平臺均需要預(yù)定靜態(tài)并且固定的網(wǎng)絡(luò)結(jié)構(gòu),不支持對移動網(wǎng)絡(luò)的仿真。本文采用虛擬化技術(shù)[8],采用系統(tǒng)的進(jìn)程仿真網(wǎng)絡(luò)設(shè)備,每個虛擬機(jī)可支持若干個進(jìn)程,從而一臺物理主機(jī)可仿真大量的網(wǎng)絡(luò)設(shè)備。用戶可控制網(wǎng)絡(luò)的結(jié)構(gòu)與網(wǎng)絡(luò)連接的參數(shù),這為實(shí)驗(yàn)室的課程提供了豐富的選擇。此外,虛擬網(wǎng)絡(luò)設(shè)備具有動態(tài)地接入、退出網(wǎng)絡(luò)的功能,由此實(shí)現(xiàn)了移動無線網(wǎng)絡(luò)的仿真要求。
本文設(shè)計(jì)的移動無線網(wǎng)絡(luò)仿真平臺(Mobile Wireless Network Simulation,MWNS),與其他的網(wǎng)絡(luò)仿真器(例如:NS-2, Opnet等)相比,MWNS主要有以下幾個特點(diǎn):① 動態(tài)性。網(wǎng)絡(luò)結(jié)構(gòu)為熱連接模式,即一個新節(jié)點(diǎn)能夠動態(tài)地加入或者退出目標(biāo)網(wǎng)絡(luò)。② 移動性。能夠創(chuàng)建一個自定義的網(wǎng)絡(luò)結(jié)構(gòu),并且網(wǎng)絡(luò)對于移動的節(jié)點(diǎn)具有自動連接的能力。③ 社區(qū)性。能夠連接若干個子網(wǎng),模擬互聯(lián)網(wǎng)的社區(qū)概念。
MWNS是一個分布式的虛擬網(wǎng)絡(luò)環(huán)境,用戶可使用MWNS建立靜態(tài)或動態(tài)的網(wǎng)絡(luò)。MWNS建立的虛擬網(wǎng)絡(luò)主要由虛擬節(jié)點(diǎn)與虛擬鏈接組成。圖1所示是一個MWNS虛擬網(wǎng)絡(luò)的實(shí)例。左右分別是兩個虛擬主機(jī),中間通過虛擬路由器 (Virtual Router, VROUTER)與虛擬交換機(jī) (Virtual Switch, VSWITCH)連接,虛擬主機(jī)之間的通道為傳輸控制協(xié)議(Transmission Control Protocol, TCP)通道。虛擬主機(jī)與VSWITCH之間的通道為用戶數(shù)據(jù)報協(xié)議 (User Data Protocol, UDP)通道,虛擬主機(jī)與VHUB之間的通道為TCP通道。
MWNS的虛擬節(jié)點(diǎn)是一個仿真器,虛擬節(jié)點(diǎn)共有兩種類型:
(1) 虛擬主機(jī) (Virtual Host, VHOST)。用戶
圖1 MWNS虛擬網(wǎng)絡(luò)的實(shí)例
可配置VHOST的操作系統(tǒng)與硬件屬性,仿真系統(tǒng)為每個虛擬節(jié)點(diǎn)分配一個虛擬存儲空間(本系統(tǒng)采用物理主機(jī)的一個文件夾)。
(2) VROUTER。由MWNS直接配置,為網(wǎng)絡(luò)提供合適的路由協(xié)議,MWNS提供的路由協(xié)議包括:動態(tài)主機(jī)配置協(xié)議(Dynamic Host Configuration Protocol, DHCP)[9]、域名系統(tǒng) (Domain Name System, DNS)[10]、網(wǎng)絡(luò)文件系統(tǒng) (Network File System, NFS)[11]、超文本傳輸協(xié)議 (HyperText Transfer Protocol, HTTP)、安全終端訪問 (Secure Shell,SSH)、 網(wǎng)絡(luò)時間協(xié)議(Network Time Protocol, NTP)[12]、路由信息協(xié)議 (routing information protocol,RIP)[13]。
虛擬鏈接負(fù)責(zé)為網(wǎng)絡(luò)的虛擬節(jié)點(diǎn)建立信道,仿真系統(tǒng)的虛擬鏈接共有3種類型:
(1) 虛擬鏈接 (Virtual Line, VLINE)。虛擬的點(diǎn)對點(diǎn)連接。
(2) 虛擬集線器 (Virtual Hub, VHUB)。模擬物理集線器設(shè)備。
(3) VSWITCH。模擬物理交換機(jī)設(shè)備。
1.3.1會話管理
MWNS的一個會話表示一個完整網(wǎng)絡(luò)結(jié)構(gòu)的配置(包含虛擬節(jié)點(diǎn)與虛擬鏈接),一個會話僅可在一個物理主機(jī)上,一個分布式虛擬網(wǎng)絡(luò)由多個MWNS會話組成,會話之間具有獨(dú)立性并且互不干擾。
1.3.2MWNS管理器
MWNS管理器通過命令行形式與用戶交互,用戶使用管理器控制指定的會話。MWNS管理器采用SSH連接為用戶提供了遠(yuǎn)程訪問功能,用戶可在遠(yuǎn)程的主機(jī)上管理MWNS仿真系統(tǒng)。
為了模擬一個網(wǎng)絡(luò)設(shè)備,本文設(shè)計(jì)了一個虛擬網(wǎng)絡(luò)元素(Virtual Network Elements,VNE),VNE能夠模擬各個網(wǎng)絡(luò)元素,例如:網(wǎng)絡(luò)鏈接、集線器 (hub)、交換機(jī)、網(wǎng)絡(luò)節(jié)點(diǎn)。具體實(shí)現(xiàn)是基于面向?qū)ο蟮木幊趟枷?,將VNE作為一個父類,各種網(wǎng)絡(luò)設(shè)備均為VNE的子類。本文設(shè)計(jì)的VNE與其他網(wǎng)絡(luò)設(shè)備模擬方案相比,主要有5個特點(diǎn):① VNE作為一個輕量級的進(jìn)程運(yùn)行,獨(dú)立運(yùn)行于虛擬機(jī)中,VNE與其他VNE之間互不干擾;② 支持動態(tài)地建立、斷開與重建網(wǎng)絡(luò)鏈接;③ 支持多種網(wǎng)絡(luò)后端類型,可通過套接字與運(yùn)行不同操作系統(tǒng)(Unix, Linux, Windows等)的虛擬機(jī)連接;④ 支持動態(tài)地設(shè)置網(wǎng)絡(luò)鏈接的屬性,例如:帶寬、延遲,定時器與誤碼率等;⑤ 能夠仿真無線接口設(shè)備與ad hoc[14](無線自組織)網(wǎng)絡(luò)模塊。
一個VNE包含一個轉(zhuǎn)發(fā)引擎與若干個接口,只要系統(tǒng)的內(nèi)存足夠,接口數(shù)量則可為任意值。接口可在系統(tǒng)運(yùn)行期間動態(tài)地創(chuàng)建,每個接口擁有一個輸入隊(duì)列與一個輸出隊(duì)列,每個隊(duì)列有一定大小的緩存區(qū)。接口內(nèi)部通過一個轉(zhuǎn)發(fā)引擎相互連接,圖2所示是一個包含兩個接口的VNE。輸入、輸出VNE的數(shù)據(jù)可以分為兩種格式: ① 字節(jié)流數(shù)據(jù)(Byte Stream,BS)格式:此類數(shù)據(jù)作為一個無解釋的字節(jié)數(shù)據(jù)流,每個緩存區(qū)能夠容納滿足預(yù)設(shè)容量的BS數(shù)據(jù)。② 以太網(wǎng)幀數(shù)據(jù)(Ethernet Frame,EF)格式:此類數(shù)據(jù)為Ethernet幀結(jié)構(gòu),每個緩存區(qū)僅能容納一個Ethernet幀,并且該幀必須小于緩存區(qū)容量。
圖2 包含兩個接口的VNE
仿真系統(tǒng)可將VNE設(shè)為6種工作模式,前4種模式仿真了網(wǎng)絡(luò)設(shè)備,這4種模式與虛擬機(jī)獨(dú)立不相關(guān),后2種模式仿真了無線接口網(wǎng)卡,無線接口網(wǎng)卡有兩種模式:基礎(chǔ)設(shè)施模式與ad hoc(無線自組織)模式,在無線接口網(wǎng)卡模式下,VNE通過指定接口“直接接口”與虛擬移動節(jié)點(diǎn)連接; 如果移動節(jié)點(diǎn)是基礎(chǔ)設(shè)施模式,那么VNE通過另一個接口“訪問接口”與虛擬移動節(jié)點(diǎn)的訪問點(diǎn)連接。VNE的6種模式分別如下所示:
(1) 網(wǎng)絡(luò)鏈接模式(VLINE)。兩個接口之間直接相連,每個數(shù)據(jù)輸入前一個接口,從后一個接口輸出,如圖3所示。
(2) hub模式(VHUB)。每個接口與另一個接口相連,每個數(shù)據(jù)輸入一個接口,然后從該接口以外的一個接口輸出,如圖4所示。
(3) 交換機(jī)模式(VSWITCH)。EF數(shù)據(jù)幀輸入一個接口,轉(zhuǎn)發(fā)引擎根據(jù)路由表決定將該數(shù)據(jù)轉(zhuǎn)發(fā)至指定(EF幀的目標(biāo)地址)的輸出接口,如圖5所示。
圖3 VNE網(wǎng)絡(luò)鏈接模式示意圖
圖4 VNE hub模式示意圖
圖5 VNE交換機(jī)模式示意圖
(4) 訪問點(diǎn)模式(訪問點(diǎn)(access point, AP))。模擬無線網(wǎng)絡(luò)的AP功能,負(fù)責(zé)將有線網(wǎng)絡(luò)信號轉(zhuǎn)化為無線網(wǎng)絡(luò)信號。
(5) 無線基礎(chǔ)設(shè)施模式。將訪問接口的輸入EF幀轉(zhuǎn)發(fā)到直接接口的輸出。
(6) ad hoc接口模式。將非直接接口的輸入EF幀轉(zhuǎn)發(fā)到直接接口的輸出。
后4種模式需要數(shù)據(jù)格式為EF幀格式(具有介質(zhì)訪問層(Medium Access Control, MAC)地址),為了仿真IEEE 802.11協(xié)議,為接入點(diǎn)發(fā)出的每個EF幀增加一個偽報文頭。
為虛擬交換機(jī)的路由表設(shè)計(jì)了自學(xué)習(xí)的能力,具體的自學(xué)習(xí)方法為:當(dāng)接口收到一個EF幀,VNE檢查該幀的源MAC地址是否與該接口相同,如果相同,則不作處理;如果不同,VNE將該地址信息保存于VNE的路由表中。當(dāng)一個數(shù)據(jù)幀輸入VNE之后,轉(zhuǎn)發(fā)引擎在路由表中搜索該幀的目標(biāo)地址,將該幀轉(zhuǎn)發(fā)至該目標(biāo)地址關(guān)聯(lián)的接口。VNE的hub模式與交換機(jī)模式支持基于端口的虛擬局域網(wǎng) (Virtual local area network, VLAN)。
在虛擬化領(lǐng)域中,網(wǎng)絡(luò)后端表示了仿真器的軟件部分,為仿真器之間建立連接?;贚INUX操作系統(tǒng)的網(wǎng)絡(luò)后端一般都實(shí)現(xiàn)了虛擬網(wǎng)卡驅(qū)動 (TAP)接口、虛擬設(shè)備元素(Virtual device element, VDE)接口、套接字等。
VNE目前提供了UNIX本地套接字后端、TAP后端以及VDE后端,將這些后端都抽象為一個類,稱為“struct endpoint”。網(wǎng)絡(luò)后端必須與一個VNE虛擬網(wǎng)絡(luò)接口綁定,為了實(shí)現(xiàn)仿真器的動態(tài)特性,VNE綁定(bind)操作將VNE接口與網(wǎng)絡(luò)后端端點(diǎn)分離,該綁定操作可通過LINUX操作系統(tǒng)的“bind”命令動態(tài)地創(chuàng)建或者結(jié)束,如圖6所示。因此網(wǎng)絡(luò)后端的連接失敗對VNE沒有影響,如果節(jié)點(diǎn)的移動導(dǎo)致了網(wǎng)絡(luò)連接失敗,則需重新建立網(wǎng)絡(luò)后端的連接。
圖6 通過“bind”命令建立網(wǎng)絡(luò)端點(diǎn)與VNE接口之間的綁定
MWNS的系統(tǒng)仿真功能利用了QEMU仿真系統(tǒng)[7],MWNS與QEMU仿真系統(tǒng)之間的關(guān)系,如圖7所示,圖中QEMU虛擬機(jī)的網(wǎng)絡(luò)后端與VNE之間建立一個TCP連接。QEMU的虛擬網(wǎng)絡(luò)設(shè)備與網(wǎng)絡(luò)后端連接的實(shí)現(xiàn)方式是:定義一個本地VLAN目標(biāo),該目標(biāo)直接將虛擬eth0接口與套接字后端(socket.0.)連接。VNE的“bind”操作與QEMU的VLAN操作之間的差異為:接口與網(wǎng)絡(luò)后端之間的綁定是建立一個雙向連接,而VLAN將多個網(wǎng)絡(luò)后端單向地連接至同一個接口。VNE的雙向連接為移動網(wǎng)絡(luò)的動態(tài)性提供了支持,而VLAN的多對一的連接方式只能支持靜態(tài)網(wǎng)絡(luò)。
圖7 MWNS系統(tǒng)與QEMU仿真系統(tǒng)之間的關(guān)系
首先評估VNE模型的性能,證明VNE模型的有效性。將VNE與QEMU、Dynamips[15]兩個基于套接字網(wǎng)絡(luò)后端的網(wǎng)絡(luò)仿真器進(jìn)行比較。實(shí)驗(yàn)場景為:分別使用QEMU、Dynamips與VNE 3個虛擬設(shè)備連接兩個QUMU虛擬機(jī),所有的網(wǎng)絡(luò)后端連接均為TCP連接,物理機(jī)器為Intel PC機(jī),兩個QEMU虛擬機(jī)之間建立一個FTP會話,通過FTP傳輸一個1GB的文件,統(tǒng)計(jì)傳輸時間來計(jì)算傳輸?shù)耐掏铝俊EMU與本仿真器的虛擬網(wǎng)絡(luò)設(shè)備吞吐量如表1所示。由表中可看出VNE仿真器所仿真的VLINE與VHUB均優(yōu)于QUMU設(shè)備,而VNE仿真的VSWITCH優(yōu)于Dynamips交換機(jī)。
MWNS集成了NEMO[16]來管理網(wǎng)絡(luò)的移動功能,MWNS是一個輕量級的C++程序,能夠?yàn)橐苿泳W(wǎng)絡(luò)生成網(wǎng)絡(luò)連接的拓?fù)浣Y(jié)構(gòu)。NEMO能夠動態(tài)地向MWNS發(fā)送命令,實(shí)時地改變MWNS網(wǎng)絡(luò)的連接。NEMO程序主要包含兩個部分:一部分是仿真時間調(diào)度器,另一部分是實(shí)時調(diào)度器。
仿真時間調(diào)度器是NEMO仿真部分的核心,它為實(shí)時調(diào)度器生成連接的場景,實(shí)時調(diào)度器生成連接場景的過程共有3個步驟:生成一個映射;在該映射中生成一個移動場景;根據(jù)該移動場景生成一個連接場景。
仿真時間調(diào)度器每隔一段時間(用戶設(shè)置)管理一次移動場景,并且計(jì)算每對移動節(jié)點(diǎn)之間的距離與無線連接。NEMO能夠生成矩形映射與完全隨機(jī)的移動場景,有助于無線移動網(wǎng)絡(luò)的仿真與實(shí)驗(yàn)。NEMO仿真時間調(diào)度器的主要不足之處為:計(jì)算復(fù)雜度較高,復(fù)雜度為O(n2lb2n)。關(guān)于NEMO詳細(xì)介紹可參考文獻(xiàn)[16]。
實(shí)時調(diào)度器在網(wǎng)絡(luò)連接發(fā)生變化時管理各個連接(建立連接、斷開連接、重建連接),實(shí)時調(diào)度器與MWNS的交互過程如圖8所示。在虛擬移動網(wǎng)絡(luò)中,VNE用于仿真無線網(wǎng)絡(luò)接口卡(WIC),因此每個虛擬移動網(wǎng)絡(luò)均有一個VNE與一個網(wǎng)絡(luò)后端連接(TCP或者UDP連接),MWNS負(fù)責(zé)將用戶的命令發(fā)送至NEMO。運(yùn)行實(shí)時調(diào)度器之后,MWNS還原NEMO生成的連接事件,將連接事件發(fā)送至不同的VNE,建立網(wǎng)絡(luò)。
圖8 實(shí)時調(diào)度器與MWNS的交互過程示意圖
為了驗(yàn)證MWNS對移動網(wǎng)絡(luò)與靜態(tài)網(wǎng)絡(luò)的仿真性能,分別進(jìn)行了兩組實(shí)驗(yàn)。
為了驗(yàn)證MWNS仿真器對于靜態(tài)網(wǎng)絡(luò)的仿真準(zhǔn)確性,基于MOSH benchmark[17]與SSH評估仿真器的性能。MOSH與SSH均為遠(yuǎn)程終端應(yīng)用,MOSH采用了SSP協(xié)議與故障預(yù)測算法,因此MOSH對網(wǎng)絡(luò)連接的容錯能力優(yōu)于SSH。
實(shí)驗(yàn)中客戶端通過一個仿真3G網(wǎng)絡(luò)與一個交換機(jī)連接,通過一個仿真WiFi網(wǎng)絡(luò)與服務(wù)器連接,仿真實(shí)驗(yàn)的參數(shù)如表2所示。實(shí)驗(yàn)中統(tǒng)計(jì)了MOSH與SSH兩個網(wǎng)絡(luò)服務(wù)的平均響應(yīng)時間。MININET[18]也完成了該實(shí)驗(yàn),因此將本系統(tǒng)仿真的結(jié)果與MININET[18]的實(shí)驗(yàn)結(jié)果比較,評估MWNS仿真的準(zhǔn)確性。
表2 仿真實(shí)驗(yàn)的參數(shù)
實(shí)驗(yàn)結(jié)果如圖9所示,圖中可看出,MWNS仿真的結(jié)果與原實(shí)驗(yàn)結(jié)果極為接近,說明MWNS仿真的準(zhǔn)確率較高。MININET僅能在同一個物理主機(jī)中建立仿真,而MWNS可在多個物理主機(jī)中建立分布式虛擬網(wǎng)絡(luò),每個主機(jī)的子網(wǎng)可作為網(wǎng)絡(luò)社區(qū)進(jìn)行實(shí)驗(yàn)研究。
為了評估MWNS仿真器對于移動設(shè)備的仿真準(zhǔn)確率,采用AMIRALE系統(tǒng)[19]進(jìn)行了仿真實(shí)驗(yàn),并且使用JBOTSIM[20]進(jìn)行模擬實(shí)驗(yàn),將AMIRALE、本系統(tǒng)與JBOTSIM三者進(jìn)行比較,評估本系統(tǒng)的仿真準(zhǔn)確性。
圖9 MOSH、SSH的實(shí)驗(yàn)結(jié)果與仿真結(jié)果
AMIRALE是一個分布式系統(tǒng),該系統(tǒng)設(shè)置幾個自動化車輛協(xié)同地執(zhí)行一個任務(wù)。實(shí)驗(yàn)場景設(shè)為一組掃地機(jī)器人收集公園中給定數(shù)量的垃圾,指定每個機(jī)器人收集一種類型的垃圾,如果一個機(jī)器人發(fā)現(xiàn)一個不屬于它的垃圾,那么該機(jī)器人向負(fù)責(zé)該垃圾的機(jī)器人發(fā)送一個命令消息,具體實(shí)驗(yàn)方式可參考文獻(xiàn)[19]。
本文統(tǒng)計(jì)了數(shù)據(jù)發(fā)送速率與移動目標(biāo)數(shù)量的關(guān)系,結(jié)果如圖10所示。因?yàn)樗袡C(jī)器人廣播的命令消息沒有數(shù)量的限制,所以將單個命令消息的字節(jié)數(shù)與網(wǎng)絡(luò)中命令消息的數(shù)量相乘,即可計(jì)算出網(wǎng)絡(luò)的理論數(shù)據(jù)速率。圖10中仿真曲線為MWNS的實(shí)驗(yàn)結(jié)果,模擬曲線為JBOTSIM模擬器的實(shí)驗(yàn)結(jié)果。圖中顯示了理論曲線、模擬曲線與仿真曲線結(jié)果較為接近,表明MWNS對移動網(wǎng)絡(luò)的場景具有較好的仿真性能,仿真的準(zhǔn)確性較高。
圖10 網(wǎng)絡(luò)數(shù)據(jù)發(fā)送速率與移動目標(biāo)數(shù)量的關(guān)系
本文設(shè)計(jì)的MWNS仿真平臺主要包含了VNE虛擬網(wǎng)絡(luò)設(shè)備模塊與基于NEMO的移動網(wǎng)絡(luò)管理模塊,對仿真平臺的易用性、經(jīng)濟(jì)成本與仿真性能之間取得了較好的平衡。在實(shí)驗(yàn)部分將MWNS系統(tǒng)與MININET進(jìn)行了比較,兩者的仿真性能極為接近,但MININET僅能在同一個物理主機(jī)中建立仿真,而MWNS可在多個物理主機(jī)中建立分布式虛擬網(wǎng)絡(luò),每個主機(jī)的子網(wǎng)可作為網(wǎng)絡(luò)社區(qū)進(jìn)行實(shí)驗(yàn)研究。WMNS與JBOTSIM的對比實(shí)驗(yàn)結(jié)果顯示,WMNS能夠準(zhǔn)確地仿真移動自組織網(wǎng)絡(luò),并且能夠降低測試床物理設(shè)備的成本。