路由协议—RIP

RIP简介

定义

RIP是Routing Information Protocol(路由信息协议)的简称,它是一种较为简单的内部网关协议(Interior Gateway Protocol)。RIP是一种基于距离矢量(Distance-Vector)算法的协议,它使用跳数(Hop Count)作为度量来衡量到达目的网络的距离。RIP通过UDP报文进行路由信息的交换,使用的端口号为520。

RIP包括RIP-1和RIP-2两个版本,RIP-2对RIP-1进行了扩充,使其更具有优势。

目的

由于RIP的实现较为简单,在配置和维护管理方面也远比OSPF和IS-IS容易,因此RIP主要应用于规模较小的网络中,例如校园网以及结构较简单的地区性网络。对于更为复杂的环境和大型网络,一般不使用RIP协议

RIP基本原理:

RIP是一种基于距离矢量(Distance-Vector)算法的协议,它使用跳数(Hop Count)作为度量值来衡量到达目的地址的距离。在RIP网络中,RIP协议要求网络中每一台路由器都要维护从自身到每一个目的网络的路由信息。RIP协议使用跳数来衡量网络间的“距离”:从一台路由器到其直连网络的跳数定义为1,从一台路由器到其非直连网络的距离定义为每经过一个路由器则距离加1。“距离”也称为“跳数”RIP允许路由的最大跳数为巧,因此,16即为不可达。可见RIP协议只适用于小型网络。

RIPv1的特点:

  1. 有类别路由协议。
  2. 广播更新。
  3. 基于UDP,端口号520。

RIP工作过程分析:

v2-6c0aa4b19512ddd88b3c2ed3ed1ea937_b.gif
图:RIP路由表形成过程
  1. RIP协议启动之后RouterA会向相邻的交换机广播一个Request报文。
  2. RouterB从接口接收到RouterA发送的Request报文后,把自己的RIP路由表封装在Response报文内,然后向该接口对应的网络广播。
  3. RouterA根据RouterB发送的Response报文,形成自己的路由表。
  4. RIP按照路由通告进行路由更新和路由选择。这种情况下交换机并不了解整个网络的拓扑,只知道到达目的网络的距离,以及到达目的网络应该走哪个方向或者哪个接口。
  5. 如图2所示,RouterB收到了来自RouterA的路由通告,此时RouterB知道经过RouterA可以到达192.168.1.0/24网络,度量值是1跳,除此之外RouterB不知道其他的信息。即使这个通告因为某种原因已经是错误的信息,RouterB依然认为经过RouterA可以到达192.168.1.0/24网络,度量值是1。这是导致RIP网络容易产生路由环路的最根本原因。

v2-877a85e95f6d78f684e7ed76065621ac_b.jpg

RIPv1的收发规则

v2-bc64b8f95eb63a77bbcdde607b8b2fb5_b.jpg

RIPv1的发送规则:

v2-595893a3060ffca9d171d888cf4bd6b5_b.jpg

注意发送时没有子网掩码。将要发送的前缀路由和出接口网段匹配:

  1. 如果不在同一主网,此为主网边界,将前缀自动汇总为有类网段发送前缀到出接口。
  2. 如果在同一主网,检查发送的前缀是否为32位:
  3. 如果是,发送32位前缀到出接口。
  4. 如果不是,检查前缀和出口掩码是否相同:
  5. 如果不同,抑制发送或者汇聚为主网络号。
  6. 如果相同,没有边界,发送正确的前缀到出接口

RIPv1接收规则:

v2-6dea7bb6a6fe3b0e8f34a8aa5560b6af_b.jpg

收到一个前缀后,如果发现是主网络号,直接放入路由表,掩码是8/16/24.

如果不是主网络号,检查是否在同一主网:

  1. 如果不在,生成有类路由,掩码按有类路由计算。
  2. 如果在同一主网,用接口掩码去掩,然后检查该前缀是网络地址还是主机地址:
  3. 如果是网络地址,生成路由,掩码等于自己的接口掩码,放入路由表。
  4. 如果不是网络地址,就默认是主机地址,生成32位路由,放入路由表

RIP的更新与维护:

RIP协议在更新和维护路由信息时主要使用四个定时器:

  • 更新定时器(Update timer):当此定时器超时时,立即发送更新报文。
  • 老化定时器(Age timer):RIP设备如果在老化时间内没有收到邻居发来的路由更新报文,则认为该路由不可达。
  • 垃圾收集定时器(Garbage-collect timer):如果在垃圾收集时间内不可达路由没有收到来自同一邻居的更新,则该路由将被从RIP路由表中彻底删除。
  • 抑制定时器(Suppress timer):当RIP设备收到对端的路由更新,其cost为16,对应路由进入抑制状态,并启动抑制定时器。为了防止路由震荡,在抑制定时器超时之前,即使再收到对端路由cost小于16的更新,也不接受。当抑制定时器超时后,就重新允许接受对端发送的路由更新报文。

RIP路由与定时器之间的关系:

  • RIP的更新信息发布是由更新定时器控制的,默认为每30秒发送一次。
  • 每一条路由表项对应两个定时器:老化定时器和垃圾收集定时器。当学到一条路由并添加到RIP路由表中时,老化定时器启动。如果老化定时器超时,设备仍没有收到邻居发来的更新报文,则把该路由的度量值置为16(表示路由不可达),并启动垃圾收集定时器。如果垃圾收集定时器超时,设备仍然没有收到更新报文,则在RIP路由表中删除该路由。

注意事项:

  • 如果设备不具有触发更新功能,一个路由表项最多需要300秒才能被删除(老化时间+垃圾收集时间)。
  • 如果存在触发更新,那么一个路由条目最多需要120秒才能被删除(即为垃圾收集时间)。

触发更新:

触发更新可以缩短网络收敛时间。在路由表项变化时立即向其他设备广播该信息,而不必等待定时更新。如果没有触发更新,缺省情况下,失效的路由条目会在路由表停留最多300秒(老化定时器+垃圾收集定时器)。

RIPv1报文:

RIP-1报文由头部(Header)和多个路由表项(Route Entries)部分组成。在一个RIP报文中,最多可以有25个路由表项。RIP是一个基于UDP协议的,并且RIP-1的数据包不能超过512字节。

RIP在IPv4中有vl和v2两个版本。在配置RIP时,如果不指定版本,接口默认情况下能接收和v2的报文,但只能发送vl的报文;在指定版本的情况下,RIPvl只能接收和发送vl的报文,RIPv2只能接收和发送v2的报文。


v2-ab8c8659fe64e67c0d5f79e9c7e2ff0d_b.jpg
图:RIPv1报文格式

字段解释:

v2-65d326fe1952b0f4c00967ba2822271b_b.jpg


RIPv1报文抓包示例:

v2-009f3a8197488834137e998d131349e1_b.jpg
图:RIPv1报文抓包示例


RIPv2的增强特性:

RIPv2特点:

  1. 无类别路由协议。
  2. 组播更新,组播地址224.0.0.9
  3. 支持外部路由标记(Route Tag),可以在路由策略中根据Tag对路由进行灵活的控制。
  4. 报文中携带掩码信息,支持路由聚合和CIDR(Classless Inter-Domain Routing)。
  5. 支持指定下一跳,在广播网上可以选择到目的网段最优下一跳地址。
  6. 支持以组播方式发送更新报文,只有支持RIP-2的设备才能接收协议报文,减少资源消耗。
  7. 支持对协议报文进行验证,增强安全性

RIPv2的报文:

v2-fe1185565d818c40d24b4e768ca20437_b.jpg
图:RIPv2报文格式

字段解释:

v2-bffc6fab5f49159412a9ef931f81cf57_b.jpg

RIPv2报文抓包示例:

v2-72d0ca4f21a25e04e4395fa997e5ba68_b.jpg
图:RIPv2抓包示例

RIPv1与RIPv2的比较:

  1. RIPv1是有类路由协议,RIPv2是无类路由协议
  2. RIPv1不能支持VLSM,RIPv2可以支持VLSM
  3. RIPv1没有认证的功能,RIPv2可以支持认证,并且有明文和MD5两种认证
  4. RIPv1没有手工汇总的功能,RIPv2可以在关闭自动汇总的前提下,进行手工汇总
  5. RIPv1是广播更新,RIPv2是组播更新,
  6. RIPv1对路由没有标记的功能,RIPv2可以对路由打标记(tag),用于过滤和做策略
  7. RIPv1发送的updata最多可以携带25条路由条目,RIPv2在有认证的情况下最多只能携带24条路由
  8. RIPv1发送的updata包里面没有next-hop属性,RIPv2有next-hop属性,可以用与路由更新的重定

RIPv2路由聚合:

路由聚合的原理是,同一个自然网段内的不同子网的路由在向外(其它网段)发送时聚合成一个网段的路由发送。在RIP-2中进行路由聚合可提高大型网络的可扩展性和效率,缩减路由表。

  • RIPv2支持路由聚合,因为RIPv2报文携带掩码位,所以支持子网划分。在RIPv2中进行路由聚合可提高大型网络的可扩展性和效率,缩减路由表。
  • 基于RIPv2进程的有类聚合即实现自动聚合。
  • 基于接口的聚合即实现手动聚合。
  • 如果被聚合路由携带了Tag,那么路由聚合发生之后,Tag信息将被清除。

路由聚合有两种方式:

  • 基于RIP进程的有类聚合:
    聚合后的路由使用自然掩码的路由形式发布。比如,对于10.1.1.0/24(metric=2)和10.1.2.0/24(metric=3)这两条路由,会聚合成自然网段路由10.0.0.0/8(metric=2)。RIP–2聚合是按类聚合的,聚合得到最优的metric值。
  • 基于接口的聚合:
    用户可以指定聚合地址。比如,对于10.1.1.0/24(metric=2)和10.1.2.0/24(metric=3)这两条路由,可以在指定接口上配置聚合路由10.1.0.0/16(metric=2)来代替原始路由。

RIP的特性:

水平分割:

水平分割(Split Horizon)的原理是,RIP从某个接口学到的路由,不会从该接口再发回给邻居路由器。这样不但减少了带宽消耗,还可以防止路由环路。

水平分割在不同网络中实现有所区别,分为按照接口和按照邻居进行水平分割。广播网、P2P和P2MP网络中是按照接口进行水平分割的,如下图所示:


v2-d53cb88f8007661d9bd66d54ac8dd43b_b.jpg
图:按照接口进行水平分割原理图

RouterA会向RouterB发送到网络10.0.0.0/8的路由信息,如果没有配置水平分割,RouterB会将从RouterA学习到的这条路由再发送回给RouterA。这样,RouterA可以学习到两条到达10.0.0.0/8网络的路由:跳数为0的直连路由;下一跳指向RouterB,且跳数为2的路由。

但是在RouterA的RIP路由表中只有直连路由才是活跃的。当RouterA到网络10.0.0.0的路由变成不可达,并且RouterB还没有收到路由不可达的信息时,RouterB会继续向RouterA发送10.0.0.0/8可达的路由信息。即,RouterA会接受到错误的路由信息,认为可以通过RouterB到达10.0.0.0/8网络;而RouterB仍旧认为可以通过RouterA到达10.0.0.0/8网络,从而形成路由环路。配置水平分割后,RouterB将不会再把到网络10.0.0.0/8的路由发回给RouterA,由此避免了路由环路的产生。

对于NBMA(Non-Broadcast Multiple Access)网络,由于一个接口上连接多个邻居,所以是按照邻居进行水平分割的。路由就会按照单播方式发送,同一接口上收到的路由可以按邻居进行区分。从某一接口的对端邻居处学习到路由,不会再通过该接口发送回去。


v2-3873e517be211aad3d97b3152e3bf184_b.jpg
图:按照邻居进行水平分割原理图

在NBMA网络配置了水平分割之后,RouterA会将从RouterB学习到的172.16.0.0/16路由发送给RouterC,但是不会再发送回给RouterB。

毒性反转:

毒性反转(Poison Reverse)的原理是,RIP从某个接口学到路由后,从原接口发回邻居路由器,并将该路由的开销设置为16(即指明该路由不可达)。利用这种方式,可以清除对方路由表中的无用路由。

配置毒性反转后,RouterB在接收到从RouterA发来的路由后,向RouterA发送一个这条路由不可达的消息(将该路由的开销设置为16),这样RouterA就不会再从RouterB学到这条可达路由,因此就可以避免路由环路的产生。

水平分割和毒性反转的区别:

水平分割和毒性逆转都是为了防止RIP中的路由环路而设计的,但是水平分割是不将收到路由条目再按“原路返回”来避免环路,而毒性逆转遵循“坏消息比没消息好”的原则,即将路由条目按“原路返回”,但是该路由条目被标记为不可达(度量值为16)。

缺省情况下不使能毒性逆转。一般情况下,在华为设备中均使能水平分割(除NBMA网络外)而禁用毒性逆转。

多进程和多实例:

RIP多进程允许为指定的RIP进程关联一组接口,从而保证该进程进行的所有协议操作都仅限于这一组接口。这样,就可以实现一台设备有多个RIP进程,不同RIP进程之间互不影响,它们之间的路由交互相当于不同路由协议之间的路由交互。

RIP多实例是为每个VPN实例绑定一个RIP进程,从而实现VPN实例与指定进程下的所有接口相关联。

RIP与BFD联动:

网络上的链路故障会导致路由器重新计算路由,因此缩短路由协议的收敛时间对于提高网络性能是非常重要的。加快故障感知速度并快速通告给路由协议是一种可行的方案。

双向转发检测BFD(Bidirectional Forwarding Detection)是一种用于检测邻居路由器之间链路故障的检测机制,它通常与路由协议联动,通过快速感知链路故障并通告使得路由协议能够快速地重新收敛,从而减少由于拓扑变化导致的流量丢失。在RIP与BFD联动中,BFD可以快速检测到链路故障并通知RIP协议,从而加快RIP协议对于网络拓扑变化的响应。

RIP路由的引入:

设计者在进行网络规划或设计时,一般都设计成仅运行一种路由协议,以降低网络复杂性,易于维护。但是,如果在网络升级、扩展或合并时,就可能造成在网络中同时运行几种不同的路由协议,这时就需要部署路由协议间的引入,使路由信息能够在不同协议间传递。RIP支持不同昭由协议的引入,包括直连路由、静态路由或其他动态路由协议。由于RIP的度量值是跳数且最大值不能超过巧,所以在将其他路由协议引入至RIP时需要注意设置度量值,避免引入的路由度量值超过巧。默认情况下,引入另一种协议或引入同种协议的不同进程时往往是把该协议或该进程的所有路由一起引入,可以在引入的同时通过设置簽略来控制和过滤特定的路由信息。

配置案例

v2-41123254ac85784dc0409b3e621b5bb5_b.jpg


R1、4之间rip 2

  • rip 1
  • undo summary
  • version 2
  • network 10.0.0.0

R1、2、3 之间 rip 1

  • rip 1
  • undo summary
  • version 1
  • network 10.0.0.0
  • #
  • R1
  • interface GigabitEthernet0/0/0
  • ip address 10.0.123.1 255.255.255.0
  • rip version 1

R1、4 之间 RIP 认证

  • interface Serial2/0/0
  • rip authentication-mode simple cipher %$%$=Kx9F]e38/DCEc)<)7a.%[9N%$%$

抑制接口

R4

  • rip 1
  • silent-interface Serial2/0/0 单播更新有效
  • 优先级大于 V
  • interface Serial2/0/0
  • undo rip output 单播跟新无效

v2-516089a69f588cfc4bafa4229d9a2571_b.png

排查

  • RIP故障排除流程:terminal monitor/terminal debugging/debuging rip process-id
  • 1.接口状态是不是UP:
  • 2.检查接口是否在RIP中使能

v2-a2a5f0096c9501ac97b7609201edd3bc_b.png
display rip process-id interface
  • 3.RIP进程下没有对该网段做network配置;
  • 4.检查对方发送版本号和本地接口接收的版本号是否匹配:缺省情况下,接口只发送RIPv1报文,但可以接收RIPv1和RIPv2报文。当入接口与收到的RIP报文使用不同的版本号时,有可能造成RIP路由不能被正确的接收;

v2-0923592bcd9be9946eb0c6c18416a095_b.jpg
dis rip 1 interface GigabitEthernet 0/0/0 verbos
  • 5.接口上配置了禁止接收RIP报文或禁止发送RIP报文的命令;在RIP中配置了策略,过滤掉收到的RIP路由或不允许发送RIP路由。见上图
  • 6.RIP使用的端口520是否被禁用;
  • 7.检查接口是否配置了undo rip input/output或者rip metricin设置度量值过大;
  • 8.检查接口是否配置了抑制接口、水平分割
  • 9.链路两端的接口认证方式不匹配:

v2-6ceb3af790cee6163ebb9f5b3374e85a_b.jpg
dis rip 1 statistics int Serial 2/0/0
  • 10.路由表中存在从其他协议获得的相同路由条目;
  • 11.收到的路由度量值大于16。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

期待未来的男孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值