实验3基于Opnet的路由协议仿真汇总.docx
《实验3基于Opnet的路由协议仿真汇总.docx》由会员分享,可在线阅读,更多相关《实验3基于Opnet的路由协议仿真汇总.docx(26页珍藏版)》请在冰点文库上搜索。
实验3基于Opnet的路由协议仿真汇总
实验3:
基于Opnet的路由协议仿真
1实验目的和要求
1)熟悉Opnet网络仿真软件的使用;
2)RIP路由协议仿真与分析;
3)OSPF路由协议仿真与分析;
4)BGP路由协议仿真与分析。
2实验设备及材料
操作系统:
Windows2003/XP主机
网络模拟器:
OPNET
3实验内容
3.1OPNET实例
试想一下,你需要为公司内部互联网的扩展制定一个合理的方案。
目前,公司在办公楼的第一层有一个星型拓扑的网络,现在要在第二层增加另一个星型拓扑网络。
这时一个典型的“what-if”问题,所要解决的是确保增加的网络不会导致整个网络的连通失败,如图2所示:
图2.计划中扩展后的网络模型
3.1.1步骤1:
创建新的项目和场景
1)打开Modeler。
2)从File菜单中选择New...。
3)从弹出的下拉菜单中选择Project并单击OK。
图3.新建项目和场景
4)单击OK按钮,出现开始向导,创建新的背景拓扑图,如图4所示:
图4.开始向导:
创建新的背景拓扑图
5)单击Next,选定网络的范围,如图5所示:
图5.开始向导:
选择网络范围
6)单击Next,指定网络的大小,如图6所示:
图6.开始向导:
指定网络大小
7)单击Next,选择OPNET自带的对象模型家族种类,如图7所示:
图7.开始向导:
选择对象模型家族种类
8)单击Next,再次确认环境变量,如图8所示:
图8.设置完毕的开始向导
9)单击完成,这时出现大小和规格如同所指定的工作空间,同时弹出一个对象模板(包含刚刚选定的对象模型家族的所有模型),如图9所示:
通过对象模板中的节点和链路模型来创建网络模型。
节点模型:
代表实际的设备。
链路模型:
代表连接设备的物理媒质,可以是电缆或者光缆。
可以通过对象模板中的图标直观地看出节点模型和链路模型。
可以使用以下三种方法之一创建网络拓扑:
导入拓扑图。
从对象模板中选择模型并放置在工作空间中。
使用快速拓扑配置工具(RapidConfiguration)
图9.工作空间和对象模板
3.1.2步骤2:
创建网络拓扑
Topology–〉RapidConfiguration
从配置下拉列表中选择Star,单击OK...,如图11所示:
图11.RapidConfiguration对话框
接下来需要为网络指定节点模型和链路模型:
OPNET中标准模型的命名规则为:
_...___其中为模型用到的协议,可能同时用到几个协议代表模型的大致功能模型派生类别。
选择中心节点模型为3C_SSII_1100_3300_4s_ae52_e48_ge3。
这是3Com公司的交换机。
选择周边节点模型为Sm_Int_wkstn,并设置节点个数为30。
选择链路模型为10BaseT
指定网络在工作空间中放置的位置:
设置中心的X和Y轴坐标为25,设置局域网的半径范围为20。
设置好单击OK按钮,如图12所示:
图12.快速拓扑配置对话框
项目编辑器中出现如图13所示的网络拓扑。
图13.快速拓扑配置后的网络模型
接下来,需要扩展这个网络,首先增加一个服务器。
这时将用到第二种创建网络模型的方法:
在对象模板中选择模型并放置在工作空间内。
打开对象模板
,找到Sm_Int_server对象,并将它放置在工作空间中。
图14.从对象模板中添加Sm_Int_server对象
接下来,需要连接服务器和星型网络:
在对象模板中找到10BaseT链路对象。
在服务器上单击鼠标左键,移动光标,再单击星型网络的中心节点。
这时出现连接两个节点对象的链路。
单击鼠标右键结束链路创建。
图15.连接服务器和星型网络
最后需要为网络配置业务,包括应用定义(Applicationdefinition)和业务规格定义(Profiledefinition),设置业务涉及的内容较复杂,本例程不作要求,因此模板中应用定义对象和业务规格定义对象的参数已经配置好(为Lightdatabase业务),只要将他们放置在工作空间中即可。
在对象模板中找到Sm_Application_Config对象并将其放置在工作空间中。
单击右键,光标重新移到对象模板中,单击Sm_Profile_Config,并将其放置在工作空间中,单击鼠标右键。
关闭对象模板。
图16.配置完毕的网络模型
3.1.3步骤3:
收集统计信息
1)打开节点模型编辑器和进程模型编辑器。
OPNET采用三层建模机制,最底层为进程(Process)模型,以状态机来描述协议;其次为节点(Node)模型,由相应的协议模型构成,反映设备特性;最上层为网络模型。
三层模型和实际的网络、设备、协议层次完全对应,全面反映了网络的相关特性。
每个网络对象(链路除外)都是一个节点模型,它由一个或多个模块(Modules)组成,模块与模块之间通过包流(Packetstreams)或状态线相连。
而模块实际上为进程模型,它通过状态转移图(STD,StateTransitionDiagram)来描述模块的行为。
现在让我们来看看第一层网络服务器的结构:
在项目编辑器中鼠标双击node_31(服务器节点),这时打开一个新的节点模型编辑器窗口,如图17所示:
图17.以太网服务器节点模型
图17为以太网服务器的内部结构,它由几个模块以及连接模块的包流和状态线组成。
在仿真过程中,来自客户端的数据包被收信机hub_rx_0_0接收,然后由下至上穿过协议栈到application模块。
经过处理后,又沿原路返回至发信机hub_tx_0_0,最后被传输到客户端,如图18所示:
图18.包的输入输出接口模块―收发机
接下来,我们来看看传输适应层tpal模块的内容。
在节点模型编辑器中的tpal模块上双击鼠标,打开一个新的进程模型编辑器,如图19所示:
图19.tpal进程模型
在init状态的上半部双击鼠标,打开它的入口代码。
在init状态的下半部双击鼠标,打开它的出口代码。
进程中的每个状态(图中红色的或绿色的圆圈)都包含一个入口代码(enterexecutive)和一个出口代码(exitexecutive),它们由C/C++代码组成。
入口代码在进入状态时执行,出口代码在离开状态时执行,如图20所示:
图20.Init状态的入口执行代码和出口执行代码
关闭这两个代码窗口。
状态与状态之间通过转移线transitions相连。
转移线可以是带条件的(必须满足条件才能转移)或者无条件的(直接转移)。
图21包含两条转移线,一条是从wait状态到open状态的条件转移线(虚线表示)。
虚线中间的OPEN条件必须满足,wait状态才能转移到open状态。
然而,从open状态到wait状态的转移(实线表示)是无条件的,因此当执行完open状态的代码后立即转移到wait状态。
图21.状态之间的条件转移
关闭节点和进程模型编辑器。
2)收集统计量
在网络模型中可以对单个对象收集统计量(Objectstatistics),也可以对整个网络收集全局统计量(Globalstatistics)。
到现在为止,已经建好了网络模型,现在要根据实例要求解决的问题决定收集哪些统计量:
a)服务器有能力处理扩展网络的额外业务负载吗?
b)一旦与扩展网络连接,整个网络的延时性能还能够接受吗?
为了找到这些问题的答案,需要选择一个对象统计量:
ServerLoad和一个全局统计量:
EthernetDelay。
服务器负载(ServerLoad)是整个网络的性能瓶颈。
下面来收集与服务器负载相关的统计量:
a)在服务器节点(node_31)上单击鼠标右键,从弹出的菜单中选择ChooseIndividualStatistics。
这时出现node_31的选择统计量对话框,如图22所示(统计量对话框以树型结构显示统计量,可以清楚地了解它们的隶属关系)。
b)单击NodeStatistics->Ethernet,选择Load(bits/sec)统计量,如图22。
c)单击OK关闭对话框。
图22.选择结果统计量
全局统计量可以用来收集整个网络的信息。
下面,我们通过选择全局Delay统计量来查看整个网络的延时性能。
d)在网络编辑器的工作空间(避免指到对象)上单击鼠标右键,从弹出的菜单中选择ChooseIndividualStatistics,图23。
e)单击GobalStatistics树型结构,找到并点开Ethernet节点统计量,图24。
f)选中Delay(sec)统计量,图24。
g)单击OK按钮关闭对话框。
图23.设置网络全局统计量
图24.选择网络全局延时统计量
3.1.4步骤4:
运行仿真
下面,可以准备运行仿真了。
1)首先,需要确定repositories属性设置正确:
a)在Edit菜单中选择Preferences。
b)在查找文本框中输入“repositories”,单击Find按钮,图25。
c)在弹出的对话框的左下角单击Insert按钮,在文本框中输入stdmod,然后回车,图26、27。
d)单击OK关闭repositories和Preferences对话框。
图25.确定repositories属性设置
图26.编辑NetworkSimulationRepositories
图27.设置NetworkSimulationRepositories为stdmod
优化仿真核心:
仿真核心有development(调试)和optimized(优化)两种。
调试状态的仿真核心会收集仿真信息,这些信息可用来调试模块。
而优化仿真核心使运行速度加快。
系统缺省为development状态。
设置优化仿真的方法如下:
在Edit菜单中选择Preferences,在查找文本框中输入kernel_type,单击Find按钮。
将对应的value设置为optimized。
2)接下来运行仿真:
a)在Simulation菜单中选择ConfigureSimulationl...,或者在工具栏中选择运行仿真按钮
。
b)将仿真时间Duration设置为0.5,即模拟执行半小时的仿真,如图28所示。
图28.配置仿真参数
c)单击Run按钮运行仿真。
d)运行完毕后单击Close按钮关闭对话框。
3.1.5步骤5:
查看结果
可以从项目编辑器中弹出的菜单中选择ViewResults查看结果。
1)查看服务器Ethernetload结果:
a)在服务器节点(node_31)上单击鼠标右键,从弹出的菜单中选择ViewResults,这时出现查看结果对话框,如图30所示。
b)然后选中Load(bits/sec)。
图30.查看结果
c)单击Show按钮,这时在项目编辑器上出现如图31所示的结果。
图31.网络负载结果
不同的实验曲线走势应该是大致相同,当然具体的取值会因为节点放置的位置和链路长度不同而有微弱的差别。
注意到负载最大值为7,000bits/second。
这个场景是我们想得到的值,用它和后面扩展网络后的结果进行比较,关闭对话框。
2)现在来查看EthernetDelay的结果,这是一个全局统计量:
在工作空间中单击鼠标右键,从弹出的菜单中选择ViewResults。
选择GlobalStatistics→Ethernet→Delay(sec),然后单击Show按钮。
注意到网络收敛时的延时大约为0.4微秒,如图32所示。
图32.网络延时结果
3.1.6步骤6:
复制场景并扩展网络
现在已经创建了一个基本的网络,并且收集了相关结果。
现在可以扩展该网络并且验证在增加额外负载下,网络仍然能够很好地工作。
为了保留刚才的网络场景,以便和扩展的网络场景的仿真结果相比较,需要复制场景:
1)在Scenarios菜单中选择DuplicateScenario...。
2)命名新的场景为expansion。
3)单击OK按钮。
这时出现和刚才网络模型一模一样的场景。
接下来,需要构建网络的另一部分。
4)从Topology菜单中选择RapidConfiguration。
5)从配置下拉列表中选择Star,单击OK...。
选择中心节点模型为3C_SSII_1100_3300_4s_ae52_e48_ge3。
选择周边节点模型为Sm_Int_wkstn,并设置节点个数为15。
选择链路模型为10BaseT。
指定网络在工作空间中放置的位置:
中心的X轴坐标为75和Y轴坐标为62.5。
局域网的半径范围为20。
6)设置好以后单击OK按钮,这时项目编辑器中出现另一个局域网。
连接这两个局域网:
7)单击对象模板工具按钮。
8)选中Cisco2514路由器并将它放置在两个局域网之间。
单击鼠标右键结束放置。
9)在对象模板中选中10BaseT链路图标,在项目编辑器中分别连接node_30和node_50(Cisco路由器),以及node_49和node_50。
10)单击鼠标右键。
11)关闭对象模板。
12)在File菜单中选择Save保存项目。
这时整个网络建好了,如图33所示。
图33.扩展后的网络模型
3.1.7步骤7:
再次运行
现在可以运行仿真了。
1)在Simulation菜单中选择ConfigureSimulationl...,或者在工具栏中选择运行仿真按钮
。
2)将仿真时间Duration设置为0.5,即模拟执行半小时的仿真。
3)单击Run按钮运行仿真。
4)运行完毕后单击Close按钮关闭对话框。
3.1.8步骤8:
比较结果
为了回答最开始提出的问题,需要将这两个网络的仿真结果进行比较:
1)比较服务器负载:
i)在服务器节点(node_31)上单击鼠标右键从弹出的菜单中选择ViewResults。
ii)选中Resultsfor“CurrentProject”,选中两个场景,OfficeNetwork.node_31→Ethernet→Load(bits/sec)结果统计量,并在比较结果对话框的左下角的下拉列表中选择OverlaidStatistics,如图34所示。
图34.比较负载结果
iii)单击show查看比较的结果。
图35中曲线抖动很厉害,为了更加清楚两条曲线的走势,我们可以改变结果的收集模式,从ViewResults(如图36)对话框中间下面的下拉列表中选择timeaverage,单击show,这时出现图37的结果,可以看出抖动被平滑了。
图35.服务器负载结果比较图
图37.平均负载比较图
iv)关闭server的比较结果对话框。
2)比较网络延时:
最后,我们来查看增加第二个网络对网络的延时性能的影响。
比较这两个场景的Ethernetdelay结果:
i)在工作空间中单击鼠标右键,从弹出的菜单中选择ViewResults。
ii)选择GlobalStatistics→Ethernet→Delay(sec)统计量。
iii)单击show显示比较结果,如图38所示。
图38.端对端延时比较
iv)关闭比较结果对话框。
v)从File菜单中选择Close,保存并关闭项目文件。
3.1.9结论
1)从图37可以看出服务器的负载有明显增加;
2)从图38可以看出以太网延时性能并没有因为服务器负载的增加而受影响。
3.2RIP路由协议仿真与分析
导入RIP-RIPv1场景。
图1导入场景
、
图2选择RIP-RIPv1
图3显示了进行路由协议性能分析所建立起来的网络模型,该模型主要包括四个主干路由器以及一些子网,每个子网是两个局域网,通过路由器连到主干路由器上(图4),且配置了相应的业务流量。
路由器间互连的链路采用的是PPPDS3链路。
该模型中共四个子网,其IP地址配置如下表所示。
表1IP地址分配
网络
IP地址
子网IP地址
子网West
子网East
NothNet
150.10.0.0/16
150.10.10.0/24
150.10.20.0/24
EastNet
150.50.0.0/16
150.50.10.0/24
150.50.20.0/24
SouthNet
150.70.0.0/16
150.70.10.0/24
150.70.20.0/24
WestNet
150.30.0.0/16
150.30.10.0/24
150.30.20.0/24
图3RIPv1网络仿真模型
图4子网络内的仿真模型
子网内的仿真模型如图2所示,由West和East两个局域网和一台中心路由器组成。
两个局域网拥有相同的网络结构,均是采用100BaseT的局域网模型,该模型是快速以太网模型,它包括任何数量的工作站和一个服务器,在本模型中工作站的数量是十个。
针对协议的性能仿真主要是从路由协议网络收敛性,协议开销,网络延时三个方面进行仿真分析。
路由协议网络收敛性是指路由域中所有路由器对当前的网络结构和路由转发达成一致的状态。
收敛时间是指从网络的拓扑结构发生变化到网络上所有的相关路由器都得知这一变化,并且相应的做出改变所需要的时间。
协议开销是指网络节点为了获得路由信息所引入更新网络状态信息的通信开销,它随网络规模的扩大而增加,触发状态信息更新发布策略与QOS路由性能密切相关。
此外,网络拓扑和流量分布对协议开销也有一定的影响。
时延定义了一个IP包穿越一个或多个网段所经历的时间。
时延由固定时延和可变时延两部分组成。
固定时延基本不变,由传播时延和传输时延构成;可变时延由中间路由器处理时延和排队等待时延两部分构成。
添加统计信息量:
1)添加路由协议收敛性和协议开销
场景空间空白处右键单击,在弹出菜单中选择”ChooseIndividualDESStatistics”
在弹出窗口中选择RIP协议统计量,如图6所示:
图6选定RIP统计量
2)添加子网时延统计量
选择EastNet中的East子网进行统计分析,统计量选择的是局域网的延时。
图7选择子网时延统计量
仿真时间30分钟。
3.2.1RIP路由协议收敛仿真结果分析
由于收敛时间与仿真时间相差很大,需要截取指定时间范围来观察收敛效果。
图9截取0-20s的数据
图10RIP协议的路由收敛仿真结果
RIP.NetworkConvergenceActivity图中的横轴代表时间,是以秒为单位显示的,纵轴代表协议收敛活动,y坐标值为1表示有收敛活动,y坐标值为0表示没有收敛活动。
RIP.NetworkConvergenceDuration(sec)图中的横轴代表时间,是以秒为单位显示的,纵轴代表收敛周期。
从图中可以看出RIP网络收敛大概开始于仿真进行6秒后,在16秒后结束,收敛周期大概为10秒。
3.2.2RIP协议开销的仿真结果
图11RIP协议的开销仿真结果
图12平均开销比较
仿真结果图中的横轴代表仿真时间,是以分钟为单位显示的。
纵轴代表流量比特数。
从图中我们发现RIP会定时的产生协议的开销,这个定时周期就是路由更新定时器的时间。
并且这种开销一直维持在较高的水平上,在2500到3500bits/s之间。
3.2.3RIP协议延时的仿真结果
图13RIP协议延时仿真结果
图中横轴代表仿真时间,是以分钟为单位显示的,纵轴代表的是延时时间,是以秒为单位显示的。
从图中我们发现采用RIP协议时,我们选择的局域网的延时大概在0.00006秒左右。
4实验报告