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

图:RIP路由表形成过程

RIPv1的收发规则


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

收到一个前缀后,如果发现是主网络号,直接放入路由表,掩码是8/16/24.
如果不是主网络号,检查是否在同一主网:
RIP的更新与维护:
RIP协议在更新和维护路由信息时主要使用四个定时器:
RIP路由与定时器之间的关系:
注意事项:
触发更新可以缩短网络收敛时间。在路由表项变化时立即向其他设备广播该信息,而不必等待定时更新。如果没有触发更新,缺省情况下,失效的路由条目会在路由表停留最多300秒(老化定时器+垃圾收集定时器)。
RIP-1报文由头部(Header)和多个路由表项(Route Entries)部分组成。在一个RIP报文中,最多可以有25个路由表项。RIP是一个基于UDP协议的,并且RIP-1的数据包不能超过512字节。
RIP在IPv4中有vl和v2两个版本。在配置RIP时,如果不指定版本,接口默认情况下能接收和v2的报文,但只能发送vl的报文;在指定版本的情况下,RIPvl只能接收和发送vl的报文,RIPv2只能接收和发送v2的报文。

图:RIPv1报文格式
字段解释:

RIPv1报文抓包示例:

图:RIPv1报文抓包示例
RIPv2的增强特性:
RIPv2的报文:

图:RIPv2报文格式
字段解释:

RIPv2报文抓包示例:

图:RIPv2抓包示例
RIPv1与RIPv2的比较:
路由聚合的原理是,同一个自然网段内的不同子网的路由在向外(其它网段)发送时聚合成一个网段的路由发送。在RIP-2中进行路由聚合可提高大型网络的可扩展性和效率,缩减路由表。
路由聚合有两种方式:
水平分割(Split Horizon)的原理是,RIP从某个接口学到的路由,不会从该接口再发回给邻居路由器。这样不但减少了带宽消耗,还可以防止路由环路。
水平分割在不同网络中实现有所区别,分为按照接口和按照邻居进行水平分割。广播网、P2P和P2MP网络中是按照接口进行水平分割的,如下图所示:

图:按照接口进行水平分割原理图
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)网络,由于一个接口上连接多个邻居,所以是按照邻居进行水平分割的。路由就会按照单播方式发送,同一接口上收到的路由可以按邻居进行区分。从某一接口的对端邻居处学习到路由,不会再通过该接口发送回去。

图:按照邻居进行水平分割原理图
在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实例与指定进程下的所有接口相关联。
网络上的链路故障会导致路由器重新计算路由,因此缩短路由协议的收敛时间对于提高网络性能是非常重要的。加快故障感知速度并快速通告给路由协议是一种可行的方案。
双向转发检测BFD(Bidirectional Forwarding Detection)是一种用于检测邻居路由器之间链路故障的检测机制,它通常与路由协议联动,通过快速感知链路故障并通告使得路由协议能够快速地重新收敛,从而减少由于拓扑变化导致的流量丢失。在RIP与BFD联动中,BFD可以快速检测到链路故障并通知RIP协议,从而加快RIP协议对于网络拓扑变化的响应。
RIP路由的引入:
设计者在进行网络规划或设计时,一般都设计成仅运行一种路由协议,以降低网络复杂性,易于维护。但是,如果在网络升级、扩展或合并时,就可能造成在网络中同时运行几种不同的路由协议,这时就需要部署路由协议间的引入,使路由信息能够在不同协议间传递。RIP支持不同昭由协议的引入,包括直连路由、静态路由或其他动态路由协议。由于RIP的度量值是跳数且最大值不能超过巧,所以在将其他路由协议引入至RIP时需要注意设置度量值,避免引入的路由度量值超过巧。默认情况下,引入另一种协议或引入同种协议的不同进程时往往是把该协议或该进程的所有路由一起引入,可以在引入的同时通过设置簽略来控制和过滤特定的路由信息。

**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 单播跟新无效


display rip process-id interface

dis rip 1 interface GigabitEthernet 0/0/0 verbos

dis rip 1 statistics int Serial 2/0/0