Omnet++介绍精讲.ppt_第1页
Omnet++介绍精讲.ppt_第2页
Omnet++介绍精讲.ppt_第3页
Omnet++介绍精讲.ppt_第4页
Omnet++介绍精讲.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、OMNeT+介绍,陆一飞,NS2(NS3):开放源码的自由软件,著名的用于网络研究的离散事件仿真工具。 OPNET:商业化的通信网络仿真平台。OPNET采用网络、节点和过程三层模型实现对网络行为的仿真。 SensorSim:建立在NS-2的一个采用DSR的802.11网络模型上,目前已停止开发和支持。 ,仿真平台,OMNeT+是Objective Modular Network TestBed in C+的英文缩写,它是开源的基于组件的模块化的开放网络仿真平台。 OMNeT+作为离散事件仿真器,具备强大完善的图形界面接口和可嵌入式仿真内核,OMNeT+主要用于通信网络和分布式系统的仿真。 目前

2、版本为omnet+5.0,OMNeT+,仿真内核库(simulation kernel library,简称Sim) 网络描述语言的编译器(network description compiler, nedc) 图形化的网络编辑器(graphical network description editor, GNED) 仿真程序的图形化用户接口Tkenv 仿真程序的命令行用户接口Cmdenv 图形化的输出工具Plove和Scalar,OMNeT+组成,OMNeT+的用户接口用于实现仿真程序的人机交互。 OMNeT+允许模型内部机制对用户可视化,也允许用户启动和终止仿真,并更改模型内部的变量。 O

3、MNeT+中的图形化接口是一个用户工具,可方便用户了解模型内部的运行机制。 Tkenv和Cmdenv,用户接口,OMNeT+运行结构,OMNet+是面向对象的离散事件模拟工具,为基于进程式和事件驱动两种方式的仿真提供了支持。OMNet+采用了混合式的建模方式,同时使用了OMNet+特有的ned(NEtworkDiscription,网络描述)语言和C+进行建模。,OMNeT+语言,omnetpp.ini 规定了网络,仿真速度,输出文件,网络拓扑范围,节点数量和其它一些参数 module. ned 定义模块(门和连接,参数等),定义网络 module.cc, module.h 实现各函数功能:i

4、nitialize() , handleMessage(cMessage * msg), finish(),OMNeT+基本文件,NED可以描述一组元件(通道,简单/复杂模型),这些组件的描述可以在其他网络描述中得以重用 NED用来定义模型的拓扑结构,方便对一个网络进行模型化描述 文件带有.Ned的后缀,.Ned文件动态地载入到模拟程序,或者用Ned编译器或C+代码链接到模拟器执行。 NED文件可以使用任何文本编辑器或GNED图形编辑器来编写。NED语言用来定义模型中的网络拓扑结构,较为简单的网络拓扑可以使用GNED,但复杂网络的拓扑描述还应该用NED源文件方式书写。,NED语言,输入指示:用

5、于引进其它网络描述文件,引进一个网络描述后,可以使用它所包含的模块通道等组件。 如:import ethernet; / imports ethernet.ned 信道定义:说明一个链接类型的特征,在信道申明中包含三个属性,它们都是可选项的:delay(每仿真秒的传输延时),error(比特错误率),datarate(信道带宽)。,NED组件,channel LeasedLine delay 0.0018 / sec error 1e-8 datarate 128000 / bit/sec endchannel,NED的函数,简单模块:它是复合模块的基本构建成分,它通过申明它的参数和门来定义。

6、 复合模块:它由一个或多个子模块组成。不管是简单模块还是复合模块都可以用做子模块。它们也都能有门和参数,在简单模块能够使用的任何地方复合模块都能使用。它还有两个部分:子模块和链接。 网络模块:模块声明只定义了模块类型,要确实地获得一个仿真器能运行的模块,需要写网络定义,网络定义将前面定义的模块类型声明为一个仿真模块实例。,简单模块和复合模块(1),简单模块和复合模块(2),简单模块和复合模块(3),simple SimpleModuleName parameters: /. gates: /. endsimple 简单模块,module CompoundModule parameters: /

7、. gates: /. submodules: /. connections: /. endmodule 复合模块,network wirelessLAN: WirelessLAN parameters: numUsers=10, httpTraffic=true, ftpTraffic=true, distanceFromHub=truncnormal(100,60); Endnetwork 网络模块,.cc文件中直接或间接定义一个CSimpleModule的子类 以define_Module() 或define_Module_Like()宏注册 作用:声明一个simple module 类

8、型并且建立与相应NED文件的关联。类的名字和NED中的简单模块一样。 每个SimpleModule都必须手动添加该宏。 实现模块类,简单模块,Initialize():在初始化消息放入FES(Future Event Set)后,在执行前被调用,初始化成员变量。复合模块的初始化先于其子模块。 activity():拥有这个函数的简单模块们作为一系列协同程序协同执行,又称之为协同多任务。手动设置模块栈空间,一般为16k,如果模块存在递归或本地变量占空间较大的话,可以设置为更大的栈空间。 handleMessage(): 为每个message / event调用handleMessage()。 你

9、需要在initialize()函数中初始化变量,一些基于协同的函数如wait()、receive()等均不能调用。 SimpleModule的stacksize一定要设置为0。 finish():循环结束(FES没有模拟事件时)后正常中止时被调用,模块的调用顺序刚好与initialize()相反。,重要函数,实例,class Txc1 : public cSimpleModule protected: / The following redefined virtual function holds the algorithm. virtual void initialize(); virtua

10、l void finish(); virtual void handleMessage(cMessage *msg); ; Define_Module(Txc1); ,门(gate)实现模块的连接。OMNeT+支持单向的简单线路,因此有输入门输出门,消息从输出门发出,在输入门接收。 isBusy()成员函数返回门当前是否正在传输。 transmissionFinishes()返回传输结束的时间。 isConnected()成员函数返回门是否连接,门,simple RoutingUnit parameters: /. gates: in: fromPort,input; out: toPort,

11、output; inout: link; endsimple,一个连接: 包含属性(延迟,比特出错率,数据速度)或使用命名的通道; 可能出现在一个for循环中(生成多重连接); 可能是有条件限制的;,连接,例子: node1.outGate - node2.inGate; node1.outGate - error 1e-9 delay 0.001 - node2.inGate; for i=0.4 do node1.outGatei - node2i.inGate endfor;,消息文件mypacket.msg,类似与数据包报文格式,将创建以下文件:mypacket_m.h和mypacke

12、t_m.cc。,消息,message MyPacket fields: int srcAddress; int destAddress; int hops = 32; ;,普通发送 send(cMessage *msg, const char *gateName, int index=0); send(cMessage *msg, int gateId);isBusy(); transmissionFinishes(); 延迟发送 wait(); send(msg,”outgate”); sendDelayed(cMessage *msg, double delay, const char *

13、gate_name, int index); sendDelayed(cMessage *msg, double delay, int gate_id); E.g:sendDelayed(msg, 0.005, outGate); 自传消息 使用scheduleAt()发送自传消息; scheduleAt(absoluteTime, msg); scheduleAt(simtime()+delta, msg); isSelfMessage():判定是否自传消息,消息的收发函数,调用cModule 的par()成员函数可以访问模块指针 int numTasks = par(numTasks);

14、double processingDelay = par(processingDelay);,消息参数,当程序被启动,它就开始读配置文件(omnetpp.ini)。这个文件包含一些设置控制仿真程序怎样执行,模型参数值等等。 配置文件规定一些仿真运行;最简单的情况下,它们一个接一个地被仿真程序执行。 仿真输出被写进数据文件中:vector矢量文件,scalar标量文件,和用户输出文件。,仿真过程,该文件使得模拟程序得知将要仿真的网络,并通过该配置文件传递一些参数。 可分为以下几部分: General包含适应于所有模拟运行的常规设置和所有用户界面。 config network = ? Run 1

15、,Run 2,.包含每一运行设置。这些部分可能包含任意在其他部分中被承认的实体。 Cmdenv包含Cmdenv专门设置。 Tkenv包含Tkenv专门设置。 parameters包含在NED文件中没有赋值的模块参数值。 OutVectors输出矢量的配置记录。你可以通过矢量名称和模拟时间来指,配置文件omnetpp.ini,INET Framework:标准协议模块,包括了互联网的协议栈( TCP, UDP, IPv4, IPv6, OSPF, BGP, 等),有线无线链路层协议(Ethernet, PPP, IEEE 802.11, 等)是由OMNeT+团队维护的。 INETMANET :I

16、NET的分支,主要是为了移动ad-hoc网络。 MiXiM: 主要是为了WSN, body area networks, ad-hoc, vehicular networks(车载网)。 Castalia: a simulator for WSN, Body Area Networks (BAN) and generally networks of low-power embedded devices ,OMNeT+已有模块,omnetpp-4.6解压 进入omnetpp-4.6目录,打开mingwenv.cmd 在打开的命令行窗口中输入 $ ./configure $ make 完成之后,使用omnetpp命令打开IDE界面,或者在ide/目录下双击omnetpp打开IDE界面,OMNeT+安装,*如果机器内存为2G的话,可能会出现“Failed to createtheJavaVirtual Machine” 建议在ide/omnetpp.INI文件中修改 -xms256m -xmx512m,Windows 7下的安装,/ User Manual :http:/www.o

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论