距离向量(DV)协议

由于最近在学网络,写下来以后复习用。唉,各种心酸啊

------------------------------------------------------------------------------分割线-----------------------------------------------------------------------------

基本思想


DV协议的基本思想主要是Bellman-Ford 算法(BFA)。说白了,就是一个公式:
在节点i,到达某个目的地的最短路径di为
其中N(i)表示节点i的相邻节点的集合,dij表示节点i和相邻节点j的距离(假设是正数)。
每个节点i都有自己的一张表。在这张表里,记录着它到包括自己在内的网络中所有节点的最短距离。这就是说,如果一个网络中有n个结点,那这个网络里所有节点都有一张含有n行的路由表。

Synchronous Bellman-Ford (SBF)


顾名思义,同步就是大家一起做的意思。同步的BF就是说,存在一个全局时钟,在时钟的开头,我们大家都告诉自己的邻居自己的路径估计信息。然后在时钟结束的时候,我们每个人再根据接收到的邻居的信息,利用BF公式,计算出到达某个目的节点的最短路径。

就向数学里的数列需要有一个第一项一样,这里我们的问题是,第一个值从哪里来?
根据这个问题的答案,又有两种不同的初始方法。

SBF/


这种方法使用来初始化每个节点i在第一个时钟时,路由表里到达除自己以外的所有目的节点的距离值。

例如,我们有如下网络:

在节点D,它的路由表在经过4个时钟周期后达到稳定状态。在第0、1、2、3、4个时钟时,其路由表分别如下所示:

SBF/-1


对应上一种初始化方法,我们也可以用-1来初始化d(0)中除自身以外的其他距离。

依然以第一个例子为例。以这种初始化方法,路由表需要经过6个时钟周期才能达到稳定状态。在第0、1、2、3、4、5、6个时钟时得到的路由表为:

Asynchronous Bellman-Ford (ABF)


不幸的是,网络的复杂性使得同步是很难达到的,因为有了ABF,异步BF算法。
异步BF算法的递推式如下:

可以看到,ABF和SBF表达式非常相似,但ABF允许存在一定的延迟,其中dij表示及节点i上一次从邻居j接收到的最短路径值。
举个例子,SBF要求所有的邻居在同一时间告诉它最短路径的信息,但是邻居们告诉它,这太难了,我们到你家的距离有远有近,要我们一起到怎么可能?于是就有了ABF,即我不要求邻居在同一时间告诉我,只要你发给我,什么时候到我家无所谓,我更新的时候只管你上次发给我的信息,但是只要我们之间存在的联系,我最后就一定能得到正确的信息!(前提是你发的包裹可以到我家,也就是说网络是连通的)

ABF总结


  • 分布式的:每个节点将自己的路由表发给和自己直接相连的节点(邻居)
  • 迭代的:周期性的持续,或者当链路发生变化时,如某条链接断开了
  • 异步的:节点们不需要在某一固定时刻同时发送和交换信息
  • 收敛的:在有限的次数内,不管初始值如何,路由表中的每一项一定会收敛到某一固定值,即真正的最短距离(如果网络是连通的)


posted on 2012-10-22 14:07  王大王  阅读(745)  评论(0编辑  收藏  举报

导航