首页 理论教育计算机网络技术中的距离矢量算法与RIP

计算机网络技术中的距离矢量算法与RIP

【摘要】:距离矢量算法及RIP 工作原理距离矢量算法要求路由器周期地与邻居路由器交换距离矢量表,每当接收到邻居路由器发来的距离矢量表时,路由器就重新计算到每个目的结点的距离,并更新自己的路由表。表7.6修改后的表7.5表7.7更新后路由器A 的路由表RIP 协议的要点如下:①RIP 协议是定期与相邻的路由器交换信息,并进行自学习后得出可用的路由信息的。②RIP 协议是以最新的信息为准作为路由选择的依据。

(1)距离矢量算法及RIP 工作原理

距离矢量算法要求路由器周期地与邻居路由器交换距离矢量表,每当接收到邻居路由器发来的距离矢量表时,路由器就重新计算到每个目的结点的距离,并更新自己的路由表。距离矢量表中只包含到所有目的结点的距离,距离的度量可以是延迟、物理距离或其他参数。

RIP(Routing Information Protocol)是一种基于距离矢量算法实现的路由选择协议。它规定了“距离”的确切含义和更新路由表的具体步骤。在RIP 协议中,每个路由器都维护一个从它自己到其他每个目的网络的距离记录。每项记录至少包含“目的网络、距离、下一跳路由器”三个关键数据。RIP 规定,从一个路由器到直接相连的网络距离定义为“1”,从一个路由器到非直接相连的网络距离定义为所经过路由器数加“1”。RIP 认为,好的路由就是它通过的路由器的数目少,即“距离短”。RIP 允许一条路径最多只能包含15 个路由器。因此,“距离”等于16 时,即相当于不可达。可见,RIP 只适用于小型互联网

根据距离矢量算法,对每个相邻路由器发送过来的RIP 报文,路由表更新步骤为:

①对地址为X 的相邻路由器发来的RIP 报文,先修改此报文中的所有项目:将“下一跳”字段中的地址都改为X,并将所有的“距离”字段值加“1”,即:到目的网络N,距离是d,下一跳路由器是X。

②对修改后的RIP 报文中的每一个项目,进行如下步骤:

若原来的路由表中没有目的网络N,则将该项目添加到路由表中。否则,若下一跳路由器地址为X,则将原路由表中的项替换为收到的项目。否则,若收到的项目中的距离d 小于路由表中的距离,则进行更新,否则,什么也不做。

③若3 min 还没有收到相邻路由器的更新路由表,则将此相邻路由器记为不可达的路由器,即将距离设置为“16”。

下面以一个实例来说明RIP 协议的路由选择过程。

【例7.1】已知一个路由器A 的路由表(表7.4),现收到相邻路由器B 发来的路由更新信息,见表7.5。试用RIP 协议更新路由器A 的路由表。

表7.4 路由器A 的路由表

表7.5 路由器B 发来的更新信息

【解析】根据RIP 路由协议路由表的更新步骤,先将表7.5 中的距离都加“1”,并把下一跳路由器都改为“B”,得出表7.6。

将此表的每一项与表7.4 进行比较。

第一项在表7.4 中没有,则将这一项添加到表7.4 中。

第二项在表7.4 中有,且下一跳不同,则需要比较距离。新的表项的距离2 不小于原来表中的距离2,那么,什么也不做。

第三项在表7.4 中有,且下一跳不同,则需要比较距离。新的表项的距离4 小于原来表中的距离7,那么,要进行更新。

第四项在表7.4 中有,且下一跳相同,那么,要进行更新。

这样,得出更新后的路由器A 的路由表见表7.7。

表7.6 修改后的表7.5

表7.7 更新后路由器A 的路由表

RIP 协议的要点如下:

①RIP 协议是定期与相邻的路由器交换信息,并进行自学习后得出可用的路由信息的。假设路由器A 接收到相邻路由器B 发来报文的某一项为“N2,1,C”,意思是,B 到目的网络N2的距离为“1”,下一跳为“C”,则路由器A 进行自学习后,可得出的信息是“我可以通过相邻路由器B 到目的网络N2,且距离为2”。

②RIP 协议是以最新的信息为准作为路由选择的依据。例如,在例7.1 中,本路由器没有到网络N5 的路由,那么在路由表中就要添加所得来的项;当到达目的网络N4 的下一跳与原来相同时,则不管原来路由表中的项是什么,都要以最新的信息修改路由表。

③路由器是经过固定的时间间隔(如30 s)交换路由信息的,当网络拓扑发生变化时,路由器也能够及时向相邻的路由器通告拓扑变化后的路由信息。

(2)RIP 存在的问题(www.chuimin.cn)

RIP 存在的一个问题:当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器。可以用图7.7 的简单例子来解释这种情况。在图7.7 中,有三个网络通过两个路由器连接起来,并且都建立了自己的路由表。这里,只给出能够说明问题的关键表项。路由器R1 中的“1,1,直连”表示“到网1 的距离是1,直接交付”;路由器R2 中的“1,2,R1”表示“到网1 的距离是2,下一跳是R1”。

图7.7 RIP 协议的“坏消息传播得慢”缺点

现在假定路由器R1 到网1 的链路出了故障,R1 无法到达网络1。于是,路由器R1 将到网1 的距离改为“16”,这样,R1 的路由表中相应的表项变为“1,16,直连”。但是,很可能要经过30 s 后R1 才能将更新信息发送给R2,然而,R2 可能已经将自己的路由表发给了R1,其中有“1,2,R1”这一项。R1 收到R2 的更新报文后,误认为可经过R2 到达网1,于是将收到的路由信息更改为“1,3,R2”。同理,R2 接着又更新自己的路由表,这样的更新一直继续下去,直到R1 和R2 到网1 的距离都增大到16 时,两个路由器才知道网络1 是不可达的。RIP 的这个特点称为:好消息传播得快,坏消息传播得慢。这是这个协议的最主要缺点,但如果一个路由器发现了更短的路由,那么这种更新信息就传播得很快。

为了解决这个问题,可以采取多种措施,例如,让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口反方向传送。

目前常用的RIP 版本是1998年11月公布的RIP2。RIP2 可以支持变长子网掩码和CIDR,使用组播方式更新报文,并采用触发更新机制来加速路由收敛(路由变化即发送更新报文,不需要等待更新周期时间)。RIPv2 还使用经过散列的口令字来限制更新信息的传播(即支持认证)。

总之,RIP 最大的优点就是实现简单,开销小。但缺点也很多:首先,它限制了网络的规模,能够使用的最大距离即为“15”(16 表示不可达);其次,路由器之间交换的路由信息是完整的路由表,网络上所需要传输的数据量较大,开销增加;最后,“坏消息传播得慢”,算法的收敛时间过长。

(3)RIP 协议基本配置

在Cisco 路由器上,RIP 协议的基本配置非常简单,每个路由器只需要在启动RIP 路由协议后,发布与自己相关的直连网信息即可。各个路由器会根据RIP 协议的工作过程自动交换报文信息,并更新路由表。

RIP 的命令如下:

Router(config)#router rip

Router(config-router)#network x.x.x.x

Router(config-router)#exit

说明:在RIP 协议的配置中,不能使用子网掩码。

例如,对于图7.3 的网络拓扑,除了采用静态路由使非直连网数据包可以处理外,还可以使路由器启用RIP 协议,自动学习并更新路由表,来获得路由表的表项。在路由器中采用RIP协议的相关配置命令如下:

1)R0 路由器配置RIP 的命令

Router(config)#router rip

Router(config-router)#network 192.168.0.0

Router(config-router)#network 192.168.1.0

Router(config-router)#exit

2)R1 路由器配置RIP 的命令

Router(config)#router rip

Router(config-router)#network 192.168.2.0

Router(config-router)#network 192.168.1.0

Router(config-router)#exit

在路由器R0 上查看路由表信息,显示的结果如图7.8所示。

图7.8 配置RIP 协议后R0 的路由表项

其中,“R”表示使用动态路由协议RIP 自动生成的路由表项。