目录 第一章RIP协议简介 第二章 V-D算法的介绍 路由表的建立 344 距离向量算法
1 目录 第一章 RIP协议简介........................................................................................................ 3 第二章 V-D算法的介绍........................................................................................... 4 1 路由表的建立.............................................................................................. 4 2 距离向量算法.............................................................................................. 5
第三章协议中的特殊处理 对相同路由开销的的处理 对过时路由的处理 布局改变时的处理 第四章RIP协议的实现 10 第五章传统RIP协议 RIP协议的报文格式 2 协议处理 第六章RP2的对拨号网的支持 1对拨号网路由的处理 24667 2报文格式的扩展. 第七章RIP2和其它路由协议的配合
2 第三章 协议中的特殊处理.............................................................................................. 8 1 对相同路由开销的的处理............................................................................ 8 2 对过时路由的处理....................................................................................... 8 3 布局改变时的处理....................................................................................... 9 第四章 RIP协议的实现.................................................................................................. 10 第五章 传统RIP协议...................................................................................................... 12 1 RIP协议的报文格式................................................................................... 12 2 协议处理................................................................................................... 14 第六章 RIP-2的对拨号网的支持................................................................................... 16 1 对拨号网路由的处理................................................................................. 16 2 报文格式的扩展........................................................................................ 17 第七章 RIP-2和其它路由协议的配合.............................................................................. 18
第一章RIP协议简介 路由器的关键作用是用于网络的互连,每个路由器与两个以上的实际网络相 连,负责在这些网络之间转发数据报。在讨论IP进行选路和对报文进行转发时 我们总是假设路由器包含了正确的路由,而且路由器可以利用ICMP重定向机制 来要求与之相连的主机更改路由(具体请看IP部分的相应章节)。但在实际情况 下,IP进行选路之前必须先通过某种方法获取正确的路由表。在小型的、变化 缓慢的互连网络中,管理者可以用手工方式来建立和更改路由表。而在大型的、 迅速变化的环境下,人工更新的办法慢得不能接受。这就需要自动更新路由表的 方法,即所谓的动态路由协议,RIP是其中最简单的一种 RIP( route information protocol)协议是基于Ⅴ-D算法(又称为 Bellman-Ford 算法)的内部动态路由协议。VD是 Vector- Distance的缩写,因此V-D算法又称 为距离向量算法。这种算法在 ARPARNET早期就用于计算机网络的路由的计算 RIP协议在目前己成为路由器、主机路由信息传递的标准之一,就因为这个原因 RIP协议被大多数IP路由器商业卖主广泛使用 先大致解释一下什么是内部路由协议。由于历史的原因,当前的 INTERNET 网被组成一系列的自治系统,各自治系统通过一个核心路由器连到主干网上。而 个自治系统往往对应一个组织实体(比如一个公司或大学)内部的网络与路由 器集合。每个自治系统都有自己的路由技术,对不同的自治系统路由技术是不相 同的。用于自治系统间接口上的单独的协议称为外部路由器协议,简称BGP ( Exterior Gateway Protocol)。用于自治系统内部的路由协议称为内部路由器协 议,简称IGP( Interior Gateway Protocol)。内部路由器与外部路由器协议EGP 不同,外部路由协议只有一个,而内部路由器协议则是一族。各内部路由器协议 的区别在于距离制式( d istance metric,即距离度量标准)不同,和路由刷新算 法不同。RIP协议是最广泛使用的IGP之一,著名的路径刷新程序 Routed便是 根据RIP实现的。RIP协议被设计用于使用同种技术的中型网络,因此适应于大 多数的校园网和使用速率变化不是很大的连续线的地区性网络。对于更复杂的环 境,一般不使用RIP协议 在实现时,RIP作为一个系统长驻进程( daemon)而存在于路由器中,它负 责从网络系统的其它路由器接收路由信息,从而对本地IP层路由表作动态的维 护,保证IP层发送报文时选择正确的路由,同时广播本路由器的路由信息,通 知相邻路由器作相应的修改。RIP协议处于UDP协议的上层(如图1.1),RIP 所接收的路由信息都封装在UDP的数据报中,RIP在520号端口上接收来自远 程路由器的路由修改信息,并对本地的路由表做相应的修改,同时通知其它路由 器。通过这种方式,达到全局路由的有效
3 第一章 RIP 协议简介 路由器的关键作用是用于网络的互连,每个路由器与两个以上的实际网络相 连,负责在这些网络之间转发数据报。在讨论 IP 进行选路和对报文进行转发时, 我们总是假设路由器包含了正确的路由,而且路由器可以利用 ICMP 重定向机制 来要求与之相连的主机更改路由(具体请看 IP 部分的相应章节)。但在实际情况 下 ,IP 进行选路之前必须先通过某种方法获取正确的路由表。在小型的、变化 缓慢的互连网络中,管理者可以用手工方式来建立和更改路由表。而在大型的、 迅速变化的环境下,人工更新的办法慢得不能接受。这就需要自动更新路由表的 方法,即所谓的动态路由协议,RIP 是其中最简单的一种。 RIP(route information protocol)协议是基于 V-D 算法(又称为 Bellman-Ford 算法)的内部动态路由协议。V-D 是 Vector-Distance 的缩写,因此 V-D 算法又称 为距离向量算法。这种算法在 ARPARNET早期就用于计算机网络的路由的计算。 RIP 协议在目前已成为路由器、主机路由信息传递的标准之一,就因为这个原因, RIP 协议被大多数 IP 路由器商业卖主广泛使用。 先大致解释一下什么是内部路由协议。由于历史的原因,当前的 INTERNET 网被组成一系列的自治系统,各自治系统通过一个核心路由器连到主干网上。而 一个自治系统往往对应一个组织实体(比如一个公司或大学)内部的网络与路由 器集合。每个自治系统都有自己的路由技术,对不同的自治系统路由技术是不相 同的。用于自治系统间接口上的单独的协议称为外部路由器协议,简称 EGP (Exterior Gateway Protocol)。用于自治系统内部的路由协议称为内部路由器协 议,简称 IGP(Interior Gateway Protocol)。 内部路由器与外部路由器协议 EGP 不同,外部路由协议只有一个,而内部路由器协议则是一族。各内部路由器协议 的区别在于距离制式(distance metric, 即距离度量标准)不同,和路由刷新算 法不同。RIP 协议是最广泛使用的 IGP 之一,著名的路径刷新程序 Routed 便是 根据 RIP 实现的。RIP 协议被设计用于使用同种技术的中型网络,因此适应于大 多数的校园网和使用速率变化不是很大的连续线的地区性网络。对于更复杂的环 境,一般不使用 RIP 协议。 在实现时,RIP 作为一个系统长驻进程(daemon)而存在于路由器中,它负 责从网络系统的其它路由器接收路由信息,从而对本地 IP 层路由表作动态的维 护,保证 IP 层发送报文时选择正确的路由,同时广播本路由器的路由信息,通 知相邻路由器作相应的修改。RIP 协议处于 UDP 协议的上层(如图 1.1),RIP 所接收的路由信息都封装在 UDP 的数据报中,RIP 在 520 号端口上接收来自远 程路由器的路由修改信息,并对本地的路由表做相应的修改,同时通知其它路由 器。通过这种方式,达到全局路由的有效
RIP TCP UDP IP PPP Ether 图1.1路由器协议结构 RIP协议分为传统RIP协议、需求RIP协议( Demand RIP)和触发RIP,而 传统RIP协议又分为RIP1,和RIP2两个版本。需求RIP协议和触发RIP协 议与传统RIP协议的区别在于需求RIP协议和触发RIP协议支持对拨号网的路 由的维护,增添了几种相应的报文命令,增加了报文发送确认方式。 quidway2501 上目前的RIP2不是采取需求RIP协议和触发RIP的方式,但为了支持拨号网的 路由的维护2,也汲取了这两种协议的一些处理方式。其中主要改进在于对拨号 网的路由进行处理时,并不象对局域网的路由一样设置一定的生存周期,当然为 此而付出的代价也是很大的。 第二章VD算法的介绍 路由表的建立 IP路由表需要一个建立过程,它的建立过程指的是它的初始化过程。任何路 由器启动时,都必须首先获取一个初始路由表。不同的网络操作系统,获取初始 路由表的方式不同,总的来说,有三种方式。第一种,路由器系统启动时,从外 存读入一个完整的寻径表,长驻内存使用:系统关闭时再将当前路由表(可能经 过刷新),写回外存,供下次使用。第二种,系统启动时,只提供一个空表,通 过执行显式命令(比如批处理文件中的命令)来填充。第三种,系统启动时,从 与本路由器直接相连的各网络地址中,推导出一组初始路由,当然通过初始路由 只能访问相连网上的主机。显见,无论哪种情况,初始路由表总是不完善的,需 要不断地运行过程中加以补充,这就是路由表的刷新。RIP正是用于路由表的维 护和刷新,RIP协议中的路由刷新算法是距离向量算法,它采取的路由表的初始 化方式是上述三种中的最后一种
4 RIP TCP UDP IP PPP Ether 图 1.1 路由器协议结构 RIP 协议分为传统 RIP 协议、需求 RIP 协议(Demand RIP)和触发 RIP,而 传统 RIP 协议又分为 RIP-1,和 RIP-2 两个版本。需求 RIP 协议和触发 RIP 协 议与传统 RIP 协议的区别在于需求 RIP 协议和触发 RIP 协议支持对拨号网的路 由的维护,增添了几种相应的报文命令,增加了报文发送确认方式。quidway2501 上目前的 RIP-2 不是采取需求 RIP 协议和触发 RIP 的方式,但为了支持拨号网的 路由的维护 2,也汲取了这两种协议的一些处理方式。其中主要改进在于对拨号 网的路由进行处理时,并不象对局域网的路由一样设置一定的生存周期,当然为 此而付出的代价也是很大的。 第二章 V-D 算法的介绍 1 路由表的建立 IP 路由表需要一个建立过程,它的建立过程指的是它的初始化过程。任何路 由器启动时,都必须首先获取一个初始路由表。不同的网络操作系统,获取初始 路由表的方式不同,总的来说,有三种方式。第一种,路由器系统启动时,从外 存读入一个完整的寻径表,长驻内存使用;系统关闭时再将当前路由表(可能经 过刷新),写回外存,供下次使用。第二种,系统启动时,只提供一个空表,通 过执行显式命令(比如批处理文件中的命令)来填充。第三种,系统启动时,从 与本路由器直接相连的各网络地址中,推导出一组初始路由,当然通过初始路由 只能访问相连网上的主机。显见,无论哪种情况,初始路由表总是不完善的,需 要不断地运行过程中加以补充,这就是路由表的刷新。RIP 正是用于路由表的维 护和刷新,RIP 协议中的路由刷新算法是距离向量算法,它采取的路由表的初始 化方式是上述三种中的最后一种
2距离向量算法 距离向量算法的思想很简单:所有参加RIP协议的路由器周期性地向外广播 路由刷新报文,主要内容是由很多路由项( entry)组成的路由刷新报文。对路由 来说,最主要的内容是目的地址和下一跳地址( next hop)。对动态路由协议来说, 为了找到本协议概念中的最佳路由,还必须注意路由的开销( metric)。所以路由 项主要包括了目的地址、下一跳地址和路由开销。其他的如路由标记(tag)等 内容在讲报文格式时,将具体讲到 在设计时,每个路由器的另外RIP管理了一个路由数据库,该路由数据库为 系统中所有可能的信宿包含一个路由项,并为每个信宿保留如下信息: 目的地址:在算法的IP实现中,这指的是主机或网络的IP地址 下一跳地址:到信宿的路由中的第一个路由器。 ●接口:用于到下一跳物理网络 metrIc值:一个数,指明本路由器到信宿的开销。 ●定时器:路由项最后一次被修改的时间。 路由标记:区分路由为内部路由协议的路由还是外部路由协议的路由的 标记 数据库由与系统直接相连的实体的描述初始化,通过从相邻路由器受到的报 文修改维护。 路由器间交换的最重要的信息是修改报文,参加路由维护计划的路由器发送 当前存在于实体的描述路由数据库的路由修改报文。仅通过相邻路由器间交换路 由信息是可以维护整个系统的最佳路由的,这在接下来的讨论中会逐步得到证 明 距离向量算法总是基于一个这样的事实:路由数据库中的路由已是目前通过 报文交换而得到的最佳路由。同时,报文交换仅限于相邻的实体间,也就是说, 实体共享同一个网络。当然,要定义路由是最佳的,就必须有衡量的办法,这就 用到前面所说的“ metrIc”。RIP简单的网络中,通常用可行路由所经的路由器数 简单地计算 metrIc值。在复杂的网络中, metrIc一般代表该路由传输数据报的延 迟或其它发送开销。 令D(ij代表从实体i到实体j的最佳路由的 metrIc值,d(i,j)代表从i直
5 2 距离向量算法 距离向量算法的思想很简单:所有参加 RIP 协议的路由器周期性地向外广播 路由刷新报文,主要内容是由很多路由项(entry)组成的路由刷新报文。对路由 来说,最主要的内容是目的地址和下一跳地址(next hop)。对动态路由协议来说, 为了找到本协议概念中的最佳路由,还必须注意路由的开销(metric)。所以路由 项主要包括了目的地址、下一跳地址和路由开销。其他的如路由标记(tag)等 内容在讲报文格式时,将具体讲到。 在设计时,每个路由器的另外 RIP 管理了一个路由数据库,该路由数据库为 系统中所有可能的信宿包含一个路由项,并为每个信宿保留如下信息: ⚫ 目的地址:在算法的 IP 实现中,这指的是主机或网络的 IP 地址。 ⚫ 下一跳地址:到信宿的路由中的第一个路由器。 ⚫ 接口:用于到下一跳物理网络。 ⚫ metric 值:一个数,指明本路由器到信宿的开销。 ⚫ 定时器:路由项最后一次被修改的时间。 ⚫ 路由标记:区分路由为内部路由协议的路由还是外部路由协议的路由的 标记。 数据库由与系统直接相连的实体的描述初始化,通过从相邻路由器受到的报 文修改维护。 路由器间交换的最重要的信息是修改报文,参加路由维护计划的路由器发送 当前存在于实体的描述路由数据库的路由修改报文。仅通过相邻路由器间交换路 由信息是可以维护整个系统的最佳路由的,这在接下来的讨论中会逐步得到证 明。 距离向量算法总是基于一个这样的事实:路由数据库中的路由已是目前通过 报文交换而得到的最佳路由。同时,报文交换仅限于相邻的实体间,也就是说, 实体共享同一个网络。当然,要定义路由是最佳的,就必须有衡量的办法,这就 用到前面所说的“metric”。RIP 简单的网络中,通常用可行路由所经的路由器数 简单地计算 metric 值。在复杂的网络中,metric 一般代表该路由传输数据报的延 迟或其它发送开销。 令 D(i,j)代表从实体 i 到实体 j 的最佳路由的 metric 值,d(i,j)代表从 i 直
接到j的开销,因为开销是可加的,算法中最佳路由如此获取表示: 对所有的i D (i, j=MINId (i,j)+D(k, j), 当i不等于k时 实体i从相邻路由器k收到k到j的开销的估计D(i,j),i将D(i,j)加上 i到k的开销估计d(i,j),i比较从所有相邻路由器得到的数值,取得最小数, 就得到了它到j的最佳路由 具体地说,距离向量算法如下所述: 首先,路由器刚启动时,对距离向量路由表(V-D路由表)进行初始化,该 初始化路由表包含所有去往与本路由器直接相连的网络的路径。由于去往直接相 连的网络不经过中间路由器,所以初始化的V-D路由表中的各路由的距离均为0。 图21初始V-D路由表的一个示例。 信宿网 距离 路径 直接 直接 30.0.0.0 0.0.0.0 G 20.0.0.0 40.0.0.0 图2.1 (a)路由器G的初始V-D路由表 (b)路由器G2附近的网络拓扑 图2.1的“信宿网”域含信宿网IP地址 然后,各路由器周期性地向外广播其V-D路由表内容。与某路由器直接相连 的(位于同一物理网络)的路由器收到该路由表报文后,根据此报文对本地路由 表进行刷新。刷新时,路由器逐项检查来自相邻路由器的V-D报文,遇到下述表 目之一,须修改本地路由表(假设路由器G1收到路由器G的V-D报文): 6
6 接到 j 的开销,因为开销是可加的,算法中最佳路由如此获取表示: D(i,i)=0, 对所有的 i D(i,j)=MIN[d(i,j)+D(k,j), 当 i 不等于 k 时 实体 i 从相邻路由器 k 收到 k 到 j 的开销的估计 D(i,j),i 将 D(i,j)加上 i 到 k 的开销估计 d(i,j),i 比较从所有相邻路由器得到的数值,取得最小数, 就得到了它到 j 的最佳路由。 具体地说,距离向量算法如下所述: 首先,路由器刚启动时,对距离向量路由表(V-D 路由表)进行初始化,该 初始化路由表包含所有去往与本路由器直接相连的网络的路径。由于去往直接相 连的网络不经过中间路由器,所以初始化的V-D路由表中的各路由的距离均为0。 图 2.1 初始 V-D 路由表的一个示例。 信宿网 距离 路径 10.0.0.0 0 直接 20.0.0.0 0 直接 (a) (b) 图 2.1 (a) 路由器 G1的初始 V-D 路由表 (b)路由器 G2附近的网络拓扑 图 2.1 的“信宿网”域含信宿网 IP 地址。 然后,各路由器周期性地向外广播其 V-D 路由表内容。与某路由器直接相连 的(位于同一物理网络)的路由器收到该路由表报文后,根据此报文对本地路由 表进行刷新。刷新时,路由器逐项检查来自相邻路由器的 V-D 报文,遇到下述表 目之一,须修改本地路由表(假设路由器 Gi收到路由器 Gj的 V-D 报文): G1 10.0.0.0 20.0.0.0 G2 40.0.0.0 30.0.0.0
1)G列出的某表目G1路由表中没有。则G1路由表中须增加相应表目,其“信 宿”是G表目中的信宿,其“路径”为“G1”(即下一路由器为G1) 2)G去往某信宿的距离值比Gi去往该信宿的距离减1还小 这种情况说明,G1去往某信宿若经过Gj,距离会更短。则G修改本表目,其 中“信宿”域不变,“距离”为G;表目中距离加1,“路径”为“G” 3)G1去往某信宿的路由经过G,而G去往该信宿的路由发生变化。 这里分两种情况: a.G;的V-D表不再包含去往某信宿的路由,则GI中相应路由须删除。 b.G的V-D表中去往某信宿的路由距离发生变化,则G;中相应表目“距离” 须修改,以G中的“距离”加1取代原来的距离。 图2.2中对以上描述给出直观的说明,其中G1、G;为相邻路由器。 信宿 距离路由 10.0.0.0 直接 30.0.0.0 40.0.0.0 45.0.0.0 80.0.0.0 190.0.0.0 4516 0 GGG 199.0.0.0 信宿 距离 10.0.0.0 30.0.0.0 40.0.0.0 41.0.0.0 44235 1800.0.0
7 1)Gj列出的某表目 Gi路由表中没有。则 Gi路由表中须增加相应表目,其“信 宿”是 Gj表目中的信宿,其“路径”为“Gj”(即下一路由器为 Gj)。 2)Gj去往某信宿的距离值比 Gi 去往该信宿的距离减 1 还小。 这种情况说明,Gi去往某信宿若经过 Gj,距离会更短。则 Gi修改本表目,其 中“信宿”域不变,“距离”为 Gj表目中距离加 1,“路径”为“Gj”。 3)Gi去往某信宿的路由经过 Gj,而 Gj去往该信宿的路由发生变化。 这里分两种情况: a. Gj的 V-D 表不再包含去往某信宿的路由,则 GI 中相应路由须删除。 b. Gj的 V-D 表中去往某信宿的路由距离发生变化,则 Gi中相应表目“距离” 须修改,以 Gj中的“距离”加 1 取代原来的距离。 图 2.2 中对以上描述给出直观的说明,其中 Gi、Gj为相邻路由器。 信 宿 距 离 路 由 10.0.0.0 0 直接 30.0.0.0 7 Gn 40.0.0.0 3 Gj 45.0.0.0 4 GL 180.0.0.0 5 Gj 190.0.0.0 10 Gm 199.0.0.0 6 Gj (a) 信宿 距离 10.0.0.0 4 30.0.0.0 4 40.0.0.0 2 41.0.0.0 3 180. 0.0.0 5 (b)
信宿 距离路由 10.0.0.0 直接 0.0.0 40.0.0.0 0534 41.0.0.0 45.0.0.0 GGGG △180.0.0.0 190.0.0.0 10 图2.2 (a)路由器G原路由表;(b)路由器G广播的V-D报文;(c)路由器G 刷新后的路由表 图2.2中,“”所指示为须刷新的表目,“→→”为引起刷新的表 目,“△”为刷新后的表目 这里要特别强调的是,V-D算法的路由刷新发生在相邻路由器之间,所以V-D 报文不一定以广播方式发送出去,一种比较优化的思想是路由器直接向相邻路由 器发送V-D报文,不必采用广播方式 第三章协议中的特殊处理 1对相同路由开销的的处理 当修改报文中的路由开销和路由数据库的路由开销相同时,不修改路由数据 库中的路由。这种情况对应在实际网络中的问题,是指网络中出现了多条开销相 同的路由时,路由如何选择的问题。在这种情况下,采用先入为主的原则,即采 用以前的路由。这符合处理方式的简单性和实用性 2对过时路由的处理 根据ⅴD算法,一条路由只在出现一条更优路由时才被刷新,否则,将继续 保留在路由数据库中。这就忽略了这样一种情况,即当某条路由突然崩溃,需要 选择一条新的路由来代替现存路由。但这靠VD中的刷新算法来是不能得到解 针对这种情况,在实际应用中,RIP规定,所有机器对其路由数据库中的每 表目都设置一个时钟,每增加一个新表目,就相应设置一个新时钟。在收到
8 信 宿 距 离 路 由 10.0.0.0 0 直接 30.0.0.0 5 Gj 40.0.0.0 3 Gj 41.0.0.0 4 Gj 45.0.0.0 4 Gl 180.0.0.0 6 Gj 190.0.0.0 10 Gm (c) 图 2.2 (a)路由器 Gi 原路由表;(b)路由器 Gj 广播的 V-D 报文;(c)路由器 Gj 刷新后的路由表 图 2.2 中,“ ”所指示为须刷新的表目,“ ”为引起刷新的表 目,“ ”为刷新后的表目。 这里要特别强调的是,V-D 算法的路由刷新发生在相邻路由器之间,所以 V-D 报文不一定以广播方式发送出去,一种比较优化的思想是路由器直接向相邻路由 器发送 V-D 报文,不必采用广播方式。 第三章 协议中的特殊处理 1 对相同路由开销的的处理 当修改报文中的路由开销和路由数据库的路由开销相同时,不修改路由数据 库中的路由。这种情况对应在实际网络中的问题,是指网络中出现了多条开销相 同的路由时,路由如何选择的问题。在这种情况下,采用先入为主的原则,即采 用以前的路由。这符合处理方式的简单性和实用性。 2 对过时路由的处理 根据 V-D 算法,一条路由只在出现一条更优路由时才被刷新,否则,将继续 保留在路由数据库中。这就忽略了这样一种情况,即当某条路由突然崩溃,需要 选择一条新的路由来代替现存路由。但这靠 V-D 中的刷新算法来是不能得到解 决的。 针对这种情况,在实际应用中,RIP 规定,所有机器对其路由数据库中的每 一表目都设置一个时钟,每增加一个新表目,就相应设置一个新时钟。在收到
VD报文中假如有关于此路由的表目,则将时钟清零,重新记时。假如在规定时 间内,一直未收到该路由的刷新信息,时钟期满,则将该路由从路由数据库中删 如果到指定的信宿有其它路由,则新的路由将从进一步收到的定时刷新报文 中获得,否则去往原信宿的路由不存在 3布局改变时的处理 在上一章所述的VD算法中,有一个严重的问题,即“慢收敛”(slw convergence)问题,又叫“计算到无穷”( count to infinity) 如图3.1(a)中所示正常网间网拓扑结构,从G1可直接到达网络Netl,从 G2经G1(距离为1)可到达Netl.正常情况下,G2收到Gl的V-D报文后,会建立 条路由(1,G1,1 现在假设从GⅠ到Netl的路由因故障而崩溃,但G1依然能正常工作.G1一旦 检测到不可达,会立即将原来的路由废除(将距离改为16).然后会出现两种可 能 第一种,在收到来自G2的V-D报文之前,G将修改后的路由信息广播出去, 于是G2将修改其路由数据库,将原来去往Netl的路由(1,G1,1)删除.这是完全正 常的 第二种,在G1发送新的报文之前,G2广播自己的V-D报文.该报文中必然有 条路由(1,1)表目,说明从G2出发,经1个驿站可以到达Net1.Gl收到该报文 Net 图3.1 (a)正常拓扑 (b)(b)G1和G2之间出现路由环 后,显然会根据此表目更改自己的路由表,产生关于Net1的新路由(1,G2,2).于 是G1与G2间产生寻径环,如图3.1(b)所示 上述路由环会通过G1和G2间的不断V-D报文交换而解除,但解除的过程是 非常缓慢的:出现路由环后,在下一轮路由广播中,G1将向G2通告(1,2)表目,G2 收到此表目修改本地路由数据库,将去往Netl的路由改为(1,G1,3).然后,G2 向G1通告(1,3)表目,G1将去往Net1的表目改为(1,G2,4).如此下去,直到路 由长度变为16.也就是说,至少要经过7番来回(至少30*7秒),路由环才能解除 这就是所谓满收敛问题 其实这只是一种非常简单的情况,路由环也可以建立在不相邻的路由器之间
9 V-D 报文中假如有关于此路由的表目,则将时钟清零,重新记时。假如在规定时 间内,一直未收到该路由的刷新信息,时钟期满,则将该路由从路由数据库中删 除。 如果到指定的信宿有其它路由,则新的路由将从进一步收到的定时刷新报文 中获得,否则去往原信宿的路由不存在。 3 布局改变时的处理 在上一章所述的 V-D 算法中,有一个严重的问题,即“慢收敛”(slow convergence)问题,又叫“计算到无穷”(count to infinity)。 如图 3.1(a) 中所示正常网间网拓扑结构,从 G1 可直接到达网络 Net1,从 G2 经 G1(距离为 1)可到达 Net1.正常情况下,G2 收到 G1 的 V-D 报文后,会建立一 条路由(1,G1,1). 现在假设从 G1 到 Net1 的路由因故障而崩溃,但 G1 依然能正常工作.G1 一旦 检测到不可达,会立即将原来的路由废除(将距离改为 16).然后会出现两种可 能: 第一种,在收到来自 G2 的 V-D 报文之前,G1 将修改后的路由信息广播出去, 于是G2将修改其路由数据库,将原来去往Net1的路由(1,G1,1)删除.这是完全正 常的. 第二种,在 G1 发送新的报文之前,G2 广播自己的 V-D 报文.该报文中必然有一 条路由(1,1)表目,说明从 G2 出发,经 1 个驿站可以到达 Net1.G1 收到该报文 (a) 图 3.1 (a) 正常拓扑 (b)(b)G1 和 G2 之间出现路由环 Net 1 G1 G2 Net 1 G1 G2 后,显然会根据此表目更改自己的路由表,产生关于 Net1 的新路由(1,G2,2).于 是 G1 与 G2 间产生寻径环,如图 3.1(b)所示. 上述路由环会通过 G1 和 G2 间的不断 V-D 报文交换而解除,但解除的过程是 非常缓慢的:出现路由环后,在下一轮路由广播中,G1 将向 G2 通告(1,2)表目,G2 收到此表目修改本地路由数据库,将去往 Net1 的路由改为(1,G1,3).然后,G2 向 G1 通告(1,3)表目,G1 将去往 Net1 的表目改为(1,G2,4)...如此下去,直到路 由长度变为 16.也就是说,至少要经过 7 番来回(至少 30*7 秒),路由环才能解除. 这就是所谓满收敛问题. 其实这只是一种非常简单的情况,路由环也可以建立在不相邻的路由器之间