杜曉博
(中國電子科技集團公司第20研究所,西安 710086)
?
大規模自組織網絡路由聯合仿真方法
杜曉博
(中國電子科技集團公司第20研究所,西安 710086)
針對由艦船、飛機等平臺在海上形成的大規模軍用自組織網絡,提出了一種聯合仿真方法,設計了基于連通度的分層分簇路由算法,解決了其路由仿真工作面臨的高計算復雜度和時間復雜度問題,并通過仿真驗證了該方法的可行性。
自組織網絡;路由;仿真
國家海洋安全形勢日益嚴峻,國防通信技術研究也逐漸將重心轉向海上通信。無線自組網因其節點可快速適應網絡動態變化并自動組網,具有很強的抗毀性和健壯性,逐漸成為海上軍事研究的一個重要方向,重點應用在軍用艦船和飛機之間的通信。相應地,適用于自組織網絡的路由算法和協議層出不窮[1]。但隨著軍事需求的不斷變化,網絡規模日漸龐大,各種路由算法和協議的計算復雜度急劇上升。尤其對于軍用自組織網絡,網絡的動態管理勢必涉及到節點的認證與越區切換等問題,這些都可能存在高計算復雜度。普通仿真手段在可行性與效率上已經不能完全滿足科研工作需求。因此,急需適用于大規模網絡高計算復雜度和時間復雜度的實驗仿真平臺。
優化網絡工程工具(OPNET)[2]仿真平臺是目前常用的路由仿真工具之一。它采用了階段性的模擬方式,從協議間關系看,節點模型完全符合開放式系統互聯(OSI)的標準。從網絡物件層次關系看,提供了進程、節點和網絡3層建模機制。最底層為進程模型,以狀態機來描述協議;其次為節點模型,由相應的協議模型構成,反應設備特性;最上層為網絡模型。雖然OPNET可以滿足大部分的仿真需求,但對于大規模網絡的路由仿真,尤其具有高計算復雜度時,OPNET很容易遇到瓶頸。這種情況下,OPNET的仿真周期常常會長達好幾天,甚至無法完成仿真工作,使得研究工作無法獲得高效率。
MATLAB[3]具有強大的計算能力、靈活的程序設計流程、高質量的圖形可視化以及與其他語言接口的便捷功能。對于研究中相關的算法設計,用MATLAB可以大大簡化程序。尤其對于高計算復雜度的算法,MATLAB的優勢相當明顯。OPNET帶有關于MATLAB的接口。通過這些接口,OPNET可以調用MATLAB的*.m文件,實現算法、數據的交互以及作圖。
由于OPNET和MATLAB均由C實現,因此,本文嘗試聯合Microsoft Visual Studio/VC、MATLAB和OPNET來仿真,實現針對大規模網絡和需要大量計算并且計算復雜度和時間復雜度高的仿真工作,加速仿真過程。
安裝Microsoft Visual Studio/VC、MATLAB(R2011a版)、OPNET(14.5a)。除了各個軟件獨自安裝時需要的一些設置外,還需按以下內容再行設置。
1.1 系統環境變量設置
按照Microsoft Visual Studio/VC、MATLAB和OPNET的安裝位置,配置相應的系統環境變量,最終結果類似為:
(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 工具關聯設置
首先配置OPENT的環境,在Edit→preference中(設MATLAB安裝在D盤根目錄中):
(1)Complication的設置。在Comp_flags_common中添加/ID:MATLAB/extern/include。這里D:/MATLAB為MATLAB的安裝目錄,這個設置可以使編譯器中包含一些必要的MATLAB頭文件。
(2)Link的設置。添加值LIBPATH:“D:/MATLAB/extern/lib/win32/microsoft/msvc60”到變量Bind_shobj_flag中;Bind_shobj_lib的值設置為libmx.lib libmat.lib libeng.lib。通過該設置,OPNET中就可以調用到MATLAB的引擎函數庫。
此外,MATLAB與VC的聯合使用也需要設置。假設需要的MATLAB中的函數文件為test.m。
(1) 添加環境變量MATLAB值設為
(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
最終,在當前目錄下生成了一系列以test命名的文件(如test.c, test.ctf, test.dll等)。
在這些設置完成后,添加頭文件“engine.h”,利用引擎函數,通過MATLAB的mx接口可以創建矩陣,轉換OPNET和MATLAB中變量類型。在有了獲得數組或矩陣的辦法后,就可以處理批量數據,實現Microsoft Visual Studio/VC、MATLAB和OPNET聯合仿真。
為了驗證聯合仿真方法的有效性,本文首次將分層分簇路由協議[4]與連通度[5]結合,提出基于連通度的分層分簇路由協議,用于解決節點行動性高的無線自組織網絡路由問題。
連通度是從幾何數學過渡到無線自組織網絡的一個度量概念。它用來衡量網絡中節點間的連接強度,可以用概率表示,也可以用一些特征量的組合方式來表示。在無線自組織網絡的路由探索中,連通度扮演了重要的角色。通常連通度的計算方法比較復雜,尤其在一些課題的研究初期,根據需求建立的連通度數學模型中甚至存在多重積分計算式。
分層分簇路由是常見的一種路由協議,因為其易管理、安全性能高的特點,廣泛應用于軍事網絡研究,尤其是一些網絡安全方面的研究工作。為了提高路由的安全性與抗攻擊性,路由協議往往會采用節點認證技術,這就涉及到了較高的計算復雜度。
基于連通度的分層分簇路由協議在工作過程中計算量較大,并且計算復雜度較高。該協議算法的核心在于節點的連通度計算。但其計算量和復雜度相當高。若將2個無線節點(設節點的活動區域近似于矩形)的連通概率定義為連通度[5],用Pcon表示,則有:
(1)
式中:n為一個方向上通信半徑覆蓋范圍內的節點個數;n0為節點完全均勻分布時一個方向上通信半徑覆蓋范圍內的平均節點個數;m為一個方向上單元格的個數;n′為垂直于該方向的單元格個數,并且:
(2)
c[i]1=1(i=0,1,…,n0)
(3)
(4)
(5)
根據上面的算法,用OPNET創建一個擁有1 000個節點的無線局域網(WLAN),其網絡結構如圖1所示,節點網絡層進程模型如圖2所示。用MATLAB和MicrosoftVisualStudio/VC建立連通度的計算函數及處理文件。

圖1 1 000個節點的WLAN網絡結構圖

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

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

圖4 節點及其鄰居節點信息

圖5 仿真結果
本文提出的OPNET、MATLAB和MicrosoftVisualStudio/VC聯合仿真方法,有效縮短了仿真時間,提高了仿真效率。此仿真方法也證明了利用連通度進行分層分簇路由的可研究性。因此,對于高計算復雜度的仿真工作,尤其對于軍用大規模自組織網路的研究工作,此方法會起到不可忽視的協助作用。
[1] 王杉.戰場通信環境中移動自組織網絡路由協議研究[D].長沙:國防科學技術大學,2006.
[2] 陳敏.OPNET網絡仿真[M].北京:清華大學出版社,2004.
[3] 張志涌.精通MATLABR2011a[M].北京:北京航空航天大學出版社,2011.
[4] 王鑫,王夢瑩,蔣華.一種基于簇首成鏈的分層分簇路由協議[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