欢迎来到天天文库
浏览记录
ID:47520579
大小:1.04 MB
页数:12页
时间:2019-09-13
《基于OMNET++的tictoc仿真》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于OMNET++的tictoc仿真实验报告一、实验原理简介1.1OMNET++简介OMNET++是面向对象的离散事件仿真工具,它是由布达佩斯大学通信工程系开发的一个开源的、基于组件的、模块化的开放仿真平台,具有强大的图形用户界面接口和嵌入式仿真内核。OMNeT++可以用来仿真任何离散事件的系统,包括仿真通信协议、计算机网络、并行系统、多处理器系统和分布式系统。它能够建立目前几乎所有网络对象的基本模型之间的互联,并且使复杂的网信通信和拓扑结构得到容易而正确的仿真。1.2OMNeT++特性OMNeT++在描
2、述模型、定义网络拓扑、实现模型、跟踪支持、调试、性能等多方面都显示出强大的优势。与同属于非商业软件的NS-2[61相比,OMNET++具有更加突出的特性。①编程仿真能力和可移植性。OMNeT++和NS-2在编程能力方面的功能都很强大。OMNeT++可以在Windows系统和Linux系统等多种操作系统上运行,它生成的仿真程序是可携带的,可以独立运行于多种操作平台之上。OMNeT++提供NED(NetworkDescription)和C++两种语言来建模仿真。其中,OMNeT++用NED来描述仿真模型的拓扑
3、结构,它非常简单,但是具有非常强大的拓扑定义功能,可以定义模块、链路和网络。NED还可以实现动态加载,便于更新仿真模型的拓扑结构;C++用来实现模型的仿真和消息的处理等功能。而且NED文件可以编译为C++代码,连接到仿真程序中。可以说,OMNeT++仿真环境是用C++实现的。NS-2只能运行在Linux环境中,它使用OTcl和C++两种建模仿真语言,它生成的仿真程序不具备可携带性。②可仿真模型的范围。OMNeT++可以支持TCP/IP、SCSI和FDDI等多种协议模型,而NS-2只能支持基于TCP/IP的
4、协议模型。③仿真效率。OMNeT++支持模块化仿真模型,模块可以灵活地组合,还可以多次使用。它还支持使用参量,可以在不修改源代码和不重新编译的情况下。直接设置参量,对不同条件下的网络模型进行仿真,因此比NS-2具有更好的仿真效率。④仿真结果输出的性能。OMNeT++提供强大完善的图形用户界面,具有模块输出窗口、监测器和自动生成动画3个输出工具,可以动态地观察仿真程序的运行情况,而且内存消耗小、速度快。也具有自动生成动画效果的功能,但没有模块输出窗口和监测器。可以看出,MNET++具有更强大的计算机网络模型
5、仿真能力,OMNET++更适用于各种计算机网络模型的仿真。2、TICTOC仿真步骤首先,让我们来考虑一个包含两个节点的“网络”,节点所做的事非常简单就是:一个节点创建数据包,然后这两个节点将该数据包来回传送,(就像打乒乓球一样),我们把这两个节点分别称之为“tic”和“toc”。从零开始——实现你的第一个仿真的步骤:1.创建一个工作目录,取名tictoc,并切换到该目录。(译者注:路径名不能含空格和中文字符)。2.创建一个拓扑文件来描述该样例网络。拓扑文件是标识网络节点及其链路的文本文件,有两种编辑方式,
6、可视化以及代码方式。我们对它取名为tictoc1.ned:、3.现在我们需要实现简单模块Txc1的功能,通过写一个C++文件(txc1.cc)来完成。在初始化函数中我们创建了一个消息对象(cMessage)并通过输出门out对外发送。因为该门连接到其他模块的输入门,所以仿真内核将会把handleMessage()函数参数中携带的这个消息传递给其他模块。该消息将会在NED文件中指派给链路的100ms传播延迟后到达。其他模块收到后同样将该消息送回(仍然经过100ms的延迟),所以整个过程就像一个永不停歇的乒乓
7、球一样。在OMNeT++中,所有的消息(数据包、帧、任务等)和事件(定时、超时)都通过cMessage对象(或它的子类)描述。一旦它们被送出或者被调度,就会被仿真内核放在”已调度事件”和”未来事件”列表中,直到时钟来临,再通过handleMessage()传递到相关模块。要注意到在本仿真样例中,并没有内建停止条件,也就是说,仿真会一直进行下去。你可以从GUI图形界面停止它。4.使用opp_makemake命令创建Makefile文件。Windows+msvc环境用户使用opp_nmakemake命令创建M
8、akefile.vc文件。5.使用make命令编译。Windows+msvc环境用户使用nmake-fMakefile.vc命令编译。6.创建配置文件omnetpp.ini。该文件可以向模型中传递参数。7.运行tictoc进行仿真8.选定仿真的网络实例名为tictoc1,进入界面后,单击工具条中RUN按钮开始仿真。主窗口的工具栏显示的是仿真时间,这是个虚拟时间,和程序运行的真实时间(你家墙钟记录下的)没有任何关系。事实上,这里
此文档下载收益归作者所有