[Unix]
示例演示“距离矢量路由算法”工作原理
服务系统
发布于:2021-06-30 20:52
|
阅读数:262
|
评论:0
以下内容摘自刚刚上市,已被纳入全国高校教材系统, 并在全国热销、 好评如潮 的 《深入理解计算机网络 》 新书。
7.5.3 距离矢量路由算法
现代计算机网络通常使用动态路由算法,因为这类算法能够适应网络的拓扑和流量变化,其中最流行的两种动态路由算法是“距离矢量路由算法”和“链路状态路由算法”。
距离矢量路由算法 ( Distance Vector Routing , DV ) 是 ARPANET 网络上最早使用的路由算法,也称Bellman-Ford路由算法和Ford-Fulkerson算法,主要在 RIP ( Route Information Protocol )协议中使用。 Cisco 的 IGRP 和 EIGRP 路由协议也是采用 DV 这种路由算法的。
“距离矢量路由算法”的基本思想如下:每个路由器维护一个距离矢量(通常是以延时是作变量的)表,然后通过相邻路由器之间的距离矢量通告进行距离矢量表的更新。每个距离矢量表项包括两部分:到达目的结点的最佳输出线路,和到达目的结点所需时间或距离,通信子网中的其它每个路由器在表中占据一个表项,并作为该表项的索引。每隔一段时间,路由器会向所有邻居结点发送它到每个目的结点的距离表,同时它也接收每个邻居结点发来的距离表。这样以此类推,经过一段时间后便可将网络中各路由器所获得的距离矢量信息在各路由器上统一起来,这样各路由器只需要查看这个距离矢量表就可以为不同来源分组找到一条最佳的路由。
现假定用延时作为距离的度量,举一个简单的例子,如图 7-37 所示。假设某个时候路由器 Y 收到其邻居路由器 X 的距离矢量,其中 m 是 Y 估计到达路由器 X 的延时。若 Y 路由器知道它到邻居 Z 的延时为 n ,那么它可以得知 Z 通过 Y 到达 X 需要花费时间 m + n 。如果 Z 路由器还有其他相邻路由器,则对于从其他每个邻居那儿收到的距离矢量,该路由器执行同样的计算,最后从中选择费时最小的路由作为 Z 去往 X 的最佳路由,然后更新其路由表,并通告给其邻居路由器。
图 7-37 距离矢量路由算法简单实例
现以一个如图 7-38 所示的示例介绍距离矢量算法中的路由的确定流程,各段链路的延时均已在图中标注。 A 、 B 、 C 、 D 、 E 代表五个路由器,假设路由表的传递方向为: A → B → C → D → E (这与路由器启动的先后次序有关)。下面具体的流程。
( 1 )初始状态下,各路由器都只收集直接相连的链路的延时信息,各路由器结点得出各自的初始矢量表如图 7-39 所示。因为各结点间还没有交换路由信息,所以它们的初始状态的路由表也如它们的矢量表。
图7-38 距离矢量算法路由确定示例
( 2 ) 现在路由器 A 把它的路由表发给路由器 B 。此时它会综合从 A 路由器发来的路由表和它自己的初始路由表,更新为一个新的矢量表,如图 7-40 左图所示(最终的矢量表如图中深颜色部分)。从图中可以看出,从 B 结点到达 E 结点此时存在两条路径,一条是直达的,一条是通过 A 结点到达的。而且这两条线的开销不同,经过 A 结点到达 E 结点的开销( 7 )比直达线路的开销( 8 )更低,所以最终在形成的路由表中,把到达 E 结点的线路改为经由 A 结点这条线路,如图 7-40 右图所示。
( 3 ) B 再把最终形成的路由表发给路由器 C 。同样,路由器 C 也要把它原来的初始路由表与从 B 路由器发来的路由表进行综合,形成新的矢量表,如图 7-41 左图所示(最终的矢量表如图中深颜色部分)。在新的矢量表中,除了最初的直接连接的 B 和 D 结点间的矢量外,还新收集了到达 A 和 E 结点的矢量信息。因为 C 结点没有与 A 和 E 结点的直接连接,在初始路由表中并没有到达这两个结点的路由信息,所以现在只有采用从 B 路由器发来的路由表中,经过 B 结点到达 A 、 E 结点的路径。
这里要注意一点,因为在 B 结点路由表中就已识别了直接通过 B 结点到达 E 结点的开销( 8 )还比依次通过 B 、 A 结点到达 E 结点的开销( 7 )大,所以在 C 结点路由表中是采用依次通过 B 、 A 结点到达 E 结点这条路径。最终形成的路由表如图 7-41 右图所示。
( 4 )路由器 C 再把它的最终路由表发给路由器 D 。同样,路由器 D 也要把它原来的初始路由表与从 C 路由器发来的路由表进行综合,形成新的矢量表,如图 7-42 左图所示(最终的矢量表如图中深颜色部分)。在新的矢量表中,除了最初的直接连接的 C 和 E 结点间的矢量信息外,还新收集了到达 A 和 B 结点的矢量信息。因为 D 结点没有与 A 和 B 结点的直接连接,所以在其最初的路由表中并没有到达这两个结点的矢量信息,此时仍采用经过 C 结点到达 A 和 B 结点的路径。
在这里同样要注意一点,从 D 结点到达 E 结点也有两条路径:一是直接到达,二是依次通过 C 、 B 、 A 结点到达,经过比较发现直接连接到达的开销( 2 )要比通过 C 、 B 、 A 结点到达 E 结点路径的开销( 10 )要小,所以在 D 结点中,到达 E 结点是采用直接连接这条线路。最终形成的路由表如图 7-42 右图所示。
( 5 )路由器 D 再把它的最终路由表发给路由器 E 。同样,路由器 E 也要把它原来的初始路由表与从 D 路由器发来的路由表进行综合,形成新的矢量表,如图 7-43 左图所示(最终的矢量表如图中深颜色部分)。在新的矢量表中,除了最初的直接连接的 A 、 B 和 D 结点间的矢量外,还新收集了到达 C 结点的矢量信息,因为 E 结点没有与 C 结点的直接连接。此时仍采用经过 D 结点到达 C 结点的路径。
在这里有两个要注意的地方:一是从 E 结点到达 A 结点的路径问题,因为此时 E 结点与 A 结点是直接连接的,而且其开销( 1 )要比原来从 D 路由口器发来的路由表中提供的通过 D 、 C 、 B 结点到达 A 结点路径开销( 11 )要小,所以在最终的 E 结点路由表中,到达 A 结点是采用直接连接这条线路。二是 E 结点虽然也是与 B 结点直接连接,但它的开销( 8 )还要比原来从 D 路由器发来的路由表中提供的依次经过 D 、 C 这两个结点到达 B 结点的开销( 5 )大,所以在最终的 E 结点路由表中,到达 B 结点是采用依次经过 D 、 C 两个结点这条路径。最终形成的路由表如图 7-43 右图所示。
通过以上步骤,网络中各路由器就完整了整个路由表的确定,当然在拓扑结构发生变化时,各路由器的路由表又会发生变化,重新进行更新。
免责声明:
1. 本站所有资源来自网络搜集或用户上传,仅作为参考不担保其准确性!
2. 本站内容仅供学习和交流使用,版权归原作者所有!© 查看更多
3. 如有内容侵害到您,请联系我们尽快删除,邮箱:kf@codeae.com