没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
基于OMNET++的tictoc仿真实验报告
一、 实验原理简介
1.1 OMNET++简介
OMNET++是面向对象的离散事件仿真工具,它是由布达佩斯大学通信工程
系开发的一个开源的、基于组件的、模块化的开放仿真平台,具有强大的图形用
户界面接口和嵌入式仿真内核。OMNeT++可以用来仿真任何离散事件的系统,
包括仿真通信协议、计算机网络、并行系统、多处理器系统和分布式系统。它能
够建立目前几乎所有网络对象的基本模型之间的互联,并且使复杂的网信通信和
拓扑结构得到容易而正确的仿真。
1.2 OMNeT++特性
OMNeT++在描述模型、定义网络拓扑、实现模型、跟踪支持、调试、性能等多
方面都显示出强大的优势。与同属于非商业软件的NS-2[61相比,OMNET++具
有更加突出的特性。①编程仿真能力和可移植性。OMNeT++和NS-2在编程能力
方面的功能都很强大。OMNeT++可以在Windows系统和Linux系统等多种操作系
统上运行,它生成的仿真程序是可携带的,可以独立运行于多种操作平台之上。
OMNeT++提供NED(Network Description)和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 图形界面停止它。
4.使用 opp_makemake 命令创建 Makefile 文件。Windows+msvc 环境用户使
用 opp_nmakemake 命令创建 Makefile.vc 文件。
5.使用 make 命令编译。Windows+msvc 环境用户使用 nmake-fMakefile.vc 命
令编译。
6.创建配置文件 omnetpp.ini。该文件可以向模型中传递参数。
7.运行 tictoc 进行仿真
8.选定仿真的网络实例名为 tictoc1,进入界面后,单击工具条中 RUN 按钮开
始仿真。
主窗口的工具栏显示的是仿真时间,这是个虚拟时间,和程序运行的真实时
间(你家墙钟记录下的)没有任何关系。事实上,这里显示的仿真时间所对应的物
理世界时间的多少更多依赖于你的硬件条件,而不是仿真模型本身的性质和复杂
度。提示到在这里的节点本地处理消息时间为零仿真时间,该模型中,仅仅只有
链路传播延迟能产生仿真时间。
9. 在仿真图形窗口的顶部(右上角),有一个滑动按钮,你可以通过它来控制
仿真速度;按F8 停止仿真(相当于按下工具栏的STOP 按钮),F4 是单步执行模
式,F5 是连续带动画模式,F6 是连续无动画模式,F7 是极速模式,完全关闭
跟踪特性来追求最大速度。注意到状态栏上的event/sec 和simsec/sec 的量度不同
(译者注:event/sec 是每秒处理的事件数,而simsec/sec 是每秒所经历的仿真时
间秒数,在本例中,每100ms 产生一个事件,故前者刚好是后者的10 倍)。
10. 点击关闭图标或者选择”File” -> “Exit”来退出仿真程序。
二、 改进型的两节点tictoc
1:增强图形显示,添加调试输出
在这里, 我们将 做一 些工作使 得模型 在 GUI 界 面里更 好看一 些,选
择”images/block”目录下的routing.png 文件作为tic和toc的图标,分别涂上青色和
黄色。这个工作通过在 NED文件里增加显示代码行。 ”i=block/routing”代码行指
示了图标文件所在的位置。
剩余11页未读,继续阅读
资源评论
苦茶子12138
- 粉丝: 1w+
- 资源: 7万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功