基于OPNET的网络仿真及分析Word格式文档下载.docx
《基于OPNET的网络仿真及分析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于OPNET的网络仿真及分析Word格式文档下载.docx(28页珍藏版)》请在冰豆网上搜索。
第二章OPNETModeler仿真5
2.1OPNETModeler安装说明5
2.2OPNETModeler中的基本概念5
2.3OPNETModeler仿真机制7
2.4OPNETModeler仿真流程9
2.5用OPNETModeler做小型局域网规划仿真10
第三章TCP协议分析13
3.1TCP协议详解13
3.1.1TCP为应用层提供的服务13
3.1.2TCP首部各字段14
3.1.3TCP状态转移图16
3.2各版本TCP协议中的拥塞控制算法17
3.2.1Tahoe版17
3.2.2Reno版18
3.2.3NewReno版19
3.2.4SACKTCP20
第四章基于OPNET的TCP协议仿真21
4.1OPNETModeler中支持TCP协议的节点模型21
4.2TCP协议仿真22
4.2.1仿真网络模型22
4.2.2仿真配置23
4.2.3仿真结果分析24
第五章总结与展望31
5.1总结31
5.2进一步的工作32
致谢33
参考文献35
第一章绪论
本文主要分析了用OPNET进行TCP协议仿真的结果。
本章首先简单的介绍了OPNETModeler的基本特点,TCP协议的功能和版本信息,最后简述了本文的结构安排,是后续章节的简单概括。
1.1OPNETModeler概述
OPNETModeler是由OPNETTechnologies公司研制和开发的网络仿真软件。
它通过执行离散事件仿真来分析各种模拟系统的行为和性能。
OPNETModeler将各个仿真研究阶段所需要的工具整合起来,组成了一个从模型设计工具到仿真核心、数据收集工具和数据分析工具有机结合的大型仿真系统。
OPNETModeler作为一个大型的网络开发工具,具有的特征如下:
面向对象:
OPNETModeler创建的所有系统都有一系列属性可以配置的对象组成。
分级模型:
OPNETModeler中的模型是分级设计的,与实际通信网络的分级结构自然对应。
在2.2节中将详细描述。
图形化编辑:
在工程建模的大多数环节中,可以使用图形化编辑器来定义和编辑模型,因此具有良好的用户接口。
方便的综合仿真和分析工具:
OPNET允许用户统计自己感兴趣的数据量,在仿真过程中自动收集,并且根据收集到的数据量对仿真结果进行图形化比较和性能评估。
另外OPNET还支持动画,来动态的观看统计量的变化。
有限状态机(FSM):
OPNETModeler使用有限状态机来对协议和其他过程进行建模,在有限状态机的状态和转移条件中使用C/C++语言进行描述,可以按需求控制仿真的详细程度。
应用编程接口(API):
OPNET提供许多应用编程接口,以便用户编程进行扩展。
使用应用编程接口也是OPNET与其他仿真工具进行结合、协同仿真的一种重要手段。
OPNET的应用很广泛,典型的应用有网络规划、通信体系结构和协议的研发、分布式传感器网络和片上系统、通信系统排队论研究、无线网络和卫星网络的研究等。
1.2TCP协议概述
TCP,全称是TransferControlProtocol,中文名是传输控制协议,它工作在TCP/IP协议栈的传输层,提供面向连接的端到端的可靠传输服务。
目前很多的应用程序都是基于TCP协议进行传输的,如Telnet、FTP、SMTP等。
TCP的工作是建立连接,然后为应用层程序接收和发生数据。
在发送的过程中,发送方会等待接收方给出一个确认性的应答,否则发送方将认为此数据丢失,并重新发送此数据。
所以在TCP协议中涉及到了报文的标识、报文的确认、报文的有序发送、拥塞识别、拥塞控制等保证TCP健壮性的逻辑。
TCP协议在发展的过程中,逐渐的完善,围绕上述逻辑,提出了很多种改进方案,现在使用的主要有Tahoe、Reno、NewReno、SACK这四个版本。
还有一些改进算法,如Nagle、ECN、Karn等,这些算法增强了TCP的性能。
在第三章中,将详细描述TCP协议以及每个TCP版本中的拥塞控制算法。
1.3研究的意义
OPNET作为网络仿真领域中的重要仿真工具,可以利用它通过数学建模和统计分析的方法来模拟网络行为,从而很好的理解网络运行情况和分析相应的协议。
OPNETModeler中的TCP实现模型参考了RFC文档,学习TCP代码可以加深对TCP算法的了解,从深度上对网络有新的认识。
目前国内外存在很多对TCP进行研究的组织,他们试图通过改进TCP中的某个或某些算法,来提升TCP性能同时又要保证和现存TCP的兼容性。
但成果并不是很明显,工程意义不是很大,所以在本论文中,我们仅对TCP的经典算法进行了研究,这具有重要的实践和工程意义。
另一方面,目前利用OPNET对TCP进行网络仿真时,多采用添加丢包器,而针对IP互联网的TCP网络仿真比较少。
为了分析TCP各个版本在IP网络中的性能,更加真实的接近现实网络,本文进行了IP网络下的TCP性能仿真。
1.4本文的主要工作和内容安排
本文的主要工作:
学习了OPNET的仿真机制,查看了OPNET的英文帮助文档,对OPNET仿真有了一个整体的了解。
然后进行了小型局域网的仿真,解决了网络规划中的一个重要的what-if问题。
接着分析了不同TCP版本中的拥塞控制算法,然后用OPNETModeler进行了TCP的业务流仿真,得到并分析了仿真结果。
全文共分五章,内容安排如下:
第一章:
简要介绍了OPNET的特点和应用、TCP的特点和发展情况,并介绍了本文的组织结构。
第二章:
详细OPNET的仿真环境和仿真步骤,然后对小型局域网的扩展规划进行了仿真模拟。
第三章:
详细介绍TCP协议,并且对TCP各个版本中的拥塞控制算法进行了详细的描述。
第四章给出了OPNETModeler中TCP进程模型的架构,分析了与TCP协议相关的两个进程模型,并对第三章中的各个版本的TCP进行了仿真,最后对仿真结果进行了比较分析。
第五章:
对文章进行了总结并提出了需要进一步改进的方面。
第二章OPNETModeler仿真
本章首先介绍了OPNETModeler的安装环境和方法,然后描述了OPNET中的基本概念、仿真机制和仿真流程,最后给出了用OPNETModeler进行小型局域网仿真的具体实例。
2.1OPNETModeler安装说明
OPNETModeler支持Windows和UNIX操作系统平台下的安装,它在Windows操作系统平台下安装过程比较简单。
另外OPNETModeler支持标准的C/C++语言,但是它本身不带编译器,所以需要和别的编译器协同工作。
在Windows平台上,使用Microsoft的VC作为C/C++编译器。
目前支持的VC版本有:
MicrosoftVisualC++6.X或者VisualStudio.NET。
OPNET有不同的版本,在本论文中,我们使用14.5版本和VisualC++6.0组合。
下面说明WindowsXP下的安装OPNETModeler14.5的过程。
(1)、安装VisualC++6.0,安装过程中会提示是否需要注册环境变量(RegisterEnvironmentVariable)的对话框,选择此选项,并点击“确定”按钮。
(2)、正确安装VC++后,安装Modeler。
执行modeler_145a_PL1_7166_win.exe,按照提示安装OPNETModeler软件,最后选择License类型时,选择Standalone模式。
执行modeler_doc_28-Jan-2008_win.exe和models_145A_PL1_27Feb08_win.exe按照提示安装文档和库文件。
将Crack目录下的所有文件拷贝到下面目录中:
C:
\ProgramFiles\OPNET\14.5.A\sys\pc_intel_win32\bin;
从“开始”菜单启动OPNETModeler,运行LicenseManagement和bin目录下的Mk_Lic.exe来产生License,至此OPNETModeler安装完成。
完成后在安装目录下有Models文件夹和sys文件夹,其中Models中包含OPNET自带的各种协议模型,sys中包含与系统相关的函数。
2.2OPNETModeler中的基本概念
在利用OPNET进行网络仿真之前,为了统一专用词汇,我们需要介绍OPNETModeler中常用到的仿真概念[1]。
1、项目(Project)与场景(Scenario)
在OPNET中仿真是以项目的形式进行的,一个项目就是一组仿真环境,而场景就是项目中的一个仿真环境。
场景是网络的一个实例,一种配置,具体的来说就是拓扑结构、协议、应用、流量以及仿真的设置。
用OPNETModeler仿真时,最高层次是一个项目,每个项目下至少包含一个仿真场景,代表网络模型,它是具体的网络仿真环境的配置。
项目提出的初衷是方便对不同场景的仿真结果进行比较。
项目提供场景复制功能,可以对场景进行备份,通过修改新场景的参数运行仿真来测试系统各个方面的功能及是否存在瓶颈。
2、子网(Subnet)
OPNET中的子网和TCP/IP中的子网不是同一个概念。
OPNET中的子网是将网络中的一些元素抽象到一个对象中去。
子网可以是固定子网、移动子网或者卫星子网。
子网不具备任何行为,只是为了表示大型网络而提出的一个逻辑实体。
3、节点(Node)
节点通常被看作设备或者资源,由支持相应处理能力的硬件和软件共同组成。
数据在其中生成、传输、接收并被处理。
Modeler包含三种类型的节点:
第一种为固定节点,如路由器、交换机、工作站、服务器等;
第二种为移动节点,如移动台,车载通信系统等;
第三种为卫星节点,代表卫星。
每种节点所支持的属性也不尽相同,如移动节点支持三维或者二维的移动轨迹,卫星节点支持卫星轨道。
4、链路(Link)
相对固定节点、移动节点以及卫星节点,链路也有不同的类型,有点对点的链路、总线链路以及无线链路。
点对点的链路在两个固定节点之间传输数据;
总线链路是一个共享媒体,在多个节点之间传输数据;
无线链路是在仿真中动态建立的,可以在任何无线的收发信机之间建立。
卫星和移动节点必须通过无线链路来进行通信,而固定节点也可以通过无线链路建立通信连接。
5、仿真随机种子(Seed)
Seed是产生随机数的种子值,反映随机数的状态。
只要选定一个种子值,整个随机事件系统就固定了,复杂仿真的随机过程就成了一次实现。
采用仿真种子的目的是测试仿真系统的稳健性,如果针对不同的Seed值进行一系列仿真,每次不同Seed值对应的仿真结果相近,则表明建立的模型有较高的稳健性(Scalability),否则说明模块有疏漏,所得的结果只是一个特例,不能反映系统的性能。
6、应用定义和分布定义:
OPNETModeler中用于仿真的业务是通过应用定义(applicationdefinition)和分布定义(profiledefinition)来创建和产生的。
应用定义的作用是为网络仿真设置所需要的网络应用。
OPNETModeler软件已经定义了8种标准的应用,其中数据库、电子邮件、文件传输、视频会议、Web访问为常见的网络应用类型。
除此之外,OPNETModeler还支持用户自定义应用。
通过选择applicationdefinition中的属性就可以选择业务仿真所需要的标准网络应用或定义自己的应用。
分布定义的作用是为应用定义中设置的每类应用定义业务规格,具体包括操作模式、应用的启动时间、持续时间、可重复性以及重复业务之间的时间间隔等参数。
对于每种应用(如FTP),可以定义多个不同业务规格的分布,每个应用服务器可同时指定多种应用,每个客户端可同时指定多个分布。
应用与分布之间通过应用名(applicationname)关联,服务器与应用之间也通过应用名关联。
客户端和分布之间通过分布定义中使用的分布名(profilename)实施关联。
在进行应用和分布定义以及对象关联过程中应按照定义应用、定义分布、定义关联的先后次序进行相关的操作。
2.3OPNETModeler仿真机制
OPNETModeler采用分层的模拟方式。
从协议间角度看,节点模型的分层思想与协议的分层思想互相对应:
业务层->
TCP层->
IP层->
封装层->
ARP层->
MAC层->
物理层。
从网络物件层次关系看,它采用由微观到宏观的建模方式来模拟现实网络,分为进程(Process)、节点(Node)、网络(Network)三个层次,用不同级别的模型来描述一个网络仿真模型的不同方面。
上层的模型利用下层得到的实体模型进行建模,使其逐步接近现实网络。
在建模过程中与三个物件层次对应的三个主要的编辑器是:
进程编辑器、节点编辑器和项目编辑器。
如图2.1所示。
下面将详细描述三个编辑器的主要作用。
进程编辑器(ProcessEditor):
节点模块包括很多模块,这些模块的行为通过进程模型来定义。
进程模型通过有限状态机(FSM)表示,使用有限状态机可以有效的支持规范、协议、应用、算法及排队的策略。
它使用图形化的状态和状态转移条件来定义一个事件的逻辑。
每个状态使用C/C++语言,利用专门为协议设计提供的丰富的函数库来完成事件的控制。
有限状态机是动态的,可以在仿真中对其他有限状态机引起的事件进行响应。
用户可以使用OPNET模型库中自带的进程模型,也可以使用进程编辑器开发自己全新的进程模型。
图2.1物件层次及对应的编辑器
节点编辑器(NodeEditor):
节点是网络模型中的对象,节点编辑器用来定义每个网络对象模型。
它使用不同的模块来描述节点对象的不同行为,展示网络设备和系统的的体系结构。
这些模块一般模拟节点行为的一个或几个方面,如数据的创建、数据存储等。
模块之间通过包流或者统计线进行连接,一个网络对象通常有多个典型的模块组成,来定义它的行为。
项目编辑器(ProjectEditor):
用来开发一个网络模型,是OPNET中最上层的编辑器,它可以从每个网络对象或者整个网络中选择统计量,然后运行仿真,最后查看比较结果。
工作流如图2.2:
图2.2项目编辑器的工作流
OPNET的这种层次结构,与现实网络环境和系统的体系结构的分层模式相对应,可以非常简单的将实际的系统映射到仿真环境中,使得仿真环境能在最大程度上接近实际的网络环境或系统的体系结构,从而提高仿真结果的可用性。
从驱动仿真的过程来分析,事件驱动是OPNET软件运行仿真的基本机制。
OPNET采用离散事件仿真机制,仿真依靠事件的发生来驱动,仿真时间靠仿真事件的发生来推进。
这种方法将仿真分解为独立的点,而事件将分别在这些点上发生。
OPNET依照时间,将这样的点与事件相关连。
每个事件代表了模型中状态变化或选择的需求。
采用离散事件进行仿真,OPNET可以动态的模拟实际系统的行为。
这种基于离散事件驱动的模拟机制,与基于时间驱动相比,计算效率得到很大的提高,减轻了对处理器的要求。
2.4OPNETModeler仿真流程
OPNETModeler为通信网络和分布式系统的建模和性能评估提供了一个综合的开发环境和分析平台。
在进行具体的网络仿真时,需要按照OPNET的仿真流程进行仿真。
仿真流程可以使仿真思路清晰,结构明确,具有方法可依。
典型的仿真流程如下:
1、了解需求:
收集和分析网络工程设计文档;
2、建模:
建立进程模型、网络对象模型和网络模型;
3、配置网络流量:
配置应用、分布、背景流量来模拟实际网络环境中的负载情况;
4、仿真:
定义要进行收集的数据,配置和运行仿真,自动收集统计数据;
5、数据分析:
根据仿真收集到的数据,查看仿真效果,验证模型和仿真方法的正确性,或者比较设计方案的优劣,从而为解决实际网络中的问题提供帮助。
6、重复试验:
根据数据分析的结果,调整网络设计或系统设计方案,反复试验,直到取得预期的效果。
仿真流程图如图2.3:
图2.3OPNETModeler仿真流程图
在实际的操作中,网络仿真一般参考上面的典型流程。
并且由于不可能通过一次仿真就能得到仿真目的,所以多次重复试验是合理的。
当然具体的网络仿真流程需要根据具体的仿真需求和具体情况决定,上面所述的典型流程仅是仿真的参考流程模型。
2.5用OPNETModeler做小型局域网规划仿真
网络规划中通常要解决的问题是WHAT-IF问题,即如果这样设计,结果是什么样的。
在OPNETModeler软件中,通过在同一个项目中配置不同的场景,可以很容易地同时对多个场景进行仿真,并将得到的仿真数据进行比较,从而得到WHAT-IF的仿真分析报告。
在本文中我们需要仿真一个小型的星型局域网在通过一个路由器附加另一个星型网络的环境下,观察整个网络的延迟和服务器负载的变化情况,以便检测扩展网络带来的额外负载是否会严重影响网络性能。
用OPNETModeler快速建立仿真所需的小型星型网络拓扑,选择适当的统计量,并对其进行仿真,最后分析仿真结果。
由于不涉及到协议的分析和系统结构的改变,在这个网络的仿真过程中,我们使用OPNET自带的模型库,涉及到的仅是项目编辑器(ProcessEditor)。
下面给出网络模型参数:
场景
(一):
星型网络采用典型的局域网配置,具有30个外围工作点,它们通过核心交换机(3C公司产品),利用10BaseT的链路连接,外围节点是Sm-Int-wkstn类型的节点,外接的服务器上Sm-Int-Server类型。
应用使用的是Sm-Int-Modle-list系列中自带的Sm-Applicatin-config应用定义,它采用了OPNETModeler软件中自定义了的8种标准的应用。
分布使用了自带的Sm-Profiie-config分布定义,通过查看属性可以发现Sm-Profiie-config中使用的应用类型是轻型数据库类型(DatabaseAccesslight)。
场景
(二):
场景
(二)通过复制场景
(一)来实现和场景
(一)相同的部分,然后在场景
(一)的基础上按照网络规划要求额外增加了一个星型小型局域网。
增加的小型局域网采用与场景
(一)类似的配置,包含15个外围节点,它们通过中心交换机(3C公司的产品),利用10BaseT链路连接。
为使两个局域网相连,中间利用Cisco的路由器进行路由选择。
由于采用复制场景
(一)的方法,场景
(二)获得了与场景
(一)相同的应用定义和业务定义配置。
图2.4和图2.5是两个仿真场景的网络模型图。
图2.4场景
(一)的网络模型图
图2.5场景
(二)的网络模型图
建立网络仿真模型后,我们需要定义用户统计数据量。
在本文中,我们主要关心的是增加一个STAR型网络后对整个网络的延迟和服务器负载造成的影响,因此我们收集整个网络延时和服务器的负载两个统计量。
运行仿真,收集得到的数据,通过比较结果,进行数据比较分别如图2.6和图2.7。
通过仿真结果比较可以看出,通过路由器增加一个小型的星型局域网,在轻型的数据库业务下,网络延时均在0.0004s左右,没有明显变化,服务器负载高于场景
(一)(达到10000bits/sec),但是负载不会随时间继续增长,而是在一个固定值附近小幅波动。
这个结果说明增加一个小型的局域网对现有网络的正常运行不会造成严重影响,因此可以进行网络的扩展。
图2.6服务器的