距离矢量路由协议(二)----路由更新
 
距离矢量路由协议(二)_路由协议
 
当路由器冷启动或通电开机时,它完全不了解网络拓扑结构。它甚至不知道在其链路的另一端是否存在其它设备。路由器唯一了解的信息来自自身 NVRAM 中存储的配置文件中的信息。当路由器成功启动后,它将应用所保存的配置。如第 1 章和第 2 章所述,如果正确配置了 IP 地址,则路由器将首先发现与其自身直连的网络。
初次网络发现
在上图所示的范例中,当路由器冷启动后,在开始交换路由信息之前,路由器将首先发现与其自身直连的网络以及子网掩码。以下信息会添加到路由器的路由表中:
R1
10.1.0.0 available through interface FastEthernet 0/0
10.2.0.0 available through interface Serial 0/0/0
R2
10.2.0.0 available through interface Serial 0/0/0
10.3.0.0 available through interface Serial 0/0/1
R3
10.3.0.0 available through interface Serial 0/0/0
10.4.0.0 available through interface FastEthernet 0/0
初次路由信息交换
 
配置路由协议后,路由器就会开始交换路由更新。一开始,这些更新仅包含有关其直连网络的信息。收到更新后,路由器会检查更新,从中找出新信息。任何当前路由表中没有的路由都将被添加到路由表中。
 
初次交换
 
距离矢量路由协议(二)_ios_02
我们看下R1、R2 和 R3 开始初次交换的过程。所有三台路由器都向其邻居发送各自的路由表,此时路由表仅包含直连网络。每台路由器处理更新的方式如下:
 
R1
.将有关网络 10.1.0.0 的更新从 Serial0/0/0 接口发送出去
.将有关网络 10.2.0.0 的更新从 FastEthernet0/0 接口发送出去
.接收来自 R2 的有关网络 10.3.0.0 且度量为 1 的更新
.在路由表中存储网络 10.3.0.0,度量为 1
R2
.将有关网络 10.3.0.0 的更新从 Serial 0/0/0 接口发送出去
.将有关网络 10.2.0.0 的更新从 Serial 0/0/1 接口发送出去
.接收来自 R1 的有关网络 10.1.0.0 且度量为 1 的更新
.在路由表中存储网络 10.1.0.0,度量为 1
.接收来自 R3 的有关网络 10.4.0.0 且度量为 1 的更新
.在路由表中存储网络 10.4.0.0,度量为 1
R3
.将有关网络 10.4.0.0 的更新从 Serial 0/0/0 接口发送出去
.将有关网络 10.3.0.0 的更新从 FastEthernet0/0 发送出去
.接收来自 R2 的有关网络 10.2.0.0 且度量为 1 的更新
.在路由表中存储网络 10.2.0.0,度量为 1
.经过第一轮更新交换后,每台路由器都能获知其直连邻居的相连网络。但是,您.是否注意到 R1 尚不知道 10.4.0.0,而且 R3 也不知道 10.1.0.0?因此,还需要经过一次路由信息交换,网络才能达到完全收敛。
 
 
此时,路由器已经获知与其直连的网络,以及与其邻居相连的网络。接着路由器开始交换下一轮的定期更新,并继续收敛。每台路由器再次检查更新并从中找出新信息。
下一次更新
 
距离矢量路由协议(二)_路由表_03
我们来看下 R1、R2 和 R3 向各自的邻居发送最新的路由表。每台路由器处理更新的方式如下:
R1
将有关网络 10.1.0.0 的更新从 Serial 0/0/0 接口发送出去。
将有关网络 10.2.0.0 和 10.3.0.0 的更新从 FastEthernet0/0 接口发送出去。
接收来自 R2 的有关网络 10.4.0.0 且度量为 2 的更新。
在路由表中存储网络 10.4.0.0,度量为 2。
来自 R2 的同一个更新包含有关网络 10.3.0.0 且度量为 1 的信息。因为网络没有发生变化,所以该路由信息保留不变。
R2
将有关网络 10.3.0.0 和 10.4.0.0 的更新从 Serial 0/0/0 接口发送出去。
将有关网络 10.1.0.0 和 10.2.0.0 的更新从 Serial 0/0/1 接口发送出去。
接收来自 R1 的有关网络 10.1.0.0 的更新。因为网络没有发生变化,所以该路由信息保留不变。
接收来自 R3 的有关网络 10.4.0.0 的更新。因为网络没有发生变化,所以该路由信息保留不变。
R3
将有关网络 10.4.0.0 的更新从 Serial 0/0/0 接口发送出去。
将有关网络 10.2.0.0 和 10.3.0.0 的更新从 FastEthernet0/0 接口发送出去。
接收来自 R2 的有关网络 10.1.0.0 且度量为 2 的更新。
在路由表中存储网络 10.1.0.0,度量为 2。
来自 R2 的同一个更新包含有关网络 10.2.0.0 且度量为 1 的信息。因为网络没有发生变化,所以该路由信息保留不变
 
注:距离矢量路由协议通常会采用一种称为“水平分割”的技术。水平分割可防止将信息从接收该信息的接口发送出去。例如,R2 不会从 Serial 0/0/0 发出包含网络 10.1.0.0 的更新,因为 R2 正是通过 Serial 0/0/0 获知该网络的
 
网络收敛
 
网络收敛所需的时间与网络的规模成直接比例。我们可以根据路由协议传播此类信息的速度 - 即收敛速度来比较路由协议的性能。
达到收敛的速度包含两个方面:
.路由器在路由更新中向其邻居传播拓扑结构变化的速度。
.使用收集到的新路由信息计算最佳路径路由的速度。
网络在达到收敛前无法完全正常工作,因此,网络管理员更喜欢使用收敛时间较短的路由协议。

维护路由表
 
许多距离矢量协议采用定期更新与其邻居交换路由信息,并在路由表中维护最新的路由信息。RIP 和 IGRP 均属于此类协议。
 
路由器定期向邻居发送路由表。术语定期更新是指路由器以预定义的时间间隔向邻居发送完整的路由表。对于 RIP,无论拓扑结构是否发生变化,这些更新都将每隔 30 秒钟以广播的形式 (255.255.255.255) 发送出去。这个 30 秒的时间间隔便是路由更新计时器,它还可用于跟踪路由表中路由信息的驻留时间。
每次收到更新后,路由表中路由信息的驻留时间都会刷新。通过这种方法便可在拓扑结构发生改变时维护路由表中的信息。
拓扑结构发生变化的原因有多种,包括:
.增加新链路
.链路故障
.路由器故障
.链路参数改变
RIP 计时器
除更新计时器外,IOS 还针对 RIP 设置了另外三种计时器:
无效
清除
抑制
.无效计时器。如果 180 秒(默认值)后还未收到可刷新现有路由的更新,则将该路由的度量设置为 16,从而将其标记为无效路由。在清除计时器超时以前,该路由仍将保留在路由表中。
.清除计时器。默认情况下,清除计时器设置为 240 秒,比无效计时器长 60 秒。当清除计时器超时后,该路由将从路由表中删除。
.抑制计时器。该计时器用于稳定路由信息,并有助于在拓扑结构根据新信息收敛的过程中防止路由环路。在某条路由被标记为不可达后,它处于抑制状态的时间必须足够长,以便拓扑结构中所有路由器能在此期间获知该不可达网络。默认情况下,抑制计时器设置为 180 秒。
 
 
 
距离矢量路由协议(二)_链路_04
计时器的值可以通过两条命令来检验:show ip route 和 show ip protocols。注意,在 show ip route 的输出中,通过 RIP 获知的每条路由都会显示出自上次更新以来经过的时间(以秒为单位)。
 
此时间也会显示在 show ip protocols 输出中标题 Last Update 的下方。show ip protocols 命令详细列出了该路由器 (R1) 发送下一轮更新的时间。它还列出了无效、抑制和清除计时器的默认值。
 

与其它距离矢量路由协议不同,EIGRP 不发送定期更新,而是在路径改变或路由的度量改变时发送限定更新。当出现新路由或现有路由需要删除时,EIGRP 只会发送有关该网络的信息,而不是整个路由表。该信息只会发往确实需要此信息的那些路由器。
EIGRP 使用的更新具有以下特点:
.不定期,因为此类信息不是按固定时间间隔发送。
.仅当拓扑结构中发生影响路由信息的改变时才发送相关部分的更新。
.限定范围,这表示部分更新的传播受到自动限制,只有需要该更新信息的路由器才会收到更新。
 
触发更新:
当拓扑结构发生改变时,为了加速收敛,RIP 将使用触发更新。触发更新是一种路由表更新方式,此类更新会在路由发生改变后立即发送出去。触发更新不需要等待更新计时器超时。检测到拓扑结构变化的路由 器会立即向相邻路由器发送更新消息。接收到这一消息的路由器将依次生成触发更新,以通知邻居拓扑结构发生了改变。
当发生以下情况之一时,就会发出触发更新:
.接口状态改变(开启或关闭)
.某条路由进入(或退出)“不可达”状态
.路由表中增加了一条路由
如果能够保证更新能立即到达每台路由器,那么仅使用触发更新就已足够。然而,触发更新存在两个问题:
.包含更新信息的数据包可能在网络的某些链路上丢失或损坏。
.触发更新并不能在瞬间完成。尚未收到触发更新的路由器有可能在错误的时间发送常规定期更新,从而导致错误的路由重新插入已经收到触发更新的邻居的路由表中。
 

同步更新存在的问题
当多路访问 LAN 网段上的多台路由器同时发送路由更新时,更新数据包可能会发生冲突,从而导致延迟或消耗过多带宽。
注:只有集线器才会发生此类冲突,交换机不存在此问题。
同时发送更新也被称为同步更新。因为距离矢量路由协议使用定期更新机制,因此对于此类协议,同步可能会造成问题。随着同步的路由器计时器越来越 多,网络中出现的更新冲突和延迟也会越来越多。最初,路由器更新是不同步的。但经过一段时间之后,网络上的各个计时器将逐渐变得同步。
解决方案
为防止路由器之间同步进行更新,Cisco IOS 引入了称为 RIP_JITTER 的随机变量,此变量会为网络中每台路由器的更新时间间隔减去一段可变时间量。此随机抖动(即可变时间量)的范围是指定更新时间间隔的 0% 到 15%。在这种方式下,默认 30 秒的更新间隔实际会在 25 到 30 秒之间随机变化。