路由信息协议RIP是内部网关协议IGP中最先得到广泛应用的协议,是一种距离矢量路由协议,RIP最大的特点是,无论实现原理还是配置方法,都非常简单。RIP的度量基于跳数,每经过一台路由器,路径的跳数加一。如此一来,跳数越多,路径就越长,RIP算法会优先选择跳数比较少的路径。RIP支持的最大跳数是15,跳数为16的网络被认为不可达。所以RIP协议适用于小型的网络环境。
为了维持所学路由的正确性以及与邻居的一致性,运行RIP协议的路由器之间要周期性地向邻居传递之间的整个路由表。周期性(默认为30秒)传递的路由表被封装在Updata包--路由更新包中。具体说明到本自治系统中所有网络的最短距离,以及到每个网络应经过的下一个路由器。
在路由协议刚刚开始启动时,只知道到直连网络的距离。接着,每一个路由器只会和相邻的路由器交换信息。经过若干次的更新交换后,所有的路由器最终可以知道到达本自治系统中任何一个网络的最短距离和到达每个网络应该经过的下一个路由器地址。
现在较新的RIP版本为1998年公布的RIPv2,与RIPv1相比,RIPv2可以支持变长子网掩码和CIDR,同时还提供简单的鉴别过程支持多播。
RIP协议存在的一个问题是当网络出现故障时,路由表会频繁的变化,导致很长时间整个路由表都无法收敛。例如在2003年网络工程师下午试题五则体现了RIP协议的这一特点。同时广大网友可以可参阅《网络工程师考试冲刺指南》最新版P306页。
为了让网络出现故障时能路由器能快速收敛,可以采取以下几种措施:
1.水平分割:
就是对于一台路由器来说,从一个方向上学习到的路由信息,不让同一路由信息再通过此接口向反方向传送。例如我们对照《网络工程师考试冲刺指南》最新版P306页的图,当路由器R3发现网段192.168.40.0出现故障时,就会把这条路由清除出路由器。由于水平分割的原因,路由器R2在向路由器R3发送路由更新包时,不能将关于192.168.40.0的网段放入该更新包,因为他是从路由器R3那里学过来。
2.路由中毒:
水平分割能避免路由环路。但在R1和R2路由器的路由表中,关于故障网段192.168.40.0的信息依然存在。这时候引入路由中毒的方法。当路由器R3发现网段192.168.40.0出现故障时,会首先对自己“下毒”,标记该路由不可达。然后再通过路由更新包给自己的邻居路由器R2“下毒”,这样通过一连串的“下毒”,整个网络都会知道192.168.40.0网段出现了故障。
3.反向下毒:
当路由器R2、R1被成功“下毒”后,他们会向“毒源”的方向反向“下毒”,这样保证所有的路由器都接受到了毒化的路由信息,虽然违反水平分割原则,但在路由协议中是被允许的。
4.保持时间:
指的是当路由器R3发现网段192.168.40.0出现故障时,使自己的路由表关于该网段的路由变成“可能DOWN”状态后,还要继续保持该状态一段时间。在此时间段内,路由器收到邻居发来的关于该网段的更新信息后,如果再次收到从邻居发送来的更新信息,包含一个比原来路径具有更好度量值的路由,就标记为可以访问,并取消保持时间。如果在保持时间超时之前从不同邻居收到的更新信息包含的度量值比以前的更差,更新将被忽略,这样可以有更多的时间让更新信息传遍整个网络。
5.触发更新:
正常情况下,路由器会定期将路由表发送给邻居路由器。而触发更新就是立刻发送路由更新信息,以响应某些变化。测到网络故障的路由器会立即发送一个更新信息给邻居路由器,并依次产生触发更新通知它们的邻居路由器,使整个网络上的路由器在最短的时间内收到更新信息,从而快速了解整个网络的变化。
事实上,只依靠以上几种方法中的任何一种或几种,都不能完全解决路由表正确的问题,只有将几种方法联合起来才能凑效。