RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议,它的中文译名是路由信息协议。RIP是一种分布式的基于距离向量的路由选择协议,是互联网的标准协议,其最大优点就是简单。
RIP协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录(因此,这是一组距离,即“距离向量”)。
协议RIP将“距离”定义如下:从一路由器到直接连接的网络的距离定义为1。从一主机到非直接连接的网络的距离定义为所经过的路由器数加1。
“加1”是因为到达目的网络后就进行直接交付(不需要再经过路由器),而到直接连接的网络的距离已经定义为1。
协议RIP的“距离”也称为“跳数”(hop count),并且每经过一个网络,跳数就加1。
RIP认为好的路由就是它通过的网络数目少,即“距离短”。RIP允许一条路径最多只能包含15个网络。因此“距离”等于16时即相当于不可达。可见RIP只适用于小型互联网。
RIP不能在两个网络之间同时使用多条路由。RIP选择一条具有最少网络数的路由(即最短路由),哪怕还存在另一条高速(低时延)但网络数较多的路由。
本节讨论的RIP协议和下一节要讨论的OSPF协议,都是分布式路由选择协议。它们的共同特点就是每一个路由器都要不断地和其他一些路由器交换路由信息。我们一定要弄清以下三个要点,即和哪些路由器交换信息?交换什么信息?在什么时候交换信息?
协议RIP的特点是:
这里要强调一点:路由器在刚刚开始工作时,它的路由表是空的。然后路由器就得出到直接相连的几个网络的距离(这些距离定义为1)。接着,每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。但经过若干次的更新后,所有的路由器最终都会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器的地址。
在一般情况下,协议RIP可以收敛,并且过程也较快。“收敛”就是在自治系统中所有的节点都得到正确的路由选择信息的过程。
路由表中最主要的信息就是:到某个网络的距离(即最短距离),以及应经过的下一跳地址。路由表更新的原则是找出到每个目的网络的最短距离。这种更新算法又称为距离向量算法。下面就是协议RIP使用的距离向量算法。
对每一个相邻路由器发送过来的RIP报文,执行以下步骤:
上面给出的距离向量算法的基础就是Bellman-Ford算法(或Ford-Fulkerson算法)。这种算法的要点是这样的:设X是节点A到B的最短路径上的一个节点。若把路径A→B拆成两段路径A→X和X→B,则每一段路径A→X和X→B也都分别是节点A到X和节点X到B的最短路径。
【例】已知路由器 R 6 R_6 R6有表(a)所示的路由表。现在收到相邻路由器 R 4 R_4 R4发来的路由更新信息,如表(b)所示。试更新路由器 R 6 R_6 R6的路由表。 【解】如同路由器一样,我们不需要知道该网络的拓扑。
先把表(b)中的距离都加1,并把下一跳路由器都改为 R 4 R_4 R4,得出表(c)。 把这个表的每一行和表(a)进行比较。
这样,得出更新后的R。的路由表如表(d)所示。
协议RIP让一个自治系统中的所有路由器都和自己的相邻路由器定期交换路由信息,并不断更新其路由表,使得从每一个路由器到每一个目的网络的路由都是最短的(即跳数最少)。这里还应注意:虽然所有的路由器最终都拥有了整个自治系统的全局路由信息,但由于每一个路由器的位置不同,它们的路由表当然也应当是不同的。
下图表明RIP报文作为运输层用户数据报UDP的数据部分进行传送(使用UDP的端口520)。
RIP报文由首部和路由部分组成。在路由部分要填入自治系统号ASN(Autonomous System Number),这是考虑使RIP有可能收到本自治系统以外的路由选择信息。还要指出目的网络地址(包括网络的子网掩码)、下一跳路由器地址以及到此网络的距离。
一个RIP报文最多可包括25个路由。如超过,必须再用一个RIP报文来传送。
RIP存在的一个问题是当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。
我们可以用下图的简单例子来说明。设三个网络通过两个路由器互连起来,并且都已建立了各自的路由表。图中路由器交换的信息只给出了我们感兴趣的一行内容。路由器 R 1 R_1 R1中的“Net1, 1, 直接
”表示“到网Net1的距离是1,直接交付”。路由器 R 2 R_2 R2中的“Net1, 2, R_1
”表示“到网Net1的距离是2,下一跳经过 R 2 R_2 R2”。 现在假定路由器 R 1 R_1 R1到网Net1的链路出了故障, R 1 R_1 R1无法到达网Net1。于是路由器 R 1 R_1 R1把到网Net1的距离改为16,表示不可达,因而在 R 1 R_1 R1的路由表中的相应项目变为“Net1, 16, 直接
”。但是,很可能要经过30秒钟后 R 1 R_1 R1才把更新信息发送给 R 2 R_2 R2。然而 R 2 R_2 R2可能已经先把自己的路由表发送给了 R 1 R_1 R1,其中有“Net1, 2, R_1
”这一项。
R 1 R_1 R1收到 R 2 R_2 R2的更新报文后,误认为可经过 R 2 R_2 R2到达网Net1,于是把收到的路由信息“Net1,2,R_1
”修改为:“Net1, 3, R_2
”,表明“我到网Net1的距离是3,下一跳经过 R 2 R_2 R2”,并把更新后的信息发送给 R 2 R_2 R2。
同理, R 2 R_2 R2接着又更新自己的路由表为“Net1, 4, R_1
”,以为“我到网Net1距离是4,下一跳经过 R 1 R_1 R1”。
这样的更新一直继续下去,直到 R 1 R_1 R1和 R 2 R_2 R2,到网Net1的距离都增大到16时, R 1 R_1 R1和 R 2 R_2 R2才知道原来网Net1是不可达的。
协议RIP的这一特点叫作:好消息传播得快,而坏消息传播得慢。网络出故障的传播时间往往较长(例如数分钟)。这是RIP的一个主要缺点。
但如果一个路由器发现了更短的路由,那么这种更新信息就传播得很快。
为了使坏消息传播得更快些,可以采取多种措施。例如,让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送。
总之,协议RIP最大的优点就是实现简单,开销较小。但协议RIP的缺点也较多。首先,RIP限制了网络的规模,它能使用的最大距离为15(16表示不可达)。其次,路由器之间交换的路由信息是路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加。最后,“坏消息传播得慢”,使更新过程的收敛时间过长。
因此,对于规模较大的网络就应当使用下一节所述的OSPF协议。然而目前在规模较小的网络中,使用协议RIP的仍占多数。