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网络中,缺省情况下,设备到与它直接相连网络的跳数为0,通过一个设备可达的网络的跳数为1,其余依此类推。也就是说,度量值等于从本网络到达目的网络间的设备数量。为限制收敛时间,RIP规定度量值取0~15之间的整数,大于或等于16的跳数被定义为无穷大,即目的网络或主机不可达。由于这个限制,使得RIP不可能在大型网络中得到应用。
RIP启动时的初始路由表仅包含本设备的一些直连接口路由。通过相邻设备互相学习路由表项,才能实现各网段路由互通。
图1 RIP路由表形成过程 RIP路由形成的过程如图1所示
RIP协议启动之后,RouterA会向相邻的路由器广播一个Request报文。当RouterB从接口接收到RouterA发送的Request报文后,把自己的RIP路由表封装在Respone报文内,然后向该接口对应的网络广播。RouterA根据RouterB发送的Response报文,形成自己的路由表。RIP协议在更新和维护路由信息时主要使用四个定时器:
更新定时器(Update timer):当此定时器超时时,立即发送更新报文。老化定时器(Age timer):RIP设备如果在老化时间内没有收到邻居发来的路由更新报文,则认为该路由不可达。垃圾收集定时器(Garbage-collect timer):如果在垃圾收集时间内不可达路由没有收到来自同一邻居的更新,则该路由将被从RIP路由表中彻底删除。抑制定时器(Suppress timer):当RIP设备收到对端的路由更新,其cost为16,对应路由进入抑制状态,并启动抑制定时器。为了防止路由震荡,在抑制定时器超时之前,即使再收到对端路由cost小于16的更新,也不接受。当抑制定时器超时后,就重新允许接受对端发送的路由更新报文。RIP路由与定时器之间的关系:
RIP的更新信息发布是由更新定时器控制的,默认为每30秒发送一次。每一条路由表项对应两个定时器:老化定时器和垃圾收集定时器。当学到一条路由并添加到RIP路由表中时,老化定时器启动。如果老化定时器超时,设备仍没有收到邻居发来的更新报文,则把该路由的度量值置为16(表示路由不可达),并启动垃圾收集定时器。如果垃圾收集定时器超时,设备仍然没有收到更新报文,则在RIP路由表中删除该路由。触发更新是指当路由信息发生变化时,立即向邻居设备发送触发更新报文,而不用等待更新定时器超时,从而避免产生路由环路。
图2 触发更新原理图 如图2所示,网络11.4.0.0不可达时,RouterC最先得到这一信息。
如果设备不具有触发更新功能,RouterC发现网络故障之后,需要等待更新定时器超时。在等待过程中,如果RouterB的更新报文传到了RouterC,RouterC就会学到RouterB的去往网络11.4.0.0的错误路由。这样RouterB和RouterC上去往网络11.4.0.0的路由都指向对方从而形成路由环路。如果设备具有触发更新功能,RouterC发现网络故障之后,不必等待更新定时器超时,立即发送路由更新信息给路由器B,这样就避免了路由环路的产生。动态路由协议概述
路由器之间用来交换信息的语言。度量值
跳数、带宽、负载、时延、可靠性、成本。收敛
使所有路由表都达到一致状态的过程。静态路由与动态路由的比较
网络中静态路由和动态路由互相补充。按照路由执行的算法分类
距离矢量路由协议依据从源网络到目标网络所经过的路由器的个数选择路由 • RIP、 BGP链路状态路由协议
综合考虑从源网络到目标网络的各条路径的情况选择路由OSPF、 IS-IS水平分割(Split Horizon)的原理是,RIP从某个接口学到的路由,不会从该接口再发回给邻居路由器。这样不但减少了带宽消耗,还可以防止路由环路。
水平分割在不同网络中实现有所区别。广播网、P2P和P2MP网络中是按照接口进行水平分割的,如图1所示。
图1 按照接口进行水平分割原理图 RouterA会向RouterB发送到网络10.0.0.0/8的路由信息,如果没有配置水平分割,RouterB会将从RouterA学习到的这条路由再发送回给RouterA。这样,RouterA可以学习到两条到达10.0.0.0/8网络的路由:1.跳数为0的直连路由;2.下一跳指向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)网络,由于一个接口上连接多个邻居,所以是按照邻居进行水平分割的。路由就会按照单播方式发送,同一接口上收到的路由可以按邻居进行区分。从某一接口的对端邻居处学习到路由,不会再通过该接口发送回去。
图2 按照邻居进行水平分割原理图 如图2所示,在NBMA网络配置了水平分割之后,RouterA会将从RouterB学习到的20.0.0.0/8路由发送给RouterC,但是不会再发送回给RouterB。
实验拓扑图
三台路由器。
AR1用RIP1版本,AR2用RIP2版本
抓个AR1 G0/0/0接口的包看一下。 用display ip routing命令查看一下三台路由器的路由情况