浅析【RIP路由信息协议】

RIP简介

RIP(Routing Infomation Protocol,路由信息协议)是一种较为简单的内部网关协议(Interior Gateway Protocol,IGP),主要用于规模较小的网络中,比如校园网和结构较为简单的地区性网络。对于更为复杂的环境和大型网络场景,一般不使用RIP,而是使用更为先进、可靠的OSPF协议。由于RIP协议的配置简单,协议理解也较为容易,我们从RIP学起可以更快入手路由协议族。

RIP是一种典型的距离向量(Distance-Vector)协议,它使用一种非常简单的度量(metric)来计算路由开销--路由跳数,也就是到达目的地址所需要经过的设备节点数(网段跳越点),取值0-15,数值16表示无穷大,也就是网络不可达,基于这一点,RIP也只能适用在简单网络环境和小型网络中。RIP规定,路由器到与它直连网段的跳数为0,通过与其直连的路由器到达另一个网络的跳数为1,其余的以此类推。

RIP协议使用UDP 520端口来发送和接收协议报文。RIP协议每隔30s以广播的形式发送一次,为了防止广播风暴出现,后续的广播报文将做随机延后再发送。再RIP中,如果一条路由在180s内没有被刷新,这条路由的metric将被设置为16,即不可达,接下来将进入老化时间,如果120s内没有收到路由信息,则从路由表内删除。


RIP版本

RIP至今已经经历了RIPv1,RIPv2,RIPng版本,其中RIPng适用于IPV6。通常我们所说的RIP协议则是RIPv1和v2,v2相对于v1有了很多方面的补充和加强。两个版本之间的主要差异是:v1是有类别路由协议,v2是无类别路由协议。v2还具备了其他的优势:

  1. 支持路由标记,在路由策略中可以根据路由标记对路由进行灵活控制
  2. 每个路由条目都携带了自己的子网掩码,支持路由聚合和CIDR(Classless Inter-Domain Routing,无类域间路由)
  3. 路由选择更新具有认证功能,支持铭文验证和MD5验证,增强了安全性
  4. 每个路由条路都携带了下一跳的地址,路由选择时可以选择最优下一跳地址
  5. 支持组播路由更新(224.0.0.9),减少了资源消耗

RIP管理距离

管理距离是人为指定的一个数字,每种路由协议都有自己的管理距离,数字越小,优先级越高。

  1. 直连路由:0
  2. 静态路由:1
  3. EIGRP:90
  4. IGRP:100
  5. OSPF:110
  6. RIP:120

RIPv1报文结构

每条消息包含一个命令标识command,一个版本号verison,还有路由条目,最大支持25条。每个路由条目包括地址簇标识Address Family Identifier,AFI,路由可达的IP地址和路由的跳数。

命令command:只取值1或者2:1标识该消息是请求消息request,2表示该消息是响应消息response。其他的取值都不被使用。

版本号version:对于v1或者v2,该字段取值对于1或2.

地址簇标识AFI:对于IP地址,该字段取值2;

IP地址:路由的目的地址,这一项可以使主网络地址,子网地址或者主机地址,表示路由器自己知道的网络。

度量Metric:在RIP中指的就是跳数hop,该字段取值1-16之间。

如果某路由器必须发布大于25条路由的更新信息,那么必须产生多条rip信息。由于历史原因,v1的报文中有很多的unused区域,这有点不合理,值得一提,有些路由器支持查0检验,对于这些区域进行0值校验CHECK ZERO。


RIPv2报文结构

v2的消息格式基本和RIPv1相同,但是v2使用了那些0值区域字段。

v2协议已经对v1进行了非常多的扩展,都是使用v1中未使用的字段提供的。V2和V1一样,更新报文中最大可以携带25条路由条目,也是用UDP520端口号。对于两个版本的报文格式,可以发现,command,verison,AFI,ip address,metric字段都是没有变化的。v2多定义了路由标记(Route Tag),子网掩码(Subnet Mask),下一跳(Next Hop)。

路由标记(Route Tag):这个字段用于标记外部路由或重分布到RIPv2协议中的路由。默认的情况是使用这16位的字段来携带从外部路由选择注入到RIP中的路由的自主系统号,虽然RIP协议在自己并不使用这个字段,但是在多个地点和某个RIP域相连的外部路由,可能需要使用这个路由标记字段通过RIP域来交换路由信息。这个字段也可以用来把外部路由编成“组”,以便在RIP域中更容易控制这些路由。

子网掩码(Subnet Mask):这个字段确定了IP地址的网络和子网部分的32位掩码。正是因为这个字段的提出,让v2可以识别变长子网,让RIP支持无类子网。

下一跳(Next Hop):如果下一跳存在的话,它将标识一个比通告路由更好的下一跳。这里指出的下一跳地址,其度量值比同一个子网通告的路由器更靠近目的地。如果这个字段设置为0,说明通告路由器的地址是最好的下一跳地址。


RIP验证机制

在RIPv2中,对于路由协议的安全提供了保障。这个是v1不具备的。所谓路由安全,指的是一台路由器接收非法路由更新报文的可能性。 非法路由更新报文可能来自某个网络攻击者或者具有故障的路由器。RIPv2协议能够通过更新报文所包含的口令来验证某个路由选择更新的源的合法性。

v2是通过更改RIP消息中原来正常情况下第一个路由条目的的字段来支持认证功能的,如上所示。在含有认证的单个更新报文中,最大可以携带的路由条目变成了24个。认证的识别是通过设置地址簇标识符字段为全1(0xFFFF)。对于简单的口令认证,认证的类型(Authentication)是2(0x0002),对于MD5复杂认证的报文,则是3(0x0003)剩余的16个8bit字段携带一个最多16个字符的口令。口令在字段中按照左对齐的方式,如果一个口令小于16个字节,那么字段中没有使用的位将被设置为0来填充。


RIP启动和运行过程

  1. 路由器启动RIP后,便会向相邻的路由器发送请求报文(Request message),相邻的RIP路由器收到请求报文后,响应该请求,回送包含本地路由信息的响应报文(Response message)
  2. 路由器收到响应报文后,更新本地路由表,同时向相邻路由器发送触发更新报文,广播路由更新信息,相邻路由器收到触发更新报文后,又向其各自的相邻路由器发送触发更新报文。经过一段时间后,各个路由器都能得到并保持最新的路由信息
  3. RIP采用老化机制对超时的路由进行老化处理,以保证路由的实时性和有效性

RIP定时器

RIP受四个定时器控制,分别是Update、Timeout、Suppress和Garbage-Collect。

  1. Update定时器:定义发送路由更新的时间间隔
  2. Timeout定时器:定义路由老化时间,如果在老化时间内没有收到关于某条路由更新的报文,则该路由度量值会被设置为16不可达
  3. Suppress定时器:定义了RIP路由处于抑制状态的时长。当一条路由变为16后,该路由进入抑制状态,在被抑制状态,只有来自同一邻居且度量值小于16的路由更新才会被路由器接收,取代不可达路由
  4. Garbage-Collect定时器:定义了一条路由从度量值变为16开始,直到它从路由表里被删除的时间,在GC时间内,RIP以16作为度量值向外发布这一条路由的更新,如果GC超时,该路由没有得到更新,则路由从路由表中彻底删除

防止路由环路

RIP是一种基于D-V算法的路由协议,由于它向邻居通告的是自己的路由表,若是某条路由发生故障,在自身向邻居通告故障之前,收到了邻居关于这条路由的通告报文,则会发生环路。RIP通过以下机制来避免环路的产生。

  1. 计数到无穷(counting to infinity):将度量值为16的路定义为不可达(infinity)。在路由环路发生时,某条路由的度量值将被设置为16,该路由被认为是不可达的
  2. 水平分割(split horizon):RIP从某个接口学到的路由,不会从该接口再发送回邻居路由器。这样不仅减少了带宽消耗,还可以防止路由环路
  3. 毒性逆转(poison reverse):RIP从某个接口学到路由后,将该路由的度量值设置为16,并从原接口发送回邻居路由器。如此可以消除对方路由表中的无用信息
  4. 触发更新(Trigered update):RIP通过触发更新来避免在多个路由器之间形成环路的可能,还可以加速网络的收敛速度。一旦某条路由的度量值发生了变化,就立刻向邻居路由器发布更新报文,而不是等待更新周期的到来
  5. 抑制计时(holddown timer):一条路由信息无效后,一段时间内这条路由都处于抑制时间,即在一定时间内不再接收关于同一目的地址的更新。如果,路由器从一个网段上得知一条路径失效,然后,立即在另一网段上得知这个路由有效,这个有效的信息往往是不正确的,抑制时间避免了这个问题,而且当一条链路频繁起停时,抑制时间减少了路由的浮动,增强了网络的稳定性

下面列一个例子便于理解(图片截取自论文《Linux下RIP路由的实现》--胡峰,诚挚感谢!!!):

网络拓扑图如下:

 

均为10.1.x.x网段,接下来列举每个时间周期内的A、B、C、D路由表变化:

RIP路由总结暂时就这么多,若有心得,以后补充。

                                                                                                                                                  【参考文献】

                                                                                                                                                  Linux下RIP路由的实现 胡峰

                                                                                                                                                  H3C RIP技术白皮书XXX

                                                                                                                                                  华为路由书籍XXX

 

猜你喜欢

转载自blog.csdn.net/sinat_33518009/article/details/86655947