zoukankan      html  css  js  c++  java
  • DSDV协议

    上一篇用毒性逆转技术仍然无法识别三个以上的路由环路问题。现在,我们来介绍一种专门用以解决计数到无穷问题的协议:DSDV协议。

    基本思想


    总体来讲,DSDV协议是对传统的DV协议的一种拓展。它的拓展包括:
    • 给每条路径增加了一个序列号码
    • 每个目的节点会定期广播一个单调递增的偶数序列号号码
    • 当一个节点发现它到某个目的节点的路径断开时,它把到这个节点的距离设为,并且将这条路径的序列号加1(此时为奇数),然后向网络中广播这个更新包。当这条路径修复时,它又将序列号加1然后广播出去
    换另一种方式来说,每个节点都保持着一张路由表,路由表中的每一项记录了它到目的节点的距离和序列号,也就是(s,d)。我们假设有一目的节点为D,当以下任何一情况发生时,都会发送更新:
    • D定期将自己的序列号加2并广播出去,即(S,0)
    • 如果节点X要通过Y到达节点D,当X和Y之间的连接断开后,X将到D的路径的序列号加1,同时将路径值设为∞,然后将信息发送给邻居。

    更新


    我们假设节点A向节点B发送了一个信息(Sa,Da),B在更新前的状态是(Sb,Db)。在收到信息后,B将按照如下方式进行更新:

    如果Sa > Sb

    更新序列号Sb = Sa。如果Da = ,那么更新Db = ∞;否则 Db = Da + d(A, B)。
    也就是说,如果收到的序列号比自己大,那么一切以这个较大的序列号中的信息为准。

    如果Sa == Sb

    比较Db 和 Da + d(A, B) ,选择较小的值作为新的Db。如果需要经过A到达目的节点,将设置A为下一跳。

    消除循环


    首先,我们先来弄清楚什么是一个循环。
    循环定义:在某个全局时间下,一个循环是指一个全局状态(包括所有节点的的局部状态),这个状态下存在节点A、B、C、……E使得A自认为B是下一层,B以为C是下一层,……E又以为A是下一层。
    那又是什么造成了循环的形成呢?
    当初始化时,因为只有一个节点,所以无所谓循环问题。

    但当一个节点产生更新时,往往会发生矛盾。例如上图,当A接收到来自B的一个更新时,A决定使用B作为下一跳,从而形成了循环。

    全局不变量


    现在,我们来考虑对于每个节点的状态,是否存在一些全局不变量?
    考虑任何一个节点B。对于某个特定的目的节点,它的状态是(Sb,Db)。
    它的全部不变量有:
    • Sb是一个单调递增的序列
    • 对于同一个序列号Sb,Db是递减的
    现在再考虑,如果一个节点A把节点B当做自己的下一跳,它们之间有哪些全部不变量。我们有(Sa,Da)和(Sb,Db)

    • Sa是一个偶数,并且Da不等于∞
    • Sb ≥ Sa
      • 这是因为Sa是由B发来的,但是B在发送完更新信息后,可能再次增加了自己的序列号
      • 如果Sb == Sa ,那么 Db < Da 这是因为,Da是在Db的基础上得来的,又因为所有的连接耗费都是正数,因此有Db < Da ;除此之外,由于B在向A发送更新后,可能再次更新自己的路径信息,从而又减少了Db的值

    DSDV不存在循环


    在一开头我们就说过,DSDV协议是专门针对网络中的循环问题提出来的,但为什么利用DSDV不存在循环问题呢?

    我们考虑一个临界时刻:当A认为B是它的下一跳时,就会形成一个循环。
    这种情况会在DSDV中出现吗?
    为了证明DSDV中不存在循环,我们可以先假设会存在,然后再推出矛盾即可。
    如果DSDV中存在这样一个循环,我们考虑循环中的任意一个连接(从节点X到节点Y):
    • 若Sy > Sx,那么我们最终会推出Sx > Sx,这是矛盾的。
    • 若所有的节点的序列号都相等,那么由Dx > Dy,我们最后会推出Dx > Dx。这也是矛盾的。
    由此证明,DSDV中是不存在循环问题的。




  • 相关阅读:
    发送邮件程序
    T-SQL存储过程、游标
    GPS经纬度换算成XY坐标
    开博了
    你应该知道的 50 个 Python 单行代码
    想提升java知识的同学请进
    adb工具包使用方法
    红米note3刷安卓原生
    hadoop 使用和javaAPI
    django学习——url的name
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6314764.html
Copyright © 2011-2022 走看看