距离向量(DV)算法的问题
Posted 妈妈说女孩子要自立自强
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了距离向量(DV)算法的问题相关的知识,希望对你有一定的参考价值。
上一篇将了DV协议的基本内容。DV算法固然简单易懂,但应用于实际后,人们很快发现这种算法在某些特定情况下是会出现一些致命的问题的!在这篇文章中,我们来讨论下这些问题及其解决方法。
----------------------------------------------------------------------------------------分割线-----------------------------------------------------------------------------------
选路环路(routing loop)和计数到无穷(count-to-infinity)
当某条链接的费用减少时,我们称之为有一个“好消息”。在网络中,好消息的传递往往很迅速。 例如,存在这样一个网络:
但是,当链路费用增加(甚至断开)时,就不会这么简单了。 我们看下面这个例子:
毒性逆转方法(The Reverse-Poison(Split-horizon) Hack)
上述的选路环路问题可以通过毒性逆转的技术加以避免。它的基本思想是:如果Z的最短路径要通过邻居Y,那么它将告诉Y自己到目的节点的距离是∞。这样,Z向Y撒了一个善意的谎言,使得只要Z经过Y选路到X,它就会一直持续讲述这个谎言,这样Y也就永远不会尝试从Z选路到X了,也就避免了环路问题。(可见,有时善意的谎言也不是件坏事,也是为了你好啊T^T) 我们将毒性逆转技术应用于上例。Y在更新自己的距离向量时,发现Z到X的距离是∞,于是它将d(x)无奈地更新为60,并向Z发送了更新报文。Z收到报文后更新自己的d(X)为50(直接选路到X),并发给Y更新报文(此时因为Z不需要经过Y进行选路,因此将告诉Y自己到X的距离为50)。Y在接收到Z的报文后,重新将距离更新为1 + 50 = 51,并告诉Z自己到X的距离是∞(实际是51)。Z收到报文后,发现最低耗费并没有改变,因此算法进入静止状态。
但是,当涉及3个或更多节点(而不仅仅是两个直接相连的邻居节点)的环路将不能被毒性逆转技术检测到,如下例:
当C和D之间的连接断开时,依次发生如下事件:
- A收到来自C的坏消息,然后将选择从B到达D
- A向C发送更新报文
- C向B发送更新报文
以上是关于距离向量(DV)算法的问题的主要内容,如果未能解决你的问题,请参考以下文章