【问题标题】: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  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 2015-04-19
      • 1970-01-01
      • 2018-01-27
      • 2018-04-02
      • 1970-01-01
      • 2018-01-30
      相关资源
      最近更新 更多