工程硕士学位论文
口,仿真过程中可以在Tkenv窗口中看到自传消息,支持仿真动画,标记断点,具有检查窗口,可以检查和改变模型中的变量,执行过程中仿真结果的图形化显示并且结果可以用柱状图和时间序列图显示,仿真可重新进行,快照文件用于显示模型的详细信息。
Cmdenv接口用于实际的仿真实验,因为Cmdenv支持批处理。Cmdenv是一个简便的小型命令行接口,执行速度快。它可以在所有操作系统平台上运行。Cmdenv可以一次批处理配置文件中所有的仿真。
OMNeT++具有模块化的体系结构,OMNeT++仿真的高层体系结构如图3-1所示。
图3.1 OMNeT++仿真程序的体系结构
图3.1中箭头表示两组件之间的交互,图中共有5个箭头,表示了组件间的5种关系。
(1)执行模型和Sim:仿真内核管理将来的事件,当有事件发生时,仿真内核就调用执行模型中的模块。执行模型的模块存储在Sim的main对象中。执行模型依次调用仿真内核的函数并使用Sim库中的类。
(2)Sim和模型组件库:当仿真开始运行创建了仿真模型的时候,仿真内核就实例化简单模块和其它的组件。当创建动态模块时,仿真内核也要引用组件库。实现在模型组件库中注册和查寻组件也是Sim的功能。
(3)执行模型和Envir:ev对象作为Envir的一部分,是面向执行模型的用户接口。仿真模型使用ev对象来记录调试信息。
(4)Sim和Envir:由Envir决定创建何种模型,Envir包含主要的仿真循环,并调用仿真内核以实现必须的功能。Envir捕捉并处理执行过程中发生在仿真内核和或类库中的错误和异常。
(5)Envir和Tkenv,Cmdenv:Envir定义了表示用户接口的TOmnetApp基类,Tkenv和Cmdenv都是TOmnetApp的派生类。main()函数是Envir的一部分,
- 19 -
基于位置预测的Ad hoc网络路由协议研究
为仿真决定选用合适的用户接口类,创建用户接口类的实例并执行。Sim和模型对ev对象的调用通过实例化TOmnetApp类进行。Envir通过TOmnetApp和其它类的方法实现Tkenv和Cmdenv的框架和基本功能。
3.2 Ad Hoc路由协议的OMNeT++仿真
无线Ad Hoc网络是一种十分复杂的网络,网络中包含着如节点运动速度、节点距离关系、链路的密度、节点数量以及复杂的无线信道等诸多不确定因素,给Ad Hoc路由协议的分析带来了很大困难。采用数学建模的分析方法几乎不可能,数学模型不仅包含了许多的理想化假设,而且只能在特定的情况下进行分析。实验分析方法受实际条件限制,也很难得以广泛使用。最好的Ad Hoc网络性能分析就是采用仿真软件进行仿真,并根据仿真结果对不同的协议进行性能评估。
由于OMNeT++的诸多优点(如前所述),可以方便的对各种参数进行修改并设置不同的仿真环境,因此目前大多数Ad Hoc路由协议都采用OMNeT++仿真软件进行协议的性能分析。本文也采用OMNeT++进行Ad Hoc路由协议的仿真分析
[36]
。
3.2.1 Ad Hoc路由协议的OMNeT++仿真流程
1. 定义网络拓扑结构
Ad hoc网络由于节点不断变化,其网络拓扑结构也在不断变化。不同的网络拓扑结构对路由算法具有一定的影响。Ad hoc网络拓扑结构分为平面结构和分级结构两种。在OMNeT++仿真平台中利用NED(类似于NS2中使用的TCL)定义网络的拓扑结构,而对基本的网络模块元件使用C++语言来定义其行为。模块和网络定义如下:
(1)simple模块定义 simple 简单模块名
parameters://参数,在.cc中使用 gates: //外部接口 endsimple
(2)复合模块定义 module 复合模块名
parameters://子模块中使用 gates://
submodules://子模块列表
connections://子模块gates间的连接关系 endmodule
- 20 -
工程硕士学位论文
(3)网络定义
network 网络名:复合模块类型名 //不能含gates,整个网络没有外部接口 parameters: //参数初始化列表 endnetwork 2. 编码
(1) 编写配置文件(Omnetpp.ini),这个文件包含一些设置——控制仿真程序怎样执行,模型参数值等等,使得模拟程序得知将要仿真的网络,并通过该配置文件传递一些参数。
Omnetpp.ini文件可分为以下几部分:
【General】——包含适应于所有模拟运行的常规设置和所有用户界面。 【Run 1】,【Run 2】,….——包含每一运行设置。这些部分可能包含任意在其他部分中被承认的实体。
【Cmdenv】——包含Cmdenv专门设置。 【Tkenv】——包含Tkenv专门设置。
【parameters】——包含在NED文件中没有赋值的模块参数值。
【OutVectors】——输出矢量的配置记录。你可以通过矢量名称和模拟时间来指定过滤。
(2) 用C++编写仿真程序代码。 (3) 仿真编译,具体过程如下:
nedtool *.ned ——将ned文件编译成_n.cc文件。
opp_msgc *.msg——将*.msg文件编译成_m.h和_m.cc文件。
opp_nmakemake -f -e cc(cpp) 对目录下的所有cc(cpp)文件进行编译,cc或cpp决定于你目录下的文件。若都有,必须都进行编译。之后生成Makefile.vc文件。
nmake -f Makefile.vc生成可执行文件 (4) 仿真结果输出
仿真输出被写进数据文件中:vector矢量文件、scalar标量文件和用户输出文件。OMNET提供了一个名为Plove的GUI工具来观察和绘制vector输出文件的内容。不期望人们单独地使用OMNET++对结果文件进行处理:输出文件是一种能被读进像Matlab或Octave的数学包格式的文本文件,或被输入像OpenOffice Calc,Gnumeric 或MS Excel的电子数据表。所有这些外部程序为统计分析和清晰可见提供了丰富的功能性。
3. 性能分析
OMNeT++仿真软件它有两个结果分析工具:矢量描绘工具Plove和标量工具Scalar。
- 21 -
基于位置预测的Ad hoc网络路由协议研究
(1)矢量描绘工具Plove
Plove用来描绘OMNET++输出的矢量文件,它将每个矢量的线性跟轴边界,缩放比例,标题和标注设置为最频繁的绘图选项。用户通过点击“save picture”按钮可以保存图象到文件中。在windows中,也可以将图片复制到矢量格式的剪切板中,然后粘贴到其他的应用程序中。也可以在绘图之前先对结果进行过滤,过滤能够平均化,切断极限值。通过计算柱状形可进行密度估计等等。
双击“OMNeT++ Plove”图标启动Plove程序,此时Plove自动读你有效目录下的.ploverc文件。首先,点击“load .vec file”按钮,在左边方框中加载一个输出矢量(.vec)文件,然后通过点击中间的向右箭头将左方框内的矢量复制到右方框中,点击“PLOT”按钮开始绘制右方框内所选矢量。也可以点击“Options…”按钮,调整图形风格,改变矢量的标题或增加一个滤波器。
(2)标量工具Scalar
输出矢量体现仿真运行的瞬时行为。但是,为了比较多样的参数设置下的模型行为,输出标量更有用。输出标量格式,使用recordScalar()函数调用来记录标量结果,通常来自模块的finish()方法,相对应的输出标量文件(默认omnetpp.sca)。
双击“OMNeT++ Scalars”图标启动Scalars程序。首先,点击“load output Scalar file”按钮,在窗口下方中加载一个输出标量(.sca)文件,然后选择其中的一个输出标量(.sca)文件,点击“PLOT”按钮开始绘制所选标量。
3.2.2 仿真参数设置与性能评价
如何利用仿真获取的数据对Ad Hoc路由协议性能进行评估是一项重要的工作。主要困难有两个:其一,如何从仿真获取的大量数据中选取有用的部分数据;其二,如何建立路由协议的评价指标。
由于Ad Hoc路由协议基于不同的出发点,协议的性能差距也较大,许多路由协议很难直接拿来进行比较,这些都给Ad Hoc路由协议的整体性能评价带来较大的困难。目前,已有许多文献对Ad Hoc路由协议的性能进行了评估,评估内容主要考虑以下几个方面:
(1)路由开销:路由开销越小,从源节点到目的进行路由发现所消耗的带宽就越小,带宽利用率提高,发送数据分组的机会就越大,有限的无线网络带宽就越能得到有效的利用。
(2)包转发率:包转发率越大,表明数据传送过程成功率越高,重传率降低,网络性能越好。
(3)端到端平均延迟:延迟越小,说明响应越快,网络性能越好。 (4)Ad hoc网络系统生存时间:系统生存时间越长,网络中节点的能量消耗就比较均衡,整个网络连通时间就可能越长,保证路由的稳定性,避免因节点
- 22 -
工程硕士学位论文
能量过早耗尽而出现网络分割,网络拓扑结构发生变化。
另外,路由获取时间的长短和路由的准确性也可以作为衡量一个路由协议优劣的指标。由于ad hoc网络的特殊性,还需考虑带宽利用率和电能损耗问题。
在进行Ad Hoc网络路由协议性能指标的评价时常通过选择不同的仿真网络环境来实现。常见的仿真参数主要有:
(1)移动性
Ad Hoc网络具有动态的网络拓扑结构,在仿真时需要设计一定的网络移动模型来反映动态的拓扑结构、链路的连接与断开。
(2)网络负载
主要包括分组的类型、大小,分组的发送速度,以及网络负载的大小与分布等。
(3)网络环境
包括节点移动速度、方向,节点的数目,移动区域的大小。一般来说,一定范围内节点的数目越少,可能的有效路由也就越少,网络的健壮性就越低,而且一旦节点移动,路由很容易破裂。但节点的数目越少,相邻节点的数目也就越少,节点作为隐终端或暴露终端的概率就小,一定程度上会提高带宽的利用率。
网络的移动模型将在很大程度上影响仿真结果,在设计或选取移动模型时要充分考虑实际情况,特别是移动速度与方向等参数的设置。进行Ad Hoc路由协议仿真最常用的移动模型为Random Waypoint Model,这种模型每个节点静止特定的一段时间后,在仿真空间中随机选取一个目的点,以一个符合均匀分布的速度向目的点移动,在此目的点静止后重复上述过程。其它常见的移动模型还有:Brovmian Motion Model,Column Model,Pursue Model等,但是无论哪一种模型都只是实际网络的一个近似,而且与实际情况的差距较大。目前尚无可以准确捕获一个多跳的Ad Hoc网络各方面特性的移动模型存在。
在相同的网络环境下采用不同的评价指标可以对各种路由协议的网络性能进行分析比较,不同的网络环境可以评价各种路由协议受实际网络环境的具体影响,二者皆具有重要实际意义。移动性的仿真结果可以反映出该路由协议对网络拓扑动态变化快慢的适应能力。对网络负载(包括分组的大小,发送速度及负载的大小、分布)的仿真可反映出该协议对网络业务量变化的适应能力,可依此来选用合适于不同业务量大小的路由协议。不同环境下的各种路由协议的性能指标也会有较大的差异,通过对网络环境的设置可以进一步确定路由协议的特定适应性。
3.2.3 不同负载下Ad Hoc路由协议的OMNeT++仿真
我们采用OMNeT++作为Ad Hoc网络路由协议性能分析的仿真平台,在不同的网络负载及不同负载分布下对AODV ,DSDV ,DSR和TORA四种Ad Hoc
- 23 -
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库湖南大学硕士论文排版样稿(2013标版准)(7)在线全文阅读。
相关推荐: