zoukankan      html  css  js  c++  java
  • 1、OPNET中的关键概念(转)

    1事件的持续时间

           OPNET允许多个事件同时发生,因此要限制每个事件的持续时间为零。否则后续事件也需同一仿真时间开始,导致事件表的调度出现问题。这也是为什么将对事件的执行称为中断的原因。

    2、仿真时间和物理时间

          OPNET 推进是仿真时间,和逝去时间(Elapsed time)有着本质的区别。逝去时间是仿真程序运行的时间,是真实的时间反映了仿真程序执行的速度,由机器的硬件速度决定。而仿真时间是系统仿真的时间进度,反映当前仿真执行的进度,是一个抽象的时间它的推进是根据仿真的逻辑来定。仿真时间的推进随着事件的发生而单调递增。执行事件不需要时间,事件之间可能跨越时间,但是不消耗物理时间,事件执行过程直至事件执行完毕,仿真时间不推进,但需要物理时间,这个物理时间是受机器CPU 的限制。 3、变量

    HB:头区域,定义常量,头文件,宏,全局变量,数据结构,数据类型及函数声明。

    SV:状态变量区,定义状态变量,状态变量在不同的进程切换之间,保持值不变。

    TV:临时变量区,定义临时变量,临时变量在不同的进程切换之间,无法保持值不变。

    FB:函数区域,定义和进程相关函数。

    DB:诊断区域,定义C/C++语句,将诊断信息输出到标准输出设备中。

    TB:终止区域,定义C/C++语句,这些语句将在进程销毁时执行,一般为释放内存等语句。

    HB中定义全局变量,而SV是状态变量。全局变量是在项目里保持的,而状态变量是在单个进程里保持的。同一项目中的不同进程中的HB定义的变量不可重复初始化。SV为整个进程范围的“全局变量”,它的值在进程范围内(强制和非强制状态)保留,状态变量为每个进程保持个性化提供机制TV是临时状态,当离开一个状态后,值原则上不会保留;另外,TV变量只有在从某个状态转到内核时,TV变量才被系统自动销毁(除自己动态分配内存的),即有两个连续的强制状态,TV变量在两者之中是保留的。

    统计量用来记录感兴趣的值,仿真结束后,这些值可以自动转化为图形以供分析。

    当需将一个进程模型的状态变量复制到本进程模块时,可以在SV中点Edit ASCII,来复制代码。

    进程中将不让用户随便动的属性设成hidden,这样在节点中就看不到了。      init状态的上半部双击鼠标,打开它的入口代码。      init状态的下半部双击鼠标,打开它的出口代码。      转移描述从一种状态到另一种状态的过程和条件。包括四个组件:源状态,目的状态,转移条件和转移执行代码。

         仿真核心为整个仿真有秩序地运行维护了一个事件列表,当一个事件到达事件列表的队首时它变成一个中断,并调度给指定的模块。状态与状态之间通过转移线transitions 相连。转移线可以是带条件的(必须满足条件才能转移)或者无条件的(直接转移)。 4、名词

    1)子网

    OPNET子网和TCP/IP的子网不是同一个概念。OPNET的子网是将网络中的一些元素抽象到一个对象中去。子网可以是固定子网、移动子网或者卫星子网。子网不具备任何行为,只是为了表示大型网络而提出的一个逻辑实体。

    2)项目

    一个工程就是一组仿真环境,一个场景就是其中的一个具体网络仿真环境配置方案。场景是网络的一个实例,一种配置,如拓扑结构、协议、应用、流量以及仿真属性等设置。

    3)节点(Node)

    节点通常被看作设备或资源,由支持相应处理能力的硬件和软件共同组成。数据在其中生成、传输、接收并被处理。Modeler包含三种类型的节点:第一种为固定节点,例如路由器、交换机,第二种为移动节点,例如移动台。第三种为卫星节点。

    4)链路(Link

    链路模型,代表连接设备的物理媒质,可以是电缆或者光缆。相对固定节点、移动节点以及卫星节点,链路也有不同的类型,有点对点的链路、总线链路以及无线链路。点对点的链路在两个固定节点之间传输数据;总线链路是一个共享媒体,在多个节点之间传输数据;无线链路是在仿真中动态建立的,可以在任何无线的收发信机之间建立。卫星和移动节点必须通过无线链路来进行通信,而固定节点也可以通过无线链路建立通信连接。

    5)仿真随机种子(seed)

    seed是产生随机数的种子值,反映随机数的状态。只要选定一个种子值,整个随机事件系统就固定了,复杂仿真的随机过程就成了一次实现。目的是测试仿真系统的稳健性,具体来说,针对不同的seed值进行一系列仿真,每次不同seed值对应的仿真结果相近,则表明建立的模型有较高的稳健性(scalability)。

    6)模块(module)与仿真(simulation)

    对于某个协议的仿真,可能因为其涉及的事件及其相互的联系非常庞大,造成建模的困难,这时我们把该协议分解成一系列的协议行为,对这些行为单独建模后通过有限状态机把它们联系起来后便形成一个系统,这个系统可以称之为模块,它将抽象的协议直观化。

    而仿真是基于一系列模块的一组实验,它反映模块和模块之间的互相作用关系。每个网络对象(链路除外)都是一个节点模型,它由一个或多个模块(Modules)组成,模块与模块之间通过包流(Packet streams)或状态线相连。而模块实际上为进程模型,它通过状态转移图(STD, State Transition Diagram)来描述模块的行为。

        因此,从分层的角度来看仿真比模块的属性高。同样,仿真属性具备比模块属性更高的等级,代表最高级别的参数。

    7对象IDObjid)与用户IDuser id

    Objid是对象识别号系统分配的,全局唯一,整数。user id是节点模型(对象的一种)的一个属性,由用户设置,可以不惟一。

        8)属性的提升(promoted)与隐藏

    属性的隐藏使得属性的可读具有阶层性,如有些厂商设备的一些性能参数用户并不需要调节的,而为了避免用户混淆就把这些属性隐藏起来,变成预设值(default value),当需要时再去底层查找。

    与属性的隐藏相反,OPNET规定等级低的参数可以不断提升(promoted),最后可变成级别最高的仿真属性。这种用法的主要用在测试某个参数对网络仿真结果有何影响的场,用户需要把在底层的参数提升出来就可以在仿真之前在仿真属性设置对话框中调整这些参数。属性的提升至仿真属性有一个特殊的用途,就是可以成为序列仿真的输入变量。

      9模型(model)、模块(module)与对象(object

       模型通常指的是进程模型、节点模型和网络模型等。

        模块具有实在的物理含义,例如进程模块(processor),就是节点模型里面的小方块。

        对象分为两种,一种是抽象对象,如复合属性;第二种是具体对象:例如模块(module)、节点、收信机、发信机。在OPNET中对象提出的目的是设置和获取它的属性,因此对象需要有它的对象IDObjid,作为程序获取对象属性的依据,一般通过IMA核心函数(以Objid为输入参数)获取或设置对象的属性。

    值得一提的是进程模型(process model)没有Objid它不是一个对象,而是抽象概念代表协议行为的逻辑关系,在没有被激活成进程时,对仿真没有任何意义。

    因此模型(model)和对象(object)没有必然的联系。

    10OPNET中标准模型的命名规则为:

    <protocol1>_..._<protocoln>_<function>_<mod>其中<protocol>为模型用到的协议,可能同时用到几个协议<function>代表模型的大致功能<mod>模型派生类别。

  • 相关阅读:
    MySQL存储过程和函数
    MySQL数据类型
    MySQL—基础(SQL语句)
    如何将一串字符串按照某个特定的字符分割后倒叙输出,如:www.baidu.com输出为com.baidu.www
    JAVA WEB数据中文编码问题
    如何用一条SQL语句从登录日志表中查询统计出每个人登录的次数
    JAVA WEB tomcat启动关闭问题
    thinkphp知识点
    smarty模板内容
    smarty基础
  • 原文地址:https://www.cnblogs.com/finalstar/p/2404932.html
Copyright © 2011-2022 走看看