基于OPENNET的拓扑结构的建模与仿真一、实验目的opnet的拓扑结构的建模与仿真二、实验要求1.采用opnet构建网络拓扑2.采用opnet分析网络的性能3.设备及材料操作系统:Windows2003/XP主机网络模拟器:OPNET三、实验内容3.1概述1)版本:OPNET14.02)OPNETi)OPNET历史和现状NET公司起源于MIT(麻省理工学院),成立于1986年。1987年OPNET公司发布了其第一个商业化的网络性能仿真软件,提供了具有重要意义的网络性能优化工具,使得具有预测性的网络性能管理和仿真成为可能。对于网络的设计和管理,一般分为3个阶段:第1阶段为设计阶段:包括网络拓扑结构的设计,协议的设计和配置以及网络中设备的设计和选择;第2阶段为发布阶段:设计出的网络能够具有一定性能,如吞吐率、响应时间等等。第3阶段为实际运营中的故障诊断、排错和升级优化。OPNET公司的整个产品线正好能面向网络研发的不同阶段,即可以作网络的设计,也可以作为发布网络性能的依据,还可以作为已投入运营的网络的优化和故障诊断工具。OPNET公司也是当前业界智能化网络管理分析解决方案的主要提供商。ii)OPNETModeler介绍Modeler主要面向研发,其宗旨是为了“AcceleratingNetworkR&D(加速网络研发)。Modeler的主要特征:次化的网络模型。使用无限嵌套的子网来建立复杂的网络拓扑结构。简单明了的建模方法。Modeler建模过程分为3个层次:进程(process)层次、节点(Node)层次以及网络(Network)层次。在进程层次模拟单个对象的行为,在节点层次中将其互连成设备,在网络层次中将这些设备互连组成网络。几个不同的网络场景组成“项目”,用以比较不同的设计方案。这也是Modeler建模的重要机制,这种机制有利于项目的管理和分工。有限状态机。在进程层次使用有限状态机来对协议和其他进程进行建模。在有限状态机的状态和转移条件中使用C/C++语言对任何进程进行模拟。用户可以随心所欲地控制仿真的详细程度。有限状态机加上标准的C/C++以及OPNET本身提供的400多个库函数构成了Modeler编程的核心。OPNET称这个集合为ProtoC语言。对协议编程的全面支持。支持400多个库函数以及书写风格简洁的协议模型。OPNET已经提供了众多协议,因此对于很多协议,无需进行额外的编程。系统的完全开放性。Modeler中源码全部开放,用户可以根据自己的需要对源码进行添加和修改。高效的仿真引擎。使用Modeler进行开发的仿真平台,使仿真的效率相当高。集成的分析工具。Modeler仿真结果的显示界面十分友好,可以轻松刻画和分析各种类型的曲线,也可将曲线数据导出到电子表格中。动画。Modeler可以在仿真中或仿真后显示模型行为的动画,使得仿真平台具有很好的演示效果。集成调试器。快速地验证仿真或发现仿真中存在的问题,OPNET本身有自己的调试工具——OPNETDebugger(ODB)。源代码调试。方便地调试由OPNET生成的C/C++源代码。3)软件安装4)软件使用i)启动软件OPNETModeler启动后的界面如图1所示:重要概念:项目与场景(Project&Scenario):OPNETModeler采用“项目-场景”的方法对网络建模。项目(Project):是一套场景的集合,用来探索网络设计的不同方面。一个项目至少包含一个场景。场景(Scenario):是网络的一个实例。通常一个场景代表网络的一套配置,例如拓扑、协议、应用、流量以及仿真设置。子网(Subnet):OPNET子网和TCP/IP的子网不是同一个概念。OPNET的子网是将网络中的一些元素抽象到一个对象中去。子网可以是固定子网、移动子网或者卫星子网。子网不具备任何行为,只是为了表示大型网络而提出的一个逻辑实体。节点(Node):节点通常被看作设备或资源,由支持相应处理能力的硬件和软件共同组成。数据在其中生成、传输、接收并被处理。Modeler包含三种类型的节点:第一种为固定节点,例如路由器、交换机、工作站、服务器等都属于固定节点;第二种为移动节点,例如移动台,车载通信系统等都是移动节点;第三种为卫星节点,顾名思义是代表卫星。链路(Link):链路有3种类型,点对点的链路、总线链路以及无线链路。模块(module)与仿真(simulation):对于某个协议的仿真,可能因为其涉及的事件及其相互的联系非常庞大,造成建模的困难,这时我们把该协议分解成一系列的协议行为,对这些行为单独建模后通过有限状态机把它们联系起来后便形成一个系统,这个系统可以称之为模块,它将抽象的协议直观化。而仿真是基于一系列模块的一组实验,它反映模块和模块之间的互相作用关系。对象ID(Objid)与用户ID(userid):Objid是对象识别号系统分配的,全局唯一,整数。userid是节点模型(对象的一种)的一个属性,由用户设置,可以不唯一。3.2OPNET实验内容目前,公司在办公楼的第一层有一个星型拓扑的网络,现在要在第二层增加另一个星型拓扑网络。这时一个典型的“what-if”问题,所要解决的是确保增加的网络不会导致整个网络的连通失败,如图2所示:3.2.1步骤1:创建新的项目和场景1)打开Modeler。2)从File菜单中选择New...。3)从弹出的下拉菜单中选择Project并单击OK。4)单击OK按钮,出现开始向导,创建新的背景拓扑图,如图4所示:图4.开始向导:创建新的背景拓扑图5)单击Next,选定网络的范围,如图5所示:图5.开始向导:选择网络范围6)单击Next,指定网络的大小,如图6所示:图6.开始向导:指定网络大小7)单击Next,选择OPNET自带的对象模型家族种类,如图7所示:图7.开始向导:选择对象模型家族种类8)单击Next,再次确认环境变量,如图8所示:图8.设置完毕的开始向导9)单击完成,这时出现大小和规格如同所指定的工作空间,同时弹出一个对象模板(包含刚刚选定的对象模型家族的所有模型),如图9所示:通过对象模板中的节点和链路模型来创建网络模型。节点模型:代表实际的设备。链路模型:代表连接设备的物理媒质,可以是电缆或者光缆。可以通过对象模板中的图标直观地看出节点模型和链路模型。可以使用以下三种方法之一创建网络拓扑:导入拓扑图。从对象模板中选择模型并放置在工作空间中。使用快速拓扑配置工具(RapidConfiguration)图9.工作空间和对象模板3.2.2步骤2:创建网络拓扑Topology–〉RapidConfiguration从配置下拉列表中选择Star,单击OK...,如图11所示:图11.RapidConfiguration对话框接下来需要为网络指定节点模型和链路模型:OPNET中标准模型的命名规则为:protocol1_..._protocoln_function_mod其中protocol为模型用到的协议,可能同时用到几个协议function代表模型的大致功能mod模型派生类别。选择中心节点模型为3C_SSII_1100_3300_4s_ae52_e48_ge3。这是3Com公司的交换机。选择周边节点模型为Sm_Int_wkstn,并设置节点个数为30。选择链路模型为10BaseT指定网络在工作空间中放置的位置:设置中心的X和Y轴坐标为25,设置局域网的半径范围为20。设置好单击OK按钮,如图12所示:图12.快速拓扑配置对话框项目编辑器中出现如图13所示的网络拓扑。图13.快速拓扑配置后的网络模型接下来,需要扩展这个网络,首先增加一个服务器。这时将用到第二种创建网络模型的方法:在对象模板中选择模型并放置在工作空间内。打开对象模板,找到Sm_Int_server对象,并将它放置在工作空间中。图14.从对象模板中添加Sm_Int_server对象接下来,需要连接服务器和星型网络:在对象模板中找到10BaseT链路对象。在服务器上单击鼠标左键,移动光标,再单击星型网络的中心节点。这时出现连接两个节点对象的链路。单击鼠标右键结束链路创建。图15.连接服务器和星型网络最后需要为网络配置业务,包括应用定义(Applicationdefinition)和业务规格定义(Profiledefinition),设置业务涉及的内容较复杂,本例程不作要求,因此模板中应用定义对象和业务规格定义对象的参数已经配置好(为Lightdatabase业务),只要将他们放置在工作空间中即可。在对象模板中找到Sm_Application_Config对象并将其放置在工作空间中。单击右键,光标重新移到对象模板中,单击Sm_Profile_Config,并将其放置在工作空间中,单击鼠标右键。关闭对象模板。图16.配置完毕的网络模型3.2.3步骤3:收集统计信息1)打开节点模型编辑器和进程模型编辑器。OPNET采用三层建模机制,最底层为进程(Process)模型,以状态机来描述协议;其次为节点(Node)模型,由相应的协议模型构成,反映设备特性;最上层为网络模型。三层模型和实际的网络、设备、协议层次完全对应,全面反映了网络的相关特性。每个网络对象(链路除外)都是一个节点模型,它由一个或多个模块(Modules)组成,模块与模块之间通过包流(Packetstreams)或状态线相连。而模块实际上为进程模型,它通过状态转移图(STD,StateTransitionDiagram)来描述模块的行为。现在让我们来看看第一层网络服务器的结构:在项目编辑器中鼠标双击node_31(服务器节点),这时打开一个新的节点模型编辑器窗口,如图17所示:图17为以太网服务器的内部结构,它由几个模块以及连接模块的包流和状态线组成。在仿真过程中,来自客户端的数据包被收信机hub_rx_0_0接收,然后由下至上穿过协议栈到application模块。经过处理后,又沿原路返回至发信机hub_tx_0_0,最后被传输到客户端,如图18所示:图18.包的输入输出接口模块―收发机接下来,我们来看看传输适应层tpal模块的内容。在节点模型编辑器中的tpal模块上双击鼠标,打开一个新的进程模型编辑器,如图19所示:图19.tpal进程模型在init状态的上半部双击鼠标,打开它的入口代码。在init状态的下半部双击鼠标,打开它的出口代码。进程中的每个状态(图中红色的或绿色的圆圈)都包含一个入口代码(enterexecutive)和一个出口代码(exitexecutive),它们由C/C++代码组成。入口代码在进入状态时执行,出口代码在离开状态时执行,如图20所示:图20.Init状态的入口执行代码和出口执行代码关闭这两个代码窗口。状态与状态之间通过转移线transitions相连。转移线可以是带条件的(必须满足条件才能转移)或者无条件的(直接转移)。图21包含两条转移线,一条是从wait状态到open状态的条件转移线(虚线表示)。虚线中间的OPEN条件必须满足,wait状态才能转移到open状态。然而,从open状态到wait状态的转移(实线表示)是无条件的,因此当执行完open状态的代码后立即转移到wait状态。图21.状态之间的条件转移关闭节点和进程模型编辑器。2)收集统计量在网络模型中可以对单个对象收集统计量(Objectstatistics),也可以对整个网络收集全局统计量(Globalstatistics)。到现在为止,已经建好了网络模型,现在要根据实例要求解决的问题决定收集哪些统计量:a)服务器有能力处理扩展网络的额外业务负载吗?b)一旦与扩展网络连接,整个网络的延时性能还能够接受吗?为了找到这些问题的答案,需要选择一个对象统计量:ServerLoad和一个全局统计量:EthernetDelay。服务器负载(ServerLoad)是整个网络的性能瓶颈。下面来收集与服务器负载相关的统计量:a)在服务器节点(node_31)上单击鼠标右键,从弹出的菜单中选择ChooseIn