杜曉博
(中國(guó)電子科技集團(tuán)公司第20研究所,西安 710086)
?
大規(guī)模自組織網(wǎng)絡(luò)路由聯(lián)合仿真方法
杜曉博
(中國(guó)電子科技集團(tuán)公司第20研究所,西安 710086)
針對(duì)由艦船、飛機(jī)等平臺(tái)在海上形成的大規(guī)模軍用自組織網(wǎng)絡(luò),提出了一種聯(lián)合仿真方法,設(shè)計(jì)了基于連通度的分層分簇路由算法,解決了其路由仿真工作面臨的高計(jì)算復(fù)雜度和時(shí)間復(fù)雜度問題,并通過仿真驗(yàn)證了該方法的可行性。
自組織網(wǎng)絡(luò);路由;仿真
國(guó)家海洋安全形勢(shì)日益嚴(yán)峻,國(guó)防通信技術(shù)研究也逐漸將重心轉(zhuǎn)向海上通信。無線自組網(wǎng)因其節(jié)點(diǎn)可快速適應(yīng)網(wǎng)絡(luò)動(dòng)態(tài)變化并自動(dòng)組網(wǎng),具有很強(qiáng)的抗毀性和健壯性,逐漸成為海上軍事研究的一個(gè)重要方向,重點(diǎn)應(yīng)用在軍用艦船和飛機(jī)之間的通信。相應(yīng)地,適用于自組織網(wǎng)絡(luò)的路由算法和協(xié)議層出不窮[1]。但隨著軍事需求的不斷變化,網(wǎng)絡(luò)規(guī)模日漸龐大,各種路由算法和協(xié)議的計(jì)算復(fù)雜度急劇上升。尤其對(duì)于軍用自組織網(wǎng)絡(luò),網(wǎng)絡(luò)的動(dòng)態(tài)管理勢(shì)必涉及到節(jié)點(diǎn)的認(rèn)證與越區(qū)切換等問題,這些都可能存在高計(jì)算復(fù)雜度。普通仿真手段在可行性與效率上已經(jīng)不能完全滿足科研工作需求。因此,急需適用于大規(guī)模網(wǎng)絡(luò)高計(jì)算復(fù)雜度和時(shí)間復(fù)雜度的實(shí)驗(yàn)仿真平臺(tái)。
優(yōu)化網(wǎng)絡(luò)工程工具(OPNET)[2]仿真平臺(tái)是目前常用的路由仿真工具之一。它采用了階段性的模擬方式,從協(xié)議間關(guān)系看,節(jié)點(diǎn)模型完全符合開放式系統(tǒng)互聯(lián)(OSI)的標(biāo)準(zhǔn)。從網(wǎng)絡(luò)物件層次關(guān)系看,提供了進(jìn)程、節(jié)點(diǎn)和網(wǎng)絡(luò)3層建模機(jī)制。最底層為進(jìn)程模型,以狀態(tài)機(jī)來描述協(xié)議;其次為節(jié)點(diǎn)模型,由相應(yīng)的協(xié)議模型構(gòu)成,反應(yīng)設(shè)備特性;最上層為網(wǎng)絡(luò)模型。雖然OPNET可以滿足大部分的仿真需求,但對(duì)于大規(guī)模網(wǎng)絡(luò)的路由仿真,尤其具有高計(jì)算復(fù)雜度時(shí),OPNET很容易遇到瓶頸。這種情況下,OPNET的仿真周期常常會(huì)長(zhǎng)達(dá)好幾天,甚至無法完成仿真工作,使得研究工作無法獲得高效率。
MATLAB[3]具有強(qiáng)大的計(jì)算能力、靈活的程序設(shè)計(jì)流程、高質(zhì)量的圖形可視化以及與其他語(yǔ)言接口的便捷功能。對(duì)于研究中相關(guān)的算法設(shè)計(jì),用MATLAB可以大大簡(jiǎn)化程序。尤其對(duì)于高計(jì)算復(fù)雜度的算法,MATLAB的優(yōu)勢(shì)相當(dāng)明顯。OPNET帶有關(guān)于MATLAB的接口。通過這些接口,OPNET可以調(diào)用MATLAB的*.m文件,實(shí)現(xiàn)算法、數(shù)據(jù)的交互以及作圖。
由于OPNET和MATLAB均由C實(shí)現(xiàn),因此,本文嘗試聯(lián)合Microsoft Visual Studio/VC、MATLAB和OPNET來仿真,實(shí)現(xiàn)針對(duì)大規(guī)模網(wǎng)絡(luò)和需要大量計(jì)算并且計(jì)算復(fù)雜度和時(shí)間復(fù)雜度高的仿真工作,加速仿真過程。
安裝Microsoft Visual Studio/VC、MATLAB(R2011a版)、OPNET(14.5a)。除了各個(gè)軟件獨(dú)自安裝時(shí)需要的一些設(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的安裝目錄,這個(gè)設(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ù)庫(kù)。
此外,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ù),實(shí)現(xiàn)Microsoft Visual Studio/VC、MATLAB和OPNET聯(lián)合仿真。
為了驗(yàn)證聯(lián)合仿真方法的有效性,本文首次將分層分簇路由協(xié)議[4]與連通度[5]結(jié)合,提出基于連通度的分層分簇路由協(xié)議,用于解決節(jié)點(diǎn)行動(dòng)性高的無線自組織網(wǎng)絡(luò)路由問題。
連通度是從幾何數(shù)學(xué)過渡到無線自組織網(wǎng)絡(luò)的一個(gè)度量概念。它用來衡量網(wǎng)絡(luò)中節(jié)點(diǎn)間的連接強(qiáng)度,可以用概率表示,也可以用一些特征量的組合方式來表示。在無線自組織網(wǎng)絡(luò)的路由探索中,連通度扮演了重要的角色。通常連通度的計(jì)算方法比較復(fù)雜,尤其在一些課題的研究初期,根據(jù)需求建立的連通度數(shù)學(xué)模型中甚至存在多重積分計(jì)算式。
分層分簇路由是常見的一種路由協(xié)議,因?yàn)槠湟坠芾怼踩阅芨叩奶攸c(diǎn),廣泛應(yīng)用于軍事網(wǎng)絡(luò)研究,尤其是一些網(wǎng)絡(luò)安全方面的研究工作。為了提高路由的安全性與抗攻擊性,路由協(xié)議往往會(huì)采用節(jié)點(diǎn)認(rèn)證技術(shù),這就涉及到了較高的計(jì)算復(fù)雜度。
基于連通度的分層分簇路由協(xié)議在工作過程中計(jì)算量較大,并且計(jì)算復(fù)雜度較高。該協(xié)議算法的核心在于節(jié)點(diǎn)的連通度計(jì)算。但其計(jì)算量和復(fù)雜度相當(dāng)高。若將2個(gè)無線節(jié)點(diǎn)(設(shè)節(jié)點(diǎn)的活動(dòng)區(qū)域近似于矩形)的連通概率定義為連通度[5],用Pcon表示,則有:
(1)
式中:n為一個(gè)方向上通信半徑覆蓋范圍內(nèi)的節(jié)點(diǎn)個(gè)數(shù);n0為節(jié)點(diǎn)完全均勻分布時(shí)一個(gè)方向上通信半徑覆蓋范圍內(nèi)的平均節(jié)點(diǎn)個(gè)數(shù);m為一個(gè)方向上單元格的個(gè)數(shù);n′為垂直于該方向的單元格個(gè)數(shù),并且:
(2)
c[i]1=1(i=0,1,…,n0)
(3)
(4)
(5)
根據(jù)上面的算法,用OPNET創(chuàng)建一個(gè)擁有1 000個(gè)節(jié)點(diǎn)的無線局域網(wǎng)(WLAN),其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,節(jié)點(diǎn)網(wǎng)絡(luò)層進(jìn)程模型如圖2所示。用MATLAB和MicrosoftVisualStudio/VC建立連通度的計(jì)算函數(shù)及處理文件。

圖1 1 000個(gè)節(jié)點(diǎn)的WLAN網(wǎng)絡(luò)結(jié)構(gòu)圖

圖2 單個(gè)節(jié)點(diǎn)的WLAN的NET層進(jìn)程模型
簇頭節(jié)點(diǎn)會(huì)先廣播位置信息,然后其他節(jié)點(diǎn)根據(jù)自己的位置確定所在層次,當(dāng)有消息傳播的時(shí)候,節(jié)點(diǎn)首先與上層節(jié)點(diǎn)的時(shí)間進(jìn)行同步,然后由高層向低層傳播,直至簇頭。發(fā)起路由時(shí),節(jié)點(diǎn)會(huì)創(chuàng)建一個(gè)ROUTE_PKT,其中包含節(jié)點(diǎn)位置和名稱。創(chuàng)建層時(shí),先創(chuàng)建LEVEL_PKT(包含節(jié)點(diǎn)層數(shù)和一些位置消息),然后設(shè)置時(shí)間同步的中斷。這些包在依次傳遞的過程中,各個(gè)節(jié)點(diǎn)都會(huì)記錄自己的鄰居節(jié)點(diǎn)。節(jié)點(diǎn)在不工作的時(shí)候會(huì)自動(dòng)休眠,以節(jié)省能量。節(jié)點(diǎn)接收數(shù)據(jù)包DATA_PKT,按照包里面的下一跳地址轉(zhuǎn)發(fā),并向上級(jí)節(jié)點(diǎn)回饋ACK_PKT。 節(jié)點(diǎn)收到這些消息后,判斷里面的包類型,執(zhí)行相應(yīng)的操作,如果有中斷事件,則要執(zhí)行上面的自中斷事件。
仿真開始階段,首先是在OPNET中打印網(wǎng)絡(luò)中節(jié)點(diǎn)的分層信息,各個(gè)節(jié)點(diǎn)記錄自己的父節(jié)點(diǎn)或者子節(jié)點(diǎn)的信息,如圖3所示。

圖3 節(jié)點(diǎn)的分層和父節(jié)點(diǎn)信息
分層結(jié)束后,這些節(jié)點(diǎn)在收到鄰居消息后,記錄了自己和鄰居節(jié)點(diǎn)的一些信息,如圖4所示。
節(jié)點(diǎn)收到鄰居節(jié)點(diǎn)傳來的文件后,對(duì)于各種類型的包進(jìn)行相應(yīng)的操作。仿真得到的結(jié)果如圖5所示。利用OPNET、MATLAB和MicrosoftVisualStudio/VC聯(lián)合仿真,多次共計(jì)平均用時(shí)約4.5h。
直接使用OPNET仿真本文的工作時(shí),由于連通度的計(jì)算過于復(fù)雜,在公式計(jì)算和代碼編寫上存在很大困難,部分工作可能無法實(shí)現(xiàn)。若用簡(jiǎn)化的常用公式替代連通度的計(jì)算式后,用OPNET仿真1 000個(gè)節(jié)點(diǎn)的時(shí)延等數(shù)據(jù),共計(jì)用時(shí)約37h。并且由于計(jì)算量過大,導(dǎo)致程序運(yùn)行中數(shù)據(jù)的精度越來越差,得到的最終結(jié)果變得不可靠。
采用本文的聯(lián)合仿真辦法后,仿真時(shí)間大大縮減,最長(zhǎng)只需要5h即可完成仿真工作,并且因?yàn)槭褂肕ATLAB,得到的最終數(shù)據(jù)精度和可信度均較高。同時(shí)從仿真結(jié)果上看,也說明了利用連通度進(jìn)行分層分簇路由的可能性與可行性。

圖4 節(jié)點(diǎn)及其鄰居節(jié)點(diǎn)信息

圖5 仿真結(jié)果
本文提出的OPNET、MATLAB和MicrosoftVisualStudio/VC聯(lián)合仿真方法,有效縮短了仿真時(shí)間,提高了仿真效率。此仿真方法也證明了利用連通度進(jìn)行分層分簇路由的可研究性。因此,對(duì)于高計(jì)算復(fù)雜度的仿真工作,尤其對(duì)于軍用大規(guī)模自組織網(wǎng)路的研究工作,此方法會(huì)起到不可忽視的協(xié)助作用。
[1] 王杉.戰(zhàn)場(chǎng)通信環(huán)境中移動(dòng)自組織網(wǎng)絡(luò)路由協(xié)議研究[D].長(zhǎng)沙:國(guó)防科學(xué)技術(shù)大學(xué),2006.
[2] 陳敏.OPNET網(wǎng)絡(luò)仿真[M].北京:清華大學(xué)出版社,2004.
[3] 張志涌.精通MATLABR2011a[M].北京:北京航空航天大學(xué)出版社,2011.
[4] 王鑫,王夢(mèng)瑩,蔣華.一種基于簇首成鏈的分層分簇路由協(xié)議[J].微電子學(xué)與計(jì)算機(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