基于OMNET++的tictoc仿真实验报告.pdf

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

基于OMNET++的tictoc仿真实验报告

一、实验原理简介

1.1OMNET++简介

OMNET++是面向对象的离散事件仿真工具,它是由布达佩斯大学通信工程

系开发的一个开源的、基于组件的、模块化的开放仿真平台,具有强大的图形用

户界面接口和嵌入式仿真内核。OMNeT++可以用来仿真任何离散事件的系统,

包括仿真通信协议、计算机网络、并行系统、多处理器系统和分布式系统。它能

够建立目前几乎所有网络对象的基本模型之间的互联,并且使复杂的网信通信和

拓扑结构得到容易而正确的仿真。

1.2OMNeT++特性

OMNeT++在描述模型、定义网络拓扑、实现模型、跟踪支持、调试、性能等多

方面都显示出强大的优势。与同属于非商业软件的NS-2[61相比,OMNET++具

有更加突出的特性。①编程仿真能力和可移植性。OMNeT++和NS-2在编程能力

方面的功能都很强大。OMNeT++可以在Windows系统和Linux系统等多种操作系

统上运行,它生成的仿真程序是可携带的,可以独立运行于多种操作平台之上。

OMNeT++提供NED(NetworkDescription)和C++两种语言来建模仿真。其中,

OMNeT++用NED来描述仿真模型的拓扑结构,它非常简单,但是具有非常强大

的拓扑定义功能,可以定义模块、链路和网络。NED还可以实现动态加载,便于

更新仿真模型的拓扑结构;C++用来实现模型的仿真和消息的处理等功能。而且

NED文件可以编译为C++代码,连接到仿真程序中。可以说,OMNeT++仿真环

境是用C++实现的。NS-2只能运行在Linux环境中,它使用OTcl和C++两种建模

仿真语言,它生成的仿真程序不具备可携带性。②可仿真模型的范围。OMNeT++

可以支持TCP/IP、SCSI和FDDI等多种协议模型,而NS-2只能支持基于TCP/IP

的协议模型。③仿真效率。OMNeT++支持模块化仿真模型,模块可以灵活地组

合,还可以多次使用。它还支持使用参量,可以在不修改源代码和不重新编译的

情况下。直接设置参量,对不同条件下的网络模型进行仿真,因此比NS-2具有

更好的仿真效率。④仿真结果输出的性能。OMNeT++提供强大完善

的图形用户界面,具有模块输出窗口、监测器和自动生成动画3个输出工具,可

以动态地观察仿真程序的运行情况,而且内存消耗小、速度快。也具有自动生成

动画效果的功能,但没有模块输出窗口和监测器。可以看出,MNET++具有更强

大的计算机网络模型仿真能力,OMNET++更适用于各种计算机网络模型的仿真。

2、TICTOC仿真步骤

首先,让我们来考虑一个包含两个节点的“网络”,节点所做的事非常简单

就是:一个节点创建数据包,然后这两个节点将该数据包来回传送,(就像打乒

乓球一样),我们把这两个节点分别称之为“tic”和“toc”。

从零开始——实现你的第一个仿真的步骤:

1.创建一个工作目录,取名tictoc,并切换到该目录。(译者注:路径名不能

含空格和中文字符)。

2.创建一个拓扑文件来描述该样例网络。拓扑文件是标识网络节点及其链

路的文本文件,有两种编辑方式,可视化以及代码方式。我们对它取名为

tictoc1.ned:、

3.现在我们需要实现简单模块Txc1的功能,通过写一个C++文件(txc1.cc)

来完成。

在初始化函数中我们创建了一个消息对象(cMessage)并通过输出门out对外

发送。因为该门连接到其他模块的输入门,所以仿真内核将会把handleMessage()

函数参数中携带的这个消息传递给其他模块。该消息将会在NED文件中指派给

链路的100ms传播延迟后到达。其他模块收到后同样将该消息送回(仍然经过

100ms的延迟),所以整个过程就像一个永不停歇的乒乓球一样。

在OMNeT++中,所有的消息(数据包、帧、任务等)和事件(定时、超时)都

通过cMessage对象(或它的子类)描述。一旦它们被送出或者被调度,就会被仿真

内核放在”已调度事件”和”未来事件”列表中,直到时钟来临,再通过

handleMessage()传递到相关模块。

要注意到在本仿真样例中,并没有内建停止条件,也就是说,仿真会一直进

行下去。你可以从GUI

文档评论(0)

199****2782 + 关注
实名认证
内容提供者

博士毕业生

1亿VIP精品文档

相关文档