Posted on 2005-11-16 20:11
黑黑 阅读(2972)
评论(0) 编辑 收藏 引用 所属分类:
netstudy
dv算法,也叫矢量算法,是路由协议rip,igrp等的算法基础。
其目标是寻求:
D(x,y)=min(d(x,k),D(k,y))
方法为:
基于邻居节点的路由信息,计算自己的最佳路由。"Routing by Rumor"说的就是这个意思。因此,节点没有网络的全局视图,而且路由计算的可靠程度依据上游节点的路由信息。
这个算法,被证明是可以在有限时间收敛的。但是,算法本身没有考虑使用于路由情况下,节点或网络故障导致的恢复问题。所以为了提高算法的鲁棒性,实际使用中加入了几种技巧。
由于dv的本质是在基于邻居的信息上,计算路由,所以为了防止邻居信息的信息误导,加入“水平分割”技术。该技术就是“从该接口发给邻居的信息中不包含从邻居学习到的路由”。为了加强这种防止环路的效果,可以加入"毒性逆转",也就是"从该接口发给邻居的信息中对从邻居学习到的路由规定其metric=infinit"。这两种技巧,可以解决邻接节点间由于错误消息导致的环路问题。
对于超过两个节点的错误消息导致的环路,上述办法不能解决。其本质在于,本节点依照上游节点给出的路径,不可判断是否自身在路径上,也就是不可以监测环路存在。所以,dv算法不能根本上防止环路的发生。为了算法可以实际使用,人为限制环路的生存时间,也即规定了网络的规模。同时,人们又想到了一些方法来加速环路存在的情况下的路由环打破技术。“触发更新”就是一种加快网络信息传递的方法。这个方法在没有环路的情况下,可以提高收敛速度,在有环路的情形下,可以加速错误消息的循环,从而加速此错误路由到达跳数上限而破除环路。"抑制时间"是在接口收到的路由比以前从此接口收到且使用的路由变糟糕时,开启一小段时间,禁止该路由改变。其本质是为了减小错误路由信息的误导,其思想基础是,如过当前路由变糟糕,则很可能是错误路由,也就是宁可信其好,不信其坏。而且,路由变糟糕,很可能是路由环路产生的结果,所以加入"抑制时间"可以防止路由环路的继续扩散,同时导致环路上游的节点超时路由。
这里面,对"抑制时间"的理解是最难得部分。rip的rfc1058中没有加入这个调控参数,但是cisco等厂家的产品中有这个。而且,cisco设置这个时间为180s,6个周期。考虑到路由超时也是180s,所以,这两个相等,可以加速环路的破环。
对于dv算法,有个说法"好消息传递快,坏消息传递慢",按照Andrew s.Tanenbaum《计算机网络》的例子,这个原因可以归结为,路由变糟糕后,在没有水平分割等手段的处理下,这个消息在全网扩散开的时间比好消息缓慢。我理解为即便有上述手段,但是在不可消除的环路情况下,坏消息总是传递缓慢的。
这里,最后提出一个思考,上述的技巧是如何发现的?这需要仔细的对比,发现共性,重视差异了。