Route3(

DV算法

DV算法也被称为Bellman-Ford路由算法和Ford-Fulkerson路由算法。在这些算法中,每个路由器都有一个路由表,用来表示到任何目的地的最佳路由。一个典型的路由器J的网络图以及路由表如下所示。

routing-algorithm7.gif (4.02 KB)
2008-10-19 20:39


2.JPG (47.04 KB)
2008-10-19 20:41



如表格所示,如果路由器J想发送分组数据包到路由器D,它应该将分组数据包先发送到路由器H。分组数据包到达路由器H后,它将检查自己的路由表来决定怎样将分组数据包发送到路由器D。
在DV算法中,每个路由器遵循以下步骤:

计算所有与本身直接相连的链接的权值并且将信息保存到路由器的路由表中。
一段时间后,路由器将其路由表发送给相邻路由器(不是所有的路由器),同时也收到每个相邻路由器的路由表。
根据其相邻路由器的路由表信息,路由器更新自己的路由表。 DV算法的一个最主要的问题是“ 无穷计数”。让我们通过一个例子来研究一下这个问题:


分级路由可以看到,在LS和DV算法中,每个路由器都需要保存其他路由器的一些信息。随着网络规模的扩大,网络中的路由器也将增加。因此,路由表的规模也将增大,从而使路由器不能有效地处理网络流量。使用 分级路由可以解决这个问题。让我们通过一个例子来说明一下。
我们使用DV算法来查找节点间的最佳路由。在下述情形中,网络中的每个节点保存了一个有17个记录的路由表。下面是A的一个典型网络图和路由表。
假设一个网络图如下所示。如图所示,A与网络的其他部分只有一条链路。所有节点的路由表以及网络图如下所示:

2.JPG (29.63 KB)
2008-10-19 20:43


现在假设A 、 B之间的链路被剪断了。在这个时候,B修正了自己的路由表。经过一段时间后,路由器交换它们的路由表,因此B接收到了C的路由表。因为C不知道A 、B之间的链路上发生了什么事,所以它说它有一条权值为2的到A的链路(从C到B权值为1,从B到A权值为1——它不知道B已经没有到A的链路了)。B接收到路由表之后认为有另外一条链路从C到A,所以它修正了自己的路由表,即将无穷大更改为3(C认为,B到C权值为1,C到A权值为2)。路由器然后再一次交换它们的路由表。当C接收到B的路由表后,它发现B到A的链路权值从1更改为3,所以C更新了它的路由表,即将它到A的链路权值更改为4(根据B的描述,C到B权值为1,B到A权值为3)。
这个循环过程到最后,所有的节点发现到A的链路权值变成无穷大。这个情形如下表所示。因此,专家称DV算法具有 低收敛率

3.JPG (54.49 KB)
2008-10-19 20:45


解决这个问题的一种方法是,路由器只发送信息给相邻路由器,且该相邻路由器不是通往目的地的唯一链接。比如在这个例子中,C就不应该发送任何关于A的信息给B,因为B是通往A的唯一路径。


分级路由可以看到,在LS和DV算法中,每个路由器都需要保存其他路由器的一些信息。随着网络规模的扩大,网络中的路由器也将增加。因此,路由表的规模也将增大,从而使路由器不能有效地处理网络流量。使用 分级路由可以解决这个问题。让我们通过一个例子来说明一下。
我们使用DV算法来查找节点间的最佳路由。在下述情形中,网络中的每个节点保存了一个有17个记录的路由表。下面是A的一个典型网络图和路由表。

[ 本帖最后由 fs999 于 2008-10-19 20:50 编辑 ]

附件 - 如何获取无忧币 - 下载扣无忧币规则

routing-algorithm9.gif (4.57 KB)

2008-10-19 20:50

11.JPG (47.29 KB)

2008-10-19 20:50

你可能感兴趣的:(c,算法,网络,路由器)