2.2.3 基于包的通信仿真机制
为了模拟实际网络中包的流动、模拟实际网络协议中的组包和拆包过程以及模拟过程中查看任何特定包的包头和净荷,OPNET采用的是基于包的建模机制。
数据包是最基本的信息传输载体[6],通过传递数据包在模块之间来通信。数据包流定义在目的模块的输入端口和源模块的输出端口之间,在同一个节点内部的不同模块间传递数据。目前,OPNET中有三种通过数据流传送数据的方法:
(1)非强迫调度模式:目的模块根据数据流的中断来获知数据包的到达。但当有正在服务的高级中断存在时,目的模块要等待此中断完成之后才可以引起中断。
(2)强迫模式:这是一种比较紧急的数据处理方式。当数据包到达目的模块立即引发中断。
(3)静止方式:数据包到达后便将数据包插入到输入队列存储区中,不引发中断。当目的模块发现并取出该数据包后,便完成了此次数据传输任务。
2.2.4 OPNET仿真建模机制
OPNET中的建模机制是在三个不同的层面上共同完成的,也称为三层仿真建模。最底层为进程模型,以状态机来描述协议;其次为节点模型,由相应的协议模型构成,反映设备特性;最上层为网络模型。三层模型和实际的协议、设备、网络完全对应,全面反映了网络的相关特性。
(1) 建立进程模型
进程模型通过有限状态机(FSM)表示,使用有限状态机可以有效的支持规范、协议、应用、算法及排队的策略。它使用图形化的状态和状态转移条件来定义一个事件的逻辑。每个状态使用C/C++语言,利用专门为协议设计提供的丰富的函数库来完成事件的控制。有限状态机是动态的,可以在仿真中对其他有限状态机引起的事件进行响应。用户可以使用OPNET模型库中自带的进程模型,也可以使用进程编辑器开发自己全新的进程模型。
在使用库中节点模型但还需要进行底层进程修改时,需要使用Process Editor来建立进程模型。但在下列情况下不需要进行此过程:不需要修改进程模型而完全使用库中节点模型时;库中有替代进程模型存在时;完全使用库中节点模型时。
(2) 建立节点模型
节点是网络模型中的对象,节点编辑器用来定义每个网络对象模型。它使用不同的模块来描述节点对象的不同行为,展示网络设备和系统的的体系结构。这些模块一般模拟节点行为的一个或几个方面,如数据的创建、数据存储等。模块之间通过包流或者统计线进行连接,一个网络对象通常有多个典型的模块组成,来定义它的行为。
(3) 建立网络模型
我们通常在网络模型中将上述已有的或新建的设备互连成网络。也就是在所需的网络模型建立好后,根据仿真网络,建立起网络模型之间的有机连接,从而将整个仿真网络系统映射为OPNET网络模型。它可以从每个网络对象或者整个网络中选择统计量,然后运行仿真,最后查看比较结果。
2.3 OPNET仿真流程
OPNET Modeler为通信网络和分布式系统的建模和性能评估提供了一个综合的开发环境和分析平台[7]。在进行具体的网络仿真时,需要按照OPNET的仿真流程进行仿真。仿真流程可以使仿真思路清晰,结构明确。典型的仿真流程如下:
(1)了解需求:收集和分析网络工程设计文档;
(2)建模:建立进程模型、网络对象模型和网络模型;
(3)配置网络流量:配置应用、分布、背景流量来模拟实际网络环境中的负载情况; 基于OPNET的TCP协议研究与仿真(4):http://www.youerw.com/tongxin/lunwen_1272.html