|
知识路径: > 测试技术的分类 > 网络测试 > 网络仿真技术 >
|
相关知识点:8个
|
|
|
|
|
|
OPNET公司起源于麻省理工学院(MIT),1987年该公司发布了其第一个商业化的网络性能仿真软件,提供了具有重要意义的网络性能优化工具,使得具有预测性的网络性能管理和仿真成为可能。经过多年的发展,OPNET公司由于其出众的技术,成为当前业界领先的智能化网络仿真、分析、管理解决方案的提供商,OPNET产品也被大型通信设备制造商、大中型企业、电信运营商、军方和政府方的研发机构、大专院校等广泛采用,应用于协议及应用开发、网络设备开发、网络规划设计、网络管理和故障诊断等领域。
|
|
|
OPNET的产品包括Modeler、ITGuru、SPGuru、WDMGuru以及OPNET Development kit。
|
|
|
. Modeler主要面向设计和研究通信网络、设备、协议和应用,支持所有网络类型和技术。Modeler为开发人员提供了建模、仿真以及分析的集成环境,大大减轻了编程以及数据分析的工作量。面向对象的建模方法和图形化的编辑器反映了实际网络和网络组件的结构,因此实际的系统可以直观地映射到模型中。
|
|
|
. IT Guru是OPNET公司开发的一个核心网络仿真软件包。专门为网络专业技术人员和管理人员进行网络规划、设计、建设以及运营提供决策支持。IT Guru是一个功能齐全、性能优良的网络预测及分析工具软件包。它的主要作用是快速预测网络上的任何变化(如增加新的用户、向新的网络技术转移、推出新的网络应用等),对网络服务等级(如性能)等的影响,指出可能存在的瓶颈之处并提出解决的多种方案。
|
|
|
. SP Guru面向电信运营等的智能化网络管理、规划以及优化,是一个能够辨识整个网络的独特软件产品,包括网络中的路由器、交换机、协议、服务器以及各种应用业务。内嵌于SP Guru的智能代表了当今最新最先进的网络故障诊断、操作验证、规划以及网络设计技术。
|
|
|
. WDM Guru是一个先进的网络规划解决方案,使得业务提供商和网络设备制造商设计出健壮的且节约成本的光纤网络,并为测试产品提供了一个虚拟的光纤网络环境。WDM Guru的多层网络架构,大量的技术支持以及当前最新的优化和设计功能使其成为网络设计人员和规划人员的得力助手。
|
|
|
. OPNET附加功能模块,包括流分析模块(FlowAnalysis)、网络医生模块(NetDoctor)、多提供商导入模块(Multi-Vendor Import)、MPLS模块等。
|
|
|
. OPNET开发包(ODK, OPNET Development Kit)和NetBizODK是一个更底层的开发平台,其中ODK为开发时环境,NetBiz为运行时环境,可以用于设计用户自定制的解决方案,定制用户的界面,并且ODK提供了大量的函数,用于网络规划和优化。
|
|
|
从核心技术来说,OPNET的全线产品都是基于Modeler的核心技术演化和发展而来的,每个产品针对不同的用户群作出了一些特殊的调整和修改。从功能上来说,ODK的功能最强大,它不仅包含了Modeler的建模功能,还包含了界面开发和网络设计的库函数。ITGuru从功能上看是Modeler的一个子集,简单地说,是不具备编程功能的Modeler。而SPGuru也是ITGuru的一个超集,它具备了ITGuru的所有功能,并且在协议的支持上比ITGuru更加全面。
|
|
|
|
OPNET能够准确地分析复杂网络的性能和行为,在网络模型中的任意位置都可以插入标准的或用户指定的探头,以采集数据和进行统计。通过探头得到的仿真输出可以以图形化显示、数字方式观察或者输出到第三方的软件包中去。此外,一系列仿真运行的结果被自动整理到一个单一的OPNET输出文件中,以便于比较分析(比如相对于网络负载的端对端延迟)。
|
|
|
OPNET模型分为Network、Node和Process三个层次,Network模型是最高层次的模型,由网络节点(Node)和连接网络节点的通信链路(Link)组成,由该层模型可直接建立起仿真网络的拓扑结构。Node模型由协议Module和连接Module的各种连接组成,如物理接口Module、MAC Module、IP Module、Route Module、TCP Module、Application Module、Packet Stream、Statistic Wires等。每个Module对应一个或多个Process模型,Process模型由有限状态机来描述,有限状态机用C语言编写。用户可以在上述三个层次的任何地方切入编程,建立所需的Network、Node或Process模型。
|
|
|
OPNET由厂家提供的标准库模块有:x.25、ATM、FDDI、Frame Relay、Ethernet(10M、100M、1000M)、Token Ring、TCP/IP、UDP、RIP、OSPF、LAPB、TP4、DQDB、HSSB、J1850、STB、CATV、SNA、AMPS、VSAT、Circuit Switching、Client-Sever等。第三方提供的库模块有地形仿真库、大气仿真库、SUN网管接口、HP网管接口等。
|
|
|
OPNET允许用户使用FSM(有限状态机)开发自己的协议,并提供了丰富的C语言库函数。OPNET还提供EMA(外部模块访问)接口,方便用户进行二次开发。
|
|
|
OPNET支持面向对象的调试。对网络拓扑、节点/设备的体系结构、过程逻辑(状态机)、传输等不同层次的、不同类型的模型,都有专门的、符合人们习惯的工具来进行编辑和浏览,而不像某些软件那样从上到下全部用框图表示。
|
|
|
网络设备厂家(HP、Cisco、3Com、Xylan等)提供的模型参数全部基于哈佛测试实验室(Harvard Test Lab)的测试结果。
|
|
|
OPNET支持SUN、HP、IBM、SGI工作站和一般PC等硬件设备,可以运行在UNIX、Windows NT等操作系统平台上。
|
|
|
|
Modeler进行仿真的一般流程为建立模型、运行仿真到收集最后结果。如下图所示:
|
|
|
. 理解系统。这一步十分重要,如果不能正确地理解要模拟的系统对象,就无从建模。精确地理解系统成为整个建模的第一个环节,使用者对系统理解的精确性直接影响到所建模型的精确性。
|
|
|
. 理解仿真目的。这里体现了在运行仿真后,仿真的结果能帮助使用者解决什么问题,例如一些常见的问题:如果将以太网Hub换成FDDI的Hub,吞吐量会提高多少?如果用户数增加一倍,对业务的响应时间会有什么影响?
|
|
|
. 选择需要建模的方面。从前面的问题中得到建模的目标,如:求某个接收机的吞吐量;测量修改某条链路对重传率的影响;确定系统工作在什么样的负载下开始不稳定。
|
|
|
. 定义输入和输出。输入可能是固定的(如网络的拓扑结构),也可能是变量(如业务产生源的业务产生率)。研究一个系统的时候,一般是保持一些变量不变,然后在一定范围内变化一两个变量,接着就是确定输出内容(如端到端的时延,吞吐量等)以及显示这些输出最好的方法(图形、表、动画等)。
|
|
|
. 确定系统模型。不同的仿真软件可以从不同的地方来描述使用者的系统模型。做好这一步,需要了解使用者的仿真软件能提供的特性,了解如何使用这些特性来描述自己的系统模型。
|
|
|
. 确定输入,运行仿真。大多数变量保持不变,而只是变动其中的一个或两个变量。一般来说,变动的范围是可以事先知道的。
|
|
|
. 系统结果是否精确。结果的容错性和精确性都需要进行验证。一般来说,需要对输出做出一些预测,然后对预测的结果和实际的仿真结果进行比较。
|
|
|
. 结果是否足够详细。根据需要,要么适当地增大输入的范围,要么将输入限制在一个较小的范围。
|
|
|
. 结果是否稳定。如果仿真结果仍然在增加或者减少,并没有达到一个稳定的状态,需要重新运行仿真,使得仿真能够达到稳定状态。如果一个模型不能够达到稳定的状态,也就说明仿真系统本身不是很稳定。
|
|
|
|
|
|
|
NS起源于Real网络模拟器,最初是为了研究分组交换数据网络中的流量控制和拥塞控制方案的动态性。它提供给用户一种方法来描述网络并观察它们的行为,使用C语言编写,并提供源代码便于用户可以根据他们自己的目的修改模拟器。在此基础上,它是由劳伦斯伯克利国家实验室(LBL: Lawrence Berkeley Labs)、美国施乐公司的帕洛阿尔托研究中心(Xerox PARC: Palo Alto Research Center)、加州大学伯克利分校(UCB: University of California, Berkelay)和南加州大学/科学情报研究所(USC/ISI: University of Southern California / Institute for Scientific Information)等合作,由DARPA资助的VINT工程研究得出的一个仿真工具。
|
|
|
NS基于事件驱动模型,支持协议库,广泛采用了开放的体系结构,用户很容易根据自己的需要开发新协议。目前NS支持的协议基本包括了TCP/IP协议域的所有协议:TCP的各种版本、UDP、RTP、Multicast、无线、移动等。NS的另外一个显著特点是允许将实际网络流量引入到网络仿真环境,这样在某种程度上起到了类似测试床的作用,从而可以在一个接近真实的环境中测试协议的性能。NS是一个面向对象的仿真器,由编译和解释两个层次组成:编译层次包括C++类库,解释层次包括对应的Otcl类。用户以Otcl解释器作为前台使用NS。NS内大部分类是TclObject的子类,用户在解释器环境创建新仿真对象,然后镜像到对应的编译层次对象。这样,在不影响效率的前提下,通过Otcl解释器来使用NS提供极大的灵活性和方便性。
|
|
|
|
NS的核心部分是一个离散事件模拟引擎。NS中有一个“调度器”(Scheduler)类,负责记录当前的时间,调度网络事件队列中的事件,并提供函数产生新事件,指定事件发生的时间。有了这个离散事件模拟引擎,原则上用户可以对任何系统进行模拟,而不限于通信网络系统,用户可以自己完成对所要研究的系统的建模工作,编写各种事件的处理代码,然后利用这个离散事件模拟器来完成对这个模型的模拟。
|
|
|
针对网络模拟,NS已经预先作了大量的模型化工作,NS对网络系统中一些通用的实体已经进行了建模,例如链路、队列、分组、节点等,并用对象来实现了这些实体的特性和功能,这就是NS的构件库。用户可以充分利用这些已有的对象,进行少量的扩展,组合出所要研究的网络系统的模型,然后进行模拟,从而减轻了进行网络模拟研究的工作量,提高了效率。NS的构件库所支持的网络类型包括广域网、局域网、移动通信网、卫星通信网等,所支持的路由方式包括层次路由、动态路由、多播路由等。提供了跟踪和监测的对象,也可以把网络系统中的状态和事件记录下来以便分析。还有数学方面的支持,包括随机数产生、随机变量、积分等。
|
|
|
NS构件库是用两种面向对象的语言编写的:C++和Otcl。其中Otcl是MIT开发的ObjectTcl,即Tcl的面向对象的扩展(Tcl的全称是Toolkit command language,是一种灵活的、交互式的脚本语言,Otcl则是在Tcl中加入了类、实例、继承等面向对象的概念)。NS中的构架通常作为一个C++类来实现,同时,有一个Otcl类与之相对应。这种方式被称为分裂对象模型,构件的主要功能在C++中实现,Otcl中的类主要提供C++对象面向用户的接口。用户通过编写Otcl脚本来对这些对象进行配置、组合,描述模拟过程,调用NS完成模拟。这种方式提高了执行的性能和模拟的效率,增强了构件库的可扩展性和可组合性。
|
|
|
|
|
①进行模拟前,首先要分析模拟涉及哪个层次。NS仿真分两个层次:一个是基于Otcl编程的层次,利用NS已有的网络元素实现模拟,无需对NS本身进行任何修改,只要编写Otcl脚本;另一个层次是基于C++和Otcl编程的层次,如果NS中没有所需要的网络元素,就需要首先对NS扩展,添加所需要的网络元素。这需要利用分裂对象模型,添加新的C++类和Otcl类,然后再编写Otcl脚本。如下图所示为NS仿真流程。
|
|
|
|
|
②开始编写Otcl脚本。首先配置模拟网络拓扑结构,此时可以确定链路的基本特性,如延迟、带宽和丢失策略等。
|
|
|
③建立协议代理,包括端设备的协议绑定和通信业务量的模型的建立。
|
|
|
④配置业务量模型的参数,从而确定网络上的业务流量分布。
|
|
|
⑤设置Trace对象。Trace对象能够把模拟过程中发生的特定类型的事件记录在trace文件中。NS通过trace文件来保存整个模拟过程。仿真完成后,用户可以对trace文件进行分析研究。
|
|
|
⑥编写其他的辅助过程,设定模拟结束时间,至此Otcl脚本编写完成。
|
|
|
|
⑧对trace文件进行分析,得出有用的数据。也可以用Nam等工具观看网络模拟运行的过程。
|
|
|
⑨调整配置拓扑结构和业务量模型,重新进行上述模拟过程。
|
|
|