知识卡片|最全RIP动态路由协议技术详解

上一章节我们介绍了静态路由协议如何通过静态路由实现负载分担和主备路由?|内附知识卡片总结

 

今天我们一起来看下RIP动态协议,其实不管时静态路由协议还是动态路由协议,他们最终的目的都是生成路由路由器根据各种协议产生的路由选择最优路由加入路由表,用于指导数据包转发。

 

其实RIP基本上在现网中基本已经淘汰了,那么为什么还要花一章节介绍呢

 

1、RIP是一种比较简单的动态路由协议,通过学习方便理解动态路由协议,有助于后续其他动态路由协议的学习和理解;

 

2、按照RIP、OSPF、ISIS、BGP的学习顺序学习,方便在学习的过程中进行对比,可以由浅入深学习;

 

3、目前考试认证还会涉及到RIP路由协议。

 

 

正文

 

 

1

什么是RIP协议

 

路由信息协议RIP(Routing Information Protocol),是一种比较简单的内部网关协议(IGP),它是一种基于距离矢量(Distance-Vector)算法的协议,使用了基于距离矢量的贝尔曼-福特算法(Bellman-Ford)来计算到达目的网络的最佳路径,使用跳数作为度量来衡量到达目的网络的距离

 

几个概念:

1、IGP:

IGP(内部网关协议)是在一个自治网络内网关(主机和路由器)间交换路由信息的协议。

IGP协议包括RIP、OSPF、IS-IS。

 

2、距离矢量算法:

距离矢量协议根据距离的远近来决定最好的路径。距离可能用跳数来代表一个距离值。

 

3、跳数:

数据包经过一台路由器就是一跳,经过的路由器数量,就是它的跳数。

 

 

2

RIP协议的工作原理:

 

路由器启动时,路由表中只会包含直连路由

 

运行RIP之后:

1、路由器会发送Request报文,用来请求邻居路由器的RIP路由。

2、运行RIP的邻居路由器收到该Request报文后,会根据自己的路由表,生成Response报文进行回复。

3、路由器在收到Response报文后,会将相应的路由添加到自己的路由表中。

 

RIP网络稳定以后,每个路由器会周期性地向邻居路由器通告自己的整张路由表中的路由信息,默认周期为30秒。邻居路由器根据收到的路由信息刷新自己的路由表。

 

RIP协议度量——跳数

 

RIP使用跳数作为度量值来衡量到达目的网络的距离。

 

在RIP中,路由器到与它直接相连网络的跳数为0,每经过一个路由器后跳数加1。为限制收敛时间,RIP规定跳数的取值范围为0~15之间的整数,大于15的跳数被定义为无穷大,即目的网络或主机不可达。

 

路由更新原则:

 

路由器从某一邻居路由器收到路由更新报文时,将根据以下原则更新本路由器的RIP 路由表:

 

1、对于本路由表中已有的路由项,当该路由项的下一跳是该邻居路由器时,不论度量值将增大或是减少,都更新该路由项(度量值相同时只将其老化定时器清零。

 

路由表中的每一路由项都对应了一个老化定时器,当路由项在 180 秒内没有任何更新时,定时器超时,该路由项的度量值变为不可达)。

 

2、当该路由项的下一跳不是该邻居路由器时,如果度量值将减少,则更新该路由项。

 

3、对于本路由表中不存在的路由项,如果度量值小于16,则在路由表中增加该路由项。

 

4、某路由项的度量值变为不可达后,该路由会在 Response 报文中发布四次(120 秒),然后从路由表中清除。

 

3

RIPV1和RIPv2版本对比:

RIP包括RIPv1和RIPv2两个版本。

 

  • RIPv1为有类别路由协议,不支持VLSM和CIDR。

        RIPv2为无类别路由协议,支持VLSM,支持路由聚合与CIDR。

 

  • RIPv1使用广播发送报文;

        RIPv2有两种发送方式:广播方式和组播方式,缺省是组播方式。

 

RIPv2的组播地址为224.0.0.9。组播发送报文的好处:

1、在同一网络中那些没有运行RIP的网段可以避免接收RIP的广播报文;

2、组播发送报文还可以使运行RIPv1的网段避免错误地接收和处理RIPv2中带有子网掩码的路由。

 

  • RIPv1不支持认证功能,

        RIPv2支持明文认证和MD5密文认证。

 

4

RIP协议的报文头

 

RIPv1报文格式:

 

 

RIP协议通过UDP交换路由信息,端口号为520。

RIPv1以广播形式发送路由信息,目的IP地址为广播地址255.255.255.255。

 

报文格式中每个字段的值和作用:

 

1、Command:表示该报文是一个请求报文还是响应报文,只能取1或者2。1表示该报文是请求报文,2表示该报文是响应报文。

 

2、Version:表示RIP的版本信息。对于RIPv1,该字段的值为1。

 

3、Address Family Identifier(AFI):表示地址标识信息,对于IP协议,其值为2。

 

4、IP address:表示该路由条目的目的IP地址。这一项可以是网络地址、主机地址。

 

5、Metric:标识该路由条目的度量值,取值范围1-16。

 

一个RIP路由更新消息中最多可包含25条路由表项,每个路由表项都携带了目的网络的地址和度量值。整个RIP报文大小限制为不超过504字节。如果整个路由表的更新消息超过该大小,需要发送多个RIPv1报文。

 

RIPv2报文格式

 

 

RIPv2在RIPv1基础上进行了扩展,但RIPv2的报文格式仍然同RIPv1类似。

 

其中不同的字段如下所示:

1、AFI:地址族标识除了表示支持的协议类型外,还可以用来描述认证信息。

 

2、Route tag:用于标记外部路由。

 

3、Subnet Mask:指定IP地址的子网掩码,定义IP地址的网络或子网部分。

 

4、Next Hop:指定通往目的地址的下一跳IP地址。

 

 

RIPv2–认证报文格式

 

RIPv2支持对协议报文进行认证,认证方式有明文认证MD5认证两种。

 

 

RIPv2的认证功能是一种过滤恶意路由信息的方法,该方法根据key值来检查从有效对端设备接收到的报文。这个key值是每个接口上都可以配置的一个显示密码串,相应的认证类型(Authentication Type)的值为2。

 

早期的RIPv2只支持简单明文认证,安全性低,因为明文认证密码串可以很轻易地截获。随着对RIP安全性的需求越来越高,RIPv2引入了加密认证功能,开始是通过支持MD5认证(RFC 2082)来实现,后来通过支持HMAC-SHA-1认证(RFC 2082)进一步增强了安全性。

 

 

5

RIP-环路问题

 

当网络发生故障时,RIP网络有可能产生路由环路。

 

本示例介绍了RIP网络上路由环路的形成。

 

 

如图所示,RIP网络正常运行时,RTA会通过RTB学习到10.0.0.0/8网络的路由,度量值为1。一旦路由器RTB的直连网络10.0.0.0/8产生故障,RTB会立即检测到该故障,并认为该路由不可达。此时,RTA还没有收到该路由不可达的信息,于是会继续向RTB发送度量值为2的通往10.0.0.0/8的路由信息。

 

RTB会学习此路由信息,认为可以通过RTA到达10.0.0.0/8网络。

 

此后,RTB发送的更新路由表,又会导致RTA路由表的更新,RTA会新增一条度量值为3的10.0.0.0/8网络路由表项,从而形成路由环路。这个过程会持续下去,直到度量值为16。

 

解决方法:

 

1、定义一个最大值:

 

如上所述,路由环路形成时,A和B路由器相互不断更新到10.0.0.0网络的路由表时,跳数不断增加,网络一直无法收敛。所以给跳数定义一个最大值,当跳数达到这个最大值时,则10.0.0.0网络被认为是不可达的。但是定义最大值不能避免环路产生,而且最大跳数不能定义太大,不然耗费大量时间进行收敛,也不能定义太小,如果太小则只局限于一个小型的网络中。RIP允许跳数的最大数为15.

 

2、水平分割(splithorizon):

 

看看路由环路产生得原因,B从A那收到到达10.0.0.0网络的路由信息,接着又把该信息发给A网络,从而引起相互不断的更新,而水平分割就是不允许路由器将路由更新信息再次传回到传出该路由信息的端口,即B从A收到路由信息后,B不能把该信息再次回传给A,这就在一定程度上避免了环路的产生

 

3、抑制时间/保持关闭(holddown timer)

 

一条路由信息无效之后,一段时间内这条路由都处于抑制状态,即在一定时间内不再接收关于同一目的地址的路由更新.如果路由器从一个网段上得知一条路径失效,然后,立即在另一个网段上得知这个路由有效,这个有效的信息往往是不正确的,抑制计时避免了这个问题,而且当一条链路频繁起停时,抑制计时减少了路由的浮动,增加了网络的稳定性.

 

4、路由中毒(poison reverse)

 

路由中毒即在网络故障或接口复位时,让相应的路由项中毒,即将路由项的度量值设为无穷大,表示该路由项已经失效,并且当接收到一个路由中毒时,它会发送一个中毒反转的更新.返回产生路由中毒的发送方.一般在这个时候都会同时启动抑制时间。

 

举个例子,比如上面的10.0.0.0网络出现故障,则B路由器到10.0.0.0网络的路由表的度量值会被设置为最大,表示10.0.0.0网络已经不可达,并且启动抑制时间.此时B路由器发送更新到A,该路由的跳数设置为16。利用这种方式,可以清除对方路由表中的无用路由。

 

5、触发更新(trigger update)

 

缺省情况下,一台RIP路由器每30秒会发送一次路由表更新给邻居路由器。

当本地路由信息发生变化时,触发更新功能允许路由器立即发送触发更新报文给邻居路由器,来通知路由信息更新,而不需要等待更新定时器超时,从而加速了网络收敛。

 

回顾下路由环路产生的原因,B路由器接收到10.0.0.0网络故障信息后,等待更新周期的到来后再通知A路由器,结果A的更新周期提早到来,结果掩盖了10.0.0.0网络的故障信息,从而形成环路。

 

触发更新的机制正是用来解决这个问题,在收到故障信息后,不等待更新周期的到来,立即发送路由更新信息。但是还是有个问题,如果在触发更新刚要启动时却收到了来自A的更新信息,就会进行错误的更新。可以将抑制时间和触发更新相结合,当收到故障信息后,立即启动抑制时间,在这段时间内,不会轻易接受路由更新信息,这个机制就可以确保触发信息有足够的时间在网络中传播。

 

 

6

RIP协议的优缺点:

 

优点:

对于小型网络,RIP就所占带宽而言开销小,易于配置、管理和实现。

 

缺点:

1、RIP也有明显的不足,即当有多个网络时会出现环路问题。

2、若采用RIP协议,其网络内部所经过的链路数不能超过15,这使得RIP协议不适于大型网络。

 

7

RIP协议的应用场景:

 

最初的RIP协议开发时间较早,所以在带宽、配置和管理方面要求也较低,因此,RIP主要适合于规模较小的网络中

 

 

8

实战:RIP协议配置和抓包分析

 

RIPV1配置实例:

 

 

R2配置:

#

interface Ethernet0/0/0

ip address 192.168.1.1 255.255.255.0

#

interface GigabitEthernet0/0/0

ip address 10.1.1.1 255.255.255.252

#

rip 1

network 192.168.1.0

network 10.0.0.0

#

 

R1配置:

#

interface GigabitEthernet0/0/0

ip address 10.1.1.2 255.255.255.252

#

interface GigabitEthernet0/0/1

ip address 10.1.2.1 255.255.255.252

#

rip 1

network 10.0.0.0

#

 

R3配置:

#

interface Ethernet0/0/0

ip address 192.168.2.1 255.255.255.0

#

interface GigabitEthernet0/0/0

ip address 10.1.2.2 255.255.255.252

#

rip 1

network 10.0.0.0

network 192.168.2.0

#

 

查看R1的路由表:

 

 

查看R2的路由表:

 

 

查看R3的路由表:

 

 

Ping测试:

 

 

在R1接口G0/0/0接口抓包:

 

 

对报文进行分析:

 

1、R2发送Request报文,用来请求邻居路由器的RIP路由;

 

 

2、R1收到该Request报文后,会根据自己的路由表,生成Response报文进行回复。

 

RIPV2配置实例:

 

基亍前面的配置,只需在RIP子规图模式下配置version 2即可。
[R1]rip 1
[R1-rip-1]version 2
[R2]rip 1
[R2-rip-1]version 2
[R3]rip 1
[R3-rip-1]version 2

 

在R1接口G0/0/0接口抓包:

 

 

分析:

1、R1发送Request报文,用来请求邻居路由器的RIP路由

 

 

2、R2收到该Request报文后,会根据自己的路由表,生成Response报文进行回复。

 

总结