Rip协议及配置

Rip 基本属于淘汰的技术,工作中很少用了,华为认证等考试也不考了。

但是软考还喜欢经常考。⚡️

【网络工程师配置篇】——华为RIP路由基础配置! (huawei.com)

⚡️ 软考中RIP相关的考点:

● 理解RIP路由更新及接收机制;

● 理解RIP度量值;

● 熟悉RIPv1及RIPv2的报文格式;

● 熟悉RIP的几种计时器及其含义;

● 熟悉RIP的Silent-Interface概念及配置。

RIP (Routing Information Protocol) 路由协议是一种相对古老,在小型以及同介质网络中得到了广泛应用的路由协议。

RIP 采用距离向量算法,是一种距离向量协议。RIP分为 RIPv1和RIPv2这两个版本。

RIP 使用UDP报文交换路由信息,UDP端口号为 520。

通常情况下 RIPv1 报文为广播报文;

而 RIPv2 报文为组播报文,组播地址为 224.0.0.9。

RIP 每隔 30 秒向外发送一次更新报文。

如果设备经过 180 秒没有收到来自对端的路由更新报文则将所有来自此设备的路由信息标志为不可达,路由进入不可达状态后,120秒内仍未收到更新报文就将这些路由从路由表中删除。

RIP使用跳数(Hop Count)作为度量值来衡量到达目的地址的距离。

在RIP网络中,缺省情况下,设备到与它直接相连网络的跳数为0,通过一个设备可达的网络的跳数为1,其余依此类推。

也就是说,度量值等于从本网络到达目的网络间的设备数量。

为限制收敛时间,RIP规定度量值取0~15之间的整数,大于或等于16的跳数被定义为无穷大,即目的网络或主机不可达。

即最大跳数为 15

RIP路由表的形成

路由器启动

RIP启动时的初始路由表仅包含本设备的一些直连接口路由。

通过相邻设备互相学习路由表项,才能实现各网段路由互通。

在RIP数据库中的每个路由条目都包含:目的网络地址/网络掩码、度量值、下一跳地址、老化计时器以及路由状态标识等信息

RIP数据库中的有效路由条目被加载到路由器的路由表中。

每台运行RIP的路由器周期性地将自己的路由表通告出去,当路由器收到RIP路由更新时,如果这些路由是自己并未发现的并且是有效的,则将其加载到路由表,同时设置路由的度量值和下一跳地址。

在初始情况下,所有的路由器都能自动发现自己的直连路由,并且将直连路由写入路由表。

1663134407965

初次交换路由信息

由于R1、R2及R3都运行了RIP,因此它们都将自己路由表中的路由通过RIP协议报文周期性地从所有激活了RIP的接口通告出去。

例如,对于R2而言,它会将自己的路由表从GE0/0/0和GE0/0/1接口通告出去。

以192.168.23.0/24路由为例,R2会将关于该路由的更新从GE0/0/0接口通告给R1,它将该路由的度量值设置为1跳(0跳加1跳,也就是加上“自己这一跳”)

RIP路由器将自己路由表中的路由通告出去时将跳数加1,而收到该路由更新的RIP路由器将路由安装到自己路由表时则使用这个度量值。

R1收到R2所通告的路由更新后发现192.168.23.0/24路由在其路由表中并不存在,于是将该路由“学习”过来,加载到路由表中,将路由的度量值设置为1跳(意思是自己要到达192.168.23.0/24,需要经过一个RIP路由器)。

此外还将该路由的下一跳设置为路由的更新源R2(它从路由更新报文的源地址获得R2的IP地址),出接口设置为GE0/0/0。

R3,同理,也会学习到相关的路由。

经过这一轮路由通告及学习,R1能够学习到192.168.23.0/24路由,R2能够学习到1.0.0.0/8及3.0.0.0/8两条路由,而R3能够学习到192.168.12.0/24路由,如图:

1663134899671

RIP路由更新与路由表

实际上,对于RIP路由器而言,它并不知晓整个网络的拓扑结构。

从直连路由器收到RIP路由更新;将路由加载到路由表;将路由通告给其他直连路由器。

报文类型及格式

RIP的协议报文采用UDP封装,报文的源、目的端口均是UDP 520 端口。

RIP定义了两种报文,它们分别是请求(Request)报文和响应(Response)报文

Request报文用于向邻居请求全部或部分RIP路由信息,而Response报文则用于发送RIP路由更新,在Response报文中携带着路由以及该路由的度量值等信息。

RIPv1使用广播地址255.255.255.255作为协议报文的目的IP地址

而RIPv2则不同,它使用组播IP地址224.0.0.9作为协议报文的目的IP地址。

⚡️ RIP2 的报文结构如下:

1663135735936

RIPv1路由器在通告路由时是不携带目的网络掩码的,这是因为在RIPv1的报文中并没有定义相应的字段,这使得RIPv1无法支持VLSM(Variable Length Subnet Mask,可变长子网掩码)。

RIPv2在这一点上做了改进,定义了该字段用于存储路由条目的目的网络掩码,如此一来,RIPv2便能够支持VLSM

计时器

RIP定义了多个计时器,其中最重要的三个计时器如下:

  • 更新计时器(Update Timer):默认30s
  • 老化计时器(Age Timer):缺省180s
  • 垃圾回收计时器(Garbage-Collect Timer):缺省120s

Silent-Interface

在缺省情况下,一旦路由器的某个接口激活了RIP,RIP就开始在该接口周期性地发送Response报文,同时也在该接口上侦听RIP报文。

但是,实际上对有些接口发送Response报文是没有意义的,如链接的PC接口。

使用Silent-Interface(静默接口)特性可以解决这个问题。

一个RIP接口一旦被指定为Silent-Interface,则该接口将不再发送RIP报文,而只是被动地接收RIP报文,也就是只收不发。

RIP的防环机制

路由环路(Routing Loop)是一种在路由部署不恰当或网络规划不合理等情况发生后,很容易引发的一类问题。

运行距离矢量路由协议的路由器并不了解整个网络的拓扑结构,这些特点使得网络中非常容易出现路由环路。

1663136913509

如上图:

R1及R2都运行了RIP,当网络完成收敛后,R2通过RIP学习到了1.0.0.0/8路由。现在R1的GE0/0/1接口发生了故障,R1感知到这个拓扑变化并且立即在路由表中删除1.0.0.0/8路由。

然而这个拓扑的变更对于R2来说此时并不知晓,R1准备在下一个更新周期到来时通告该条路由的不可达情况。

但是此时完全有可能出现的一种情况是,在R1通告这个更新之前,R2的更新周期到了,它开始在自己的GE0/0/0接口上发送Response报文,该报文中包含R2路由表中的所有路由,其中就包括1.0.0.0/8路由,且该路由的跳数为2(R2自己到达该网段需经过1个路由器,因此它将路由更新出去时将跳数加1)。

R1收到这个Response报文后,发现1.0.0.0/8竟然通过R2可达且跳数为2,于是它将1.0.0.0/8路由加载到路由表,如图2-12所示。

这就出现了路由环路。环路对网络来说危害是非常大的。对于目前的情况,如果R2收到一个发往1.0.0.0/8的数据包,经过路由表查询后,R2发现自己有一条路由可以匹配该目的地址,并且下一跳为R1,因此它将数据包转发给R1,而R1经过路由表查询,发现到达1.0.0.0/8下一跳是R2,于是数据包又被转发给R2,如此反复,发往该网段的数据包就会在R1、R2之间不停地来回转发,直到报文的TTL值递减为0。可以想象,如果数据流量特别大的话,这无疑将对路由器的性能造成极大损耗,当然,也可能将链路的带宽耗尽。

定义最大跳数

为了避免RIP路由在网络中被无休止地泛洪,RIP定义了路由的最大跳数——15跳

也就是说,RIP路由的最大可用跳数为15跳,当一条路由的度量值达到16跳时,该路由被视为不可用,路由所指向的网段被视为不可达

显然这是一种“无奈”的办法,虽然解决了路由被无限泛洪的问题,但是同时也在极大程度上限制了RIP所能够支持的网络规模。

水平分割

水平分割(Split Horizon)的原理是,RIP路由器从某个接口收到的路由不会再从该接口通告回去。

这个机制在很大程度上消除了RIP路由的环路隐患。

毒性逆转

毒性逆转(Poison Reverse)是另一种防止路由环路的有效机制,其原理是,RIP从某个接口学到路由后,当它从该接口发送Response报文时会携带这些路由,但是这些路由度量值被设置为16跳(16跳意味着该路由不可达)。

利用这种方式,可以清除对方路由表中的无用路由。毒性逆转也可以防止产生路由环路。

触发更新

将度量值为16跳的路由包含在Response报文中进行泛洪,这在某些场合下是非常有用的,例如毒性逆转。

另一种重要的用途是,当一个网络变为不可达时,发现这个变化的路由器立即触发一个16跳的路由更新来通知网络中的路由器——目标网络已经不可达,这种路由被称为毒性路由

RIP2更新

  • 支持VLSM。
  • 采用组播地址224.0.0.9作为协议报文的目的IP地址。
  • RIPv2支持报文认证功能(简单认证、MD5认证)。
  • RIPv2定义了“下一跳”字段
  • RIPv2增加了“路由标记(Route Tag)”字段,使得从外部被引入RIP的路由能够携带特定的标记信息。

RIP实验及配置

RIPv2基础配置

在每台路由器上部署RIPv2,使得网络中各个网段之间能够实现相互通信。

1663140510376

1663143447304

准备工作

  • 2台pc 添加ip地址和掩码
  • R1、R2、R3 的各个接口添加ip地址和掩码

创建RIP进程并通告路由

[R1]rip 1
[R1-rip-1]version 2
[R1-rip-1]network 192.168.1.0
[R1-rip-1]network 172.16.0.0

rip命令用于创建一个RIP路由进程,而该命令后的数字1则为该RIP进程的进程ID(Process-ID),Process-ID如果不手工指定,则系统会自动为该进程分配一个。

同一台设备上所运行的不同RIP进程相互独立,设备在一个RIP进程内学习到的路由缺省不会自动注入另一个RIP进程。

的version 2命令用于指定该进程所运行的RIP版本为RIPv2。

Network命令用于在指定网段的接口上激活RIP。

值得注意的是,network命令所指定的必须是主类网络地址(A/B/C/D/E类地址),而不能是子网地址。

例如network 192.168.1.0这条命令,将使得R1在GE0/0/1接口上激活RIPv2,而network 172.16.0.0命令则使得R1在GE0/0/2接口上激活RIPv2。

当然,如果您使用network 172.16.1.0命令试图在R1的GE0/0/2口上激活RIPv2,那么系统将会报错,因为172.16.1.0是一个子网地址,而不是主类网络地址。

1663142746323

查看RIP状态

使用display rip 1 interface命令,可以查看本设备有哪些接口激活了RIP,以R1为例:

<R1>display rip 1 interface 
 --------------------------------------------------------------------------
 Interface            IP Address       State    Protocol            MTU
 --------------------------------------------------------------------------
 GE0/0/0              172.16.1.254     UP       RIPv2 Multicast     500
 GE0/0/1              192.168.1.1      UP       RIPv2 Multicast     500

使用display rip 1 database命令可以查看RIP进程1的数据库,以R1为例:

<R1>display rip 1 database 
 ---------------------------------------------------
 Advertisement State : [A] - Advertised
                       [I] - Not Advertised/Withdraw
 ---------------------------------------------------
   172.16.0.0/16, cost 0, ClassfulSumm
       172.16.1.0/24, cost 0, [A], Rip-interface
   192.168.1.0/24, cost 0, ClassfulSumm
       192.168.1.0/30, cost 0, [A], Rip-interface

由于当前只配置了R1的rip,因此只学习到了通告的直连路由。

依次配置R2,R3如下:

# R2激活RIP2
[R2]rip 1
[R2-rip-1]vers
[R2-rip-1]version 2
[R2-rip-1]network
[R2-rip-1]network 192.168.1.0
# R3激活RIP2
[R3]rip 1
[R3-rip-1]vers
[R3-rip-1]version 2
[R3-rip-1]network 192.168.1.0
[R3-rip-1]network 172.16.0.0

现在,再次在R1上查看RIP数据库如下:

<R1>display rip 1 database 
 ---------------------------------------------------
 Advertisement State : [A] - Advertised
                       [I] - Not Advertised/Withdraw
 ---------------------------------------------------
   172.16.0.0/16, cost 0, ClassfulSumm
       172.16.1.0/24, cost 0, [A], Rip-interface
       172.16.31.0/24, cost 2, [A], nexthop 192.168.1.2
   192.168.1.0/24, cost 0, ClassfulSumm
       192.168.1.0/30, cost 0, [A], Rip-interface
       192.168.1.4/30, cost 1, [A], nexthop 192.168.1.2

从上述输出可以看出,R1发现了直连网段172.16.1.0/24及192.168.1.0/30,由于这两个网段是本地接口直连,因此它们的度量值都为0。

另外,R1还通过RIP学习到路由172.16.31.0/24及192.168.1.4/30,这两条路由的度量值分别是2跳及1跳。

查看RIP路由表

现在,三台路由器都已经知晓了到达网络中各个网段的路由,R1学习到的RIP路由如下:

<R1>display ip routing-table protocol rip
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Public routing table : RIP
         Destinations : 2        Routes : 2      

RIP routing table status : <Active>
         Destinations : 2        Routes : 2

Destination/Mask    Proto   Pre  Cost      Flags NextHop         Interface

    172.16.31.0/24  RIP     100  2           D   192.168.1.2     GigabitEthernet
0/0/1
    192.168.1.4/30  RIP     100  1           D   192.168.1.2     GigabitEthernet
0/0/1

RIP routing table status : <Inactive>
         Destinations : 0        Routes : 0

⚡️ 同时PC1 和 PC2也实现了互通:

PC1>tracert 172.16.31.1
traceroute to 172.16.31.1, 8 hops max
(ICMP), press Ctrl+C to stop
 1  172.16.1.254   46 ms  32 ms  47 ms
 2  192.168.1.2   46 ms  32 ms  47 ms
 3  192.168.1.6   46 ms  47 ms  32 ms
 4    *172.16.31.1   93 ms  78 ms

案例2:Silent-Interface

1663144759672

就是将R1的GE0/0/1接口配置为Silent-Interface。

核心配置如下:

[R1-rip-1] silent-interface GigabitEthernet 0/0/1

案例3:RIP路由手工汇总

RIPv2是支持路由自动汇总的,在RIP的配置视图下,使用summary命令即可激活RIPv2的路由自动汇总功能。

在RIP配置视图下,使用summary always命令可以使得路由器无论水平分割或毒性逆转激活与否,都执行路由自动汇总。

1663145154887

练习题

摘自:朱仕耿《HCNP路由交换学习指南》

1.(多选)以下关于RIP的选项,正确的有( )

A.RIP报文载荷直接采用IP封装,协议号为520。

B.RIPv1使用广播的方式发送协议报文,而RIPv2则缺省使用组播的方式发送。

C.在华为路由器上,在系统视图下使用rip命令即可创建一个RIP进程,而且可以根据实际需要,创建多个RIP进程。

D.RIPv1支持路由自动汇总,可以通过命令将缺省激活的自动汇总功能关闭。

2.(多选)关于RIP的计时器,以下说法正确的是( )

A.RIP更新周期缺省为30s,也就是说RIP每隔30s(存在一定偏移量)在接口上泛洪一次Response报文。

B.一条RIP路由如果老化计时器超时,那么该路由将保留在路由表一段时间,直到其垃圾回收计时器也超时,该路由才会被彻底删除。

C.一条RIP路由如果老化计时器超时,但垃圾回收计时器没有超时,那么路由器依然按照原有度量值正常地向其他直连RIP路由器通告该路由,直到路由的垃圾回收计时器也超时。

D.路由器学习到一条RIP路由并将该路由加载路由表的同时,会为其启动老化计时器,当下一个更新周期到来时,该路由器将再次收到路由更新源的Response报文,如果在该报文中再次看到这条路由,此时路由器将刷新路由的老化计时器。

1663145527249

1663145741323

1663145756569

【参考答案】

1663145358068

历年真题