
RIP协定
RIP(Routing Information Protocol,路由信息协定)是一种内部网关协定(IGP),是一种动态路由选择协定,用于自治系统(AS)内的路由信息的传递。RIP协定基于距离矢量算法(DistanceVectorAlgorithms),使用“跳数”(即metric)来衡量到达目标地址的路由距离。这种协定的路由器只关心自己周围的世界,只与自己相邻的路由器交换信息,範围限制在15跳(15度)之内,再远,它就不关心了。RIP套用于OSI网路七层模型的套用层。各厂家定义的管理距离(AD,即优先权)如下:华为定义的优先权是100,思科定义的优先权是120。
基本介绍
- 中文名:RIP协定
- 採用原理:距离向量算法
- 性质:一种内部网关协定
- 性能:自治系统内的路由信息的传递
基本概况
RIP协定採用距离向量算法,在实际使用中已经较少适用。在默认情况下,RIP使用一种非常简单的度量制度:距离就是通往目的站点所需经过的链路数,取值为0~16,数值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”栏位表明了到达目的网路所需要的“跳数”。
结构
使用R I P报文中列出的项, RIP主机可以彼此之间交流路由信息。这些信息存储在路由表中,路由表为每一个知道的、可达的目的地保留一项。每个目的地表项是到达那个目的地的最低开销路由。
注意每个目的地的表项数可以随路由生产商的不同而变化。生产商可能选择遵守规範,也可以对标準进行他们认为合适的“强化”。所以,用户很可能会发现某个特殊商标的路由器为每一个网路中的目的地存储至多4条相同费用的路由。
每个路由表项包括以下各域:
目的IP位址域
距离-向量度量域
下一跳IP位址域
路由变化标誌域
路由计时器域
注意虽然RFC 1058是一个开放式标準,能支持大量互连网路地址结构,然而它是由IETF设计用于Internet中自治系统内的协定。如此,使用这种形式RIP的自然是网路互联协定。
1. 目的IP位址域
任何路由表中所包含的最重要信息是到所知目的地的I P地址。一旦一台RIP路由器收到一个数据报文,就会查找路由表中的目的I P地址以决定从哪里转发那个报文。
2. 度量标準域
路由表中的度量域指出报文从起始点到特定目的地的总耗费。路由表中的度量是从路由器到特定目的地之间网路链路的耗费总和。
3. 下一跳IP位址域
下一跳IP位址域包括至目的地的网路路径上下一个路由器接口的IP位址。如果目的IP位址所在的网路与路由器不直接相连时,路由器表中才出现此项。
4. 路由变化标誌域
路由变化标誌域用于指出至目的I P地址的路由是否在最近发生了变化。这个域是重要的,因为R I P为每一个目的I P地址只记录一条路由。
5. 路由计时器域
有两个计时器与每条路由相联繫,一个是逾时计时器,一个是路由刷新计时器。这些计时器一同工作来维护路由表中存储的每条路由的有效性。路由表维护过程在1 2 . 2 . 2节中详细描述。
补充内容
RIP(RoutinginformationProtocol)是套用较早、使用较普遍的内部网关协定(InteriorGatewayProtocol,简称IGP),适用于小型同类网路,是典型的距离向量(distance-vector)协定。文档见RFC1058、RFC1723。
RIP通过广播UDP报文来交换路由信息,每30秒传送一次路由信息更新。RIP提供跳跃计数(hopcount)作为尺度来衡量路由距离,跳跃计数是一个包到达目标所必须经过的路由器的数目。如果到相同目标有二个不等速或不同频宽的路由器,但跳跃计数相同,则RIP认为两个路由是等距离的。RIP最多支持的跳数为15,即在源和目的网间所要经过的最多路由器的数目为15,跳数16表示不可达。
基本配置

*先把IP跟loopback口配置好。
做好实验前的配置后我们来配置路由器R1、拿他当範例:
R1#configure terminal //进入配置模式
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#router rip //启动RIP协定
R1(config-router)#version 1 //配置RIP版本1
R1(config-router)#network 1.0.0.0 //通告网路、意思就是告诉别人自己所连线的网路
R1(config-router)#network 192.168.12.0
R1(config-router)#exit
R1(config)#
然后把其他路由器也都按R1的配置进行操作。配置RIP1版本、然后通告自己所连线的网路。
注:1.Cisco的RIP版本2支持验证、密钥管理、路由汇总、无类域间路由(CIDR)和变长子网掩码(VLSMs)
基本举例
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”的栏位,仅处理RFC 1058中规定的有意义的栏位。因此,运行RIP版本1的机器能够接收处理RIP版本2的报文,但会丢失其中的RIP版本2新规定的那些信息。
(3)RIP版本1对地址的处理
RIP版本1不能识别子网网路地址,因为在其传送的路由更新报文中不包含子网掩码,因此RIP路由信息要幺是主机地址,用于点对点链路的路由;要幺是A、B、C类网路地址,用于乙太网等的路由;另外,还可以是0.0.0.0,即预设路由信息。
(4)计数到无穷大(Counting to Infinity)
前面在RIP的局限性一部分提到了可能出现的计数到无穷大的现象,下面就来分析一下该现象的产生原因与过程。考察下面的简单网路:
c(目的网路)----router A------router B
在正常情况下,对于目标网路,A路由器的metric值为1,B路由器的metric值为2。当目标网路与A路由器之间的链路发生故障而断掉以后:
c(目的网路)--||--router A------router B
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路由选择无关的设备不再花费时间对路由器广播的更新报文进行解析。
1 RIP-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)——路由条目的目的地址,它可以是主网路地址、子网地址或主机路由。
>子网掩码(SUBNET MASK)——是一个确认IP位址的网路和子网部分的32位的掩码。
>下一跳(NEXT HOP)——如果存在的话,它标识一个比通告路由器更好的地址更好的一下地址。也就是说,它指出的下一跳地址,其度量值比同一个子网上的通告路由器更靠近目的地。如果这个栏位设定为全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)下键入命令NO VERSION恢复到原来的预设方式。
2 RIP-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 V1 mode)
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传送的update最多可以携带25条路由条目,RIPv2在有认证的情况下最多只能携带24条路由。
8.RIPv1传送的update包里面没有next-hop属性,RIPv2有next-hop属性,可以用与路由更新的重定。