RIP:Routing Information Protocol 路由信息协议
RIP:Routing Information Protocol 路由信息协议
- 标准的距离矢量路由协议,邻居(直连)间直接共享路由表
- 版本分类:RIPv1、RIPV2(IPV4);RIPng(IPV6)
- 使用周期更新和触发更新
- 30s周期更新---保活、确认
- 触发更新---结构突变时,及时进行收敛
- 基于UDP 520端口工作(不可靠)
- 管理距离(AD)值120,使用跳数作为度量值,最大15跳,16跳为不可达
- 只存在更新包(update),携带路由条目信息和度量值
- 支持等开销负载均衡,默认4条,最大6条,IOS版本12.4以上支持16条
RIPv1 和 RIPv2的共同特性:
- 以到达目的网络的最小跳数作为路由选择度量标准,而不是以链路带宽和延迟进行选择
- 最大跳数为15跳,这限制了网络的规模
- 默认路由更新周期为30s,同时支持触发更新,并使用UDP协议的520端口
- 管理距离120
- 支持等价路径(在等价路径上负载均衡),默认为4条,最大为6条
RIP协议的三个要点:
- 仅和相邻路由器交换信息,不相邻的路由器不进行信息的交换;
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表;
- 按固定的时间间隔交换路由信息,例如,每隔 30 秒
RIPv1 和 RIPv2的区别:
- 更新方式:
- v1 广播更新,目标IP:255.255.255.255
- v2 组播更新,目标IP:224.0.0.9
- 更新时是否携带掩码:
- v1(有类) :更新时不携带掩码,按照主类网络的掩码的进行发送;10.1.1.1 255.0.0.0
- v2(无类):更新时携带掩码;10.1.1.1/24
- v2支持手工认证,邻居间身份核实
路由防环机制(6个):
机制 | 解释 |
---|---|
定义最大值 | 最大跳数为15跳,16跳标记为不可达 |
水平分割(Split Horizon) | 路由器从某个接口接收到的更新信息不允许再从这个接口发回去 它能够阻止路由环路的产生,减少路由器更新信息占用的链路带宽资源 |
路由中毒(Router Poisoning) | 将不可达网络度量值置为无穷大(RIP为16),而不是从路由表中删除这条路由表项,并向所有邻居路由器发送此路由不可达的信息 这种为了删除路由信息而洪泛的行为,被称为路由中毒 |
反向中毒(毒化反转) | 触发更新:当网络稳定之后存在断开网络 时,将立即产生跳数为16跳的毒性更新包并发送到邻居路由器来告知邻居该路径不可达,收到该毒性更新包的邻居将立即删除与之有关的路由条目,之后邻居打破水平分割机制将信息再次发出,来标记确认; 分为主动发送和超时发送 |
抑制更新时间 | 当路由器收到一个网络不可达信息后,标记此路由不可访问,并启动一个抑制计时器,如果再次收到从邻居发送来的此路由可达的更新信息,就标记为可以访问,并取消抑制计时器 反之,在抑制计时器内仍没有收到任何更好的更新,就向其他路由传播此路由不可访问的信息; |
触发更新 | 正常情况下,路由器30s将路由表发送给邻居路由器。触发更新指当检测到网络故障时,路由器会立即发送一个更新信息给邻居路由表,并依次传播到整个网络 |
距离矢量路由协议通过定期广播路由表来跟踪互联网的变化,收敛慢,因此每台路由器不能同时或接近同时完成路由表的更新;
因而产生了不协调或者矛盾的路由选择条目,就会发生路由环路问题,只是用户的数据包不停的在网络上循环发送,造成网络资源的严重浪费;
RIP的缺点:
- 以跳数作为度量值,会选出非最优路径
- 度量值最大为16,限制了网络规模,所有只适用于小型网络
- 可靠性差,接受来自任何设备的更新
- 收敛速度慢,通常需要5min左右;容易造成环路;为了避免环路,RIP采用水平分割、毒性逆转、定义最大跳数、触发更新和抑制计时器5个机制来避免路由环路
- 因发送全部路由表中的信息,RIP协议占用太多的带宽
RIP的消息类型和报文模式:
- RIP有两种消息类型,request(请求消息)和response(响应消息)
- request:RIP的request消息在特殊情况下发送,当路由器需要时它可以提供即时的路由信息;它可以请求全部的路由条目也可以请求具体的某些路由条目;最常见的例子是当路由器第一次加入网络时,通常会发送request消息,以要求获取相邻路由器的最新路由信息;
- response:当RIP接收到request消息,将处理并发送一个response消息,消息包含自己的整个路由表或请求要求的条目;正常情况下,路由器通常不会发送对路由消息有特殊要求的请求信息;RIP会每30s发送一个response消息,用于路由表更新;
- RIP报文使用UDP进行传输,即将整个报文封装成UDP数据报的数据部分,端口为520。
- AFI为0表示请求所有的路由条目且metric值为16
- command为1时表示为请求,2时表示为响应
- RIP最大一次只能传25个路由条目.如果超过25个就要分多个数据包进行传递,加上8字节的UDP头部,所以RIP的最大报文为512字节
- 如果当开启验证的时候会拿20的字节出来存放验证字段.此时就只能传24个路由条目了
那么一个路由器是如何知道整个网络的路由信息的呢?RIP协议刚开始工作时,和相邻的路由器交换信息,整个网络中的路由器都是如此,在经过许多次的信息交换之后,路由信息被逐渐传递出去,最终,任何一个路由器都会知道到某一个网络的最短路径,和下一跳地址。
RIP协议最重要的就是它的距离向量算法----距离矢量算法
对于某一个路由器来说,从它相邻的路由器X发过来的RIP报文(内容是:到某个网络N的最短路径,以及下一跳地址,),首先要做如下处理:
- 修改报文中的所有项目,将路由表项中的下一跳地址都改为X,然后将距离加一,
- 对于修改过的报文,进行如下步步骤:
- 若路由器的路由表中,不存在到N的路由,则将修改过的表项加入到自己的路由表中
- 若路由器的路由表中,存在到N的路由,再进行如下步骤
- 若路由表中的下一跳地址就是X,那么将修改过的表项替换原来的路由(以最新的消息为准)。
- 若路由表中的下一跳地址不是X,则将自己的路由的距离,于修改过的表项中的距离相比,若修改过的表项中的距离比自己的小,那么替换路由,否则什么也不做。
- 若三分钟还没有收到相邻路由器发过来的RIP报文,则将此相邻路由标记为不可到达,即把距离设置为16.
- 完成
以上是语言描述的RIP协议的距离向量算法。
每个路由器不断于其响铃路由器交换信息,重复以上步骤,最终,整个自治系统中的所有路由器都会知道整个网络的结构。