南京航空航天大学
OPNET仿真实验报告
计算机网络实验
目录
第一章 实验任务 ....................................................................................................................... 3
1.1 实验一 ................................................................................................................................ 3 1.2 实验二 ................................................................................................................................ 3 第二章 OPNET网络建模及仿真方法 ..................................................................................... 3
2.1 OPNET简介 ....................................................................................................................... 3 2.2 OPNET仿真关键技术 ....................................................................................................... 4
2.2.1 层次化建模技术 ..................................................................................................... 4 2.2.2 离散事件仿真机制 ................................................................................................. 4 2.2.3 仿真调度机制 ......................................................................................................... 4 2.2.4 通信机制 ................................................................................................................. 4 2.3 OPNET仿真流程 ............................................................................................................... 5 第三章 实验仿真过程 ............................................................................................................... 6
3.1 实验一 单台服务器场景 仿真过程 ................................................................................ 6
3.1.1 建立网络拓扑结构 ................................................................................................. 6 3.1.2 收集统计量 ............................................................................................................. 8 3.1.3 运行仿真 ................................................................................................................. 9 3.1.4 60台PC场景 1_expand_60 ................................................................................ 10 3.1.5 90台PC场景1_expand_90 ................................................................................. 11 3.2 实验一 多台服务器场景 仿真过程 .............................................................................. 12 3.3 实验二 用OPNET对RIP仿真分析 ............................................................................. 13 第四章 实验仿真结果及分析 ................................................................................................. 13
4.1 单台服务器场景仿真结果及分析 .................................................................................. 13
4.1.1 整个网络平均延迟对比曲线图 ........................................................................... 14 4.1.2 服务器与交换机链路的平均吞吐量对比曲线图 ............................................... 14 4.1.3 服务器CPU负载变化对比曲线图,见图16. ................................................... 15 4.2 多台服务器场景仿真结果及分析 .................................................................................. 16
4.2.1 整个网络平均延迟对比曲线图 ........................................................................... 16 4.2.2 服务器与交换机链路的平均吞吐量对比曲线图 ............................................... 16 4.2.3 服务器CPU负载变化对比曲线图 ..................................................................... 17 4.3 用OPNET对RIP仿真结果及分析 ............................................................................... 18
4.3.1 RIP协议概述 ........................................................................................................ 18 4.3.2 RIP的工作原理..................................................................................................... 18 4.3.3 RIP路由更新机制................................................................................................. 20 4.3.4 建立网络拓扑结构 ............................................................................................... 21 4.3.5 仿真结果 ............................................................................................................... 23 4.3.6 对RIP协议的总结............................................................................................... 28
第五章 实验心得体会以及不足 ............................................................................................. 29
5.1 心得和体会 ...................................................................................................................... 29 5.2 实验中的不足 .................................................................................................................. 29
OPNET仿真实验报告
第一章 实验任务
1.1 实验一
– 设置一个仿真场景,假设PC有N台,服务器有M台,交换机和路由器根据N值进行配置
– 当N=30,60,90和M=1时,设置仿真场景,配置连接设备,服务器配置FTP、TELNET、WWW、SNMP等服务,给出N不同取值时:
1)整个网络平均延迟对比曲线图
2)服务器与交换机链路的平均吞吐量对比曲线图 3)服务器CPU负载变化对比曲线图
– 当N=90,M分别取值1和2时,设置仿真场景,配置连接设备,服务器配置同上,给出M不同取值时:
1)整个网络平均延迟对比曲线图
2)服务器与交换机链路的平均吞吐量对比曲线图 3)服务器CPU负载变化对比曲线图。
1.2 实验二
RIP协议的OPNET仿真分析
第二章 OPNET网络建模及仿真方法
2.1 OPNET简介
OPNET是1986年由美国MIL3 Inc.(现在为OPNET Technologies Inc.)研制的,最初是用于军事需要,但很快就发展成为一款商业化软件,并成为目前世界上最先进的网络仿真和开发工具之一。现在全球大约有2700个OPNET用户,涉及企业、军事、教育、银行、保险等多个领域,被第三方权威机构评为“世界级网络仿真软件第一名”。作为商业软件的OPNET价格非常昂贵,但它也提供了专门用于教育和科研的免费版本,如OPNET IT Guru。
OPNET支持面向对象的建模方式,并提供图形化的编辑界面,更便于用户使用;采用离散事件驱动的模拟机理,使计算效率得到了很大提高;将基于包的分析方法和基于统计的数学建模方法结合起来,大大加快了仿真速度,而且可以得到更加细节化的模拟结果;在物件拼盘中,包含了详尽的模型库:路由器、交换机、服务器、客户机、ATM设备、DSL设备等,还有其它厂商的配备,使OPNET在新网络项目的设计以及对现有网络的分析方面都有卓越表现;它为通信协议和路由算法的研究提供了与真实网络相同的环境。此外,功能完善的结果分析器为网络性能的分析提供了有效而又直观的工具;提供了多种业务模拟方式;具有丰富的收集分析统计量,查看动画和调试等功能;它可以直接收集常用的各个网络层次的性能统计参数,能够方便地编制和输出仿真报告。
目前OPNET的应用在国内还处于起步阶段,因此OPNET具有很大的研究和应用价值。
2.2 OPNET仿真关键技术
2.2.1 层次化建模技术
0PNET采用层次化的建模技术,提供了三层建模机制:网络模型、结点型和进程模型。网络模型为最上层,由可以嵌套的子网、通讯节点和在节点间进行通信的链路组成,在这一层完成网络拓扑和模型配置;进程模型是最底层,用有限状态机(FSM)来描述各个状态和状态间转移关系,进程模型是通信协议功能模拟以及与仿真有关的控制流行为实现的具体位置,其中FSM是用C语言描述的通信行为程序;结点模型定义结点的内部结构,由发信机模块、接收机模块、处理机模块、队列模块及包流、统计线等连接组成。通过0PNET的网络模型、结点模型和进程模型三层建模机制建立起来的模型和实际的网络、设备、协议层次完全对应,全面反映了网络的相关特性。网络模型、结点模型和进程模型分别在相应的项目编辑器、结点编辑器和进程编辑器中完成。
本实验就是从第一个层次进行建模,从而完成仿真任务的。 2.2.2 离散事件仿真机制
0PNET采用基于离散事件驱动的仿真机制。事件是指网络状态的变化。网络状态发生变化时,模拟机进行仿真,状态不发生变化的时间段,不进行仿真,即被跳过,因而仿真时间是离散的。每个仿真时间点上可以同时出现多个事件,事件的发生可以有疏密的区别。仿真中的各个模块之间通过事件中断方式传递事件信息。每当出现一个事件中断时都会触发一个描述网络系统行为或者系统处理的进程模型的运行。通过离散事件驱动的仿真机制实现了在进程级描述通信的并发性和顺序性,再加上事件发生时刻的任意性,决定了可以仿真计算机和通信网络中的任何情况下的网络状态和行为。
2.2.3 仿真调度机制
在OPNET中使用基于事件列表的调度机制,合理安排调度事件,以便执行合理的进程来仿真网络系统的行为。调度的完成通过仿真软件的仿真核和仿真工具模块以及模型模块来实现。事件列表的调度机制具体描述如下:
1.每个OPNET仿真都维持一个单独的全局时间表,其中的每个项目和执行都受到全局仿真时钟的控制,仿真中以时间顺序调度事件列表中的事件,需要先执行的事件位于表的头部。当一个事件执行后将从事件列表中删除该事件。
2.仿真核作为仿真的核心管理机构,采用高效的办法管理维护事件列表,按顺序通过中断将在队列头的事件交给指定模块,同时接收各个模块送来的中断,并把相应事件插入事件列表中间。仿真控制权伴随中断不断地在仿真核与模块之间转移。
3.当事件同时发生时,仿真核按照下面两种办法来安排事件在事件列表中的位置:
(1)按照事件到达仿真核的时间先后顺序,先到达先处理(first come first serve。
(2)按照事件的重要程度,为事件设置不同的优先权,优先权高的先处理。 2.2.4 通信机制
OPNET采用基于包的通信机制来模拟实际物理网络中数据包的流动。包是为支持基于信息源通信而定义的一种数据结构,可以动态创建、修改、复制、发送、接收和销毁。每个包含有一些存储信息的区域,通过包流实现同一节点模型的不同模块间的传输。
和基于包的通信机制类似的另一种通信方式是基于接口控制信息(ICI)的通信机制。ICI是与事件关联的用户自定义的数据列表。如果某个事件希望传递信息给予它相隔一段时间的将来某个事件,可以将ICI绑定在将来这个事件中,等到它将来发生时就可以取出ICI信息。因为ICI以事件为载体,所以可以用在各种有关事件调度的场合,例如同一节点模型的相同模块内部、同一节点模型的不同模块之间及不同节点模型之间都可以采用基于ICI的通信。如果流事件源于包的传输,但是需要传输额外的信息又想避免使用包本身,这时可以用ICI。
2.3 OPNET仿真流程
利用OPNET仿真,一般遵循以下工作流程:
1.定义目标问题:明确和规范化网络仿真所要研究的问题和目标,提出明确的网络仿真描述性能参数。如网络通信吞吐量、链路利用率、设备利用率、端到端延迟、丢包率、队列长度等。
2.建立仿真模型:根据研究的问题和目标,建立所需的网络、进程或协议模型(包括网络拓扑结构、协议类型、包格式等),配置相关业务。
3.收集统计数据:收集要用于仿真模型实现和验证的相关统计数据。如网络流量、端到端延迟、丢包率等。
4.运行仿真:利用仿真工具进行仿真实验,以得到所需要的数据。
5.查看并分析结果:查看结果并利用相关分析工具和数学知识对仿真结果进行统计分析。
6.调试再仿真:分析仿真数据,找出网络的性能瓶颈,然后通过修改拓扑、更新设备、调整业务量、修改协议等方法得到新的仿真场景,再次运行仿真。
7.生成仿真报告:生成网络仿真的研究报告。
图 1 OPNET仿真流程
由于网络的复杂性,在实际网络研究中,一般不可能一次就能达到仿真目的,而往往需要多次重复其中的部分或全部步骤。另外网络仿真过程中仿真参数尽可能根据需要合理选取,并不是越详细越好,无用的参数可能使系统的处理效率下降。
第三章 实验仿真过程
3.1 实验一 单台服务器场景 仿真过程
3.1.1 建立网络拓扑结构
要创建一个新的网络模型,首先需要创建一个新的项目(Project)和一个新的场景(Scenarios)。首先创建30台PC机的场景:1_first_30。
(1) 打开 OPNET Modeler 10.0。 (2) 从 File 菜单中选择 New...。
(3)从弹出的下拉菜单中选择 Project 并单击 OK 按钮。 (4)将项目命名为1_sim_network,场景命名为1_first_30。 (5)单击 OK 按钮。
按照向导创建网络拓扑图。 首先选择一个空的项目Create Empty Scenarios,然后选择办公网络Office,然后确定网络的大小100m×100m,然后选择OPNET自带的对象模型家族种类,将Sm_Int_Model_List设为Yes,最后确认场景,单击OK。
(6)使用快速拓扑配置,一次性创建规则的拓扑结构,从Topology菜单中选择Rapid Configuration。
(7)从配置下拉列表中选择Star,单击 OK。之后为该星形拓扑网络指定节点模型和链路模型。即Center Node Model设为3Com公司的交换机3C_SSII_1100_ 3300_4s_ae52_e48_ge3;Periphery Node Model设为Sm_Int_wkstn;Link Model设为10BaseT,其中数量设为30。再合理设置位置和半径,单击OK。
这样项目编辑窗口中会出现包含有一台交换机和30台PC结点的网络拓扑图。 下面对上述该星形网络拓扑结构进行扩展。
(8)添加服务器。打开对象面板,找到 Sm_Int_server 对象,并将它放置在工作空间中。单击右键,结束节点放置。
接下来,需要连接服务器和星型网络: (9)在对象模板中找到 10BaseT 链路对象。在服务器上单击鼠标左键,移动光标,再单击星型网络的中心节点。这时出现连接两个节点对象的链路。单击鼠标右键结束链路创建。
最后需要为网络配置业务,包括应用定义(Application definition)和业务规格定义(Profile definition)。
(10)在对象模板中找到 Sm_Application_Config 对象并将其放置在工作空间中。单击右键,光标重新移到对象模板中,单击 Sm_Profile_Config,并将其放置在工作空间中,单击右键。模板中应用定义对象和业务规格定义对象的参数已经配置好(为 Light database 业务),下面添加其他服务,OPNET在
Application Config中预设了一些常用的服务,在Sm_Application_Config右键选择Edit Attributes 选项,然后在Application Definition参数下添加多行(rows),每一行可以设置sever支持的一个服务。如图2所示。
图 2 Application Config 服务种类属性的设置
与服务器应用配置相对应,需要配置业务主寻,即Profile Definition。右键选择Edit Attributes,然后在Profile Configuration中的Application中添加行,并选择需要的服务。
图 3 Profile Config 业务主寻属性的设置
当然客户端也需要设定业务主询。可供客户端选择的业务主询的种类和在业
务主询配置器中的设定要完全吻合。这里客户端的Application Support Profile属性中中选择前面配置的业务主寻Sm_Int_Profile。
最终得到网络拓扑图见图4。
图 4 1_first_30网络拓扑图
3.1.2 收集统计量
在网络模型中可以对单个对象收集统计量(Object statistics),也可以对整个网络收集全局统计量(Global statistics)。
根据实验要求,我们需要收集的统计量有,整个网络平均延迟、服务器与交换机链路的平均吞吐量、服务器CPU负载。
(1) 整个网络平均延迟是全局统计量,在空白处右键选择Choose Individual DES Statistics,然后将Ethernet中的Delay选项选中。如图5所示。
图 5整个网络平均延迟统计量设置
(2) 服务器CPU负载是对象统计量,在服务器上右键单击Choose Individual DES Statistics,然后选中Node Statistics Ethernet Load(bit/sec),如图6所示。
图 6服务器CPU负载统计量设置
(3) 服务器与交换机链路的平均吞吐量是对象统计量,在该链路上右键单击Choose Individual DES Statistics,然后选中point-to-point
throughput(bits/sec)--> 和throughput(bits/sec)<--,如图7所示。
图 7服务器与交换机链路的平均吞吐量统计量设置
设置好后,保存一下项目。
3.1.3 运行仿真
首先,需要确定 repositories 属性设置正确: (1) 在Edit菜单中选择 Preferences。
(2) 在查找文本框中输入“repositories”,单击 Find 按钮。 (3) 在弹出的对话框的左下角单击Insert按钮,在文本框中输入stdmod,然后回车。
(4) 单击 OK 按钮关闭 repositories 和 Preferences 对话框。 (5) 设置优化仿真的方法如下:
在Edit菜单中选择Preferences,在查找文本框中输入kernel_type,单击 Find按钮。将对应的value 设置为optimized。接下来运行仿真。
(6) 在 Simulation 菜单中选择 Configure Simulation,或者在工具栏中选择运行仿真按钮。
(7) 将仿真时间 Duration 设置为0.5,即模拟执行半小时的仿真。 (8) 单击 Run 按钮运行仿真。 运行完毕后如下图8
图 8 仿真结束完成
(9) 运行完毕后单击 Close 按钮关闭对话框。 3.1.4 60台PC场景 1_expand_60
这里我们在上一个场景的基础上进行扩展,创建60台PC的网络拓扑。为了保留刚才的网络场景,以便和扩展的网络场景的仿真结果相比较,需要复制场景:
(1)在 Scenarios 菜单中选择 Duplicate Scenario..。 (2)命名新的场景为 1_expand_60。 (3)单击 OK 按钮。
这时出现和刚才网络模型一模一样的场景。
(4)接下来,需要构建网络的另一部分,即另外30台PC。这里我们让这30台PC和前一个场景的30台同构,同样通过快速配置,配置一个30台客户端的星形拓扑网络,然后再连接两个子网。
(5)在对象面板中选中 Cisco2514 路由器并将它放置在两个局域网之间。单击鼠标右键结束放置。
(6)在对象模板中选中 10BaseT 链路图标,在项目编辑器中分别连接刚才放上去的路由器已经另外两台3Com的交换机。最终网络拓扑图见图9。
图 9 1_expand_60网络拓扑图
之后按照前面第一个场景设置统计量并且运行仿真。
3.1.5 90台PC场景1_expand_90
这里我们继续在上一个场景的基础上进行扩展,创建90台PC的网络拓扑。复制场景:
(1)在 Scenarios 菜单中选择 Duplicate Scenario..。 (2)命名新的场景为 1_expand_90。 (3)单击 OK 按钮。
(4)接下来,需要构建网络的另一部分,即另外30台PC。这里我们让这30台PC和前两个场景的30台同构,同样通过快速配置,配置一个30台客户端的星形拓扑网络。
(5)在项目编辑区再放置一个Cisco2514 路由器,然后把该路由和刚才创建的子网中的3Com交换机相连,并且与前一个场景的交换机相连。
(6)最后连接两台路由器。在对象面板的下拉菜单中选取internet_toolbox,然后选取其中的ppp_DS3链路,连接两个路由。最终网络拓扑图如图10。
之后按照前面第一个场景设置统计量并且运行仿真。
图 10 1_expand_90网络拓扑图
3.2 实验一 多台服务器场景 仿真过程
首先将上一个实验保存,然后再另存为一个工程命名为2_sim_network。然后将前两个场景1_first_30和1_expand_60删除,仅留下90台PC场景1_expand_90,下面在复制改成场景命名为1_expand_90_2,创建两台服务器的网络拓扑图。
在对象面板中再拖入一台服务器,然后用10BaseT线和node_30(也就是第一次添加的交换机)相连,最终的网络拓扑结构图见图11。
图 11 1_expand_90_2网络拓扑图
3.3 实验二 用OPNET对RIP仿真分析
OPNET是1986年由
第四章 实验仿真结果及分析
4.1 单台服务器场景仿真结果及分析
OPNET有一个针对结果进行比较的模块并具有Html报告生成功能。在1_sim_network工程中,空白处右键选择Compare Results。则会弹出生成曲线图的面板,见图12。通过该面板可以生成以下对比图。
图 12 曲线图生成面板
4.1.1 整个网络平均延迟对比曲线图 见图13
图 13整个网络平均延迟对比曲线图
通过该图可以发现,随着客户端的增多,网络的平均延时量出现了间断性的下降。
4.1.2 服务器与交换机链路的平均吞吐量对比曲线图
见图14、15。其中图14是由服务器到交换机平均传送数据对比图,而图15是有交换机到服务器平均传送数据对比图。
图 14 服务器到交换机结点数据传送对比
图 15 交换机到服务器结点数据传送对比
通过该图可以发现,随着客户端的增多,交换机和服务器链路的平均吞吐量逐渐上升。
4.1.3 服务器CPU负载变化对比曲线图,见图16.
图 16 服务器CPU负载变化对比曲线图
通过该图可以发现,随着客户端的增多,服务器的CPU负载也是逐渐上升的。
4.2 多台服务器场景仿真结果及分析
在2_sim_network工程中,空白处右键选择Compare Results。则会弹出生成曲线图的面板,通过该面板可以生成以下对比图。
4.2.1 整个网络平均延迟对比曲线图
图 17整个网络平均延迟对比曲线图
通过对比发现,两个网络的网络延时基本一致。 4.2.2 服务器与交换机链路的平均吞吐量对比曲线图
见图18、19。其中图18是由服务器到交换机平均传送数据对比图,而图19是有交换机到服务器平均传送数据对比图。
图18服务器到交换机结点数据传送对比
图19 交换机到服务器结点数据传送对比
通过该图可以发现,随着服务器的增多,交换机和服务器链路的平均吞吐量逐渐下降。
4.2.3 服务器CPU负载变化对比曲线图 见图20。
图20 服务器CPU负载变化对比曲线图
通过该图可以发现,随着服务器的增多,服务器的CPU负载是逐渐下降的。因为多台服务器平衡了负载,故单台服务器负载下降。
4.3 用OPNET对RIP仿真结果及分析
4.3.1 RIP协议概述 RIP协议是最著名、历史最悠久的动态路由协议,该协议属于距离向量协议。RIP协议最早由施乐公司Palo Alto研究中心(PARC)开发,并在施乐公司的PUB和XNS路由协议基础上发展而来。而后加州大学伯克利分校在许多局域网上采用RIP协议,该举动极大的推动了RIP的广泛应用。另外RIP在UNIX上的普遍实现同样也促进了RIP的推广。
RIP协议最初是为局域网设计,现在应用范围已经不局限在局域网,RIP协议已经被应用到城域网甚至广域网中。虽然如此,但是RIP协议不适用于规模较大的网络。RIP协议是因特网协议族的重要组成部分,也是在因特网中最早得到广泛应用并持续至今的一种简单路由协议。在下一代因特网协议IPv6中最早最完全实现的也是基于RIP的RIPng。
按照路由协议分类,RIP属于距离向量协议。RIP中路由的选择是基于到达目的地所需要的跳数来决定。距离向量算法最早由Ford,L.R和FulkerSon,D.R提出,路由方程式推导由R.E.Bellm锄完成。因此,RIP协议所用的路由算法也称Ford.FulkerSon算法或Ford-BellmaIl算法。
1988年6月IETF将RIP协议标准化为RFC1058。该协议是开放标准,用于小型网络内部网关协议。
随着m技术的发展,为支持VLSM和CIDR,1993年IETF在RFC 1388中发布了RIPv2。随后在1994年由l心C 1723取代RFC 1388。因此,RFC 1058所规定的RIP协议称为RIPv1,RFC 1723所规定的RIP协议为最新版本RIPv2。
4.3.2 RIP的工作原理
运行RIP的路由器定期将路由表发送给相邻的路由器(最初路由表中只有直连路由以及静态路由)。路由器收到相邻路由器发送的路由表后,将每个路由的距离加1与自身路由表中的信息比较,如果大于和等于自身路由表中路由的距离则忽略收到的路由并刷新该路由记录;如果小于自身路由表中路由距离或者自身
路由表中没有所比较的路由则将收到的路由信息写入路由表,距离为原距离增加l且下一跳为发送该路由信息的路由器。当距离为16时认为路由不可达。运行RIP的网络规模有限,路径最长距离为15。路由器定期清除长时间未刷新的路由记录以防止某路由器死机后产生的路由黑洞。网络中所有运行RIP的路由器不了解整个网络的拓扑结构,只是简单相信从某个相邻路由器经过某个特定距离可以
到达目标网络。
4.3.2.1 RIP的路由表
RIP协议使用跳数(hop Count)作为度量标准(metrics)来衡量到达目标地址的路由距离。每个运行RIP协议的路由器都维护着一张路由表,这张路由表中至少要包括以下信息:
(1)IP地址:该地址是所要到达的目的主机或网络的地址。 (2)下一跳:数据包所要到达的下一个路由器的地址。 (3)接口:数据包到达下一跳所使用的物理网络接口。
(4)跳数:即度量值。RIP的度量是基于跳数(hop count)的,并规定两个直连的路由器间的跳数为1,因此,每经过一台路由器,路径的跳数就加一。跳数越多,路径就越长,RIP算法会优先选择跳数少的路径。RIP支持的最大跳数是15,跳数为16的网络被认为不可达。
(5)计时器:有时也称为年龄,用于记录自上次路由更新以来的时间总和。RIP中路由的更新是通过定时广播实现的。缺省情况下,路由器每隔30秒向与它相连的网络广播自己的路由表,接到广播的路由器将收到的信息添加至自身的路由表中。每个路由器都如此广播,最终网络上所有的路由器都会得知全部的路由信息。正常情况下,每30秒路由器就可以收到一次路由信息确认,如果经过180秒,即6个更新周期,一个路由项都没有得到确认,路由器就认为它已失效了。如果经过240秒,即8个更新周期,路由器仍没有得到确认,它就被从路由表中删除。
另外,各种标志位和其他内部信息也有可能包括在路由表中。例如,有些标志位用于记录路由最近是否发生变化,以备触发更新时使用。
4.3.2.2 RIP的工作流程
图 21 RIP的工作流程
RIP的工作流程很简单,如图21所示,当在RouterA路由器的某接口上启动RIP,接口以广播形式向邻居发送路由表信息请求,邻居R0uter B接收到路由表信息请求,就发送整个路由表信息对请求进行响应;RouterA和Router B在启动后就开始周期发送并周期更新路由。RouterA检测到路由变化时,以广播形式向邻居发送触发更新,通知邻居路由变化。运行RIP协议的路由器并不是把每一条新的路由信息都添加到自己的路由表中。只是在以下三种情况下,路由器会根据所获得的路由信息对路由表进行修改:
(1)如果收到的路由信息在自身的路由表中不存在,则添加。
(2)如果收到的路由信息的目的子网和现有路由表中一项相符,而且量度值比现有的度量值要小,则用新的路由替换现有的,否则,忽略该路由。
(3)如果收到的路由信息的目的子网和下一跳路由器地址和现有路由表中的某一项都相同,则无论度量值减小,还是增加,都修改度量值。
4.3.3 RIP路由更新机制 4.3.3.1 RIP的路由表
RIP中路由的更新是通过定时广播实现的。缺省情况下,路由器每隔30秒向与它相连的网络广播自己的路由表,接到广播的路由器将收到的信息添加至自身的路由表中。每个路由器都如此广播,最终网络上所有的路由器都会得知全部的路由信息。正常情况下,每30秒路由器就可以收到一次路由信息确认,如果经过180秒,即6个更新周期,一个路由项都没有得到确认,路由器就认为它已失效了。如果经过240秒,即8个更新周期,路由项仍没有得到确认,它就被从路由表中删除。上面的30秒,180秒和240秒的延时都是由计时器控制的,它们分别是更新计时器(Update Timer)、无效计时器(Invalid Timer)和刷新计时器(Flush Timer)。
由于RIP路由记录必须定期刷新,所以RIP路由器必须定期向邻居发送路由表。又因为IP网络中路由和信息在同一通道上传播,所以IP路由器不能频繁发送路由表过度占用带宽。如果发送路由表间隔过长,则会导致路由计算收敛较慢:网络中一条路由的变化需要相对较长的时间才能通知到所有的路由器。权衡带宽占用以及路由收敛时间两方面的因素,所以对IP路由器通常是每30秒向邻居路由器发送一次路由信息。上述更新间隔可以依据收敛时间要求、网络带宽资源以及网络拓扑和网络规模作调节。
4.3.3.2 RIP路由循环及收敛问题
距离向量类的算法容易产生路由循环,RIP是距离向量算法的一种,所以它也不例外。如果网络上有路由循环,信息就会循环传递,永远不能到达目的地。为了避免这个问题,RIP距离向量算法实现了下面4个机制。
(1)水平分割(split horizon):水平分割保证路由器记住每一条路由信息的来源,并且不在收到这条信息的端口上再次发送它。这是保证不产生路由循环的最基本措施。
(2)毒性逆转(poison reverse):当一条路径信息变为无效之后,路由器并不立即将它从路由表中删除,而是用16,即不可达的度量值将它广播出去。这样虽然增加了路由表的大小,但对消除路由循环很有帮助,它可以立即清除相邻路由器之间的任何坏路。
(3)触发更新(trigger update):当路由表发生变化时,更新报文立即广播给相邻的所有路由器,而不是等待30秒的更新周期。同样,当一个路由器刚启动RIP时,它广播请求报文。收到此广播的相邻路由器立即应答一个更新报文,而不必等到下一个更新周期。这样,网络拓扑的变化会最快地在网络上传播开,减
少了路由循环产生的可能性。
(4)抑制计时(holddown timer):一条路由信息无效之后,一段时间内这条路由都处于抑制状态,即在一定时间内不再接收关于同一目的地址的路由更新。如果,路由器从一个网段上得知一条路径失效,然后,立即在另一个网段上得知这个路由有效。这个有效的信息往往是不正确的,抑制计时避免了这个问题,而且,当一条链路频繁起停时,抑制计时减少了路由的浮动,增加了网络的稳定性。
即便采用了上面的4种方法,路由循环的问题也不能完全解决,只是得到了最大程度的减少。一旦路由循环真的出现,路由项的度量值就会出现计数到无穷大(count to infinity)的情况。这是因为路由信息被循环传递,每传过一个路由器,度量值就加1,一直加到16,路径就成为不可达的了。RIP选择16作为不可达的度量值是很巧妙的,它既足够的大,保证了多数网络能够正常运行,又足够小,使得计数到无穷大所花费的时间最短。
4.3.4 建立网络拓扑结构
本实验通过RIP路由协议构建网络,并且通过实验结果来分析RIP路由协议。其中重点关注仿真中出现子网失效时,各个路由器的路由表的变化。同时在试验中收集一些统计量,如RIP协议的收敛情况、路由表更新总数、RIP协议的开销情况、使用RIP协议局域网延时情况以及RIP协议的链路修复情况。
具体需要采集的统计量:
Global Statistics中的Ethernet ->Delay、RIP->Network Convergence Activity、RIP->Network Convergence Duration、RIP->Traffic Received、RIP->Traffic Sent。
Node Statistics中的Route Table->Total Number of Updates。
下面介绍一下网络拓扑图的构造,其中分为一个主干网络以及4个子网。其中主干网络有BackBone_Router1-4,4台路由器构成,子网是由一台路由以及两个100BaseT_LAN局域网构成。其网络拓扑机构图见图22和图23。
图 22 RIP协议分析整体网络拓扑图
图 23 整体拓扑图中4个子网的网络拓扑图
其中为了为了检测链路修复等统计量,这里添加了一个Failure-Recovry组件。并且配置一个失效,在Failure组件上右键选择编辑属性,然后在该编辑窗口设置如图24,在500s时让主干网中路由2和路由4出现失效,然后再在1000s时使其链路恢复。
图 24 设置链路失效以及恢复
因为我们需要查看路由表的变化,故在这里需要对路由器进行设置,来保存相应时间的RIP路由表。其设置方式在路由器上右键选择编辑属性,然后按照图 25所示设置。其中End of Simulation表示在仿真结束后保存路由表。
图 26 路由器保存特定时间路由表设置
我们失效是设置在路由器1和路由器2之间,这里我们主要监视路由器2的RIP路由表。
下面开始运行仿真,其中需要设置全局路由策略以及一些其他参数,见图 27。主要对Global Attribute 中的IP Dynamic Routing Protocol设为RIP,然后将IP Interface Addressing Mode 设为Auto Addressed/Export,这个选项用来后面我们获取拓扑结构的IP文件。最后要把RIP Sim Efficiency 设为Disabled。然后运行仿真。
图 28 仿真参数设置
4.3.5 仿真结果
由于网络较为复杂,这里使用OPNET的实验报告生成工具生成HTML格式实验报告,用于分析其中内容。其中子网局域网的网络延时见图29, 局域网的延时大概在0.00009秒左右。
图 29 子网中LeftNet_1 局域网的网络延时
整个网络RIP协议的收敛情况见图30。通过观察RIP协议在节点数目不是很多的情况下收敛情况十分理想的。
图 30 整个网络RIP协议的收敛情况
另外各个路由器的收敛情况可以查看表,这是通过OPNET自动生成的。
表 1 各个路由器的收敛情况
Node BackBone_Router_1 BackBone_Router_2 BackBone_Router_3 BackBone_Router_4 RIP Router Convergence Activity 0.00060 0.00046 0.00176 0.00181 0.00793 0.00957 0.27957 0.00782 RIP Router Convergence Duration (sec) 0.2987 0.3128 0.8738 0.9212 3.9015 4.7318 1.0330 3.8246 EastNet_2.center_2 NorthNet_1.center_1 SouthNet_3.center_3 WestNet_4.center_4 RIP协议的开销见图31,从图中我们发现RIP会定时的产生协议的开销,这个定时周期就是路由更新定时器的时间30s左右。并且这种开销一直维持在较高的水平上,在4500到6500bits/s之间。
图 31 整个网络RIP协议的开销
路由表更新总数目见表2,发现其中路由器2和4更新比较频繁,这是由于在500s时在路由器2和4之间设置了一次fail。
Sort By Node Sorted By Average 10.8 Sort By Peak 28 BackBone_Router_2 BackBone_Router_4 10.0 29
8.0 29 BackBone_Router_3 EastNet_2.center_2 8.0 31
8.0 29 SouthNet_3.center_3
最后我们分析一下路由表的变化,在分析之前因为我们的拓扑网络的IP是自动分配的,所以这里我们要获得整个网络的IP分配情况,在File-Opne的下来菜单中选择Generic Data File 然后选择
RIP_Router_SIM_RIP_Failure-ip_addresses,这是个gdf文件(见图32),包含了整个网络的IP分配情况,整个网络的IP分配图见图33。除了图上非配的,另外还有192.0.16.0~192.0.13.0分配给R1到R4作为环回LoopBack。
图 32 包含IP分配信息的gdf文件
图 33 整个网络的IP分配图
为了分析路由表,首先截取了路由器2在500s、1000s、18000s时的路由表,见图34-36
图 34 500s时Router2的RIP路由表
图 35 1000s时Router2的RIP路由表
图 36 1800s时Router2的RIP路由表
通过3个路由表分析,当500s时出现了Router2和Router4之间的失效,这样直接导致Router2到192.0.11.0子网等子网出现断开,也就是将距离设为
Metric=16,但是之后通过RIP的机制,能够重现收敛,寻找到新的最短路径到达上述的子网。然后Router2和Router4之间的子网在1000s时恢复,这样路由表需要重新以使得当前路由表是最短路径,最终即为初始无实效的状态如图36
4.3.6 对RIP协议的总结
R口协议是基于距离矢量算法的内部网关协议,它是以跳数为度量值来计算路由的,而且最大跳数只支持15跳,16跳的网络被认为是不可达的。在RIP协议中,网络是一个平面的概念,并无区域及边界等的定义。RIP协议没有邻居发现和负载均衡机制,而且RIP有两个版本,RIPvl本质上就是不安全的,因为它没有身份认证机制,并且它使用不可靠的UDP(用户数据报协议)协议。RIPV2有一个选项可以设置长达16个字符的明文密码或MD5签名,但是依然很容易被篡改或欺诈。
第五章 实验心得体会以及不足
5.1 心得和体会
通过本次试验学到了很多东西同时也对计算机网络以及路由协议有了更深一层的了解。下面分别列出在整个实验中我的收获。
1、学习了搭建OPNET仿真工具的开发环境。经过摸索最终选择了在Vmware虚拟家中搭建实验环境,因这样使实验环境更稳定,同时由于虚拟机具有Snapshot机制,所以有助于保留一些错误。
2、通过学习《OPNET Modeler与网络仿真》、《OPNET网络仿真》以及《现代网络设计》对OPNET有了初步了解,三本书系统的讲解了OPNET的使用,由于本次试验仅仅需要使用OPNET的第一个层次的仿真,即网络模型的仿真,所以书上的内容很多还是比较深的,帮助不是很大。除了课本外我还查询了很多其他资料,包括国外的OPNET实验教材以及一些在OPNET网络仿真领域的论文,这些都对我本次试验有很大帮助。
3、在实验中最大的体会就是OPNET功能的强大,当然功能强大也就意味着他的复杂。尤其是它包含大量的对象组件,同时每个对象组件有很多属性,我们必须找到我们需要的属性进行设置。由于软件是英文的,在学习的过程中也锻炼了自己的英语。另外也发现对于OPNET种类繁多的属性以及对象没有太多资料可查,能依靠的只有OPNET自带的帮助文档。
4、另外OPNET中的结果分析功能很强大,可以自动生成很多图表,并且可以进行对比。最方便的功能就是可以自动生成HTML格式的报告,方便保留查看。实验中我就是把几个实验全部生成了实验报告,再进行分析的。
5.2 实验中的不足
在做RIP协议的仿真实验中,我深入的研究了RIP协议,对RIP协议有了一个透彻的了解。关于RIP有些缺点,主要是好消息传播得快而坏消息传播的慢。我本想在实验中模拟一个RIP协议换消息传播慢的例子。其实实验原理也很简单,就是在Router2和Router4失效的时候能够,Router2将到子网192.0.2.0的路由度置为16,只要在Router2公告前,其相邻路由器向Router2发布一个过时的路由信息让Router2错误的更新自己的路由(就是把16换成可达的),这样在Router2和这个路由之间就会出现一个路由环路,知道A将192.0.2.0的度增加到16,才能判断出该子网失效。但是通过查些资料,发现在Router2发布公告时只会随机的时延,也就是说如果要模拟上述情况需要让其他路由在这个随机时延内向
Router2发送一个过时的路由信息。但是我通过多次仿真运行也没有遇到这种情况,后面需要进一步学习OPNET,通过一些方法,自己编程实现控制在此时给Router2发送一个过时的路由信息,从而达到模拟的效果。
(注:范文素材和资料部分来自网络,供参考。请预览后才下载,期待你的好评与关注。)
因篇幅问题不能全部显示,请点此查看更多更全内容