第五章 收集、查看、导出以及发布仿真结果
1.opnet提供两种类型的统计量:矢量统计量和标量统计量,对应的输出文件分别为矢量文件(*.ov)和标量文件(*.os)。收集统计量就是将统计量写入统计量输出文件中。
2.矢量文件包含动态的,基于事件的十进制数据,这些数据为统计量随时间变化的情况,每个数据点都是在某个时刻仿真核心自动将矢量统计量写入矢量文件生成的。一个矢量文件只能包含一次仿真的数据。
3.而标量输出文件可以收集由许多仿真共同产生的结果,只包含静态的数据,以数据块的方式组织数据,每一次仿真的所有标量数据被写入一个相应的数据块中。
4.统计结果的视觉效果选择有3种:individual statistic(一幅图只显示一个结果);stacked statistics(一幅图包含多个结果子图);overlaid statistics(一幅图重叠显示多个结果)。
第六章 OPNET Modeler编程基础
1.创建节点模型需要定义节点模型和定义进程模型两个步骤。
2.在节点模型中,hub进程模块通过包流与发信机和收信机相连。因为每个包的到达都触发hub进程的一次中断,hub进程接收到中断后将从休眠状态(idle非强制状态)激活执行代码处理包(绿色的强制状态)。
就是事件的发生(每个包的到达)使得hub进程模块的idle(空闲)状态中断,激活了该进程。
3.代码解析:
pkptr = op_pk_get (op_intrpt_strm ()); 用来从合适的输入流(输入流索引通过核心函数op_intrpt_strm得到)中取得包(op_pk_get)。
op_pk_nfd_get (pkptr, “dest_address”, &dest_address); 析取包中的目的域,它含有包的目的地址。这里的目的地址实际上是输出流索引,它对应发往目的节点的收信机。
op_pk_send (pkptr, dest_address); 将包发送给相应的收信机。(需要包和目的地址)
4.通过将属性提升,可以使该属性的值在仿真运行时很容易被改变。
5.隐藏属性可以避免用户看到不需要设置参数的属性项,从而能够简化用户界面。这个操作不会影响仿真结果。
6.状态转移条件及条件满足所执行的函数(如SRC_ARRVL/xmt()),xmt()转移执行函数当SRC_ARRVL条件满足时才执行。
7.代码解析:(xmt()函数)
pkptr = op_pk_get (SRC_IN_STRM); 从包流的输入流索引号(SRC_IN_STRM)获取数据包。
op_pk_nfd_set_int32 (pkptr, “dest_address”, (int)op_dist_outcome (address_dist)); 通过调用均匀概率分布函数指针(address_dist,它在init状态中定义)而产生一个随机值,将该值设置为包的“dest_address”域。
op_pk_send (pkptr, XMT_OUT_STRM); 从包流的输出流索引号(XMT_OUT_STRM)将包发送出去。
rcv()函数:
pkptr = op_pk_get (RCV_IN_STRM); 获取包指针
ete_delay = op_sim_time () – op_pk_creation_time_get (pkptr); 通过将当前仿真时间减去包的创建时间得到包的端到端延时。
op_stat_write (ete_gsh, ete_delay); 将计算的延时写入矢量结果文件中。
op_pk_destroy (pkptr); 销毁包。
8.端到端时延(end-to-end delay)是只IP数据报从离开源点时算起一直到抵达终点时为止一共经历了多长时间的时延,即包的延时就是指包的接收时间与包的发送时间差。
9.Topology–>Verify links
10.收/发信机和链路属性(包格式、数据率等)必须和链路的相应属性匹配才能够使链路连通。
11.问题:一步步做下来运行仿真中断,找不到问题。
OPNET Modeler核心函数介绍
1.大多数事件源于某个模块,如流中断源于发送包的模块,自中断、遥远中断和多播中断源于调度它们的进程模块,但有三种事件是没有源模块的,因为它们是仿真核心自动生成的,它们是:仿真开始事件bigsim,仿真结束事件endsim和regular事件。
2.事件可以调度,也可以强制执行。如果事件按照事件列表中的正常顺序执行,则称为调度。而强制执行的事件不用在事件列表中按照先进先出顺序排队,直接“插队”而立即执行。
3.ICI和包一样,都是动态的仿真实体,因此它需要创建和销毁。=>动态的仿真实体需要创建和销毁。
4.标识类函数解决如何获取仿真对象Objid的问题。
5.网络域对象有4种,分别是子网、节点、链路和总线接头。最高层全球网的Objid永远是0,它是所有其它对象的祖父。节点、链路和总线接头是包含它们的子网的子对象。
6.节点域对象为模块(如进程、队列、包生成器、收信机、发信机和天线)。
7.在process model的process interface种有一些属性(attribute):如begsim intrpt,endsim intrpt,failure intrpt,regular intrpt等,尤其是begsim intrpt的设置,会影响init状态的Enter代码何时执行,如果是enabled,那么仿真一开始,即仿真0时刻,可以对process进行初始化,process被触发后,即执行init 的Enter代码;如果是disabled,就不会被kernel触发。如果仿真结束时需要进行一些工作(如变量的收集,内存的释放等),则需要enable endsim intrpt。
8.包的传输是OPNET仿真的主要行为,OPNET规定包传输的两种方式,分别是“发送(sending)”和“传递(dilivering)”。发送是通过连接模块与模块的包流来实现的,而传递不需要实际的物理连接。
9.问题:p162代码看不懂
10.子进程可以自己销毁自己,但是根进程不能被销毁。
11.统计量收集机制:探针(Probe):
探针是特殊的对象,控制着到输出文件的数据流。本身不是模型的一部分,在仿真过程中不影响模型的行为。但是附加在模型中的对象上,可以看成是一个被动的数据收集设备,类似示波器。探针分为统计探针、属性探针和动画探针三类。
统计探针支持本地统计量和全局统计量。本地统计量与一个特定的模型对象关联,全局统计量可能与多个分开的仿真对象有关,全局统计量由进程模型申明,由全局统计探针对象支持。全局统计探针不需要指定它参考的模型对象,只需要引用全局统计量的名称即可。
今天的文章
【opnet】陈敏教程第五、六章学习笔记分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/80720.html