查看: 71671|回复: 41

RIP协议

[复制链接]
发表于 2006-7-17 11:31:33 | 显示全部楼层 |阅读模式
最近在学习RIP协议,对协议进行了一些归纳和总结,


RIP协议

在Internet网上,运行着很多网关协议,网关协议有内部网关协议(IGP)和外部网关协议(EGP)之分,Internet网上划分了很多自治系统(AS),每个自治系统里面运行着路由协议,在自治系统内部的路由协议,我们称之为内部网关协议。RIP(Routing Information Protocols,路由信息协议)是一种内部网关协议,是使用最广泛的距离向量协议,它采用的是距离矢量算法。它是由施乐(Xerox)在70年代开发的。当时,RIP是XNS(Xerox Network Service,施乐网络服务)协议簇的一部分。

1.   距离矢量算法

矢量距离算法(简称V-D算法)的思想是:网关周期性地向外广播路径刷新报文,主要内容是由若干(V,D)序偶组成的序偶表;(V,D)序偶中的V代表“向量”,标识网关可到达的信宿(网关或主机),D代表距离,指出该网关去往信宿V的距离;距离D按驿站的个数计。其他网关收到某网关的(V,D)报文后,据此按照最短路径原则对各自的路由表进行刷新。
当网关刚启动时,对其V-D路由表进行初始化,该初始化路由表包含所有去往与本网关直接相连的网络。由于去往直接相连的网络不经过中间驿站,所以初始V-D路由表中各路径的距离均为0。然后各网关周期性地向外广播V-D路由表内容。与某网关直接相连(位于同一物理网络)的网关收到该路由表报文后,据此对本地路由表进行刷新。
矢量距离算法的路径刷新发生在相邻网关之间,所以矢量距离报文不一定以广播的方式发送出去,一种比较优化的方法是网关直接向相邻的网关发送矢量距离报文,不必采取广播的方式。

2.   RIP的工作原理

RIP协议是矢量距离算法在局域网上的直接实现,RIP将协议的参加者分为主动机和被动机两种。主动机主动地向外广播路径刷新报文,被动机被动地接受路径刷新报文。一般情况下,网关作主动机,主机作被动机。
RIP规定,网关每30秒向外广播一个报文,报文信息来自本地路由表。RIP的度量是基于跳数(hops count)的,每经过一台路由器,路径的跳数加一。如此一来,跳数越多,路径就越长,RIP算法会优先选择跳数少的路径。RIP支持的最大跳数是15,跳数为16的网络被认为不可达。
对于相同开销路径的处理是采用先入为主的原则。在具体的应用中,可能会出现这种情况,去往相同网络有若干条相同距离的路径。在这种情况下,无论哪个网关的路径广播报文先到,就采用谁的路径。直到该路径失败或被新的更短的路径来代替。
RIP中路由的更新是通过定时广播实现的。缺省情况下,路由器每隔30秒向与它相连的网络广播自己的路由表,接到广播的路由器将收到的信息添加至自身的路由表中。每个路由器都如此广播,最终网络上所有的路由器都会得知全部的路由信息。正常情况下,每30秒路由器就可以收到一次路由信息确认,如果经过180秒,即6个更新周期,一个路由项都没有得到确认,路由器就认为它已失效了。如果经过240秒,即8个更新周期,路由项仍没有得到确认,它就被从路由表中删除。上面的30秒,180秒和240秒的延时都是由计时器控制的,它们分别是更新计时器(Update Timer)、无效计时器(Invalid Timer)和刷新计时器(Flush Timer)。
距离向量类的算法容易产生路由循环,RIP是距离向量算法的一种,所以它也不例外。如果网络上有路由循环,信息就会循环传递,永远不能到达目的地。如果出现环路,直到路径长度达到16,也就是说要经过210秒(30X7秒)来回,路径回路才能被解除,这就是所谓的慢收敛问题。是RIP的一个很大的缺陷,为了避免这个问题,RIP等距离矢量算法实现了4个机制:

水平分割(split horizon)
水平分割保证路由器记住每一条路由信息的来源,并且不在收到这条信息的端口上再次发送它。这是保证不产生路由循环的最基本措施。
毒性逆转(poison reverse)
当一条路径信息变为无效之后,路由器并不立即将它从路由表中删除,而是用16,即不可达的度量值将它广播出去。这样虽然增加了路由表的大小,但对消除路由循环很有帮助,它可以立即清除相邻路由器之间的任何环路。
触发更新(trigger update)
当路由表发生变化时,更新报文立即广播给相邻的所有路由器,而不是等待30秒的更新周期。同样,当一个路由器刚启动RIP时,它广播请求报文。收到此广播的相邻路由器立即应答一个更新报文,而不必等到下一个更新周期。这样,网络拓扑的变化会最快地在网络上传播开,减少了路由循环产生的可能性。
抑制计时(holddown timer)
一条路由信息无效之后,一段时间内这条路由都处于抑制状态,即在一定时间内不再接收关于同一目的地址的路由更新。如果,路由器从一个网段上得知一条路径失效,然后,立即在另一个网段上得知这个路由有效。这个有效的信息往往是不正确的,抑制计时避免了这个问题,而且,当一条链路频繁起停时,抑制计时减少了路由的浮动,增加了网络的稳定性。
即便采用了上面的4种方法,路由循环的问题也不能完全解决,只是得到了最大程度的减少。一旦路由循环真的出现,路由项的度量值就会出现计数到无穷大(Count to Infinity)的情况。这是因为路由信息被循环传递,每传过一个路由器,度量值就加1,一直加到16,路径就成为不可达的了。RIP选择16作为不可达的度量值是很巧妙的,它既足够的大,保证了多数网络能够正常运行,又足够小,使得计数到无穷大所花费的时间最短。
有些网络是NBMA(Non-Broadcast MultiAccess,非广播多路访问)的,即网络上不允许广播传送数据。对于这种网络,RIP就不能依赖广播传递路由表了。解决方法有很多,最简单的是指定邻居(neighbor),即指定将路由表发送给某一台特定的路由器。

3.  RIP的缺陷

RIP虽然简单易行,但是也存在着一些很重要的缺陷,主要有以下几点:
   A.  过于简单,以跳数为依据计算度量值,经常得出非最优路由;
   B.  度量值以16为限,不适合大的网络;
   C.  安全性差,接受来自任何设备的路由更新;
   D.  不支持无类IP地址和VLSM(Variable Length Subnet Mask,变长子网掩码);
   E.  收敛缓慢,时间经常大于5分钟;
   F.  消耗带宽很大。

RIP只适用于小系统中,当系统变大后受到无限计算问题的困扰,且往往收敛的很慢。现已被OSPF所取代。

4.   RIP的分组格式

对于RIP报文有两种版本的格式,Version 1和Version 2。两种报文稍有不同,如下图所示:
  
命令字段的值的范围是从1到5,但只有1和2是正式的值。命令码1标识一个请求报文,命令码2标识一个相应报文。RIP是一个基于UDP协议的,所以受UDP报文的限制一个RIP的数据包不能超过512字节。两个版本都包含一个地址族,对于IP地址该字段的值为2,后面是一个IP地址和它的度量值(站点计数)。这些通告字段可重复25次。
路由选择域:与该报文相关的路由选择守护进程的标识符。在UNIX系统中,该字段是一个进程的标识符。一台机器通过使用路由选择域,就可以同时运行多个RIP。
路径标签:若干RIP支持外部网关协议(EGP),该字段包含一个自治系统号。
子网掩码:该字段与报文中的IP地址相关。
下一站的IP地址:如果该字段为0,则表明数据报应当发送到正在发送该RIP报文的机器,否则,该字段包含一个IP地址,指明应将数据报发往何处。
从报文中我们可以看出,RIP-1不能运行于包含有子网的自治系统中,因为它没有包含运行所必须的子网信息-子网掩码。RIP-2有子网掩码,因而它可以运行于包含有子网的自治系统中,这也是RIP-2对RIP-1有意义的改进。

[ 本帖最后由 菜青虫 于 2006-7-17 11:54 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?CSNA会员注册

×
回复

使用道具 举报

发表于 2006-7-17 13:39:41 | 显示全部楼层
I P使用特殊的报文来收集和共享至有关目的地的距离信息。图1显示了路由信息域中只带一个目的地的R I P报文。

图1 RIP报文结构


R I P报文中至多可以出现2 5个A F I、互联网络地址和度量域。这样允许使用一个R I P报文来更新一个路由器中的多个路由表项。包含多个路由表项的R I P报文只是简单地重复从A F I到度量域的结构,其中包括所有的零域。这个重复的结构附加在图1 2 - 1结构的后面。具有两个表项的R I P报文如图12所示。

图2具有两个表项的RIP报文


地址域可以既包括发送者的地址也包括发送者路由表中的一系列I P地址。请求报文含有一个表项并包括请求者的地址。应答报文可以包括至多2 5个R I P路由表项。

整个的R I P报文大小限制是5 1 2 B。因此,在更大的R I P网络中,对整个路由表的更新请求需要传送多个R I P报文。报文到达目的地时不提供顺序化;一个路由表项不会分开在两个R I P报文中。因此,任何R I P报文的内容都是完整的,即使它们可能仅仅是整个路由表的一个子集。当报文收到时接收节点可以任意处理更新,而不需对其进行顺序化。

比如,一个R I P路由器的路由表中可以包括1 0 0项。与其他R I P路由器共享这些信息需要4个R I P报文,每个报文包括2 5项。如果一个接收节点(结点)首先收到了4号报文(包括从7 6至1 0 0的表项),它会首先简单地更新路由表中的对应部分,这些报文之间没有顺序相关性。这样使得R I P报文的转发可以省去传输协议如T C P所特有的开销。

1. 命令域
命令域指出R I P报文是一个请求报文还是对请求的应答报文。两种情形均使用相同的帧结构:
? 请求报文请求路由器发送整个或部分路由表。
? 应答报文包括和网络中其他R I P节点共享的路由表项。应答报文可以是对请求的应答,也可以是主动的更新。

2. 版本号域
版本号域包括生成R I P报文时所使用的版本。R I P是一个开放标准的路由协议,它会随时间而进行更新,这些更新反映在版本号中。虽然有许多像R I P一样的路由协议出现,但R I P只有两个版本:版本1和版本2。这一章对通常使用的版本1进行描述。

3. 0域
嵌入在R I P报文中的多个0域证明了在RFC 1058出现之前存在许多如R I P一样的协议。大多数0域为的是为了向后兼容旧的如R I P一样的协议,0域说明不支持它们所有的私有特性。

比如,两个旧的机制t r a c e o n和t r a c e o ff。这些机制被RFC 1058抛弃了,然而开放式标准R I P需要和支持这些机制的协议向后兼容。因此, RFC 1058在报文中为其保留了空间,但却要求这些空间恒置为0。当收到的报文中这些域不是0时就会被简单地丢弃。

不是所有的0域都是为了向后兼容。至少有一个0域是为将来的使用而保留的。

4. AFI域
地址家族标识(Address Family Identifier,A F I )域指出了互联网络地址域中所出现的地址家族。虽然RFC 1058是由I E T F创建的,因此适用于网际协议( I P ),但它的设计提供了和以前版本的兼容性。这意味着它必须提供大量互联网络地址构成或家族的路由信息的传输。因此,开放式标准R I P需要一种机制来决定其报文中所携带地址的类型。

5. 互联网络地址域
4字节的互联网络地址域包含一个互联网络地址。这个地址可以是主机、网络,甚至是一个缺省网关的地址码。这个域内容如何变化的两个例子如下:
? 在一个单表项请求报文中,这个域包括报文发送者的地址。
? 在一个多表项应答报文中,这些域将包括报文发送者路由表中存储的I P地址。

6. 度量标准域
R I P报文中的最后一个域是度量标准域,这个域包含报文的度量计数。这个值在经过路由器时被递增。数量标准有效的范围是在1~1 5之间。度量标准实际上可以递增至1 6,但是这个值和无效路由对应。因此, 1 6是度量标准域中的错误值,不在有效范围内。

[ 本帖最后由 garnett_wu 于 2006-7-17 13:44 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?CSNA会员注册

×
回复

使用道具 举报

发表于 2006-11-13 19:19:21 | 显示全部楼层
谢谢分享~学习学习哦~
回复

使用道具 举报

发表于 2006-12-12 12:33:50 | 显示全部楼层
留下来慢慢学习喽,谢谢
回复

使用道具 举报

发表于 2007-4-18 00:00:50 | 显示全部楼层
慢慢学习。不错,谢谢
回复

使用道具 举报

发表于 2007-4-20 18:02:09 | 显示全部楼层
佩服LZ
什么时候我也能有这样的水平

向LZ学习
回复

使用道具 举报

发表于 2007-5-1 23:26:46 | 显示全部楼层
严重的学习自己不能错过啊
回复

使用道具 举报

发表于 2007-7-5 08:53:07 | 显示全部楼层
好东西就一定要顶的!
回复

使用道具 举报

发表于 2008-4-4 20:59:57 | 显示全部楼层

回复 2# 的帖子

谢谢大家的分享,好东西呀
回复

使用道具 举报

发表于 2008-4-15 19:11:51 | 显示全部楼层
这个协议了解了一点点
回复

使用道具 举报

发表于 2008-4-15 21:46:52 | 显示全部楼层
确实够基础啊,收藏了先
回复

使用道具 举报

发表于 2008-8-28 14:49:42 | 显示全部楼层
感谢菜虫了WU版主!!
回复

使用道具 举报

发表于 2008-9-20 00:05:03 | 显示全部楼层
留下了  ,慢慢研究~~
回复

使用道具 举报

发表于 2008-12-30 15:42:07 | 显示全部楼层
留下了  ,慢慢研究
回复

使用道具 举报

发表于 2009-2-19 00:30:38 | 显示全部楼层
支持下。。。。。。。。。。。。。。
回复

使用道具 举报

haizhencui 该用户已被删除
发表于 2009-3-30 11:58:27 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

发表于 2009-5-13 21:26:46 | 显示全部楼层

-“鱼浪共舞”-走过...

test
回复

使用道具 举报

发表于 2009-6-4 13:05:50 | 显示全部楼层
感谢楼主
回复

使用道具 举报

发表于 2009-8-29 22:20:52 | 显示全部楼层
好pro的说
回复

使用道具 举报

发表于 2009-8-30 12:31:51 | 显示全部楼层
顶,学习学习。哈哈。
回复

使用道具 举报

发表于 2009-8-31 15:50:50 | 显示全部楼层
真难呀。看不懂
回复

使用道具 举报

发表于 2010-1-15 11:28:29 | 显示全部楼层
多谢分享!!!!学习了啊!!!!!!
回复

使用道具 举报

发表于 2010-1-22 10:18:49 | 显示全部楼层
温习下。

看过,嘻嘻。

记得置顶有个RIP的PDF不错。
回复

使用道具 举报

发表于 2010-2-15 11:50:16 | 显示全部楼层
我最近在看协议,这个也在范围内,在算法方面还是有些不懂,有图解就好了,但是还是谢谢!
回复

使用道具 举报

发表于 2010-2-24 22:12:11 | 显示全部楼层
下来收藏了,继续学习,希望有很大的进步
回复

使用道具 举报

发表于 2010-4-21 23:25:56 | 显示全部楼层
嗯,写得很详细,顶....................
回复

使用道具 举报

发表于 2010-8-8 16:38:50 | 显示全部楼层
谢谢分享精神,,,努力向各位看齐。。。
回复

使用道具 举报

发表于 2010-8-31 10:55:50 | 显示全部楼层
说什么好呢,,好东西,,就是看不懂还
回复

使用道具 举报

发表于 2010-9-4 10:27:07 | 显示全部楼层
好东西,找了很久了,好好学了,努力
回复

使用道具 举报

发表于 2010-11-19 11:04:50 | 显示全部楼层
好东东一定要顶。。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | CSNA会员注册

本版积分规则

快速回复 返回顶部 返回列表