RIP协议(通信协议)

2023-05-08 46阅读

温馨提示:这篇文章已超过440天没有更新,请注意相关的内容是否还可用!

RIP协议

通信协议

RIP协议是一种内部网关协议(IGP),是一种动态路由选择协议,用于自治系统(AS)内的路由信息的传递。RIP协议基于距离矢量算法(DistanceVectorAlgorithms),使用“跳数”(即metric)来衡量到达目标地址的路由距离。这种协议的路由器只关心自己周围的世界,只与自己相邻的路由器交换信息,范围限制在15跳(15度)之内,再远,它就不关心了。RIP应用于OSI网络七层模型的网络层。各厂家定义的管理距离(AD,即优先级)如华为定义的优先级是100,华三定义优先级是100,思科定义的是120。RIP分组分为请求分组和响应分组两种。

中文名 RIP协议
外文名 Routing Information Protocol
采用原理 距离向量算法
性质 一种内部网关协议
性能 自治系统内的路由信息的传递

名词概述

RIP协议采用距离向量算法,是当今应用最为广泛的内部网关协议。在默认情况下,RIP使用一种非常简单的度量制度:距离就是通往目的站点所需经过的链路数,取值为1~15,数值16表示无穷大。RIP进程使用UDP的520端口来发送和接收RIP分组。RIP分组每隔30s以广播的形式发送一次,为了防止出现“广播风暴”,其后续的的分组将做随机延时后发送。在RIP中,如果一个路由在180s内未被刷,则相应的距离就被设定成无穷大,并从路由表中删除该表项。RIP分组分为两种:请求分组和相应分组。

历史演化

RIP-1被提出较早,其中有许多缺陷。为了改善RIP-1的不足,在RFC1388中提出了改进的RIP-2,并在RFC1723和RFC2453中进行了修订。RIP-2定义了一套有效的改进方案,新的RIP-2支持子网路由选择,支持CIDR,支持组播,并提供了验证机制。

随着OSPF和IS-IS的出现,许多人认为RIP已经过时了。但事实上RIP也有它自己的优点。对于小型网络,RIP就所占带宽而言开销小,易于配置、管理和实现,并且RIP还在大量使用中。但RIP也有明显的不足,即当有多个网络时会出现环路问题。为了解决环路问题,IETF提出了分割范围方法,即路由器不可以通过它得知路由的接口去宣告路由。分割范围解决了两个路由器之间的路由环路问题,但不能防止3个或多个路由器形成路由环路。触发更新是解决环路问题的另一方法,它要求路由器在链路发生变化时立即传输它的路由表。这加速了网络的聚合,但容易产生广播泛滥。总之,环路问题的解决需要消耗一定的时间和带宽。若采用RIP协议,其网络内部所经过的链路数不能超过15,这使得RIP协议不适于大型网络。

报文格式

071531

命令字(1字节)版本(1字节)必须为0(2字节)

地址类型标识符(2字节)必须为0(2字节)

IP地址

必须为0

必须为0

Metric值(1—16)

(最多可以有24个另外的路由,与前20字节具有相同的格式)

“命令字”字段为1时表示RIP请求,为2时表示RIP应答。地址类型标志符在实际应用中总是为2,即地址类型为IP地址。“IP地址”字段表明目的网络地址,“Metric”字段表明了到达目的网络所需要的“跳数”。

结构组成

使用RIP报文中列出的项,RIP主机可以彼此之间交流路由信息。这些信息存储在路由表中,路由表为每一个知道的、可达的目的地保留一项。每个目的地表项是到达那个目的地的最低开销路由。

注意每个目的地的表项数可以随路由生产商的不同而变化。生产商可能选择遵守规范,也可以对标准进行他们认为合适的“强化”。所以,用户很可能会发现某个特殊商标的路由器为每一个网络中的目的地存储至多4条相同费用的路由。

每个路由表项包括以下各域:

目的IP地址域

距离-向量度量域

下一跳IP地址域

路由变化标志域

路由计时器域

注意虽然RFC1058是一个开放式标准,能支持大量互连网络地址结构,然而它是由IETF设计用于Internet中自治系统内的协议。如此,使用这种形式RIP的自然是网络互联协议。

1.目的IP地址域

任何路由表中所包含的最重要信息是到所知目的地的IP地址。一旦一台RIP路由器收到一个数据报文,就会查找路由表中的目的I P地址以决定从哪里转发那个报文。

2.度量标准域

路由表中的度量域指出报文从起始点到特定目的地的总耗费。路由表中的度量是从路由器到特定目的地之间网络链路的耗费总和。

3.下一跳IP地址域

下一跳IP地址域包括至目的地的网络路径上下一个路由器接口的IP地址。如果目的IP地址所在的网络与路由器不直接相连时,路由器表中才出现此项。

4.路由变化标志域

路由变化标志域用于指出至目的IP地址的路由是否在最近发生了变化。这个域是重要的,因为RIP为每一个目的IP地址只记录一条路由。

5.路由计时器域

有两个计时器与每条路由相联系,一个是超时计时器,一个是路由刷新计时器。这些计时器一同工作来维护路由表中存储的每条路由的有效性。路由表维护过程在12.2.2节中详细描述。

基本举例

Router1:

router rip version 2 network 192.200.10.0 network 192.20.10.0!相关调试命令:show ip protocol

show ip route在全局设置(#)模式下:1.启动RIP路由router rip2.设置参与RIP路由的子网network子网地址3.允许在非广播型网络中进行RIP路由广播neighbor相邻路由器相邻端口的IP地址4.设置RIP的版本RIP路由协议有2个版本,在与其它厂商路由器相连时,注意版本要一致,缺省状态下,Cisco路由器接收RIP版本1和2的路由信息,但只发送版本1的路由信息,设置RIP的版本vesion1或2。另外,还可以控制特定端口发送或接收特定版本的路由信息。1.只在特定端口发版本1或2的信息,在端口设置模式下rip send version1或22.同时发送版本1和2的信息ip rip send receive1or23.在特定端口接受版本1或2的路由信息ip rip receive1or24.同时接受版本1和2的路由信息ipripreceive1or2选择路由协议几点建议:1.在大型网络中,建议使用ospf,eigrp.2.如果网络中含有变长了网掩码(VISM)不能使用igrp,rip版本1,可以使用rip版本2,ospf,eigrp或静态路由。3.如果使用路由安全设置可以使用RIP版本1或OSPF。4.选用ospf,eigrp在系统稳定后所占带宽比RIP,IGRP少得多,IGRP比RIP所占带宽也少。5.综合使用动态路由,静态路由,缺省路由,以保证路由的冗余。6.在拨号线路上尽量使用静态路由,以节省费用。7.在小型网络上数据量不大的情况下,且不需要高可性,广域网线路为X.25SVC时,建议用静态路由。

局限性

1、协议中规定,一条有效的路由信息的度量(metric)不能超过15,这就使得该协议不能应用于很大型的网络,应该说正是由于设计者考虑到该协议只适合于小型网络所以才进行了这一限制。对于metric为16的目标网络来说,即认为其不可到达。

2、该路由协议应用到实际中时,很容易出现“计数到无穷大”的现象,这使得路由收敛很慢,在网络拓扑结构变化以后需要很长时间路由信息才能稳定下来。

3、该协议以跳数,即报文经过的路由器个数为衡量标准,并以此来选择路由,这一措施欠合理性,因为没有考虑网络延时、可靠性、线路负荷等因素对传输质量和速度的影响。

特性

(1)路由信息更新特性:

路由器最初启动时只包含了其直连网络的路由信息,并且其直连网络的metric值为1,然后它向周围的其他路由器发出完整路由表的RIP请求(该请求报文的“IP地址”字段为0.0.0.0)。路由器根据接收到的RIP应答来更新其路由表,具体方法是添加新的路由表项,并将其metric值加1。如果接收到与已有表项的目的地址相同的路由信息,则分下面三种情况分别对待:第一种情况,已有表项的来源端口与新表项的来源端口相同,那么无条件根据最新的路由信息更新其路由表;第二种情况,已有表项与新表项来源于不同的端口,那么比较它们的metric值,将metric值较小的一个最为自己的路由表项;第三种情况,新旧表项的metric值相等,普遍的处理方法是保留旧的表项。

路由器每30秒发送一次自己的路由表(以RIP应答的方式广播出去)。针对某一条路由信息,如果180秒以后都没有接收到新的关于它的路由信息,那么将其标记为失效,即metric值标记为16。在另外的120秒以后,如果仍然没有更新信息,该条失效信息被删除。

(2)RIP版本1对RIP报文中“版本”字段的处理:

0:忽略该报文。

1:版本1报文,检查报文中“必须为0”的字段,若不符合规定,忽略该报文。

>1:不检查报文中“必须为0”的字段,仅处理RFC1058中规定的有意义的字段。因此,运行RIP版本1的机器能够接收处理RIP版本2的报文,但会丢失其中的RIP版本2新规定的那些信息。

(3)RIP版本1对地址的处理

RIP版本1不能识别子网网络地址,因为在其传送的路由更新报文中不包含子网掩码,因此RIP路由信息要么是主机地址,用于点对点链路的路由;要么是A、B、C类网络地址,用于以太网等的路由;另外,还可以是0.0.0.0,即缺省路由信息。

(4)计数到无穷大(CountingtoInfinity)

前面在RIP的局限性一部分提到了可能出现的计数到无穷大的现象,下面就来分析一下该现象的产生原因与过程。考察下面的简单网络:

c(目的网络)----routerA------routerB

在正常情况下,对于目标网络,A路由器的metric值为1,B路由器的metric值为2。当目标网络与A路由器之间的链路发生故障而断掉以后:

c(目的网络)--||--routerA------routerB

A路由器会将针对目标网络C的路由表项的metric值置为16,即标记为目标网络不可达,并准备在每30秒进行一次的路由表更新中发送出去,如果在这条信息还未发出的时候,A路由器收到了来自B的路由更新报文,而B中包含着关于C的metric为2的路由信息,根据前面提到的路由更新方法,路由器A会错误的认为有一条通过B路由器的路径可以到达目标网络C,从而更新其路由表,将对于目标网络C的路由表项的metric值由16改为3,而对于的端口变为与B路由器相连接的端口。很明显,A会将该条信息发给B,B将无条件更新其路由表,将metric改为4;该条信息又从B发向A,A将metric改为5……最后双发的路由表关于目标网络C的metric值都变为16,此时,才真正得到了正确的路由信息。这种现象称为“计数到无穷大”现象,虽然最终完成了收敛,但是收敛速度很慢,而且浪费了网络资源来发送这些循环的分组。

另外,从这里我们也可以看出,metric值的最大值的选择实际上存在着矛盾,如果选得太小,那么适用的网络规模太小;如果选得过大,那么在出现计数到无穷大现象的时候收敛时间会变得很长。

提高措施

水平分割

在上面的“计数到无穷大”现象中,产生的原因是A、B之间互相传送了“欺骗信息”,那么针对这种情况,我们自然会想到如果能将这些“欺骗信息”去掉,那么不就可以在一定程度上避免“计数到无穷大”了吗。水平分割正是这样一种解决手段。

“普通的水平分割”是:如果一条路由信息是从X端口学习到的,那么从该端口发出的路由更新报文中将不再包含该条路由信息。“带毒化逆转的水平分割”是:如果一条路由信息是从X端口学习到的,那么从该端口发出的路由更新报文中将继续包含该条路由信息,而且将这条信息的metric置为16。

“普通的水平分割”能避免欺骗信息的发送,而且减小了路由更新报文的大小,节约了网络带宽;“带毒化逆转的水平分割”能够更快的消除路由信息的环路,但是增加了路由更新的负担。这两种措施的选择可根据实际情况进行选择。

触发更新

上面的“水平分割”能够消除两台路由器间的欺骗信息的相互循环,但是当牵涉到三台或者以上的路由器时,效果就有限了。考察下面的网络:

+---++----++-----+/-----

|||C+-------|D|-----||E||

|A+------|||+----||

+-+-++----++---+-+-----/

|--|

|--|

|--|

+----+|

|||

|B+-----------------------

||

+----+

E是目标网络

针对目标网络,各路由器的路由信息分别如下:

A:3C

B:2D

C:2D

D:1直连

当D与目标网络之间发生故障中断以后,B和C都能正确的从D得到网络不可达的信息,但是,从上面的路由信息中可以看出,A虽然不会给C发送错误信息,但是A可能在未收到网络不可达信息之前就给B发送了路由信息,让B错误的认为可以通过A到达目标网络,继而又会出现“计数到无穷大”的现象。

触发更新就是为了针对上述情况进行的一种改善,它的具体实现措施是:路由器一旦察觉到网络变化,就尽快甚至是立即发送更新报文,而不等待更新周期结束。只要触发更新的速度足够快,就可以大大的防止“计数到无穷大”的发生,但是这一现象还是有可能发生的。

使用了触发更新以后,当网络拓扑发生变化的时候,网络中会出现类似于“多米诺骨牌”的更新报文潮流,并最后中止于从未发生变化的路径到达目标网络的路由器。

定时器

RIP中一共使用了4个定时器:updatetimer,timeouttimer,garbagetimer,holddowntimer。

Updatetimer用于每30秒发送路由更新报文。

Timeouttimer用于路由信息失效前的180秒的计时,每次收到同一条路由信息的更新信息就将该计数器复位。

Garbagetimer和holddowntimer同时用于将失效的路由信息删除前的计时:在holddowntimer的时间内,失效的路由信息不能被接收到的新信息所更新;在garbagetimer计时器超时后,失效的路由信息被删除。

另外,在触发更新中,更新信息会需要1到5秒的随机延时以后才被发出,这里也需要一个计时器。

RIP版本2

RIPV2概述

RIP-V2不是一个新的协议,它只是在RIPV1协议的基础上增加了一些扩展特性,以适用于现代网络的路由选择环境。这些扩展特性有:

>每个路由条目都携带自己的子网掩码

>路由选择更新更具有认证功能

>每个路由条目都携带下一跳地址

>外部路由标志

>组播路由更新

最重要的一项是路由更新条目增加了子网掩码的字段,因而RIP协议可以使用可变长的子网掩码,从而使RIP-V2协议变成了一个无类别的路由选择协议。

RIPV2原理

V1版路由更新用是的广播方式。RIP-V2协议使用组播的方式向其他宣告RIP-V2的路由器发出更新报文,它使用的组播地址是保留的D类地址224.0.0.9

使用组播方工的好处在于,本地网络上相连的RIP路由选择无关的设备不再花费时间对路由器广播的更新报文进行解析。

1RIP-V2信息帧格式

命令(8位)

版本(8位)

未用(值为0)

地址族标示符

路由标记

IP地址

子网掩码

下一跳

度量值

……………

和RIPV1一样,RIP-V2的更新报文最大可以包含25个路由条目。

同样使用UDP的520端口号,并且数据报文的大小最大为512个8bit位。

>命令(COMMAND)——取值为1和2,1表示是请求信息,2表示是响应消息

>版本号(VERSION)——对于RIP-V2,该字段值为2

>地址族标识(address family indentifier ,AFI)——对于IP该项设置为2.当消息是对路由器(或主机)整个路由选择表的请求时,这个字段将被设置为0.

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

>IP地址(IP ADDRESS)——路由条目的目的地址,它可以是主网络地址、子网地址或主机路由。

>子网掩码(SUBNETMASK)——是一个确认IP地址的网络和子网部分的32位的掩码。

>下一跳(NEXTHOP)——如果存在的话,它标识一个比通告路由器更好的地址更好的一下地址。也就是说,它指出的下一跳地址,其度量值比同一个子网上的通告路由器更靠近目的地。如果这个字段设置为全0(0.0.0.0),说明通告路由器的地址就是最好的下一跳地址。

>度量(METRIC)——是一个1~16之间的跳数。

RIPV2的配置

由于RIP-V2只是RIP-V1的增强版,而不是一个单独的协议,因此,在RIPV1中介绍的某些命令可以同样的方法在RIP-V2中正确使用。

1基本配置

router rip

version 2

network 172.25.0.0

network 192.168.50.0

可以在路由器配置模式(config-router mode)下键入命令NOVERSION恢复到原来的缺省方式。

2RIP-V2与V1相结合

基于端口级别(interface-level)的"兼容性开关"。用"ip rip send version 版本号"和"Ip rip recevie version 版本号"来实现。

router(config)#interface ethernet0

router(config-if)#no shutdown

router(config-if)#ip address 192.168.50.1 255.255.255.0

router(config-if)#ip rip send vervion 1

router(config-if)#ip rip receive verion 1 (RIP V1mode)

router(config-if)#interface ethernet 1

router(config-if)#no shutdown

router(config-if)#ip address 172.25.150.1 255.255.0.0

router(config-if)#ip rip send version 1 2 (RIP V1 V2 mode)

router(config-if)#interface ethernet 2

router(config-if)#no shutdown

router(config-if)#ip address 172.50.0.0 255.255.0.0

router(config-if)#end

router(config)#router rip

router(config-router)#version2

router(config-router)#network172.25.0.0

router(config-router)#network192.168.0.0

3使用可变长子网掩码

划分子网的基本目的总是相同的:路由器必须能够使用惟一的地址来标识每一条数据链路,以区别于互联网中的其他地址。

4不连续的子网和无类路由

无类路由选择协议并没有关于不连续子网的这些困难。因为每一条路由更新都包含一个子网掩码,因而一个主网络的子网能够通告给另一个主网络

RIP-V2协议缺省的行为要在主网络边界上进行路由汇总,为了关闭路由汇总功能以允许被通告的子网通过主网络的边界,可以在RIP的处理中使用no auto-summary

router(config)#router rip

router(config-router)#version 2

router(config-router)#no auto-summary

V1V2区别

1.RIPv1是有类路由协议,RIPv2是无类路由协议

2.RIPv1不能支持VLSM,RIPv2可以支持VLSM。

3.RIPv1没有认证的功能,RIPv2可以支持认证,并且有明文和MD5两种认证。

4.RIPv1没有手工汇总的功能,RIPv2可以在关闭自动汇总的前提下,进行手工汇总。

5.RIPv1是广播更新,RIPv2是组播更新。

6.RIPv1对路由没有标记的功能,RIPv2可以对路由打标记(tag),用于过滤和做策略。

7.RIPv1发送的updata最多可以携带25条路由条目,RIPv2在有认证的情况下最多只能携带24条路由。

8.RIPv1发送的updata包里面没有next-hop属性,RIPv2有next-hop属性,可以用与路由更新的重定。

参考资料

1.RIP协议·博客园

目录[+]