【问题标题】:How does distance vector routing algorithm handle negative weight cycles?距离矢量路由算法如何处理负权重循环?
【发布时间】:2013-11-08 00:16:37
【问题描述】:
这里有很多关于这个算法的问题,但我没能找到它如何处理负重量循环?假设路由器 x 从路由器 y 获得更新,y 到 z 的成本为 5。稍后,路由器 x 从路由器 y 获得更新,y 到 z 的成本现在为 2。路由器 x 是做什么的?我的理解是贝尔曼福特算法指出在这种情况下应该提出错误。但是距离矢量路由算法是做什么的——简单地更新它或引发错误或其他什么?
【问题讨论】:
标签:
networking
routing
protocols
graph-algorithm
bellman-ford
【解决方案1】:
不确定我是否正确阅读了这个问题。来自路由器的更新可以指定路径的新成本,无论它比以前更高还是更低。如果 x 从 y 获取一条到 z 的路径的更新,成本为 2(最初为 5),那么 x 应该简单地用新的成本路径更新其转发表,并使用此路径到达 z,如果它是成本最低的路径。
【讨论】:
-
-
负权重循环将至少有一个边的权重小于 0,例如-2。如果 Bellman-Ford 算法(由距离矢量路由协议使用)检测到负权重循环,它将简单地停止计算(退出算法)。下次有任何邻居更新时,它将尝试重新计算。参考here.
【解决方案2】:
你在bellman-Ford Algortihm的低成本和链路成本的下一跳更新之间有冲突,第一个可以在两个或多个不同的接口之间来获得更便宜的成本,例如:
**案例1:**路由器A有3个邻居N1,N2,N3,N1,N2,N3有X作为邻居
|---2----N1-----4----|
A`--4----N2-----3----X
|---1----N3-----2----|
对于路由器 A,我们有:
X via N1 =6
X via N2=7 the lowest is :**X Via N3=3**
X Via N3=3
-这里A会通过N3(N1,N2,N3之间)选择X,因为它是最低的一个案例2:如果(X- N3=2) 已更改为 (X-N3=8) 我们假设由于链路的配置(即使 8 大于 2 但这是一项义务),N3 应该通知 A 并且 A 必须将成本从 (X Via N3=3) 更新为 (X Via N3=9) ,因此我们返回案例(1):选择通过 N1 的最低成本
X via N1 =6
X via N2=7 ****the lowest is :**X Via N1=6******
X Via N3=9