距离向量(Distance-Vector,DV)路由选择算法
- 迭代,异步,分布式路由选择算法;
特点
分布式
每个节点都从其邻居处接收信息,执行计算,而后将计算结果分发给邻居;
迭代式
计算过程一直持续到邻居间无更多信息交换为止;
此算法是自我终止的,没有算法应当停止的信号;
异步
不要求所有节点间同步操作;
基本概念
Bellman-Ford方程
x到y的带权最短路径长度 = min(x的邻居v){x到v的权重+v到y的带权最短路径长度}
距离向量
节点x的距离向量维护节点x到其它所有节点的估计距离;
松弛操作
当更新到节点v的最短路径后,更新到节点v邻居的当前最短路径
DV路由选择算法原理
每个节点维护一个距离向量;
距离向量中,到邻居节点的距离是准确值;
节点在每次迭代中向所有邻居发送自身的距离向量;
节点每次收到邻居发送的距离向量,就根据Bellman-Ford方程校正自身的距离向量;
校正过程即是最短路径问题中的松弛操作;
只要所有节点以异步方式交换距离向量,每个节点的距离向量值都会收敛到精确最短路径值;
距离向量收敛后,只要链路没有更新,节点就不会向邻居发出新距离向量报文,也不会收到邻居的报文,算法进入静止状态;
路由选择环路问题
- 某链路w权重增加后,非相邻节点a可能要在多次迭代后才获知这一事实(因为链路w在节点a预期的某条最短路径上),而该链路的邻接节点b可以立刻获知这一事实;
在路由表多次迭代直至稳定之前,会导致路由选择环路问题: - b将把分组发往a,期望a能以较低代价转发分组,而a会把分组发往b,因为a预期的最短路径通过链路w,而此时a的距离向量还未完全反映w权重大量上升这一事实;
路由选择环路问题的解决方案
毒性逆转
- 对涉及两个节点的路由选择环路问题可通过毒性逆转技术解决;
- 若节点a通过节点b到达节点c,则节点a将虚假但善意地告诉b:a到c的距离是无穷大,从而避免环路问题;
- 等价地,节点a在告所节点b自己到节点c的费用时,可附带通过自己到c的路径上的下一跳路由,这使得节点b能判断a是否是通过b自身到达c的,也能起到毒性逆转的作用;
- 毒性逆转技术对涉及到三个或更多节点的选择环路问题无能为力;
最大度量
- 通过限制分组最大跳步数TTL可在一定程度上减轻路由选择环路问题的影响
LS与DV路由选择算法对比
- LS算法中,每个节点a经广播通告所有节点:a与a邻居的链路权重;
- DV算法中,每个节点a仅与a的邻居节点交流,通告邻居:a到所有其它节点的最低费用估计;
- LS要求发送大量报文以通告整个网络的情况;
- DV收敛速度较慢,且有路由选择环路问题;
- LS每个路由器的计算是隔离的,相对健壮;
- DV中,一个损坏的路由器会将错误信息扩散至全网;
DV,LS各有所长,都在因特网中得到应用,并且,LS和DV基本上是因特网实践中仅有的两种算法。