收稿日期:2002-08-21 第20卷 第10期计 算 机 仿 真2003年10月 文章编号:1006-9348(2003)10-0089-03网络仿真的研究侯宗浩1,2,王秉康1,黄泳翔2(1.第四军医大学西京医院信息科,陕西西安710032;2.西安交通大学计算机系新型机所,陕西西安710049)摘要:该文研究了网络仿真软件的发展背景及国内外研究现状,描述了网络仿真的一般步骤,分析了网络仿真软件的原理及其基本组成,并对当前最为流行的仿真软件OPNET 和NS2的特点做了简要的介绍。
关键词:网络仿真;仿真;软件中图分类号:TP391.9 文献标识码:A1 简介网络仿真是一个很有用的网络研究工具,它以系统理论、形式化理论、随机过程和统计学理论、优化理论为基础。
在设计阶段,仿真方法可提供一个虚拟模型来预测并比较各种方案的性能;运行阶段,通过对不同环境和工作负荷的分析和比较,来优化系统的性能。
在某些情况下,仿真是唯一可行的方法和技术。
仿真方法的抽象化程度比数学分析方法低,耗费的时间比测量技术少,其低成本和有效性是其他传统方法不可替代的。
随着网络新技术的不断出现和数据网络的日趋复杂,对网络仿真技术的需求必将越来越迫切,网络仿真的应用也将越来越广泛,网络仿真技术已成为研究、规划、设计网络不可缺少的工具。
从80年代开始,在美国等发达国家就一直致力于开发商业和非商业用途的网络仿真产品。
近年来,我国的网络仿真研究和应用得以发展。
1997年,CERNET 网络中心开始开发自己的网络仿真软件;1998年后,我国多家单位陆续引进OPNET 网络仿真软件,用于网络协议开发、网络规划设计和应用的研究。
2 网络仿真的一般步骤一个完整的仿真一般要经过问题定义、建模、模型确认、数据采集、程序编制和验证、模型运行和结果展示等一系列环节。
通过问题定义,可以更进一步的明确仿真的目的和要求。
网络仿真模型是仿真系统的核心,它是对真实网络系统的简化,必须包含决定网络系统本质属性的主要因素及其逻辑关系,使模型具有很好的代表性。
建模和模型的验证是两个技术性很强的工作。
模型确认一般有三种途径:专家分析;对模型假设的检验;初步仿真结果与真实系统的一致性比较等。
数据采集是网络仿真的一个重要方面。
系统的性能不但取决于系统本身,还和系统上运行的工作负荷等多种因素有关;历史数据往往是仿真的数据来源之一,实时网络数据的采集可以为优化网络性能提供第一手的资料,模拟产生的数据必须考虑到多种随即因素的综合作用,涉及到多类分布。
早期的网络仿真系统多采用通用程序设计语言,由于计算机网络系统的复杂性和对数据的苛刻要求,使得设计难度非常之大,由此引发了对面向过程、面向事件和面向对象的仿真工具的开发。
目前所实施的仿真,多采用此类工具。
通过模型的运行和结果的展示,可以得到仿真的结果。
实际上,上述过程是一个需要不断修改和完善的过程。
需要指出的一点是:网络仿真模型并不是越详细越好,详细意味着需要更多的参数,无用的参数可能使仿真结果变得不准确,另外,详细的模型会使系统的处理效率下降。
因此,在建模过程中,选择合理的仿真层次非常重要。
3 仿真软件设计原理网络仿真是随机离散事件仿真的一种。
离散事件仿真就是按离散事件发生的先后顺序对事件进行排序,并通过事件发生时对系统状态的影响来模拟实际系统的运行特性的。
随机离散事件是系统状态发生变化的原因,它们是离散系统仿真中最基本的要素。
仿真过程中通常都有两类实体:固定实体和流动实体。
固定实体是仿真过程中始终存在的实体,用于接受或拒绝流动实体的进入,对于进入的流动实体,需按照特定的逻辑或数学关系,对其做排队、转移、逗留或处理,从而使流动实体按所需的要求在模型中流动;流动实体是仿真所处理的对象,它服从一定的概率分布,从系统外部输入系统,在仿真模型的框架结构中运动,每当到达或离开模型中某一固定实体时,就触发各项离散事件。
网络仿真中,典型的固定实体包括网络设备和协议等,流动实体指各种数据包等。
网络仿真软件的实现原理如图1所示,其基本组成及其解释如下:1)未来事件列表—98—图1 仿真软件原理图它记录着已发生事件所触发的所有未来事件及其发生时刻。
也即它是将要发生的事件的列表。
某一随机事件的执行,必将引起系统的状态发生变化,并引起新的未来离散事件的产生。
未来事件表是仿真时钟推进的依据,也是离散事件按正确顺序排列的依据。
2)仿真时钟及其推进机制仿真时钟是随着仿真的进程而不断更新的时间机构。
仿真时钟是仿真模型中的时间指示,它代表仿真模型的真实时间,而不是运行所占用的CPU 时间。
通常,在仿真开始时将仿真时钟置零,随后,仿真时钟不断地给出仿真时间的当前值。
仿真时钟一般有两种推进方式:面向事件和面向时间间隔。
面向事件的仿真时钟不是连续推进,而是按照下一个事件预计要发生的时刻推进。
为此,需将各事件按发生时间的先后次序进行排序;而面向时间间隔的仿真时钟则依据很小的时间区间等距推进,每次推进都需扫描所有的活动,以检查在此时间区间内是否有一个事件发生。
3)系统的状态变量仿真系统中的各对象组件在不同的时间间隔具有不同的状态,状态变量就是用于记录这些状态的全局变量,状态变量的改变一般由某个事件触发。
4)事件进程每一个事件都由一个进程来仿真,事件一般由未来事件表触发,用于修改仿真对象的状态,这些进程修改系统的状态变量并分配其他的事件。
5)随机数发生器实际系统都包括各随机因素的交互影响,在仿真过程中需处理大量的随机因素,如随机事件和流动实体的发生时刻、流动实体在固定实体中的逗留时间等,因此,仿真系统必须具备比较完善的、能够产生多种概率分布的随机变量的随机数发生器。
随机数一般都通过一定的算法来实现,但算法实现存在一个问题,即第i +1个随机数是由第i 个随机数按一个公式计算而来,只要计算的初始值(种子值)一样,则以后产生的随机数流中的每一个随机数都是确定值,从本质上讲都不具备真正的随机性,此方法产生的随机数也因此被称为伪随机数。
伪随机数一般足以满足工程上使用的需要。
当算法导致一个重复值时,就开始循环,即出现所谓的“退化”。
为产生近似于所要分布且具有独立性的随机数流,必须仔细的设计算法,并严格的统计检验算法,防止退化。
6)仿真结果的输出和分析进行数据的汇总和计算,反映事件发生前后的变化情况等。
提供仿真结果的展示,可以以图表、图形、动画等,复杂系统的分析用到人工智能技术。
7)其他:如初始化进程,用户参数的输入,仿真跟踪子程序,动态内存管理子程序等。
以上七个组成部分融入在图1所示的模型之中,该模型形象的描述了网络仿真的基本原理。
仿真系统涉及的内容非常复杂,如:为了仿真网络流量,还要用到排队论、马尔可夫链和自相似理论等,目前许多先进的网络仿真产品都通过分布式和分层的方式实现。
以满足大型拓扑结构的需求和性能的提升。
网络仿真软件系统的原理基本上是相似的,它们的主要区别不在于有没有什么功能,而是此功能提供到了什么程度;越是复杂的仿真系统对问题的细化程度越高。
如下面要介绍的两个系统:都提供了网络设备的仿真功能,前一种只提供一个抽象的设备,而后一种产品(OPNET )可以细化到具体厂商的某一个产品型号。
4 网络仿真产品介绍目前,使用最广泛的网络仿真工具莫过于OPNET (商业软件)和NS2(免费软件)。
这两款软件的差别很大,鉴于上述原因,此处不做功能的逐一对比,而是从用户的角度对各自的特点分别给于介绍:1)NS2简介ns2是netw ork simulator (版本2)的缩写,是一个用于网络研究的离散事件仿真器,主要用于仿真各种网络协议和网络体系结构。
Ns 产生于1989年,由RE A L 网络仿真器发展而来,1995年,DARPA 通过VI NT (Virtual InterNetw ork T estbed )项目给予资助,目前由LBL ,X erox PARC ,UC B ,和USC/ISI 协作研制。
ns2采用两种编程语言C ++和Otcl 。
C ++是一个编译性语言,通过它可以有效的处理字节、包头等数据信息,实现运行于大数据集的算法。
因此,对于运行速度要求很高而对程序维护(运行、调试修改以及重新运行的多次反复)速度不敏感的任务非常适用,一般用于协议的仿真研究。
而Otcl (面向对象的T cl )是一个解释性语言,用于书写仿真脚本,适用于大多数网络结构的研究,只要修改一下网络的参数和配置,就可以对大量的场景进行比较,Otcl 运行速度慢但可以快速的改变配置。
两种语言的混合使用,满足了不同的需要,也弥补了彼此的缺陷。
NS2定义了一个3.tr 格式的文件用于记录仿真的结果,通过脚本配置,可以指定文件名并对仿真过程进行跟踪,通—09—过NS2中xgraph的解释,此记录文件可以以图形的方式显示仿真结果。
为了使显示结果更逼真,NS2提供了一个用于产生动画效果的可视化工具:nam(Netw ork Animator)。
nam用于有线和无线网络的可视化,在nam中,执行仿真的人可以控制动画演示的速度,如正向播放、快速前进、快速后退停止运行等,以监视网络的行为(如队列的变化),还可以将动画转换为其他的格式,如gif,从而扩展了仿真结果的使用,如一个网络课的教师可以构造一个以太网的仿真模型,在模型中加入感兴趣的网络属性,从而生成一个具有动画效果的直观的以太网模型,并通过P owerP oint将结果展示给学生。
一个完整的仿真脚本一般包括:创建事件调度表(event scheduler,即前面介绍的未来事件表)、创建网络(包括网络节点、链路及队列)、建立不同节点之间的连接、生成网络流量(traffic),进行跟踪等。
NS2中的网络实体包括:●节点:网络中的硬件实体。
●代理:节点上的软件实体(如T CP,UDP等)。
●链路:用于连接网络各节点。
链路有单工和双工之分。
与链路相关的队列类型包括FIFO、DropT ail、RE D、C BQ、FQ,SFQ,DRR等)●流量生成器:它是一种代理,分为源(S ource)和汇(S ink),分别代表着包的生成方和接受方,主要模拟网络中的业务流。
ns2支持的协议有:tcp,udp,ip,rtp/rtcp,SRM,802.3 M AC,802.11M AC;支持静态单播,动态单播和多播路由协议;支持drop-tail,RE D,C BQ,WRR,DRR,SFQ等队列和包的调度。
可以生成指定的业务流:如C BR(C onstant bit rate);支持链路失效,链路出错;也可以和真实的网络互换数据。
2)OPNET简介OPNET是OPNET T echnologies Inc.公司的产品,最早由麻省理工学院信息决策实验室受美国军方委托开发。