RIP (Routing Information Protocol,路由信息协议)
RIP 是一个比较早期的协议,在实际部署中较少使用,但RIP 协议的机制是所有矢量跻由协议的基础,因此,掌握 RIP 协议的工作原理对研究矢量路由协议有重要的价值。
RIP 是一种较为简单的、基于距离矢量(Distance-Vector) 算法的内部网关协议(Interior Gateway Protocol), 它采用跳数 (Hop Count)作为度量来衡量到达目的网络的距离。
距离矢量算法最早是由 Ford 和 Fulkerson 这两个人提出的,正因为如此,在早期,距离矢量算法被称为 Ford-Fulkerson 算法,而现在也有人把它称为 Bellman-Ford 算法。
RIP 兼容版本
华为 VRP 平台启动 RIP 进程后,如果没有配置 RIP 版本,默认版本为兼容版本,对 version 1 和 version 2 都支持,且系统在向外发送 RIP 路由信息是以 RIPv1 发布的,而对接收到的 RIPv1 和 RIPv2 的路由都可以识别。
RIPv1 路由的发送和接收规则
路由发送规则
将要发送的前缀网段和出接口网段进行匹配,有以下情况。
如果不在同一主网,那么此为主网边界,将前缀网段自动汇总为有类网络号,并且发送前缀到出接口。
如果在同一主网,检查要发送的前缀是否为 32 位掩码。
如果是,发送 32 位前缀到出接口。
如果不是,检查前缀和出口掩码是否相同。
如果不同,抑制发送或者汇总为主网络号。
如果相同,没有边界,发送正确前缀到出口。
路由接收规则
当路由器从某个接口接收到一个前缀后,有以下情况。
如果发现是主网络号,直接放入路由表,掩码是 8/16/24。
如果不是主网络号,将收到的目标前缀与接口网段进行匹配。
如果不在同一主网,生成有类路由,掩码按有类路由计算,放入路由表。
如果在同一主网,使用该接口的掩码与路由前缀做 “与” 运算,然后检查该前缀是网段地址还是主机地址。
如果是网段地址,生成路由,掩码等于自己的接口掩码,放入路由表。
如果不是网段地址,就默认是主机,生成 32 位主机路由,放入路由表。
RIPv1 和 RIPv2 比较
RIPv1 和 RIPv2 共同点
-
RIPv1 和 RIPv2 报文格式一致,都是采用 UDP 封装,并且监听 520 端口号 (源端口和目的端的端口号都是 520)。
-
报文类型一样,都是两种报文:request 和 response。
-
采用的度量值一样,都使用 Hop 作为度量值,最大 15 跳,如果达到 16 跳,则认为目标不可达。
-
定时器是一致的。
RIPv1 和 RIPv2 不同点
-
RIPv1 采用的是广播更新报文,RIPv2 默认采用组播更新,也可以将 RIPv2 更改为使用广播更新。通过组播方式替代广播方式的更新可以降低设备的负担,从而提高了效率。
-
RIPv1 是有类的路由协议,传递路由时不能携带子网掩码,当路由器收到路由后,子网掩码是采取猜测的方式获取的,以至于路由表存在错误路由的可能。而 RIPv2 是无类的路由协议,路由传递时可以携带子网掩码,不会出现上述问题。
-
RIPv1 不支持 VLSM、CIDR, 而 RIPv2 可以支持,因此可以更加灵活地部署网络。
-
RIPv1 无法关闭自动汇总,且不支持手动汇总,会带来不连续子网的问题。而 RIPv2 可以关闭自动汇总,并且能够在网络的任意地方进行手动汇总,可以减少路由表的大小,降低网络不稳定所带来的影响。
-
RIPv1 不支持路由标记,而 RIPv2 支持路由标记。通过设置路由标记可以为来自外部的路由统一实施路由策略,使用路由标记可以有效地防止多协议之间相互引入造成的环路问题。
-
RIPv1 报文中不含 Next-hop 属性,而 RIPv2 支持 Next-hop 属性,该属性可以解决 RIP 的次优路径问题,有全 0 (0.0.0.0) 和非全 0 (如 1.2.3.4) 的两种形式。
如果Next-hop 字段为全 0 地址
,那么在路由表中,到达该目标网络的下一跳地址
即为发送响应报文的源 IP 地址
,到达该目标网段的数据包将会发往该接口地址。
如果Next-hop 字段为非全 0 地址 (多出现在一个广播多址网络中)
,则发往目标网段的数据包
会被路由器直接发往此非全 0 的接口地址
,因为该地址一定是最优的下一跳。 -
RIPv1 不支持认证。RIPv2 增加了对认证的支持,可以提供明文和 MD5 两种方式认证,增强安全性。
RIPv1 vs RIPv2
terms | RIPv1 | RIPv2 |
---|---|---|
RFC | RFC 1058 | RFC 1721,1722 and 2453 |
Routing | Classful | Classful and Classless |
Routing algorithm | Bellman-Ford Distance-Vector | Bellman-Ford Distance-Vector |
authentication | not supported | supported(clear text, MD5) |
secure | less secure | more secure |
hop count limit | 15 (16 is considered unreachable) | 15 (16 is considered unreachable) |
Path Metric | hop count | hop count |
Administrative Distance | 120 | 120 |
Protocol Port | UDP 520 | UDP 520 |
routing update address | Broadcast 255.255.255.255 | Multicast 224.0.0.9 |
trigger update | not provided | provided |
subnet mask | not supported | supported |
manual route summarization | not supported | supported |
CIDR | not supported | supported |
VLSM | not supported | supported |
clear text,即 simple password 。
RIP 兼容版本、RIPv1、RIPv2 在收发 RIP 报文时的区别
举例场景
A、B 两台路由器 RIP 协议互连,讨论以下几种情况:
1)A 指定运行 version 1,B- 指定运行 version 2
A 将以 version 1 向外发送 RIP 路由信息,对接收到的非 version 1 的路由信息不予接收。
B 将以 version 2 向外发送 RIP 路由信息,对接收到的非 version 2 的路由信息不予接收。
在这种情况下,A、B 之间彼此都不能学到对方的 RIP 路由信息。
2)A 指定运行 version 1,B 未指定具体版本
A 将以 version 1 向外发送 RIP 路由信息,对接收到的非 version 1 的路由信息不予接收。
B 将以 version 1 向外发送 RIP 路由信息,对接收到的 version 1 和 version 2 的路由信息都可以正常学习。
在这种情况下,A、B 之间彼此都可以学到对方的 RIP 路由信息。
3)A 指定运行 version 2,B 未指定具体版本
A 将以 version 2 向外发送 RIP 路由信息,对接收到的非 version 2 的路由信息不予接收。
B 将以 version 1 向外发送 RIP 路由信息,对接收到的 version 1 和 version 2 的路由信息都可以正常学习。
在这种情况下,A学不到B发布的 RIP 路由;B 可以学到 A 发布的 RIP 路由。
4)A 指定运行 version 1(或 version 2),B 指定运行 version 1(或 version 2)
A 将以 version 1(或 version 2)向外发送 RIP 路由信息,对接收到的非 version 1(或 version 2)的路由信息不予接收。
B 将以 version 1(或 version 2)向外发送 RIP 路由信息,对接收到的非 version 1(或 version 2)的路由信息不予接收。
在这种情况下,A、B 之间彼此都可以学到对方的 RIP 路由信息。
via: huawei