首页 百科知识 距离向量路由选择协议

距离向量路由选择协议

时间:2022-10-16 百科知识 版权反馈
【摘要】:距离向量路由选择协议是一种基于Bellman-Ford的数学研究结果的内部路由选择协议,也称为Bellman-Ford协议。路由信息协议,简称RIP协议,是使用最广泛的距离向量路由选择协议。RIP协议是具有附加特征的距离向量路由选择协议,能够减少路由循环的发生。RIP没有采取措施在它的距离向量表中传送子网掩码。

5.2.3 距离向量路由选择协议

1.距离向量路由选择协议概述

距离向量路由选择协议是一种基于Bellman-Ford的数学研究结果的内部路由选择协议,也称为Bellman-Ford协议。Bellman-Ford证明了只要保持网络拓扑结构稳定,协议将会收敛到一个可知的拓扑结构。

距离向量路由选择协议要求每个路由器构建一个“距离向量表”,表中包含了一系列的目的网络以及达到这些目的网络的成本(即距离),并定义传输时到达目的网络的最小成本。在路由器启动后,路由器拥有的惟一信息是直接与之相连的网络。在随后的工作中,每个路由器会周期性地向与之相连的其他路由器广播它知道的所有目的网络及其距离。而一旦这些来自不同路由器的距离向量信息到达某个路由器,该路由器就使用一组算法和计时器计算这些距离向量信息,并更新自己的距离向量表。

整个距离向量路由选择协议的工作基于以下一系列的操作:

● 每个路由器都配置有一个标识及使用每一条网络链路的成本。成本值通常为1,表示中继,但它也可以表示其他的度量方式,例如流量、速度等。

● 每个路由器启动时,初始化自己的距离向量表:到达路由器本身的距离为0,到达直接相连的网络的距离为1,到达其他目的网络的距离为无穷大。

● 每个路由器周期性地向与它相连的每个路由器发送自己的距离向量表,也可以在一条链路刚建立时或是距离向量表的值发生变化时发送。

● 每个路由器保存它从邻居节点接收到的最新距离向量表,并使用表中的信息计算是否有更短的路径到达某个目的网络,如有,则更新自己的距离向量表。

● 当与路由器直接连接的链路发生重大变化时,也将重新计算本地的距离向量表。

下面将通过介绍典型的距离向量路由选择协议——路由信息协议来进一步深入地介绍距离向量路由选择协议的工作机制。

2.路由信息协议

路由信息协议(Routing Information Protocol),简称RIP协议,是使用最广泛的距离向量路由选择协议。最初,它由XEROX公司在20世纪70年代开发,并作为施乐网络服务(XNS)协议组的一部分。1982年,BSD将RIP协议应用于TCP/IP协议栈,并随BSD Unix一起免费发布。RIP协议是具有附加特征的距离向量路由选择协议,能够减少路由循环的发生。RIP协议的简单和易配置的特点使之成为首选的IP动态路由选择协议。另外,RIP协议也可以在AppleTalk,Novell等其他网络中使用。

RIP有两个版本,版本1(RIP-1)具有很多已知的限制,但它是一个被广泛采用的协议。版本2(RIP-2)是一个加强版,它和RIP-1具有高度的兼容性并减少了RIP-1的限制。通常情况下,如果没有特别的说明,RIP指的是第一版本的路由信息协议,而RIP-2指的是第二版本。RFC 1058对RIP-1进行了详细的描述。

(1)RIP路由表

在介绍RIP协议的工作原理之前,让我们先来看一下RIP协议的路由表:

img104

img105

大家注意上面显示的某路由器的路由表最后几行中的第一列,这些字母告诉我们路由器是如何获得该路由表的表项的,而从第二行开始的几行中,解释了这些字母的具体含义。例如,C意味着网络被直接连接到指定端口上的路由器,R的意思是路由器通过RIP协议来获得该路由信息。

下面详细地介绍路由表中最后一行,即通过RIP协议获得的路由信息中其他项的含义。192.168.1.64/26表示的是目的网络号,26表示该目的网络的子网掩码为255.255.255.192(最后一个字段192的二进制表示为11000000,后面有6个“0”,用26表示),因此该目的网络的地址范围为192.168.1.64~192.168.1.127。[120/2]项中给出的是管理距离值和度量方式,管理距离是被赋值到路由协议的一个值,120代表的是RIP协议,OSPF协议为110,IGRP协议为100,EIGRP协议为90,而2就是到达目的网络192.168.1.64/26的距离。192.168.1.34则表示到达网络192.168.1.64/26需要经过的下一路由器的IP地址是192.168.1.34。00:00:12是一个计时器,表示该路由信息更新后过去的时间。Ethernet0/1则表示了接收到该路由信息的端口号。

(2)RIP报文格式

RIP协议的路由更新报文是通过用户数据报协议(UDP)的广播形式发送的,其UDP端口号是520。图5-6给出了RIP报文的格式,其中该RIP协议的版本号为1。RIP数据报最大只能是512个字节,大于512字节的路由信息表要通过多个UDP数据报传送。

img106

图5-6 RIP协议报文格式

报文中可能的命令有:请求和回答两种,分别用1和2来表示。一个请求报文用来要求邻居路由器发送它们的部分(如果请求报文中说明了发送哪一部分)或全部距离(如果请求报文中没有说明发送哪一部分)向量表。一个应答报文在下列情况下由路由器向邻居路由器通告距离向量表:

● 每经过30秒要发送一次。

● 接收到一个请求包。

● 当距离向量表改变时。

RIP报文中第5个字节开始的连续20个字节为距离向量表中的一条路由信息,这种路由信息在整个RIP报文中可能会有多个,最多可以达到25条路由信息。每条路由信息中,如果RIP和IP一起使用,那么地址簇标识符为2。IP地址段则表示目的网络的地址。RIP没有采取措施在它的距离向量表中传送子网掩码。接收RIP应答报文的路由器应该已经有了子网掩码的信息,这样它就可以正确地解释IP地址中的网络标识和主机标识部分。度量值用来表示该路由器到目的网络的距离,对RIP而言,度量值是指到达目的网络的跳步数(Hop)。每个网络链路被看作是一个跳步,也就是说,与路由器直接连接的网络的跳步(度量值)为1。同时为了减少无限计数问题,RIP规定最大可用的度量值为15,度量值为16就意味着该网络不可达。

(3)RIP协议的工作过程

在RIP协议刚启动时,路由器首先检测其各个端口的状态和地址信息,如果端口状态正常,则在路由表中增加一条路由,表示可以到达该端口所在的网络,其度量值为1。在如图5-7所示的网络中,路由器1和路由器2分别与两个网络相连,因此在这两个路由器中RIP协议刚启动时,其路由信息表中分别有两条路由信息,如表5-1和表5-2所示。

img107

图5-7 网络实例

img108

RIP协议采用了主动发送、被动接收的机制来实现路由器之间的路由信息表的交换。RIP协议规定路由器每隔30s时间向邻居路由器发送自己的整个路由信息表。同时为了加快收敛,还要求当路由器检测到网络拓扑结构发生变化时,除了重新计算自己的路由信息表外,还立即向邻居路由器发送该更新的路由信息。在如图5-7所示的网络中,路由器1每隔30s向路由器2发送自己的路由信息表,路由器2每隔30s也向路由器1发送自己的路由信息表。

当一个路由器接收到来自其邻居路由器的路由信息表后,RIP协议要求根据接收到的路由信息表重新进行计算。首先将来自邻居路由器的路由器信息表中每条路由信息的度量值加1,因为通过该邻居路由器到达目的网络又增加了一个中继网络。然后根据路由信息表中的目的网络号在自己的路由信息表中查找是否有相同的目的网络号,如果存在相同的目的网络号,而且这两条路由信息来自同一个路由器端口,那么直接用来自邻居路由器的路由信息取代原来的路由信息。如果存在相同的目的网络号,而且这两条路由信息来自不同的路由器端口,那么需要比较两者的度量值,取最小值作为自己的路由信息表中该目的网络的度量值,因为RIP协议只为每一个目的网络保留一条最佳路由。如果自己的路由信息表中没有该目的网络号,那么将该目的网络号以及计算后的度量值一起加入自己的路由信息表。以如图5-7所示的路由器1为例,当其接收到来自路由器2的路由信息表后,对自己的路由信息表进行计算更新后将得到如表5-3所示的路由信息表。

在RIP协议的工作过程中,定时器发挥了重要的作用,在RIP协议中有三个重要的定时器:路由更新定时器、路由无效定时器和路由删除定时器。前面已经提到路由器每隔30s会向邻居路由器发送自己的路由信息表,也就是说,路由更新定时器通常被设定为30s。路由无效定时器用于探测网络端口的故障,RIP协议中路由无效定时器通常被设置为180s,如果在该时间内,不能从通过该端口连接的邻居路由器中接收到路由更新报文,那么所有经过该邻居路由器的路由均被标记为无效,并进入挂起状态。进入该状态后,路由删除定时器就会被启动,对于RIP协议,该定时器通常被设置为240s,如果某个路由被挂起后经过了240s仍然没有得到更新,那么路由器将删除这些无效的路由信息。

img109

(4)RIP协议中的循环路由

如图5-8所示的是一个由三个路由器连接而成的网络,路由器1和路由器2都有一条到达与路由器3相连的192.168.0.0网络的路由。当网络192.168.0.0变为不相连或关闭时,路由器3将触发一个路由更新报文到路由器1和路由器2,告之这条路由不再有效。在正常情况下,这样的更新过程是没有什么问题的,但是由于一些不正常的因素会导致在这个网络中产生路由循环(即计数到无穷大的问题)。

img110

图5-8 RIP循环路由的实例

在实际RIP协议的工作过程中,可能会有这样一种情形:路由器1接收到从路由器3发来的路由更新报文,并且将到192.168.0.0网络的路由标记为无效路由(度量值为16)。由于CPU的负载和其他数据流的影响,到路由器2的路由更新报文被延迟了,这样在路由器2发送给路由器1的路由更新报文中提供了到192.168.0.0网络的有效路由,其路由的度量值为2。路由器1无法从路由更新报文中判断出整个网络的拓扑结构,并且也不知道路由器2的路由也经过了路由器3。因此,路由器1就会更新其路由表,使其到192.168.0.0网络也是可达的,经由路由器2,度量值为3。

而这个时候,路由器2接收到了来自路由器3的正确的路由信息,但无效的路由信息已经从路由器2发送给了路由器1,路由器2将自己的路由信息表中的192.168.0.0网络的度量值设置为16。而路由器1则会将其拥有的无效路由在网络中继续传播,在下一个路由更新周期内,路由器1将向路由器3通告到192.168.0.0网络的路由度量值为3。路由器3利用这条路由信息对自己的路由信息表进行更新的同时,在下一个路由更新周期,向路由器2发送目的网络为192.168.0.0的度量值为4的路由信息。按照RIP协议的基本工作过程,这条到目的网络为192.168.0.0的路由信息将会在路由器1、路由器3、路由器2中不断地循环下去,而每到一个路由器,度量值就会加1。

为了解决这种路由器之间的循环路由的问题,RIP协议规定了度量值为16的路由为无效路由,意味着该目的网络不可达。也就是说,前面提到的路由器之间循环发送路由信息将在度量值达到16后停止。在度量值逐步增加到16的过程中,任何发送到192.168.0.0/24网络中节点的报文将被路由器转发到另一个路由器,直到IP报文头中生命周期(TTL)字段的值减为0。然后,该报文将被丢弃,并向源节点发送一个TTL超时的IP控制信息协议(ICM P)报文。

3.路由信息协议版本2

由于RIP-1协议的报文中只传输了目的网络的IP地址,而没有传输其对应的子网掩码,因此RIP-1协议不能使用无类域间路由(Classless InterDomain Routing,简称CIDR),也就是RIP-1协议不支持变长子网和超网技术。为此,需要对RIP-1协议进行扩展,这就出现了路由信息协议版本2(RIP-2)。

RIP-2是RIP-1的扩展,在RFC 1723中对其进行了描述,它的功能没有OSPF等其他内部路由协议那么强大,但是具有实现简单和额外开销少等优点。RIP-2的目的是以一种简明的方式代替RIP-1,但可以与RIP-1共同使用。当然,提出RIP-2的主要原因是要使用CIDR。

img111

图5-9 RIP-2协议报文格式

图5-9给出了RIP-2协议的报文格式,为了能够与RIP-1协议兼容,RIP-2协议报文实际上是对RIP-1协议报文进行了修改,将原来RIP-1协议报文中的一些保留字段定义为新的字段。在RIP-2协议的报文中,其4个字节的报头与RIP-1协议的报头基本上是一致的,每条路由信息的长度也是20个字节,在一个RIP-2协议的报文中最多可以有25条路由信息。每条路由信息中都有路由标记字段,该路由标记的主要目的是用来标识那些从外部源进入RIP路由域的路由。每条路由信息中,还增加了子网掩码和下一跳步。子网掩码用于变长子网,可以与IP地址组合起来计算得到目的网络号。下一跳步则表示到达目的网络所经过的下一个中间转发节点的地址。RIP-2协议继续使用0~16的度量值,同样将度量值16解释为无限。

在RIP-2协议的报文中,有一项比较大的变化是报文中第一条路由信息可能包含认证信息,如图5-10所示。这样处理的主要目的是增加信息路由协议的安全性。认证信息中的协议地址簇被设置为0xFFFF,这是认证信息区别于路由信息的标记。认证类型字段包含的是一个数字,表示认证的类型,当该值为2时,它表示剩余的16个字节包含的是一个明文口令。明文口令实际上是很不安全的,因为可以通过监视网络中的RIP-2协议报文来找到明文口令。一个更安全的措施是使用M D5算法,它的类型号是3。认证信息中包含的就是最多16字节长的口令,使用ASCII字符,不足16字节则在左边加上ASCII字符NULL(0x00)。在这种情况下,RIP-2协议报文中最多就只有24条路由信息。

img112

图5-10 带认证的RIP-2协议报文格式

如果路由器中没有设置RIP-2协议的安全认证选项,它将丢弃所有包含认证信息的RIP-2报文,只接收RIP-1协议报文和没有认证信息的RIP-2报文。如果路由器中设置了RIP-2协议的安全认证选项,那么它将只接收RIP-1协议报文和通过认证的RIP-2协议报文,没有认证信息的RIP-2协议报文和没有通过认证的RIP-2协议报文都会被丢弃。

RIP-2协议也支持组播而不只是简单的广播,这样可以减少那些不侦听RIP-2协议报文的主机的负担。

4.用于IPv6的RIPng

RIPng是在IPv6网络中使用的路由信息协议,RFC 2080文档对RIPng协议进行了详细的描述。RIPng协议与IPv4中的RIP-2相似,也是基于UDP,但它使用了521号UDP端口来发送和接收路由信息报文。RIPng只能在路由器中执行,并提供其他的路由器发现机制。RIPng协议的基本工作原理与RIP-1和RIP-2的工作原理基本一致,但在协议的报文格式上有较大的差别。

图5-11给出了RIPng协议的报文格式,RIPng协议的报文中前4个字节为报文头部。头部各字段的含义与RIP-4协议的报文头部各字段含义相同,其中版本号为1。

img113

图5-11 RIPng协议报文格式

RIPng协议的报文中除了头部以外是N个路由条目。N的最大值取决于底层协议对报文长度的限制。每个路由器条目的大小为20字节,如图5-12所示。在路由条目中,前16个字节为IPv6地址的前缀,给出了目地网络的IPv6地址,而前缀长度则表示了IPv6前缀中有多少位是代表目的网络的网络号,前缀长度的取值范围为0~128。路由标记和度量值的含义与RIP-2中的含义是一致的。

img114

图5-12 RIPng协议路由表条目格式

在路由表条目中没有包含到达目的网络的下一跳地址的有关字段,这是RIPng区别于RIP-1和RIP-2之处。在RIPng中,将若干个下一跳地址一样的路由表条目集中在一起,并在这些路由条目的后面增加了一个下一跳地址路由表条目表,表示前面这些路由表条目中给出的目的网络的下一跳地址。下一跳地址路由表条目的格式如图5-13所示,前16个字节给出了IPv6下一跳地址。最后一个字节固定为0xFF,表示该路由表条目是一个下一跳地址路由表条目,以便与其他的路由表条目进行区别。

img115

图5-13 RIPng协议下一跳路由表条目格式

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈