3网络互联-3.5【实验】【计算机网络】
- 前言
- 推荐
- 3网络互联
- 3.4 IP分组转发与静态路由
- 3.5 动态路由配置及RIP协议分析
- 实验目的
- 实验内容及实验环境
- 实验原理
- 1. RIP协议
- 2.RIP分组格式
- 3.RIP协议工作原理
- 实验过程
- 1.搭建一个多跳网络拓扑,配置RIP协议参数
- 2.观察并分析RIPv1和 RIPv2分组格式
- 3.在模拟模式观察RIP协议拓扑发现和计算路由的过程
- 实验过程演示
- 1.搭建一个多跳网络拓扑,配置RIP协议参数
- 2.观察并分析RIPv1和 RIPv2分组格式
- 3.在模拟模式观察RIP协议拓扑发现和计算路由的过程
- 3.5.1实验章节测验
- 一.单选题(共6题,75.0分)
- 二.多选题(共2题,25.0分)
- 最后
前言
2023-5-18 15:54:56
以下内容源自《【实验】【计算机网络】》
仅供学习交流使用
推荐
3网络互联
3.4 IP分组转发与静态路由
3网络互联-3.4【实验】【计算机网络】
3.5 动态路由配置及RIP协议分析
实验目的
1.理解RIP协议的工作原理,掌握RIP协议的配置方法;
2.观察并理解RIP协议分组格式;
3.观察并理解RIP协议路径发现和推导路由的过程。
实验内容及实验环境
1.搭建一个多跳网络拓扑,配置RIP协议参数;
2.观察并分析RIPv1和RIPv2分组格式;
3.在模拟模式观察RIP协议拓扑发现和计算路由的过程。
实验原理
通过理论课程的学习可以知道,互联网为了使核心层路由的路由表快速适配网络拓扑的变化,开发了很多的算法,并且采用分布式层次化的路由管理策略。互联网通过自治系统间的bgp协议在最高层次的进行规划。各个自治系统内部可以根据其路径代价的特殊要求,选择不同的内部网关协议,实施其路由策略。不同的内部网关协议对共享路由信息路径代价度量以及计算收敛的方法各有不同。大致方向上有基于距离矢量的和基于链路状态两类。
下面我们介绍RIP协议的概念。
1. RIP协议
RIP ( Routing Information Protocol)是以距离矢量为路径代价度量的动态路由协议
使用跳数衡量到达目的网络的距离
- RIP认为一个好的路由就是它通过的路由器的数目少,即“距离最短”
- RIP将直连网络距离定义为0,距离16表示网络不可达,即一条路径最多只能包含15个路由器
RIP协议的基本原则:简单
- 仅和邻居路由器(共享相同的数据链路的路由器)交换信息
- 路由器间交换的内容是自己的路由表
- 周期性更新: 30s
- 路径计算使用Bellman-Ford算法
2.RIP分组格式
协议封装
应用层, UDP , port520
下图为RIP分组格式:
版本演进
- RIPv1 ( RFC1058):使用分类的IPv4地址,以广播的形式发送报文,不支持VLSM和CIDR,不支持认证
- RIPv2 (RFC2453):使用CIDR的IPv4地址,支持VLSM和路由聚合,以广播或组播(224.0.0.9)方式发送报文,支持明文认证和MD5密文认证
- RlPng (RFC 2080):使用IPv6地址,组播通信,支持认证
3.RIP协议工作原理
初始化:直连路由推导
和静态路由一样,RIP首先使用接口配置参数推导直连路由。但是为了应用距离矢量算法进行一定推导,在路由表中还需要相应的路径矢量信息来描述路径的度量。所以启用了rip协议的路由表。
我们会看到你静态路由表多了一列表示距离的信息,那么按照这种方式,路由器RTA的初始路由就是10.1.1.0和10.1.2.0分别位于RTA的端口2和端口1。在这个图中只是为了适应我们并没有给出具体的参数,所以没有具体的接口名称,他的下一条就没有明确给出。而在rip协议中,直连网络的距离为零同样道理,而RTB它的初始路由表就是10.1.2.0的直连路由和10.1.3的值。 RTC就是10.1.3的直连路由和10.1点4.0的直连路由。
间接交付路由推导: Bellman-Ford
step1:修改接收到的路径信息:将下一跳改为发送路径信息的邻居,距离加“1”
step2:用修改后的路径信息更新自己的路由表
- 新路径(目标网络不在自己的路由表中)则添加
- 相同路径(目标网络和下一跳邻居都相同)的新消息则更新
- 不同路径(目标网络相同,但下一跳邻居不同)选最优(最短路径)
RIP协议通过邻居路由器间交换路由表来推导间接交付路由。所谓邻居路由器,就是指直接相连在同一电路上的两个路由器;这两个路由器共享一条链路,在链路上,这两个路由器之间不再有其他的路由器。而是间接交付路由使用的推导方法是Bellman-Ford算法。该算法的基本思想就是以自己到达邻居的距离和邻居路由器到达目标网络的距离来推算自己到达目标网络的距离。
在Bellman-Ford算法的控制下,当一个路由器收到来自于邻居的RIP消息:
- 首先要把这些消息中的路径信息进行修改,把这些路径信息的下一跳改为发送这个路径信息的邻居路由器的端口IP地址。然后把这些消息中的所有路径的距离加1;
- 然后,用修改后的这些路径信息来更新自己的路由表。对比收到消息中的每一条路径,在自己的路由表中进行查找替换。查找的结果有三种:
- 第一种。当收到消息的路径信息的目标网不在当前路由器的路由表中则称这种消息为新路径,直接添加在当前路由器的路由表中。
- 而如果收到消息的目标网络存在于当前路由器的路由表中,那么就看收到这条消息的当前这个网络的下一条消息和查找到的这个路径和下一条。邻居是否相同:
- 新消息和当前路由表中的条目都一样,则把这条消息称为相同路径的新消息,那么就用收到的新消息路径的信息来更新当前路由表中的这个条目。
- 而如果收到的路由表中的某一个路径条目中的目标网络存在于当前路由表中,但是收到的这个消息的这个目标网络的下一跳和当前路由表中查到这个网络的下一跳不相同,那么我们把这条消息称为这个网络的不同路径消息。当存在不同路径的时候,Bellman-Ford算法。就会在这两条消息中选择一个最优的路径,即距离最短的路径。
在RIP协议中不允许到达同一目标网络存在两个代价相同的路径,也就是说,到达目标网络只能存在一条路径。那有时候我们会遇到就是收到的消息的。不同路径的消息的路径代价和当前路由表的路径代价是相同的。这个在rip协议里面没有做规定,由这个程序员自己来设计。但是呢,不允许两条路径同时存在。
那下面,我们就基于刚才我们推导出初始路由的这个网络中的三个路由器。然后呢,使用Bellman-Ford算法来看一下这个目标的更新过程。
假定RTB首先发送这个RIP消息,那么当RTB发送这个消息之后。那么假定他先给RTA发送这个消息。当RTA收到RTB发来的RIP消息,首先把这个消息中的下一跳,修改为收到这个消息的端口地址10.1.1.2,然后把原来的RIPB的这个所有的距离离加1。那么这就是收到的这个新消息。然后用这个新消息来更新RTA当前自己的路由表。那么首先第一个目标网络10.1.2.0用这个目标网络在RTA的路由表查表,可以查找一个目的网络。那么这个目的网络,它的下一跳和当前路由表的下一跳是不同的。当前路由表的下一跳是直接连接的端口,而收到消息的下一跳是这个消息的发送端口10.1.2.2。那么这时候呢,像刚才算法中我们就把它定义为不同路径,当不同路径的时候我们就要选最优路径。那么在RTA的原始用表中的这条路径的距离为0,而收到消息的距离为1。所以这时候RTA的路口选择10.1.2.0这种网络的路径维持原路径点。然后下面有收到消息的下一条路径,就是10.1.3.0网络的路径。查表,那么我们会发现RTA中没有10.1.3.0,所以10.1.3.0这条的路径,对RTA来说就是一条新消息,因此把它添加在RTA的路由表中,那么这就完成了RTA上的RIP更新。
同样道理,对于RTB,因为这个消息是同时向两个端口来发送的。这个消息,也会到达RTC,只不过和RTA收到的消息处理方式不一样。R TC会把下一跳改成收到这个消息的邻居RPB的这个端口,而RTB发送给RTC的这个消息,它的端口是10.1.3.1。所以这时候呢,在RTC收到RTB的路由表之后,发消息下一跳,都改成10.1.3.1,同时把距离变成距离1,同样的道理和RTA一样,然后用这些条目去查RTC的路由表,那可以发现10.1.2.0不在RTC的路由表。这是一条新路径,因此添加在RTC的路由表中,而10.1.3.0这个网络存在于RPC原先的这个路由表中,那么它的下一跳不同,所以是不同路径。不同路径保留最小的最优路径。而RTC原来的到达10.1.3.0是直达的,距离为零,因此维持不变。
RTA和RTC收到RTB的消息。更新完路由表了之后,紧接着他们的30秒了也到了。这时候,RTA和RTC会分别各自向RPB发送自己的这个rip消息。
那么当RTA的rip消息到达RTB之后,那么RTA更新后的路由表就到达了RTB。同样,RTB会把收到的这个rip消息中的下一跳更新为收到这个消息的端口,因为这个消息是RTA发过来的,所以它的端口就是10.1.2.1。同时,把收到的RTA的路由表的距离加1;RTA中原来的路由表的距离三个网络10.1.1.0、10.1.2.0、10.1.3.0的距离分别是0、0、1,那么RTB就会把它修正为1、1、2,然后把收到消息的这个路由表和RTB当前的条目进行合并。那么第一个网络路径信息10.1.1.0,通过在RTB中查表,没有在路由表后,因此添加到RTB的路由表中。然后,10.1.2.0这个目标网络存在于RTB中,这时候就会看下一跳,那么这两个下一跳不一样,所以对RTB来说,这就是一个不同路径;不同路径选最优。那么收到消息的距离为1,而原来的消息距离为0,所以10.1.2.0这个网络的信息不变,然后10.1.3.0一样道理也不变,因为原来的RTB到达这两个都是直连的,肯定会比转发的这两个距离要优。
那么紧接着RTC也会把自己的路由表以rip消息的形式发送给RTB,那么RTB拿到RTC的消息同样也是会把下一跳修改。那么这时候呢,他修改的下一条就和RTA刚才修改不一样,因为这条消息是RTC发过来RTC通过他的端口2发过来的,所以RTC的端口2的IP地址将会更新这个消息的下一条10.1.3.2,然后把RTC填写表的距离都加1,这时候距离变成1、1、2,同样的道理,我们使用这三个路径条目,然后去查RTB的路由表进行更新。同样道理,10.1.3.0存在于RTB的路由表中,而且他也没有RTB的10.1.3.0原来的路径优,所以不发生改变。 10.1.4.5不在RTB的路径中,因此这时候10.1点4.0对于RTB来说就是一个新路径,把它添加到RTB的路由表中,而10.1.2.0它的距离为2,那么原来RTB的10.1.2.0的距离是0,而且他们的下一跳不同,不同的路径取最优,所以RTB的10.1.2.0的这个路径不发生改变。
那么这个过程就完成了各自的路由器的这样一个往复过程。大家可以看,通过路由器的这样一个迭代,那么最终RTB更新以后的路由表在下一轮的迭代中就会分别交给RTA和RTC。这时候呢,RTA就可以通过RTB学到RTC所连接的10.1.4.0的这个网络。RTC就可以通过RTB学到RTA发来的10.1.1.0的网络。这些路由器就会紧接着每隔三十秒钟固定发自己的路由表。而当网络链路状态发生改变,又没有新的网络加入的时候,那么这些路由表就不会发生新的改变。
通过刚才的过程,我们可以看出来再有新的路径传过来,是不是比自己本有的路由表的这个路径的代价都要高那么这时候我们就称RIP协议,这个路由表的这个算法就收敛了,达到稳态。那么RIP协议不好的一点是,即使到达稳态,每个路由器也会每隔三十秒钟向邻居发送自己的路由表,这时候会对网络造成很大的负担和开销。
定时器:
- 周期更新定时器:用于触发路由表更新的RIP消息发送,周期为30s
- 超时定时器:用于保活路径条目,周期为180s 。
- 清除定时器:用于判定是否清除一条路径条目,时长为120s
- 延迟定时器:为避免网络初始化引起的所有路由器同时触发更新导致广播风暴而设置,时长随机1~5s间。
RIP协议使用四个定时器控制路径消息的更新。
周期更新定时器用于触发路由表更新的rip消息发送,周期为三十秒钟。启用了rip协议的路由器,在该定时器的控制下,每隔三十秒钟向所有的活动端口发送rip消息。rip消息的内容就是路由器当前的路由表中的所有条目。
超时定时器用于保活路径条目,周期为180秒。在路由器中,当路由器中的某个条目是由rip消息学习而来,那么就会在该定时器的控制下检测当前的这个路由条目是否可用的有效性。如果rip的路径超过180秒钟还没有被更新。那么这时候呢,这个条目就会变为非活动条目,而非活动条目,不会直接从路由表中删除。
还要有一个清除定时器来控制,当处于非活动状态下,超过120秒钟还没有被更新。这时候就可以把这条路径清除掉。
此外,RIP协议还有一个延迟定时器。该定时器是为避免网络初始化所引起的所有路由器同时触发更新而导致的广播风暴而设置。这样就可以使得自制系统中的所有瑞普路由器可以在一到五秒之间错开进行路径消息的更新。
RIP的路由环路问题
RIP协议的三十秒钟定期更新可以及时发现路径状态的改变。
但是,仅使用路由表作为路径消息描述并不能使路由器推导出网络的全局拓扑。也就是说,rip路由器仅知道某个网络的可达性以及路径的距离长度,但是并不知道路径上除下一跳之外的其他节点的信息。这样不完整的网络描述会导致坏路径的消息循环。
例如,当RTC所连接的10.1.4.0网络发生故障,而RTC感知到该故障,并将网络设置为不可达,也就是说,把距离设置为16。
此时如果RTC先于RTA和RTB。触发更新,那么这样的网络故障状态就会经由RTB扩散给RTA。此时网络上的三个路由器就都知道10.1.4.0网络不可达了。
但是如果RTC没有来得及将这个网络的故障信息扩散出去。而此时就收到了RTB发送过来的rip消息。那么这时候rip发来的消息中包含有10.1点4.0的信息,这时候就会产生一个误解,认为自己不能到达10.1.4.0,而经由邻居RTB可以到达10.1点4.0。这时候就会用RTB发来的消息中的关于10.1.4.0的这样一个路径消息来更新自己的路由表。对RTC来说,RTB发来的10.1.4.0和自己路由表的10.1.4.0是同一个目标网络。但是自己的下一跳和RTB的下一跳是不同的,就是不同路径。那么对于不同的路径,根据Bellman-Ford算法比较距离,RTC的距离为16,而RTB发过来的距离为1,经过RTC更新之后的距离就是,2,那么这时候,距离2就可以说最优距离,因此RPC就会用RTB的这条消息来更新10.1.14.0的网络状态,从而把不可达变成经由RGB可以到达10.1.4.0,然后跳数是2。
随后RTC的更新时间到,又会将10.1.4.0的新状态以新消息的形式去影响RTB的路由表更新,使其距离变为3。下一步,RTB又会影响RTA和RTC,使其到达10.1.4.0的网络距离更新为4。
但是RTA不会对RGB中的10.1.4.0网络路径产生新的影响,因为它的路径信息没有RTB中的原有的路径信息优。
但是随后RTC返回来的消息又会影响RTB中的10.1.4.0的网络的状态。使其将距离更新为5。如此往复循环下去,直到到达这个距离字段溢出。 10.1.4.0的错误网络信息形成循环叠加,直至距离字段的最大值。
RIP的路由环路问题解决方案
- 设置hops计数上限(16跳),带来规模扩展问题
- 水平分割, IGRP的层次路由2级256跳
- 毒性逆转
RIP的痛点
- ·收敛速度慢
- 报文量大
- 占用较多网络开销
为了解决RIP的路由循环,在rip协议中,定义了最大距离。
在ripv1和ripv2版本里面,把这个最大距离都定义为16,就是为了防止往复循环所造成的距离不断的溢出问题,以及网络故障状态中收敛的时间过长。这样的设计弊端就是限制了rip网络的规模。也就是说,使用rip管理的网络最长距离,不能超过16跳,这也就是RIP协议一般不会应用于大规模网络的原因,而在后期的IGRP协议里面,思科通过引入水平分割来应对规模扩展的问题。通过在自治系统内部划分区域,可以用两级紫色。 IGRP的距离向量和管理的网络的规模达到256跳。但是对于这个坏消息的往复循环的问题没有办法解决。因此在后期的协议里面又通过毒性逆转的方法,也就是说让路由器不要将从邻居获得的路径消息返回给邻居,从而来避免坏消息的往复循环的问题。
RIP协议虽然简单并行开销小,但是存在收敛速度慢定时更新和全路由表发送带来的稳定,使得大量无效消息传送,导致较多的网络资源浪费。所以在后期的IGRP、OSPF等协议中对路径代价的度量和更新方式也进行了大幅度的改进,当然也支持算法更加复杂,所以路由器的性能要求也就更高。
2023-5-18 16:06:51
实验过程
1.搭建一个多跳网络拓扑,配置RIP协议参数
2.观察并分析RIPv1和 RIPv2分组格式
3.在模拟模式观察RIP协议拓扑发现和计算路由的过程
2023-5-18 20:16:31
实验过程演示
2023-5-18 20:17:45
、
1.搭建一个多跳网络拓扑,配置RIP协议参数
搭建网络拓扑并给各个接口配置了IP参数
查看路由表
虽然,我们没有配置路由协议,但是我们依然可以看到直连路由信息。
下面,我们来配置RIP路由协议
为了避免自动绘制影响后面实验的结果
在CLI选项卡中
输入enable
输入configure terminal
输入route rip
输入no auto-summary
可以通过可视化界面配置
配置Route0
可以用命令行配置
配置Route1
配置Route2
查看路由表
2.观察并分析RIPv1和 RIPv2分组格式
对各个路由器进行保存配置并重新启动
点击重新加电
这时候,路由器处于半启动状态,路由表中暂无信息
开始仿真
把Route1的版本改为V2
这时候,Route1不接受Route0的报文
因为版本不匹配
接受RIPv2
发出RIPv1
3.在模拟模式观察RIP协议拓扑发现和计算路由的过程
为了防止前面配置的协议影响实验过程
我们重新创做实验1
因为Route1没有启用RIP协议
Route2也是不响应
Route0更新的RIP发到Route1
Route2没有配置RIP协议
Route2配置RIP协议
2023-5-18 22:28:54
3.5.1实验章节测验
一.单选题(共6题,75.0分)
1【单选题】直接封装RIP、OSPF、BGP报文的协议分别是 ( )
A、TCP、UDP、IP
B、TCP、IP、UDP
C、UDP、TCP、IP
D、UDP、IP、TCP
我的答案:D得分: 12.5分
2【单选题】直连路由、静态路由、rip、 ospf按照默认路由优先级从高到低的排序正确的是( )
A、直连路由、静态路由、rip、 ospf
B、直连路由、静态路由、ospf、 rip
C、直连路由、ospf、 rip、 静态路由
D、直连路由、rip、 静态路由、ospf
我的答案:B得分: 12.5分
3【单选题】在rip 中metric等于( )为不可达。
A、8
B、9
C、15
D、16
我的答案:D得分: 12.5分
4【单选题】RIP 是在( )之 上的一种路由协议。
A、Ethernet
B、IP
C、TCP
D、UDP
我的答案:D得分: 12.5分
5【单选题】以下协议中,属于IGP的是( )
A、OSPF、EGP、RIP
B、IS-IS、 RIP-2、EIGRP、OSPF
C、BGP、IGRP、 RIP
D、PPP、 RIP、 OSPF、IGRP
我的答案:B得分: 12.5分
6【单选题】一个RIP响应报文中最多可以包含多少个路由项的信息? ( )
A、1个
B、15个
C、25个
D、35个
我的答案:C得分: 12.5分
二.多选题(共2题,25.0分)
1【多选题】有关RIP下列描述中正确的是? ( )
A、RIP协议是 一种静态路由协议
B、RIP协议是种EGP ( Exterior Gateway Protocol)
C、RIP协议是种IGP ( Interior Gateway Protocol)
D、RIP协议是一 种基于DV (Distance Vector) 算法的路由协议
我的答案:CD得分: 12.5分
2【多选题】与RIP-1 相比,以下哪些选项是RIP-2的优势? ( )
A、RIP-2 可以使用组播方式发送RIP消息
B、RIP-2 支持认证功能
C、IP2 不仅可以将跳数作为路由开销的定义,还可以将带宽作为路由开销的定义
D、RIP-2 支持无类路由
我的答案:ABD得分: 12.5分
最后
2023-5-18 22:35:25
你对我百般注视,
并不能构成万分之一的我,
却是一览无余的你。
祝大家逢考必过
点赞收藏关注哦