距离向量DV算法与链路状态LS算法最大的区别就在于:前者为分布式、迭代算法,而后者为“集中式”的算法。什么意思呢?先来看一下两种算法的原理。
距离向量路由算法(Bellman-Ford)
什么是距离向量:每个节点
都存有该节点到其余所有节点的距离
,这就是一个距离向量;
算法基本原理:算法的基本原理就是基于Bellman-Ford方程进行更新(距离向量),以获得最短路径
链路状态LS算法(Dijsktra)
在算法开始前,需要知道任意两个节点之间链路状态的信息,维护一个到达源点最短路径已知的点的集合 D,每次选取最短路径并更新集合 D。
区别
- DV 算法中,每个节点只需要维护自身的距离向量,且只需要与自己相连的链路的状态;而 LS 算法中每个节点都需要知道所有链路的状态;
- DV 算法中每个节点只需要把自己的信息传给相邻节点;而 LS 算法中每个节点都需要在网络中广播自己的信息,以实现网络中每个节点都保存有整个网络完整的拓扑信息;
- DV 算法可以是异步的,也即不要求节点之前同步,当邻居节点信息有变时完全可以再执行以此迭代,即可更新信息;而 LS 则要求全局信息已知,也就要求所有节点的信息都是正确的;