DSDV协议
来源:互联网 发布:蒙牛puremilk知乎 编辑:程序博客网 时间:2024/05/16 00:27
上一篇用毒性逆转技术仍然无法识别三个以上的路由环路问题。现在,我们来介绍一种专门用以解决计数到无穷问题的协议: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中是不存在循环问题的。
- DSDV协议
- DSDV路由协议设计
- DSDV协议分析
- DSDV路由协议设计续
- 目的节点序列距离矢量(DSDV)协议
- NS2中DSDV, AODV, DSR协议评估
- 三种路由协议的吞吐量对比:aodv,dsdv,dsr
- DSDV的问题(Problems of DSDV)
- AODV=DSR+DSDV
- NS2中DSDV分析
- Performance Evaluation of DSDV, AODV, and DSR
- Performance Evaluation of DSDV, AODV, and DSR
- 亲测可用的NS2对"1. AODV" "2. DSDV" "3. DSR" 的路由模拟
- 协议
- 协议
- 协议
- 协议
- 协议
- JAVA小结
- 关于数字信号处理单位冲激信号的malab实现
- SQL Server 隔离级别学习总结
- java(jsp/servlet )取得客户端post过来的json格式数据(jquery等)
- 二次函数求解(第九周上机任务)
- DSDV协议
- sipdroid开源项目——sip时代
- hdu 2176 取(m堆)石子游戏
- android流量监控类TrafficStats讲解
- MCISendString详细参数
- 关于UIView的autoresizingMask属性的研究
- 6.3 Gallery和BaseAdapter容器
- C++的接口和重载<<运算符的小例子(试试把Circle的类的virtual的shapeName函数注释掉? )
- 考试过后再看信息系统开发与管理,发现…