RIP

总览

RIP(Routing Information Protocol,路由信息协议),是早期应用比较普遍的内部网关协议,是典型的距离矢量路由协议,适用于小型网络,最大的缺点是无法在具有冗余链路的网络中有效的运用。RIP一共有3个版本的协议,分别是RIP V1,RIP V2以及RIPNG。

RIP定义了请求信息和响应消息两种类型。请求信息:可以请求整张路由表,也可以请求具体的路由信息。

  • 请求整张路由表:请求消息含有一个地址族标识字段为0(地址为0.0.0.0),度量值为16的单条路由,收到这个请求的设备将通过单播方式向发出请求的地址回送它的整个路由表。
  • 请求具体路由信息:当需要获知某个或某些具体路由的信息时,请求消息将与特定地址的路由条目一起发送。接受到请求的设备将根据请求消息逐个处理这些条目,并构成一个响应消息。

V1和V2的相同点

  1. RIP V1和V2协议的算法均为贝尔曼福特算法。
  2. 采用相同的防环机制,这六大机制为水平分割,路由中毒,毒性反转,触发更新,最大跳数,占用时间Hold Time。
  3. 端口号、协议号、管理距离和度量值相同。UDP端口号520,协议号17,管理距离(AD)是120,度量值均为跳数。
  4. 收敛速度和更新机制相同。更新机制均为周期更新、触发更新或完全更新、增量更新。RIP默认每隔30秒周期性的发送整个路由表给邻路由。
  5. 没有邻居机制,但有数据库。

V1和V2的不同点

  1. RIP V1是有类路由协议,发送路由更新不携带子网掩码,默认在有类边界自动汇总,不可关闭;RIP V2使用无类路由,发送路由更新要携带子网掩码,默认在有类边界自动汇总,但可以关闭。

  2. V1不支持认证,V2支持认证。

  3. V1采用广播更新路由,V2采用组播更新路由,组播地址为224.0.0.9。

V1的缺陷

RIPv1是一个有类路由协议,可以支持带子网的网络地址,但是必须是连续的,中间不被其他主类网络分隔,并且子网掩码长度必须相同。所以后面RIP 又推出了V2版本对此进行了一些改进。

V2的改进

  1. 外部路由标记。通过在RIP中使用路由标记,就能在其他协议中,控制相关路由的重发布,当重发布到其他协议时,RIP路由只需要比较赋予他们的标记而不用比较整个路由。
  2. 在路由更新中携带有子网掩码的路由选择信息,所以支持了VLSM和CIDR。
  3. 组播能力。使用224.0.0.9的组播地址发送路由更新,代替了V1的广播更新。
  4. 提供身份验证功能,支持明文和MD5认证。
  5. 支持连续子网以及不连续子网。
  6. 可以关闭自动汇总,并支持手动汇总。

V1和V2兼容性

默认情况下CISCO路由器上运行的 RIP发送v1,接收v1 v2, 如果显示声明为v1(在RIP进程中使用version 1命令)则只发送和接受v1报文,v2默认只发送和接收v2报文。

RIP的计时器

Update timer更新计时器:RIP默认路由信息交换的时间为30秒一次。

Invalid timer无效计时器:当一条路由条目被加进路由表后,如果它在路由表中超过180秒未被更新,则路由器认为这条路由无效,在这种情况下,路由器会将该路由的跳数标记为16跳,也就是不可达。

hold down timer抑制计时器:一条路由信息无效之后,一段时间内这条路由都处于抑制状态,即在一定时间内不再接收关于同一目的地址的路由更新。大概过程是如果一个路由器从邻居路由器收到一条更新,提示以前可达的网络现在不可达了,或有一个更大跳数的路由,则路由器标识该路由为不可达并启动一个抑制计时器,如果在定时器到时之前收到该路由又可达的更新,或者新度量值比之前的度量值更好,则路由器标识这个路由可达并删除定时器。路由器从一个网段上得知一条路径失效,然后,立即在另一个网段上得知这个路由有效。这个有效的信息往往是不正确的,抑制计时避免了这个问题,而且,当一条链路频繁起停时,抑制计时减少了路由的浮动,增加了网络的稳定性。RIP的抑制计时器默认为6个更新的周期,也就是6X30,为180秒。

Flush time清除计时器:清除计时器的默认时间为240秒,也就是说如果240秒内一条路由如果始终没有相应,则该路由条目被标记为不可达并从路由表中移除。

RIP V2

报头

RIP_msgformat

Snipaste_2020-06-21_15-54-09

基本配置

1
2
3
4
5
6
7
8
9
10
11
Router(config)#router rip
/*使用RIPv2,如果不使用这条命令默认是使用RIPv1*/
Router(config-router)#version 2
/*和RIPv1相同,都是宣告主类网络号*/
R1(config-router)#no auto-summary
/*关闭自动汇总*/
Router(config-router)#network 主类网络号
Router(config-router)#int s0/0
/*关闭自动汇总后,配置手动汇总的话需要在接口上进行配置,汇总是在路由的外出接口上面做的*/
R1(config-if)#ip summary-address rip 汇总网络号 汇总掩码
/*等待路由收敛后,查看路由表,就只能看到汇总路由的条目了*/

被动接口

当一个运行RIP协议的接口被配置为被动接口后,这个接口不发出路由的更新信息但接受路由的更新信息。

配置命令:

1
2
3
R1(config)#router rip 
R1(config-router)#passive-interface s1/1
/*将S 1/1接口配置为被动接口*/

RIP 综合实验

Snipaste_2020-06-21_17-13-05

实验需求

  1. 网络拓扑如上图所示。 PC1 使用模拟器模拟,R3 下联的网段使用 Loopback 接口来模拟,一共开设三个 Loopback 接口,用于模拟 R3 下联的三个网段;
  2. 要求 R1、R2、R3 运行 RIPv2,并实现全网可达;
  3. 在 R3 上部署 RIP 手工路由汇总,使得 R1、R2 学习到 R3 下联 Loopback 的汇总路由。

基础配置

PC1:

1
2
3
4
5
6
7
8
9
10
Router#config t
Router(config)#hostname PC1
PC1(config)#ip default-gateway 172.16.1.254
/*配置默认网关为172.16.1.254,也就是和本社设备链接的R1的G0/1接口*/
PC1(config)#no ip routing
/*关闭路由功能,当成PC设备使用*/
PC1(config)#int G0/0
PC1(config-if)#no sh
/*路由器接口默认关闭,这里打开该接口*/
PC1(config-if)#ip add 172.16.1.1 255.255.255.0

R1:

1
2
3
4
5
6
7
8
9
Router>en
Router#config t
Router(config)#hostname R1
R1(config-line)#int g0/1
R1(config-if)#no sh
R1(config-if)#ip add 172.16.1.254 255.255.255.0
R1(config-if)#int g0/0
R1(config-if)#no sh
R1(config-if)#ip add 192.168.12.1 255.255.255.0

R2:

1
2
3
4
5
6
7
8
9
Router>en
Router#config t
Router(config)#hostname R2
R2(config)#int g0/0
R2(config-if)#no sh
R2(config-if)#ip add 192.168.12.2 255.255.255.0
R2(config-if)#int g0/1
R2(config-if)#no sh
R2(config-if)#ip add 192.168.23.2 255.255.255.0

R3:

1
2
3
4
5
6
7
8
9
10
11
12
Router>en
Router#config t
Router(config)#hostname R3
R3(config)#int g0/0
R3(config-if)#no sh
R3(config-if)#ip add 192.168.23.3 255.255.255.0
R3(config)#int loop 1
R3(config-if)#ip add 172.16.32.1 255.255.255.0
R3(config-if)#int loop 2
R3(config-if)#ip add 172.16.33.1 255.255.255.0
R3(config-if)#int loop 3
R3(config-if)#ip add 172.16.34.1 255.255.255.0

配置RIP

R1:

1
2
3
4
5
R1(config-if)#router rip
R1(config-router)#version 2
R1(config-router)#no auto-summary
R1(config-router)#network 172.16.0.0
R1(config-router)#network 192.168.12.0

R2:

1
2
3
4
5
R2(config-if)#router rip
R2(config-router)#version 2
R2(config-router)#no auto-summary
R2(config-router)#network 192.168.12.0
R2(config-router)#network 192.168.23.0

R3:

1
2
3
4
5
6
R3(config-if)#router rip
R3(config-router)#version 2
R3(config-router)#no auto-summary
R3(config-router)#network 172.16.0.0
/*RIP 在使用 network 命令指定网段时,只支持通告主类网络。R3 有三个 Loopback接口,将这三个接口激活RIP时,只需network 172.16.0.0即可,实际上即使你输 入诸如network 172.16.32.0这样的命令, 系统也会按network 172.16.0.0生效*/
R3(config-router)#network 192.168.23.0

优化路由

R3

1
2
3
4
R3(config-router)#int g0/0
R3(config-if)#ip summary-address rip 172.16.32.0 255.255.252.0
/*把三个loopback接口的网段汇总以后是172.16.32.0 255.255.255.252。
RIP 的手工汇总,需要 RIP 版本 2 的支持,另外需要先在 RIP 进程中 no auto-summary 关闭自动汇总功能,然后再在接口上配置手工汇总命令,注意,该命令配置在汇总 路由欲对外发布的那个接口上。*/

参考文章

红茶三杯CCNA实验手册

红茶三杯Ip routing

[CCNA图文笔记]-14-RIPv1协议缺陷详解

[CCNA图文笔记]-15-RIPv2协议详解