|
知识路径: > 测试技术的分类 > 网络测试 >
|
相关知识点:46个
|
|
|
|
|
网络仿真技术有时也称为网络模拟技术或者网络预测技术。
|
|
|
近年来,随着网络结构日趋复杂,网络规模日趋庞大,新的网络技术层出不穷,网络的应用也越来越多样化。一方面,人们开发出各种新的协议和算法,以满足如服务质量、组播传输、安全、移动网络、策略管理等新的需求。设计和评估这些协议和算法涉及许多问题,尽管实验室中的小规模评价和大范围地在实验床等真实环境下进行实际试验都很有价值,但是每一种都有很大的局限性,缺乏灵活性、扩展性,并且成本太高。另一方面,由于网络的快速增长而导致的扩展性和异构性,对现在的协议机制和相关的设计方法提出了挑战。在这种情况下,网络仿真作为一种新的网络研究和网络规划设计技术应运而生,无论对于网络协议的设计研究,还是网络规划设计,网络的仿真研究日益显示出其重要意义。
|
|
|
网络仿真技术是一种通过建立网络设备、链路和协议模型,并模拟网络流量的传输,从而获取网络设计或优化所需要的网络性能数据的仿真技术。通常,网络仿真都是在计算机中构造虚拟的环境来反映现实的网络环境,通过数学方法或者动态蒙特卡罗方法来模拟现实中的网络行为,从而有效地提高网络规划和设计的可靠性和准确性,明显地降低网络投资风险,减少投资浪费。
|
|
|
|
网络仿真是一种利用数学建模和统计分析的方法模拟网络行为,从而获取特定的网络特性参数的技术。数学建模包括网络建模(网络设备、通信链路等)和流量建模两个部分。模拟网络行为是指模拟网络流量在实际网络中传输和交换的过程。网络模拟获取的网络特性参数包括网络全局性能统计量、网络节点的性能统计量、网络链路的流量和延迟等,由此既可以获取某些业务层的统计数据,也可以得到协议内部的某些特殊的参数的统计结果。
|
|
|
建模中最基本的概念就是同等性。建模的过程实际上是将实际的系统映射到仿真环境中,仿真环境对实际系统的逼真程度,直接影响仿真结果的有效性。但是由于建模本身的复杂性,仿真系统只能从某些方面去模拟实际系统的行为。因此这里的同等性并不是指仿真系统和实际系统的等同,而是指某些方面、某些层次反映实际的系统。具体的同等性依赖建模人员的定义。在通信网络和分布式系统中包含了从底层通信硬件到高层决策软件涉及的多种技术,为了对系统的性能和行为进行有效的预测,一个成功的系统建模要能够充分反映这些子系统及子系统的交互。由于子系统及其每一层都有很大差别,因此对系统建模一般采用多层次建模的方法,再建立建模域与实际系统的对应关系。
|
|
|
网络仿真采用基于包的建模机制来模拟实际物理网络中包的流动,包括在网络设备间的流动和网络设备内部的处理过程;模拟实际网络协议中的组包和拆包的过程,可以生成、编辑任何标准的或定义的包格式,利用调试功能,还可以在模拟过程中察看任何特定包的包头(Header)和净荷(Payload)等内容。
|
|
|
|
|
. 网络仿真能够为网络的规划、设计提供可靠的定量依据。
|
|
|
网络仿真技术能够迅速地建立起现有网络的模型,并能够方便地修改模型并进行仿真,这使得网络仿真非常适用于预测网络的性能,回答“what…if…”这样的问题。例如:“如果网络扩容,骨干中继链路带宽需要扩大多少”“如果网络上增设新的业务,对网络性能有什么影响,网络上的哪些链路或网络设备需要升级和改造”“如果网络拟采用新的技术升级,网络的性能会有多大幅度的改善;这种改善与投入相比是否值得;同时新技术的引进是否会带来负面影响”。
|
|
|
. 网络仿真能够验证实际方案或比较多个不同的设计方案。
|
|
|
在网络规划设计过程中经常出现多个不同的设计方案,它们往往各有优缺点,很难作出正确的选择。因此如何进行科学的比较和取舍往往是网络设计者们感到头疼的事。网络仿真能够通过为不同的设计方案建立模型,进行模拟,获取定量的网络性能预测数据,为方案的验证和比较提供可靠的依据。这里所指的设计方案可以是网络拓扑结构、路由设计、业务配置以及流量规划等。
|
|
|
|
. 大中型企业的网络具有复杂的网络结构和协议配置,网络仿真工具可以辅助企业的网络管理人员管理其网络,而且网络仿真往往具有很好的开放性和互联性,可以和当前很多流行的网络管理和监控软件协同进行工作。
|
|
|
. 企业业务通过网路进行传输,应用对网络的可靠性以及有效性具有较强的依赖性,在企业业务达不到服务质量的要求时,如网上交易、数据库等业务响应时间不满足性能需求,仿真器可以捕捉重要的流量进行分析,从业务、网络、服务器等方面找出瓶颈。
|
|
|
. 仿真器通过对整个业务层、流量的模拟,能够有效地查出业务配置中产生的错误,例如某服务器配置不好,易被黑客攻击以及某些业务的参数配置不合适等情况。
|
|
|
. 网络模拟系统可以模拟实际网络中的各种故障,如链路中断,服务器重启等情况。因此对于可能出现的故障,通过模拟,可以知道在这种情况下用户上网会受到怎样的影响,路由协议需要多长时间收敛,路由跳数是否会增加太多,备用链路的带宽是否足够等。
|
|
|
. 通常新增业务需要选择适当的网络做测试,这样成本很高而且具有一定的风险。网络模拟集成了非常多最新的技术和应用(如MPLS、MULTICAST等),因此可以模拟开展新业务和增加新用户时的网络状况,分析可能对网络造成的影响。
|
|
|
. 网络模拟的流量模型包含了业务量的信息,因此它可以用来预测不同业务的增长规律和在网络中所占的比重,这对网络规划设计和维护都有重要的参考价值。
|
|
|
|
. 对于从事新协议研究的研发机构,如军方和政府的研发机构、大专院校等,网络仿真可以有效地模拟协议的各种行为细节,构建接近真实有代表性的网络环境和业务,使得测试结果能够公正地评判新协议的性能。
|
|
|
. 对于大型通信设备制造商,网络仿真工具被作为其网络设备、协议以及应用开发的工具。
|
|
|
|
考虑到电子商务系统、电子政务系统等未来发展的扩展性,预测网络流量的变化、网络结构的变化,对用户系统的影响非常重要。根据规划数据进行预测并及时提供网络性能预测数据。我们利用网络仿真工具可以作到:设置服务水平、完成日常网络容量规划、离线测试网络、网络失效和容量极限分析,完成日常故障诊断、预测网络设备迁移和网络设备升级对整个网络的影响。
|
|
|
通过从网络管理软件获取网络拓扑结构,从现有的流量监控软件获取流量信息(若没有这类软件可人工生成流量数据),可以得到现有网络的基本结构。在基本结构的基础上可根据网络结构的变化、网络流量的变化生成报告和图表,说明这些变化是如何影响网络性能的。网络仿真工具可以提供如下功能:根据预测的结果帮助用户及时升级网络,避免因关键设备超过利用阀值导致系统性能下降;判断哪个网络设备需要升级,这样可减少网络延迟、避免网络瓶颈;根据预测的结果避免盲目的网络升级。
|
|
|
|
|
|
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等工具观看网络模拟运行的过程。
|
|
|
⑨调整配置拓扑结构和业务量模型,重新进行上述模拟过程。
|
|
|