杜晓博
(中国电子科技集团公司第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