您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 网络模拟和仿真技术概述
网络模拟和仿真技术基础随着网络技术的发展,研究人员不断开发出新的网络协议、算法和应用,以适应日渐增长的网络通信需要。然而由于网络的不可控、易变和不可预测等特性的存在,给新的网络方案的验证、分析和比较带来了极大的困难。虽然构建试验床(Testbed)可以部分解决此类问题,但是试验床的造价高昂,且对大规模网络试验的支持较差。在这种情况下,网络模拟和仿真作为一种新的网络设计和规划技术,无疑给网络研究提供了方便、高效的验证和分析工具。一、什么是网络模拟“模拟”(simulation)是通过建立真实系统的模型来研究系统在一定条件下的行为,它通过建立实际系统的数学模型并按照相同的运行机理模拟真实系统的动态行为。它是脱离真实系统独立运行的,主要分为连续模拟(Continuoussimulation)和离散事件模拟(Discreteeventsimulation),..前者用于模拟随时间连续变化的系统,而后者则假设系统的变化由事件触发,系统状态的变化是基于离散的事件点发生的。网络模拟(Networksimulation)通过构造可控、可重现网络状况的虚拟网络环境,在数学建模和统计分析的基础上对网络行为进行模拟,从而获取特定的网络特性参数,观察特定的网络行为。网络上各种事件如丢包、延迟的发生都是在各可能的离散时间点发生的,因此网络模拟是对随机离散事件的模拟,这里的“事件”即网络状态的变化。在模拟软件内部,事件由各种虚拟网络模型产生。同时,软件内部一般都存在一个离散事件驱动的事件调度器(EventScheduler),它是模拟软件的核心组成部分。事件调度器维护一个按照发生时间进行排序的事件列表(EventList),遵循先进先出FIFO(FirstInFirstOut)的方式执行事件。模拟核心处理完当前事件之后即把当前事件从事件列表中删除,同时获取列表图1模拟软件执行流程中下一个时间点发生的事件并执行,如图1所示。事件执行到事件列表为空即事件全部执行完毕为止。值得注意的是,这里的发生时间参考的是模拟软件内部的模拟时钟,而不是外界物理时钟,模拟时钟代表了模拟的时间推进速度,是一个抽象的时间,并不一定和外界的墙钟对应。图2展示了使用网络模拟软件的主要步骤。网络模型构造和模拟试验这两个部分都是需要不断调试和修改的过程,以提高最终验证结果的准确度和精度。构造时也不能设置过多无用的参数,使得网络模型过于臃肿庞大,降低模拟效率,可能导致仿真精度不高甚至存在较大的误差。二、什么是网络仿真作为模拟发展的高级阶段,“仿真”(Emulation)通过构造仿真系统来全部或者部分的模拟外界系统,使得仿真系统能够接受和被仿真对象一样的数据和执行同样的程序,从而获得相应的结果。网络仿真(Networkemulation)可以看作网络模拟和试验方法的结合。网络仿真系统使用仿真接口(Emulationinterface)作为真实网络应用程序和仿真系统之间的桥梁,它可以将外界真实网络中的IP报文转化为仿真系统内的虚拟IP报文,也可以将虚拟IP报文转化为外界真实IP报文,从而使得仿真系统内部的虚拟网络和外界真实网络能够相互作用。网络仿真和网络模拟的侧重点并不相同:网络模拟用于网络协议和算法的设计,其工作过程是纯计算过程,是模拟器内部的工作流程;而网络仿真用于测试实际的网络应用程序,和外界真实网络有交互,所构造的虚拟网络和外界真实网络是需要进行同步的。也就是说,仿真软件内部规定某一时刻第n秒发生的事件,也是从仿真过程开始之后外界时钟推进到第n秒发生的事件。仿真系统和外界交互的情况如图3所示,从图3可以看出,系统总体结构与模拟软件基本类似,主要的不同是仿真接口和内部时钟需要和外界墙钟同步。由于仿真系统和真实网络之间存在交互,那么必然事件的调度要采取实时的方式。为了使内部时间能够接近外部真实时间的推进,就需要对事件调度器进行修改,不是一个事件处理完马上就推进到下一事件的时间点,而是参考外部真实时钟,在合适的真实时间对下一事件进行处理。网络仿真的作用主要有两种,一是通过在仿真系统内部实现算法和协议,通过真实网络的流量负载来检测协议模型的行为;二是为协议实现或者网络应用程序构建一个虚拟的网络运行环境,让网络报文经过虚拟网络,通过虚拟的网络环境来影响真实的数据流,例如使用报文丢失、乱序、拥塞等等手段来触发协议实现的拥塞控制机制等,来评测协议实现的性能。使用仿真软件的过程和模拟软件基本类似,主要就是按照软件的具体要求将外部网络应用的流量从仿真接口接入并和仿真软件同时运行即可。图3网络仿真系统与外界交互三、网络仿真软件性能比较网络仿真技术是一种通过建立网络设备和网络链路的统计模型,并模拟网络流量的传输,从而获取网络设计或优化所需要的网络性能数据的仿真技术。由于仿真不是基于数学计算,而是基于统计模型,因此,统计复用的随机性被精确地再现。网络仿真技术具有以下特点:一,全新的模拟实验机理使其具有在高度复杂的网络环境下得到高可信度结果的特点。二,网络仿真的预测功能是其他任何方法都无法比拟的;三,使用范围广,既可以用于现有网络的优化和扩容,也可以用于新网络的设计,而且特别适用于中大型网络的设计和优化;四,初期应用成本不高,而且建好的网络模型可以延续使用,后期投资还会不断下降。四、网络仿真相关软件OPNET产品性能简介:OPNET产品主要面向专业人士,帮助客户进行网络结构、设备和应用的设计、建设、分析和管理。OPNET的产品主要针对三类客户,分成四个系列。三类客户是指:网络服务提供商;网络设备制造商和一般企业。四个系列产品核心包括:1.ServiceProviderGuru:面向网络服务提供商的智能化网络管理软件。是OPNET公司的新产品。2.OPNETModeler:为技术人员(工程师)提供一个网络技术和产品开发平台。可以帮助他们设计和分析网络、网络设备和通信协议。3.ITGuru:帮助网络专业人士预测和分析网络和网络应用的性能,诊断问题,查找影响系统性能的瓶颈,提出并验证解决方案。4.WDMGuru,用于波分复用光纤网络的分析、评测。OPNETTechnology公司的仿真软件OPNET具有下面的突出特点,使其能够满足大型复杂网络的仿真需要:1.提供三层建模机制,最底层为Process模型,以状态机来描述协议;其次为Node模型,由相应的协议模型构成,反映设备特性;最上层为网络模型。三层模型和实际的网络、设备、协议层次完全对应,全面反映了网络的相关特性;2.提供了一个比较齐全的的基本模型库,包括:路由器、交换机、服务器、客户机、ATM设备、DSL设备、ISDN设备等等;3.采用离散事件驱动的模拟机理(discreteeventdriven),与时间驱动相比,计算效率得到很大提高。4.采用混合建模机制,把基于包的分析方法和基于统计的数学建模方法结合起来,既可得到非常细节的模拟结果,也大大提高了仿真效率。5.OPNET具有丰富的统计量收集和分析功能。它可以直接收集常用的各个网络层次的性能统计参数,能够方便地编制和输出仿真报告。6提供了和网管系统、流量监测系统的接口,能够方便的利用现有的拓扑和流量数据建立仿真模型,同时还可对仿真结果进行验证。OPNET的缺点:1.价钱昂贵.OPNET的单使用者授权费超过2万5千美金.价格的因素使得盗版猖獗。2.学习的进入障碍很高,通过专门培训而达到较为熟练程度至少需一个多月的时间.3.仿真网络规模和流量很大时,仿真的效率会降低。目前解决方法:采用分层的建模方法,汇聚网络流量,简化网络模型;背景流量和前景流量相配合;流量比例压缩方法;优化调整仿真参数设计;路由流量的简化;结果分析;如何针对不同的统计参数,选择合适的结果收集和处理方法。4.软件所提供的模型库是有限的,因此某些特殊网络设备的建模必须依靠节点和过程层次的编程方能实现。(A.网络仿真软件提供的标准的结果参数,往往不能满足实际用户的全部需要,如果用户需要收集网络设备的某些特殊参数时,必须通过过程层次上的编程来收集自己感兴趣的网络参数。B.一般,厂家提供的网络协议的模型都滞后于标准颁布之日数月甚至一年,如果急需使用厂家模型库中没有提供的新协议、新标准时,就只有通过编程的方法,开发自己的协议模型。C.对于大型网络的仿真,有时需要根据实际情况,通过编程改变模型的某些特性来提高仿真计算效率。)涉及底层编程的网元建模具有较高的技术难度,因为需要对协议和标准及其实现的细节有深入的了解、并掌握网络仿真软件复杂的建模机理。因此,一般需要经过专门培训的专业技术人员才能完成。编程的难度限制了OPNET的普及与推广。此外,建立在OPNET上的仿真平台当前无法脱离OPNET环境,也是OPNET的一个局限性。5.OPNET对路由协议的仿真比较适合,但是对链路的仿真好想就只能通过Pipelinestage来做。例如有用户试了把pipelinestage中radio的propagationdelaymodel的传输速度(default值是光速)改为声波在海水中的速度1500m/s,但是仿真出来的propagationdelay结果居然没太大的改变。而根据使用经验matlab或者spw就比较合适做链路层的仿真。五、NS(NETWORKSIMULATOR)简介UCBerkely的研究人员在NS2的基础上增加了网络仿真模块,开发出NS的仿真版本——NSEmulator,简称NSE。NSE在NS的基础上增加了网络仿真接口和实时事件调度器。数据包通过BPF(BerkelyPacketFilter)提供的包过滤功能进行输入,输出则采用原始套接口(RawSocket)写出到真实网络中,仿真接口提供虚实数据包的转换。它实现的是串行离散事件的仿真,内部仿真引擎只有一个主进程进行处理,因此效率不是非常高,外部真实网络负载较大时不能及时地处理网络上的数据包。目前NSE还处于不断完善中。NSE主页:。NS的设计实现了使用两种程序设计语言,C++和Otcl。这两种程序设计语言都是面向对象的。C++程序模块的运行速度非常快,是强制类型的程序设计语言,容易实现精确的,复杂的算法,但是修改和发现,修正bug所花费的时间较长,因为它比较复杂。Otcl是脚本程序编写语言,是无强制类型的,比较简单,容易实现和修改,容易发现的修正bug,虽然它的运行速度和C++的模块相比要慢很多。NS的仿真原理-网络组件。NSobject是所有基本网络组件的父类它本身的父类是TclObject类。这个类的对象有一个基本功能,就是处理数据包(PACKET)。所有的基本网络组件可以划分为两类,分类器(Classifier)和连接器(Connector)。它们都是NSobject、的直接子类,也是所有基本网络组件的父类。分类器的派生类组件对象包括地址分类器和多播分类器等。连接器的派生类组件对象包括队列,延迟,各种代理,和追踪对象类。应用程序是建立在传输代理上的应用程序的模拟。NS2中有两种类型的“应用程序”,数据源发生器和模拟的应用程序。NS是离散事件驱动的网络仿真器。它使用EventScheduler对所有组件希望完成的工作和计划该工作发生的时间进行列表和维护。NS的工作平台可以是Windows,Linux,Uinx,machitosh,还要求系统装有C++编译器。NS的工作流程:NS代码使用OTCL语言编写,通过OTCL语言解释器解释,使用NS仿真库进行编译和仿真,输出仿真结果,根据仿真结果记录,可进一步进行相关内容分析,生成网络拓补图或者得到数据的可视化的图表。使用辅助的NAM工具,在NS中可以清晰显示网络拓补图,使用XGraph工具,可以将NS的仿真结果用图表形式表示,NS设计的出发点是基于网络仿真,它集成了多种网络协议,业务类型,路由排队管理机制,路由算法。此外,NS还集成了组播业务和应用于局域网仿真有关的部分、MAC层协议。其仿真主要针对路由层,传输层,数据链路层展开,因此NS可以进行对固定,无
本文标题:网络模拟和仿真技术概述
链接地址:https://www.777doc.com/doc-3170293 .html