路由信息协议RIP(Routing Information Protocol)的简称,它是一种基于距离矢量(Distance-Vector)算法的协议,使用跳数作为度量来衡量到达目的网络的距离。RIP主要应用于规模较小的网络中。
RIP工作原理
路由器运行RIP后,会首先发送路由更新请求,收到请求的路由器会发送自己的RIP路由进行响应。 网络稳定后,路由器会周期性发送路由更新信息。
路由器启动时,路由表中只会包含直连路由。运行RIP之后,路由器会发送Request报文,用来请求邻居路由器的RIP路由。运行RIP的邻居路由器收到该Request报文后,会根据自己的路由表,生成Response报文进行回复。路由器在收到Response报文后,会将相应的路由添加到自己的路由表中。 RIP网络稳定以后,每个路由器会周期性地向邻居路由器通告自己的整张路由表中的路由信息,默认周期为30秒。邻居路由器根据收到的路由信息刷新自己的路由表。
RIP度量
RIP使用跳数作为度量值来衡量到达目的网络的距离。 缺省情况下,直连网络的路由跳数为0。当路由器发送路由更新时,会把度量值加1。RIP规定超过15跳为网络不可达。(大型网络架构路由器数量一般超过十五个所以RIP不适合大型网络)
RIP使用跳数作为度量值来衡量到达目的网络的距离。在RIP中,路由器到与它直接相连网络的跳数为0,每经过一个路由器后跳数加1。为限制收敛时间,RIP规定跳数的取值范围为0~15之间的整数,大于15的跳数被定义为无穷大,即目的网络或主机不可达。 路由器从某一邻居路由器收到路由更新报文时,将根据以下原则更新本路由器的RIP 路由表: 对于本路由表中已有的路由项,当该路由项的下一跳是该邻居路由器时,不论度量值将增大或是减少,都更新该路由项(度量值相同时只将其老化定时器清零。路由表中的每一路由项都对应了一个老化定时器,当路由项在 180 秒内没有任何更新时,定时器超时,该路由项的度量值变为不可达)。 当该路由项的下一跳不是该邻居路由器时,如果度量值将减少,则更新该路由项。 对于本路由表中不存在的路由项,如果度量值小于16,则在路由表中增加该路由项。 某路由项的度量值变为不可达后,该路由会在 Response 报文中发布四次(120 秒),然后从路由表中清除。 在本示例中,路由器RTA通过两个接口学习路由信息,每条路由信息都有相应的度量值,到达目的网络的最佳路由就是通过这些度量值计算出来的。
RIP版本的区别
RIP包括RIPv1和RIPv2两个版本。 RIPv1为有类别路由协议,不支持VLSM和CIDR。 RIPv2为无类别路由协议,支持VLSM,支持路由聚合与CIDR。 RIPv1使用广播发送报文;RIPv2有两种发送方式:广播方式和组播方式,缺省是组播方式。RIPv2的组播地址为224.0.0.9。组播发送报文的好处是在同一网络中那些没有运行RIP的网段可以避免接收RIP的广播报文;另外,组播发送报文还可以使运行RIPv1的网段避免错误地接收和处理RIPv2中带有子网掩码的路由。 RIPv1不支持认证功能,RIPv2支持明文认证和MD5密文认证。
RIP协议通过UDP交换路由信息,端口号为520。RIPv1以广播形式发送路由信息,目的IP地址为广播地址255.255.255.255。 报文格式中每个字段的值和作用: Command:表示该报文是一个请求报文还是响应报文,只能取1或者2。1表示该报文是请求报文,2表示该报文是响应报文。 Version:表示RIP的版本信息。对于RIPv1,该字段的值为1。 Address Family Identifier(AFI):表示地址标识信息,对于IP协议,其值为2。 IP address:表示该路由条目的目的IP地址。这一项可以是网络地址、主机地址。 Metric:标识该路由条目的度量值,取值范围1-16。 一个RIP路由更新消息中最多可包含25条路由表项,每个路由表项都携带了目的网络的地址和度量值。整个RIP报文大小限制为不超过504字节。如果整个路由表的更新消息超过该大小,需要发送多个RIPv1报文。
RIPv2的认证功能是一种过滤恶意路由信息的方法,该方法根据key值来检查从有效对端设备接收到的报文。这个key值是每个接口上都可以配置的一个明文密码串,相应的认证类型(Authentication Type)的值为2。
RIP的缺点:
1.容易造成环路路由:
本示例介绍了RIP网络上路由环路的形成。 如图所示,RIP网络正常运行时,RTA会通过RTB学习到10.0.0.0/8网络的路由,度量值为1。一旦路由器RTB的直连网络10.0.0.0/8产生故障,RTB会立即检测到该故障,并认为该路由不可达。此时,RTA还没有收到该路由不可达的信息,于是会继续向RTB发送度量值为2的通往10.0.0.0/8的路由信息。RTB会学习此路由信息,认为可以通过RTA到达10.0.0.0/8网络。此后,RTB发送的更新路由表,又会导致RTA路由表的更新,RTA会新增一条度量值为3的10.0.0.0/8网络路由表项,从而形成路由环路。这个过程会持续下去,直到度量值为16。
2.带宽消耗大:
图上1000M和100M代表链路带宽,当PC1给PC2发包时,会走100M线路,因为RIP计算距离的方法是认跳数,因此带宽消耗就大。(带宽越高,消耗越低。带宽越低消耗越高。)
3.收敛速度慢:RIP采用距离矢量算法,路由器之间交换的是完整路由表,且对路由更新反应强烈,这导致在网络状态变化时,信息的传播和路由的更新速度相对较慢。所以收敛速度慢。
4.度量值问题:RIP设计用于相对小的自治系统,它强制规定了一个严格的跳数限制为15跳,这是其协议设计上的固有限制。
5.不支持无类IP地址:主要是因为它仅支持A、B、C类这样的自然网段路由,其协议报文中没有携带子网掩码信息。这种设计使得RIP-1无法识别和处理除了A、B、C类网络之外的其他子网划分,因此无法实现无类IP地址的功能
解决环路的方法有:水平分割,毒性翻转,触发更新。
水平分割:
水平分割的原理是,路由器从某个接口学习到的路由,不会再从该接口发出去。也就是说,RTA从RTB学习到的10.0.0.0/8网络的路由不会再从RTA的接收接口重新通告给RTB,由此避免了路由环路的产生。
毒性翻转:
毒性反转是指路由器从某个接口学到路由后,将该路由的跳数设置为16,并从原接收接口发回给邻居路由器。
触发更新:
触发更新是指当路由信息发生变化时,立即向邻居设备发送触发更新报文。及时更新路由表
RIP配置
[RTA]rip 使能RIP进程
[RTA-rip-1]version 2 使能RIPv2
[RTA-rip-1]network 10.0.0.0 宣告直连网段, top上的IP地址可以自行编写(需要注意的是不支持无类IP) 10.0.0.0 中的0代表任何数字可以减少配置时间,如果两个端口IP是不同网段则需要分开宣告。
[RTA-rip-1]network 192.168.1.0 给PC宣告其他是网段路径,因为是三层转发,不给PC路径,PC不知道路,所以这一步不能少。PC IP自行配置。
[RTC]interface GigabitEthernet 0/0/0 进入0/0/0端口
[RTC-GigabitEthernet1/0/0]rip metricin 【1-16数值】 用于修改接口上应用的度量值
(注意:该命令所指定的度量值会与当前路由的度量值相加)。当路由器的一个接口收到路由时,路由器会首先将接口的附加度量值增加到该路由上,然后将路由加入路由表中。
[RTA]interface GigabitEthernet 0/0/0 进入0/0/0端口
[RTA-GigabitEthernet0/0/0]rip metricout 2 通告RIP路由时修改路由的度量值为2
一般情况下,在将路由表项转发到下一跳之前,RIP会将度量值加1。如果配置了rip metricout命令,则只应用命令中配置的度量值。即,当路由器发布一条路由时,此命令配置的度量值会在发布该路由之前附加在这条路由上,但本地路由表中的度量值不会发生改变。 在本示例中,缺省情况下,RTA发送的10.0.0.0/8路由条目的度量值为1。但是,由于在RTA的GigabitEthernet0/0/0接口上配置了rip metricout 2,所以RTA会将该路由条目的度量值设置为2,然后发送给RTC。