当前位置:文档之家› 常用网络协议原理之RIP协

常用网络协议原理之RIP协

RIP协议

7TFJ1農深圳市由兴酬股份有限公司

L I Is 1 f W Z T E CORPORATION在目前的 Internet 网上,运行一种网关协议是不可能的,我们要将它分成很多的自治

系统(Autonomous System — AS,在每个自治系统有它自己的路由技术。我们称自治系统内

部 的路由协议为内部网关协议(Interior gateway protocol — IGP)。 RIP ( Routing

Information Protocol )就是内部网关协议的一种, 它采用的是矢量距离 (Vector — Distance) 算法。RIP系统的开发是 XEROX Palo Alto 研究中心(PARC)所进行的研究和 XEROX勺PDU 和XNC路由选择协议为基础的。但是RIP的广泛应用却得益于它加利福尼亚大学伯克利分校 的许多局域网中的实现。

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

现已被OSPF所取代。

1.矢量距离算法

矢量距离算法(简称 V— D算法)的思想是:网关周期性地向外广播路径刷新报文,主 要内容是由若干(V, D)序偶组成的序偶表;(V, D)序偶中的V代表“向量”,标识网关可 到达的信宿(网关或主机),D代表距离,指出该网关去往信宿 V的距离;距离 D按驿站的

个数计。其他网关收到某网关的( V, D)报文后,据此按照最短路径原则对各自的路由表进 行刷新。

具体的说,V— D算法如下所述:

首先,网关刚启动时,对其 V— D路由表进行初始化,该初始化路由表包含所有去往与

本网关直接相连的网络。由于去往直接相连的网络不经过中间驿站,所以初始 V— D路由表

中各路径的距离均为 0。

然后各网关周期性地向外广播企 V— D路由表内容。与某网关直接相连(位于同一物理

网络)的网关收到该路由表报文后,据此对本地路由表进行刷新。刷新时,网关逐项检查来 自相邻网关的V— D报文,遇到下述表目之一,须修改本地路由表:

(1) Gj 列出的某表目 Gi 路由表总没有。则 Gi 路由表须增加相应表目,其“信宿”是 Gj表目中的信宿,其“距离”为 Gj表目中的距离加1,其“路径”为“ Gj” (即

下一驿站为 Gj)。

( 2) Gj 去往某信宿的距离比 Gi 去往某信宿的距离减 1 还小。这种情况说明, Gi 去往 某信宿若经过 Gj,距离会更短。则Gi修改本表目,其中“信宿”域不变,“距离” 为Gj表目中的距离加1,“路径”为“ Gj”。 (3)G去往某信宿的路径经过 Gj,而Gj去往该信宿的路径发生变化。这里分两种情 况:

A: Gj的V- D表不再包含去往某信宿的路径,则 Gi中相应路径序删除。

B: Gj的V- D表中去往某信宿的路径距离发生变化,则 Gi中相应表目“距离”

须修改,以 Gj 中的“距离”加 1 取代原来的距离。

V- D算法的路径刷新发生在相邻网关之间, 所以V- D报文不一定以广播的方式发送出

去,一种比较优化的方法是网关直接向相邻的网关发送 V- D报文,不必采取广播的方式。

V- D 算法的优点是易于实现,但是它不适应路径剧烈变化的或大型的网间网环境,因 为某网关的路径变化象波动一样从相邻网关传播出去,其过程是非常缓慢的。因此, V- D

算法路径刷新过程中,可能出现路径不一致问题。 V-D算法的另一个缺陷是它需要大量的

信息交换:一方面, V- D 报文就每一可能的信宿网络都包含一条表目,报文的大小相当于

一个路由表(其表目的数与网间网网络数成正比) ,而且其中的许多表目都是与当前路径刷

新无关的;另一方面, V- D算法要求所有网关都参加信息交换,要交换的信息量极大。

2. RIP 的原理

RIP协议是V- D算法在局域网上的直接实现,RIP将协议的参加者分为主动机和被动机 两种。主动机主动地向外广播路径刷新报文, 被动机被动地接受路径刷新报文。 一般情况下, 网关作主动机,主机作被动机。

RIP规定,网关每30秒向外广播一个 V-D报文,报文信息来自本地路由表。 RIP协议

的V- D报文中,其距离以驿站计:与信宿网络直接相连的网关规定为一个驿站,相隔一个 网关则为两个驿站……依次类推。 一条路径的距离为该路径(从信源机到信宿机)上的网关

数。为防止寻径回路的长期存在, RIP 规定,长度为 16 的路径为无限长路径,即不存在路 径。所以一条有限的路径长度不得超过 15。正是这一规定限制了 RIP 的使用范围,使 RIP 局限于小型的局域网点中。

对于相同开销路径的处理是采用先入为主的原则。 在具体的应用中, 可能会出现这种情 况, 去往相同网络有若干条相同距离的路径。 在这种情况下, 无论哪个网关的路径广播报文 先到,就采用谁的路径。直到该路径失败或被新的更短的路径来代替。

RIP 协议对过时路径的处理是采用了两个定时器;超时计时器和垃圾收集计时器。所有 机器对路由表中的每个工程对设置两个计时器。 每增加一个新表, 就相应的增加两个计时器。

当新的路由被安装到路由表中时,超时计时器被初始化为 0,并开始计数。每当收到包含路

由的RIP消息,超时计时器就被重新设置为 0。如果在180秒内没有接收到包含该路由的 RIP

消息,该路由的度量就被设置为 16,而启动该路由的垃圾收集计时器。如果 120秒过去了,

也没有收到该路由的 RIP消息,该路由就从路由表中删除。如果在垃圾收集计时器到 120

秒之前,收到了包含路由的消息,计时器被清 0。而路由被安装到路由表中。 慢收敛的问题及其解决的方法。包括 RIP在内的V- D算法路径刷新协议,都有一个严

重的缺陷,即"慢收敛”(slow con verge nee )问题。又叫"计数到无穷” (cou nt to infinity) 。 如果出现环路,直到路径长度达到 16,也就是说要经过 7番来回(至少 30X7秒),路径回

路才能被解除,这就是所谓的慢收敛问题。 采用的方法有很多种,主要采用有分割范围(split

horizon )法和带触发更新的毒性逆转 (Posion Reverse with Triggered updates)) 法。分

割范围法的原理是:当网关从某个网络接口发送 RIP路径刷新报文时,其中不能包含从该接

口获得的路径信息。 毒性逆转法的原理是: 某路径崩溃后,最早广播此路径的网关将原路径

继续保存在若干刷新报文中, 但是指明路径为无限长。 为了加强毒性逆转的效果, 最好同时

使用触发更新技术: 一旦检测到路径崩溃, 立即广播路径刷新报文, 而不必等待下一个广播

周期。

3. RIP报文的格式

对于RIP报文有两种版本的格式, Version 1和Version 2。两种报文稍有不同,如图

1所示:

0

---------------------------------- 31 0 ---------------------------------- 31

命令 版本 全零

命令 版本 路由选择

地址族 全零 地址族 路径标签

IP地址 IP地址

全零 子网掩码

全零 下一个站点的IP地址

度量值 度量值

前20个字节的重复 前20个字节的重复

(a) Version 1

图1 RIP报文格式 (b) 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有意义的改进。

4. RIP 协议的运行

网关刚启动时,运行V— D算法,对V— D路由表进行初始化, 为每一个和它直接相连的 实体建一个表目,并设置目的 IP地址,距离为1 (这里RIP和V— D略有不同),下一站的

IP 为 0,还要为这个表目设置两个定时器 (超时计时器和垃圾收集计时器) 。每隔 30秒就向 它相邻的实体广播路由表的内容。 相邻的实体收到广播时, 在对广播的内容进行细节上的处 理之前, 对广播的数据报进行检查。 因为广播的内容可能引起路由表的更新, 所以这种检查 是细致的。首先检查报文是否来自端口 520的UDP数据报,如果不是,则丢弃。否则看 RIP

报文的版本号:如果为 0,这个报文就被忽略;如果为 1,检查必须为 0的字段,如果不为

0,忽略该报文;如果大于 1, RIP—1 对必须为 0的字段就不检查。然后对源 IP 地址进行检 查,看它是否来自直接相连的邻居,如果不是来自直接邻居,则报文被忽略。如果上面的检 查都是有效的,则对广播的内容进行逐项的处理。看它的度量值是否大于 15,如果是则忽

略该报文(实际上,如果来自相邻网关的广播,这是不可能的) 。然后检查地址族的内容,

如果不为 2,则忽略该报文。然后更新自己的路由表,并为每个表目设置两个计时器,初始 化其为 0。就这样所有的网关都每隔 30 秒向外广播自己的路由表,相邻的网关和主机收到

广播后来更新自己的路由表。 直到每个实体的路由表都包含到所有实体的寻径信息。 如果某 条路由突然断了,或者是其度量大于 15,与其直接相邻的网关采用分割范围或触发更新的 方法向外广播该信息, 其他的实体在两个计时器溢出的情况下将该路由从路由表中删除。 如

果某个网关发现了一条更好的路径 ,它也向外广播 ,与该路由相关的每个实体都要更新自己 的路由表的内容。

为了更好地理解 RIP 协议的运行, 下面以图 2所示的简单的互连网为例来讨论图中各个 路由器中的路由表是怎样建立起来的。

在一开始,所有路由器中的路由表只有路由器所接入的网络(共有两个网络)的情况。 现在的路由表增加了一列, 这就是从该路由表到目的网络上的路由器的 “距离”。在图中“下 一站路由器”工程中有符号“-” ,表示直接交付。这是因为路由器和同一网络上的主机可 直接通信而不需要再经过别的路由器进行转发。 同理, 到目的网络的距离也都是零, 因为需

要经过的路由器数为零。 图中粗的空心箭头表示路由表的更新, 细的箭头表示更新路由表要 用到相邻路由表传送过来的信息。

相关主题