杜曉博
(中國電子科技集團(tuán)公司第20研究所,西安 710086)
?
大規(guī)模自組織網(wǎng)絡(luò)路由聯(lián)合仿真方法
杜曉博
(中國電子科技集團(tuán)公司第20研究所,西安 710086)
針對由艦船、飛機(jī)等平臺在海上形成的大規(guī)模軍用自組織網(wǎng)絡(luò),提出了一種聯(lián)合仿真方法,設(shè)計了基于連通度的分層分簇路由算法,解決了其路由仿真工作面臨的高計算復(fù)雜度和時間復(fù)雜度問題,并通過仿真驗證了該方法的可行性。
自組織網(wǎng)絡(luò);路由;仿真
國家海洋安全形勢日益嚴(yán)峻,國防通信技術(shù)研究也逐漸將重心轉(zhuǎn)向海上通信。無線自組網(wǎng)因其節(jié)點可快速適應(yīng)網(wǎng)絡(luò)動態(tài)變化并自動組網(wǎng),具有很強(qiáng)的抗毀性和健壯性,逐漸成為海上軍事研究的一個重要方向,重點應(yīng)用在軍用艦船和飛機(jī)之間的通信。相應(yīng)地,適用于自組織網(wǎng)絡(luò)的路由算法和協(xié)議層出不窮[1]。但隨著軍事需求的不斷變化,網(wǎng)絡(luò)規(guī)模日漸龐大,各種路由算法和協(xié)議的計算復(fù)雜度急劇上升。尤其對于軍用自組織網(wǎng)絡(luò),網(wǎng)絡(luò)的動態(tài)管理勢必涉及到節(jié)點的認(rèn)證與越區(qū)切換等問題,這些都可能存在高計算復(fù)雜度。普通仿真手段在可行性與效率上已經(jīng)不能完全滿足科研工作需求。因此,急需適用于大規(guī)模網(wǎng)絡(luò)高計算復(fù)雜度和時間復(fù)雜度的實驗仿真平臺。
優(yōu)化網(wǎng)絡(luò)工程工具(OPNET)[2]仿真平臺是目前常用的路由仿真工具之一。它采用了階段性的模擬方式,從協(xié)議間關(guān)系看,節(jié)點模型完全符合開放式系統(tǒng)互聯(lián)(OSI)的標(biāo)準(zhǔn)。從網(wǎng)絡(luò)物件層次關(guān)系看,提供了進(jìn)程、節(jié)點和網(wǎng)絡(luò)3層建模機(jī)制。最底層為進(jìn)程模型,以狀態(tài)機(jī)來描述協(xié)議;其次為節(jié)點模型,由相應(yīng)的協(xié)議模型構(gòu)成,反應(yīng)設(shè)備特性;最上層為網(wǎng)絡(luò)模型。雖然OPNET可以滿足大部分的仿真需求,但對于大規(guī)模網(wǎng)絡(luò)的路由仿真,尤其具有高計算復(fù)雜度時,OPNET很容易遇到瓶頸。這種情況下,OPNET的仿真周期常常會長達(dá)好幾天,甚至無法完成仿真工作,使得研究工作無法獲得高效率。
MATLAB[3]具有強(qiáng)大的計算能力、靈活的程序設(shè)計流程、高質(zhì)量的圖形可視化以及與其他語言接口的便捷功能。對于研究中相關(guān)的算法設(shè)計,用MATLAB可以大大簡化程序。尤其對于高計算復(fù)雜度的算法,MATLAB的優(yōu)勢相當(dāng)明顯。OPNET帶有關(guān)于MATLAB的接口。通過這些接口,OPNET可以調(diào)用MATLAB的*.m文件,實現(xiàn)算法、數(shù)據(jù)的交互以及作圖。
由于OPNET和MATLAB均由C實現(xiàn),因此,本文嘗試聯(lián)合Microsoft Visual Studio/VC、MATLAB和OPNET來仿真,實現(xiàn)針對大規(guī)模網(wǎng)絡(luò)和需要大量計算并且計算復(fù)雜度和時間復(fù)雜度高的仿真工作,加速仿真過程。
安裝Microsoft Visual Studio/VC、MATLAB(R2011a版)、OPNET(14.5a)。除了各個軟件獨自安裝時需要的一些設(shè)置外,還需按以下內(nèi)容再行設(shè)置。
1.1 系統(tǒng)環(huán)境變量設(shè)置
按照Microsoft Visual Studio/VC、MATLAB和OPNET的安裝位置,配置相應(yīng)的系統(tǒng)環(huán)境變量,最終結(jié)果類似為:
(1) include值為“C:Program FilesMicrosoft Visual StudioVC98atlinclude;C:Program FilesMicrosoft Visual StudioVC98mfcinclude;C:Program FilesMicrosoft Visual Studio VC98include;D:VC98atlinclude;D:VC98mfcinclude;D:VC98include;D:opnet14.5.Asysinclude;D:opnet14.5.Amodelsstdinclude;D:MATLAB-R2011aexterninclude”。
(2) lib值為“C:Program FilesMicrosoft Visual StudioVC98mfclib;C:Program FilesMicrosoft Visual StudioVC98lib; D:VC98mfclib; D:VC98lib; D:opnet14.5.Asyslib; D:opnet14.5.Asyspc_intel_win32lib;D:MATLAB-R2011aexternlibwin32microsoft”。
(3) path值為“C:Program FilesMicrosoft Visual StudioCommonToolsWinNT;C:Program FilesMicrosoft Visual StudioCommonMSDev98Bin;C:Program FilesMicrosoft Visual Studio CommonTools;C:Program FilesMicrosoft Visual StudioVC98in;D:Microsoft Visual Studio ToolsWinNT;D:Microsoft Visual StudioMSDev98Bin;D:Microsoft Visual StudioTools; D: VC98in; D:opnet14.5.Asyspc_intel_win32in;D:MATLAB-R2011ainwin32”。
1.2 工具關(guān)聯(lián)設(shè)置
首先配置OPENT的環(huán)境,在Edit→preference中(設(shè)MATLAB安裝在D盤根目錄中):
(1)Complication的設(shè)置。在Comp_flags_common中添加/ID:MATLAB/extern/include。這里D:/MATLAB為MATLAB的安裝目錄,這個設(shè)置可以使編譯器中包含一些必要的MATLAB頭文件。
(2)Link的設(shè)置。添加值LIBPATH:“D:/MATLAB/extern/lib/win32/microsoft/msvc60”到變量Bind_shobj_flag中;Bind_shobj_lib的值設(shè)置為libmx.lib libmat.lib libeng.lib。通過該設(shè)置,OPNET中就可以調(diào)用到MATLAB的引擎函數(shù)庫。
此外,MATLAB與VC的聯(lián)合使用也需要設(shè)置。假設(shè)需要的MATLAB中的函數(shù)文件為test.m。
(1) 添加環(huán)境變量MATLAB值設(shè)為
(2) 配置mbuild使用的C/C++編譯器;
在MATLAB命令窗口中輸入:mbuild-setup
按照提示選擇VC6.0的編譯器,完成后在MATLAB命令窗口中輸入:mex -setup
同樣選擇VC6.0的編譯器,就完成編譯器的安裝和配置。
(3) MATLAB命令窗口中輸入:mcc-W lib:test1-T link:lib test1.m
最終,在當(dāng)前目錄下生成了一系列以test命名的文件(如test.c, test.ctf, test.dll等)。
在這些設(shè)置完成后,添加頭文件“engine.h”,利用引擎函數(shù),通過MATLAB的mx接口可以創(chuàng)建矩陣,轉(zhuǎn)換OPNET和MATLAB中變量類型。在有了獲得數(shù)組或矩陣的辦法后,就可以處理批量數(shù)據(jù),實現(xiàn)Microsoft Visual Studio/VC、MATLAB和OPNET聯(lián)合仿真。
為了驗證聯(lián)合仿真方法的有效性,本文首次將分層分簇路由協(xié)議[4]與連通度[5]結(jié)合,提出基于連通度的分層分簇路由協(xié)議,用于解決節(jié)點行動性高的無線自組織網(wǎng)絡(luò)路由問題。
連通度是從幾何數(shù)學(xué)過渡到無線自組織網(wǎng)絡(luò)的一個度量概念。它用來衡量網(wǎng)絡(luò)中節(jié)點間的連接強(qiáng)度,可以用概率表示,也可以用一些特征量的組合方式來表示。在無線自組織網(wǎng)絡(luò)的路由探索中,連通度扮演了重要的角色。通常連通度的計算方法比較復(fù)雜,尤其在一些課題的研究初期,根據(jù)需求建立的連通度數(shù)學(xué)模型中甚至存在多重積分計算式。
分層分簇路由是常見的一種路由協(xié)議,因為其易管理、安全性能高的特點,廣泛應(yīng)用于軍事網(wǎng)絡(luò)研究,尤其是一些網(wǎng)絡(luò)安全方面的研究工作。為了提高路由的安全性與抗攻擊性,路由協(xié)議往往會采用節(jié)點認(rèn)證技術(shù),這就涉及到了較高的計算復(fù)雜度。
基于連通度的分層分簇路由協(xié)議在工作過程中計算量較大,并且計算復(fù)雜度較高。該協(xié)議算法的核心在于節(jié)點的連通度計算。但其計算量和復(fù)雜度相當(dāng)高。若將2個無線節(jié)點(設(shè)節(jié)點的活動區(qū)域近似于矩形)的連通概率定義為連通度[5],用Pcon表示,則有:
(1)
式中:n為一個方向上通信半徑覆蓋范圍內(nèi)的節(jié)點個數(shù);n0為節(jié)點完全均勻分布時一個方向上通信半徑覆蓋范圍內(nèi)的平均節(jié)點個數(shù);m為一個方向上單元格的個數(shù);n′為垂直于該方向的單元格個數(shù),并且:
(2)
c[i]1=1(i=0,1,…,n0)
(3)
(4)
(5)
根據(jù)上面的算法,用OPNET創(chuàng)建一個擁有1 000個節(jié)點的無線局域網(wǎng)(WLAN),其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,節(jié)點網(wǎng)絡(luò)層進(jìn)程模型如圖2所示。用MATLAB和MicrosoftVisualStudio/VC建立連通度的計算函數(shù)及處理文件。
圖1 1 000個節(jié)點的WLAN網(wǎng)絡(luò)結(jié)構(gòu)圖
圖2 單個節(jié)點的WLAN的NET層進(jìn)程模型
簇頭節(jié)點會先廣播位置信息,然后其他節(jié)點根據(jù)自己的位置確定所在層次,當(dāng)有消息傳播的時候,節(jié)點首先與上層節(jié)點的時間進(jìn)行同步,然后由高層向低層傳播,直至簇頭。發(fā)起路由時,節(jié)點會創(chuàng)建一個ROUTE_PKT,其中包含節(jié)點位置和名稱。創(chuàng)建層時,先創(chuàng)建LEVEL_PKT(包含節(jié)點層數(shù)和一些位置消息),然后設(shè)置時間同步的中斷。這些包在依次傳遞的過程中,各個節(jié)點都會記錄自己的鄰居節(jié)點。節(jié)點在不工作的時候會自動休眠,以節(jié)省能量。節(jié)點接收數(shù)據(jù)包DATA_PKT,按照包里面的下一跳地址轉(zhuǎn)發(fā),并向上級節(jié)點回饋ACK_PKT。 節(jié)點收到這些消息后,判斷里面的包類型,執(zhí)行相應(yīng)的操作,如果有中斷事件,則要執(zhí)行上面的自中斷事件。
仿真開始階段,首先是在OPNET中打印網(wǎng)絡(luò)中節(jié)點的分層信息,各個節(jié)點記錄自己的父節(jié)點或者子節(jié)點的信息,如圖3所示。
圖3 節(jié)點的分層和父節(jié)點信息
分層結(jié)束后,這些節(jié)點在收到鄰居消息后,記錄了自己和鄰居節(jié)點的一些信息,如圖4所示。
節(jié)點收到鄰居節(jié)點傳來的文件后,對于各種類型的包進(jìn)行相應(yīng)的操作。仿真得到的結(jié)果如圖5所示。利用OPNET、MATLAB和MicrosoftVisualStudio/VC聯(lián)合仿真,多次共計平均用時約4.5h。
直接使用OPNET仿真本文的工作時,由于連通度的計算過于復(fù)雜,在公式計算和代碼編寫上存在很大困難,部分工作可能無法實現(xiàn)。若用簡化的常用公式替代連通度的計算式后,用OPNET仿真1 000個節(jié)點的時延等數(shù)據(jù),共計用時約37h。并且由于計算量過大,導(dǎo)致程序運行中數(shù)據(jù)的精度越來越差,得到的最終結(jié)果變得不可靠。
采用本文的聯(lián)合仿真辦法后,仿真時間大大縮減,最長只需要5h即可完成仿真工作,并且因為使用MATLAB,得到的最終數(shù)據(jù)精度和可信度均較高。同時從仿真結(jié)果上看,也說明了利用連通度進(jìn)行分層分簇路由的可能性與可行性。
圖4 節(jié)點及其鄰居節(jié)點信息
圖5 仿真結(jié)果
本文提出的OPNET、MATLAB和MicrosoftVisualStudio/VC聯(lián)合仿真方法,有效縮短了仿真時間,提高了仿真效率。此仿真方法也證明了利用連通度進(jìn)行分層分簇路由的可研究性。因此,對于高計算復(fù)雜度的仿真工作,尤其對于軍用大規(guī)模自組織網(wǎng)路的研究工作,此方法會起到不可忽視的協(xié)助作用。
[1] 王杉.戰(zhàn)場通信環(huán)境中移動自組織網(wǎng)絡(luò)路由協(xié)議研究[D].長沙:國防科學(xué)技術(shù)大學(xué),2006.
[2] 陳敏.OPNET網(wǎng)絡(luò)仿真[M].北京:清華大學(xué)出版社,2004.
[3] 張志涌.精通MATLABR2011a[M].北京:北京航空航天大學(xué)出版社,2011.
[4] 王鑫,王夢瑩,蔣華.一種基于簇首成鏈的分層分簇路由協(xié)議[J].微電子學(xué)與計算機(jī),2014,31(10):9-12.
[5]QingYang,AlvinLim,ShuangLi,JianFang.ACAR:adaptiveconnectivityawareroutingprotocolforvehicularAdHocnetworks[J].MobileNetworksandApplications,2010,15 (1): 36-60.
An United Simulation Method of Large-scale Ad Hoc Network Routing
DU Xiao-bo
(The 20th Research Institute of CETC,Xi’an 710068,China)
Aiming at the large-scale military Ad Hoc network on the sea formed by platforms such as ships and aircrafts,this paper presents an united simulation method,designs a hierarchical clustering routing algorithm based on connectivity,solves the problems of high calculation complexity and time complexity faced by routing simulation operation,and proves the feasibility of the method through simulation.
Ad Hoc network;routing;simulation
2015-01-14
TN915
A
CN32-1413(2015)02-0051-05
10.16426/j.cnki.jcdzdk.2015.02.014