羅訓(xùn) 王榮
近幾年,隨著物聯(lián)網(wǎng)的快速發(fā)展,無線技術(shù)也得到了飛速的發(fā)展,而在無線技術(shù)中,無線自組網(wǎng)技術(shù)[1]又是一個廣受歡迎的技術(shù),例如Zigbee技術(shù)和藍(lán)牙技術(shù)等。當(dāng)面對特定環(huán)境和特定需求需要開發(fā)一種新的無線組網(wǎng)技術(shù)或無線廣播算法時,如何測試評估網(wǎng)絡(luò)協(xié)議或算法的性能和可靠性是一個關(guān)鍵問題。
如果直接購買或者開發(fā)硬件平臺進(jìn)行實(shí)地部署測試,不僅成本高昂、費(fèi)時費(fèi)力,而且還需要考慮硬件故障、環(huán)境因素、實(shí)地部署時供電功耗、維護(hù)等很多問題,偏離了實(shí)驗(yàn)重心,不能聚焦在需要解決的關(guān)鍵問題上,而通過計算機(jī)仿真卻可以避免以上問題,研究者只需要重點(diǎn)關(guān)注仿真的性能和結(jié)果來改進(jìn)協(xié)議或算法即可。由此可見,網(wǎng)絡(luò)仿真工作有著不可或缺的作用,占據(jù)重要的地位。
目前大部分的網(wǎng)絡(luò)仿真都是通過NS-2或OPNET仿真器來實(shí)現(xiàn),但是這些仿真器也存在一些不足,例如:NS-2仿真器不便于構(gòu)建復(fù)雜的仿真場景;調(diào)試功能受限;體系龐大,使用較為復(fù)雜。OPNET仿真器則運(yùn)行速度慢,仿真網(wǎng)絡(luò)規(guī)模小,且對無線網(wǎng)絡(luò)的支持較弱[2]。而這其中的某些不足對于游戲引擎而言,卻恰恰是優(yōu)勢所在。在文章中,我們介紹了一種基于虛擬現(xiàn)實(shí)的自組網(wǎng)仿真技術(shù)。
該方法大體流程是:首先利用3D建模軟件建立實(shí)驗(yàn)所需的各種模型,之后導(dǎo)入游戲引擎,建立自組網(wǎng)仿真的虛擬現(xiàn)實(shí)場景,然后利用游戲引擎的接口,通過引擎腳本來控制仿真流程。通過實(shí)驗(yàn)證明:該仿真方法可以實(shí)現(xiàn)自組網(wǎng)絡(luò)的仿真工作,同時也通過實(shí)驗(yàn)得到的數(shù)據(jù)論證了該仿真技術(shù)的有效性和可靠性。
1 游戲引擎
1.1 游戲引擎簡介
通過分析可知仿真是自組網(wǎng)必不可少的一步,但是為了彌補(bǔ)傳統(tǒng)仿真器的不足,提出了利用游戲引擎來進(jìn)行仿真的新方法。
游戲引擎是指一些已經(jīng)編寫好的可編輯游戲系統(tǒng)或者一些交互實(shí)時圖像應(yīng)用程序的核心組件,游戲引擎包括以下系統(tǒng):渲染引擎、動畫制作、物理引擎、碰撞檢測、系統(tǒng)腳本、引擎動畫、粒子系統(tǒng)和場景管理等[3]。
對于自組網(wǎng)絡(luò)仿真中需要的場景管理、組網(wǎng)動畫效果和腳本控制等,游戲引擎正好提供了這些接口,因此使得利用游戲引擎來進(jìn)行基于虛擬現(xiàn)實(shí)的自組網(wǎng)絡(luò)仿真成為可能。
1.2 游戲引擎優(yōu)勢
與傳統(tǒng)的仿真器經(jīng)過對比,游戲引擎具有以下優(yōu)勢:
·簡單易用。游戲引擎提供了整體的框架,根據(jù)游戲引擎所提供的接口,在進(jìn)行自組網(wǎng)絡(luò)仿真時,只需要重點(diǎn)關(guān)注需要解決的問題,例如自組網(wǎng)協(xié)議研發(fā)或算法實(shí)現(xiàn)等,然后研發(fā)人員只需要通過腳本來控制節(jié)點(diǎn)之間的數(shù)據(jù)交換流程和動畫展示等內(nèi)容即可。
·真實(shí)環(huán)境模擬。在之前的無線仿真技術(shù)中,都是通過生成隨機(jī)位置,然后根據(jù)研究者配置進(jìn)行模擬仿真。這種仿真的缺點(diǎn)是無法模擬出具體真實(shí)場景和地理位置對仿真實(shí)驗(yàn)的影響。在虛擬現(xiàn)實(shí)的游戲引擎中,研究者可以對仿真場景進(jìn)行隨意添加更改,包括叢林、河流、山峰和建筑物等,利用這些仿真真實(shí)的環(huán)境,增加了真實(shí)環(huán)境中各種障礙物對無線信號衰減的影響,從而提高了仿真的準(zhǔn)確性。
·可視化效果增強(qiáng)。在虛擬現(xiàn)實(shí)中,用戶可以很直觀地看到仿真環(huán)境中無線信號的傳播過程和組網(wǎng)過程,以及組網(wǎng)是如何受真實(shí)場景影響的,不僅對于研究者更加容易找出網(wǎng)絡(luò)中的問題,對于初學(xué)者而言,這種直觀真實(shí)的可視化效果也更加容易記憶和學(xué)習(xí)。
·清晰的層次結(jié)構(gòu)。游戲引擎中針對每個場景、每個狀態(tài)和場景中的每個物體都有獨(dú)立的腳本來控制,因此對于自組網(wǎng)仿真而言,這種清晰的層次結(jié)構(gòu)可以很輕松地添加新功能或修改已有功能,例如網(wǎng)絡(luò)仿真中各個節(jié)點(diǎn)的控制都是由其獨(dú)立來控制實(shí)現(xiàn),因此無論是修改功能還是更改流程在該節(jié)點(diǎn)的腳本中都可以很方便實(shí)現(xiàn),整體控制可以通過關(guān)卡腳本來實(shí)現(xiàn)。
·復(fù)用性高。在游戲引擎中,各個部件和物體的控制可以在腳本中使用函數(shù)和事件來實(shí)現(xiàn),游戲引擎也提供了場景腳本調(diào)用所有物體內(nèi)函數(shù)的功能,大大提高了程序的復(fù)用性;而且可以在場景中生成多個物體對象,由同一腳本去控制工作,例如網(wǎng)絡(luò)仿真中根據(jù)配置生成不同數(shù)量的節(jié)點(diǎn)進(jìn)行無線組網(wǎng),每個節(jié)點(diǎn)的工作流程完全一致,因此除了每個節(jié)點(diǎn)的ID不同外,其內(nèi)部對收到的數(shù)據(jù)處理流程完全一樣,因此共用一個程序文件來控制即可,完全不需要針對每一個節(jié)點(diǎn)單獨(dú)編寫。
·消息廣播機(jī)制。在組網(wǎng)過程中路由建立的基礎(chǔ)就是通過路由廣播以及路由回應(yīng)來完成的,而在游戲引擎中也提供了全局消息廣播的機(jī)制,通過該機(jī)制,研發(fā)者不需要考慮自己去實(shí)現(xiàn)復(fù)雜的廣播消息處理。
我們選擇了虛幻游戲引擎(簡稱UE4)來實(shí)現(xiàn)無線自組網(wǎng)絡(luò)仿真技術(shù)的研究。該游戲引擎除了其強(qiáng)大的各種子系統(tǒng)外,還提供了一個“所見即所得”的編輯器,在可視化的編輯窗口中,開發(fā)人員可以直接對游戲中的角色、物品道具、角色個體智能(AI)及光源進(jìn)行自由擺放和屬性控制,并且全部是實(shí)時渲染,虛幻引擎為了使開發(fā)者更好使用,還完全開源了其游戲引擎的代碼,開發(fā)者可以按照自己的需求開發(fā)自己特色的內(nèi)容。
1.3 游戲引擎相關(guān)工作
在此之前,張青和曲洲青[2]等人研究過基于游戲引擎的力學(xué)仿真方法,同樣是由于力學(xué)實(shí)驗(yàn)耗費(fèi)成本較高且不易運(yùn)作,傳統(tǒng)仿真方法又存在一些缺點(diǎn),所以提出了利用游戲引擎來進(jìn)行仿真的方法[4];LUO和YU等人提出在網(wǎng)絡(luò)仿真中利用游戲引擎來增強(qiáng)移動模型的研究[5-6],GODSEY等人[7]則利用游戲引擎來實(shí)現(xiàn)仿真?zhèn)鞲衅骶W(wǎng)絡(luò)應(yīng)用,這些研究都為文中所提的基于虛擬現(xiàn)實(shí)的無線自組網(wǎng)仿真提供了啟發(fā)思路。除此之外,YU-CHEE TSENG和SZE-YAO NI等人在研究關(guān)于移動自組網(wǎng)中的廣播風(fēng)暴問題時,利用C++設(shè)計了一種仿真器,并利用該仿真器仿真了在不同廣播算法下廣播風(fēng)暴的緩解情況,對實(shí)驗(yàn)數(shù)據(jù)結(jié)果進(jìn)行了分析和論證[8]。
在相關(guān)工作的基礎(chǔ)上,我們利用游戲引擎設(shè)計無線自組網(wǎng)仿真器,最后通過仿真YU-CHEE TSENG[8]論文中完全相同的實(shí)驗(yàn)場景進(jìn)行實(shí)驗(yàn),仿真得到的實(shí)驗(yàn)數(shù)據(jù)與YU-CHEE TSENG論文中的數(shù)據(jù)進(jìn)行對比的結(jié)果,驗(yàn)證了文章中的仿真器是真實(shí)可靠的。endprint
2 仿真流程實(shí)現(xiàn)方式
無線仿真遵循網(wǎng)絡(luò)仿真的一般步驟,來確定無線自組網(wǎng)整體的仿真流程,包括問題定義、建模、模型確認(rèn)、數(shù)據(jù)采集、程序編制、運(yùn)行、結(jié)果展示和最后的驗(yàn)證等環(huán)節(jié)[9]。
我們采用了主從節(jié)點(diǎn)的方式來進(jìn)行無線組網(wǎng)仿真,主節(jié)點(diǎn)根據(jù)從節(jié)點(diǎn)的地址進(jìn)行輪詢廣播查找,整個仿真場景的參數(shù)主要有場景大小、節(jié)點(diǎn)數(shù)量、信號傳輸半徑、廣播包大小、傳輸速率、廣播時間間隔等。
自組網(wǎng)仿真路由協(xié)議采用的是精簡的按需矢量距離(AODV)[10-11]路由協(xié)議。在其基礎(chǔ)上我們針對游戲引擎仿真進(jìn)行了適當(dāng)?shù)膬?yōu)化,在游戲引擎中先對優(yōu)化后的路由協(xié)議進(jìn)行數(shù)據(jù)結(jié)構(gòu)定義,主要包括以下幾部分:路由廣播包、路由回應(yīng)包、路由錯誤包、路由消息包。除此之外,還定義了場景中節(jié)點(diǎn)物體與其對應(yīng)地址的數(shù)據(jù)結(jié)構(gòu),用來在全局范圍內(nèi)查找某節(jié)點(diǎn)信號傳輸半徑范圍內(nèi)的節(jié)點(diǎn)并將路由信息發(fā)送給該接收節(jié)點(diǎn)。當(dāng)每個節(jié)點(diǎn)收到路由廣播或路由回應(yīng)后,節(jié)點(diǎn)需要將其存儲至節(jié)點(diǎn)的路由表中,建立路由,因此還需要定義路由表結(jié)構(gòu)。
在該仿真中,場景內(nèi)主要包括以下幾個部分:(1)范圍盒子,在仿真時并不可見,主要用來根據(jù)用戶配置的場景大小來自動變化范圍,初始化后不可改變;(2)主節(jié)點(diǎn),整個自組網(wǎng)仿真中路由廣播的發(fā)起者,在輪詢各個節(jié)點(diǎn)時,根據(jù)其內(nèi)的路由表信息來判斷是否進(jìn)行路由廣播;(3)從節(jié)點(diǎn),根據(jù)配置信息來自動生成規(guī)定數(shù)量的從節(jié)點(diǎn),同時自動分配IP。主節(jié)點(diǎn)和從節(jié)點(diǎn)的位置是在范圍盒子內(nèi)部隨機(jī)生成,當(dāng)然用戶也可以手動調(diào)整其位置。
根據(jù)虛幻UE4的設(shè)計,場景中的所有物體均可以獲取到游戲狀態(tài)和游戲模式,場景關(guān)卡可以獲取到場景中的所有物體以及其內(nèi)部的屬性、方法函數(shù)和事件等。
據(jù)此可知配置文件的讀取由游戲狀態(tài)來完成,并存入其中供其他物體來獲取,所有的節(jié)點(diǎn)都具有發(fā)送消息的功能,因此在游戲狀態(tài)中定義了路由廣播發(fā)送函數(shù)接口、路由回應(yīng)發(fā)送函數(shù)接口、路由錯誤發(fā)送函數(shù)接口和路由消息發(fā)送函數(shù)接口,當(dāng)節(jié)點(diǎn)需要發(fā)送相應(yīng)的消息時,直接通過調(diào)用游戲狀態(tài)中的相應(yīng)接口即可。相應(yīng)消息的接收函數(shù)仍是由各自獨(dú)立實(shí)現(xiàn),各種發(fā)送函數(shù)接口的具體實(shí)現(xiàn)是在場景關(guān)卡中完成,由于場景關(guān)卡可以獲取到場景內(nèi)的所有物體,因此在場景關(guān)卡中通過對傳入?yún)?shù)做解析之后,將需要發(fā)送的消息發(fā)送給各個對應(yīng)的物體接收函數(shù),從而完成了整個組網(wǎng)過程。圖1是整個自組網(wǎng)系統(tǒng)的仿真流程。
最終仿真則效果如圖2和圖3所示,其中圖2為主節(jié)點(diǎn)路由表中沒有到達(dá)目的節(jié)點(diǎn)的路由信息,進(jìn)行路由廣播,從而引起其信號半徑范圍內(nèi)的從節(jié)點(diǎn)依次向外中繼轉(zhuǎn)發(fā)廣播,當(dāng)廣播到達(dá)目的節(jié)點(diǎn)或某中繼節(jié)點(diǎn)中擁有到達(dá)目的節(jié)點(diǎn)的路由時開始回應(yīng)。圖2中有3個節(jié)點(diǎn)進(jìn)行了路由回應(yīng),其中黑色箭頭表示路由回應(yīng)信號,右邊紅色的數(shù)字表示在某個節(jié)點(diǎn)信號半徑范圍內(nèi)的可達(dá)節(jié)點(diǎn)。
圖3是在路由建立之后,主節(jié)點(diǎn)發(fā)送路由消息給目的節(jié)點(diǎn),同時目的節(jié)點(diǎn)回應(yīng)路由消息給主節(jié)點(diǎn)的數(shù)據(jù)傳輸仿真過程。
3 仿真流程實(shí)驗(yàn)數(shù)據(jù)論證
在YU-CHEE TSENG[8],[12]等人的工作中,利用仿真器進(jìn)行廣播算法的仿真,得到的仿真數(shù)據(jù)通過平均時延、節(jié)約轉(zhuǎn)發(fā)率和可達(dá)率3方面來評估不同廣播算法在不同閾值下的廣播風(fēng)暴緩解情況,然后通過橫向?qū)Ρ?,給出該廣播算法的最優(yōu)閾值范圍。
評估觀察的性能指標(biāo)解釋如下:
·可達(dá)率(RE)。接收到廣播消息的主機(jī)節(jié)點(diǎn)數(shù)與從源主機(jī)直接或間接到達(dá)的所有主機(jī)節(jié)點(diǎn)數(shù)的比值。
·節(jié)約轉(zhuǎn)發(fā)率(SRB)。(r-t)/r,r為接收到的廣播消息的主機(jī)節(jié)點(diǎn)數(shù),t為真正發(fā)送消息的主機(jī)節(jié)點(diǎn)數(shù)。
·平均時延。從廣播開始到最后主機(jī)節(jié)點(diǎn)結(jié)束轉(zhuǎn)發(fā)的時間間隔。
我們利用本次設(shè)計的基于游戲引擎的仿真器通過完全相同的仿真環(huán)境配置進(jìn)行實(shí)驗(yàn),將數(shù)據(jù)結(jié)果與其進(jìn)行比較,仿真環(huán)境配置是:節(jié)點(diǎn)之間信號傳輸半徑為500 m,然后生成100的主機(jī)節(jié)點(diǎn)進(jìn)行仿真,范圍大小有1 x 1、3 x 3、5 x 5、7 x 7、9 x 9、11 x 11單元大小,每個單元的長度是500 m(即信號傳輸半徑);然后則通過仿真概率廣播算法[4]和計數(shù)廣播算法[4-5]獲得數(shù)據(jù)作圖對比,其中每次仿真執(zhí)行10 000個廣播請求。
3.1 概率廣播算法仿真
概率廣播算法是指當(dāng)一個主機(jī)節(jié)點(diǎn)收到路由廣播消息時,該主機(jī)會以概率P進(jìn)行轉(zhuǎn)發(fā)。當(dāng)概率P是1時,該算法等同于泛洪廣播[8],[13]。
圖4為通過本文中的仿真器仿真結(jié)果,統(tǒng)計在不同場景大小時,不同的轉(zhuǎn)發(fā)概率P條件下的節(jié)約轉(zhuǎn)發(fā)率;圖5是可達(dá)率;圖6是平均時延。通過與YU-CHEE TSENG的論文中的數(shù)據(jù)對比,統(tǒng)計結(jié)果相差不超過1%。
3.2 計數(shù)廣播算法仿真
計數(shù)廣播算法是指當(dāng)一個主機(jī)節(jié)點(diǎn)收到路由廣播時,在該主機(jī)轉(zhuǎn)發(fā)廣播之前會由于解析數(shù)據(jù)重新打包廣播包退避時間,忙碌或者處理其他隊(duì)列消息等而等待一段時間。在該段時間內(nèi),該主機(jī)有可能再一次監(jiān)測到相同的路由廣播,因此通過一個計數(shù)器k來統(tǒng)計該主機(jī)收到相同路由廣播包的次數(shù),當(dāng)該次數(shù)k超過計數(shù)閾值C時,該主機(jī)取消轉(zhuǎn)發(fā)廣播。
圖7為通過文中所提的仿真器仿真結(jié)果,統(tǒng)計在不同場景大小時,不同的計數(shù)閾值C條件下的節(jié)約轉(zhuǎn)發(fā)率;圖8是可達(dá)率;圖9是平均時延。通過與YU-CHEE TSENG的論文中的數(shù)據(jù)對比,統(tǒng)計結(jié)果相差不超過1%。
因此,通過以上數(shù)據(jù)統(tǒng)計分析和對比,可以證明本論文中的在游戲引擎中實(shí)現(xiàn)的基于虛擬現(xiàn)實(shí)的無線自組網(wǎng)仿真技術(shù)是有效可靠的。
4 結(jié)束語
文章中,我們通過分析自組網(wǎng)仿真的重要性總結(jié)了傳統(tǒng)網(wǎng)絡(luò)仿真中的一些不足之處,進(jìn)而提出了利用游戲引擎來進(jìn)行基于虛擬現(xiàn)實(shí)的自組網(wǎng)仿真的方法。之后通過UE4游戲引擎實(shí)現(xiàn)了該自組網(wǎng)仿真技術(shù),實(shí)現(xiàn)了自組網(wǎng)仿真功能,同時利用該仿真器通過對兩種廣播算法進(jìn)行仿真實(shí)驗(yàn),與前人的實(shí)驗(yàn)數(shù)據(jù)進(jìn)行比較和分析,驗(yàn)證了該基于虛擬現(xiàn)實(shí)的無線自組網(wǎng)仿真技術(shù)的可行性,研究也達(dá)到了預(yù)期的效果。endprint
我們相信在之后的發(fā)展過程中,利用游戲引擎的虛擬現(xiàn)實(shí)技術(shù)會應(yīng)用到更多的領(lǐng)域中去,并且更加簡單和方便地為研究者提供便利。
參考文獻(xiàn)
[1] MACKER J P, CORSON M S. Mobile ad hoc Networking and the IETF[J]. Acm Sigmobile Mobile Computing & Communications Review, 1998, 2(2):9-12
[2] 高振國, 溫東新, 劉宏偉,等. 構(gòu)建無線自組網(wǎng)仿真場景[J].宇航學(xué)報, 2006, 27(4):806-813
[3] 張青, 曲洲青. 基于游戲引擎的力學(xué)仿真新方法[J]. 中國傳媒大學(xué)學(xué)報(自然科學(xué)版)自然科學(xué)版, 2013, 20(2):45-49
[4] MOHAMMED A, OULD K M, MACKENZIE L M, et al. Improving the Performance of Counter-Based Broadcast Scheme for Mobile AD HOC Networks[C]// IEEE International Conference on Signal Processing and Communications. USA:IEEE, 2008:1403-1406.DOI: 10.1109/ICSPC.2007.4728591
[5] LUO X. Using Game Engine to Enhance Mobility Modeling in Network Simulations[C]// Virtual Reality.USA: IEEE, 2013:177-178
[6] LUO X, YU N. Fast Mobility Model Prototyping in Network Simulations using Game Engine[C]// 2013中國虛擬現(xiàn)實(shí)大會暨ICVRV'2013. USA:IEEE, 2013:145-152. DOI: 10.1109/ICVRV.2013.31
[7] GODSEY C, SKUBIC M. Using Elements of Game Engine Architecture to Simulate Sensor Networks for Eldercare [J]. 2009:6143-6146
[8] TSENG Y C, NI S Y, CHEN Y S, et al. The Broadcast Storm Problem in a Mobile ad hoc Network[J]. Wireless Networks, 2002, 8(2-3):153-167
[9] 侯宗浩, 王秉康, 黃泳翔. 網(wǎng)絡(luò)仿真的研究[J]. 計算機(jī)仿真, 2003, 20(10):89-91
[10] PERKINS, BEDOMGRPUER. Ad hoc On-Demand Distance Vector (AODV) Routing[J]. RFC, 1997, 6(7):90
[11] ROYER E M, DAS S R, PERKINS C E. A d Hoc On-Demand Distance Vector (AODV) Routing (Internet-Draft)[J]. RFC, 2000, 6(7):90
[12] TSENG Y C, NI S Y, SHIH E Y. Adaptive Approaches to Relieving Broadcast Storms in a Wireless Multihop Mobile ad hoc Network[J]. Computers IEEE Transactions on, 2001, 52(5):545-557
[13] BERTSEKAS D, GALLAGER R. Data Networks (2nd ed.)[M]. British: Prentice-Hall, Inc., 1992endprint