在这篇博客里,我们讨论两种路由选择算法
- 全局式路由选择算法,也就是链路状态(LS)算法
- 分散式路由选择算法,距离向量算法(DV)
1、全局式路由选择算法
每个节点向网络中所有广播链路状态,即该节点和它所连接的链路的特征和费用,这样,网络中的每个节点都具有了该网络的等同的、完整的视图。接下来,每个节点各自计算都其他节点的路径。
路由选择算法使用的是dijkstra算法
问题:震荡问题,比如链路传播费用跟传播的数据大小有关系,可能会导致所有的流量每次都在一个方向,下一次全在另一个方向上
2、分散式路由选择算法
每个节点刚开始只有它到直接相连邻居的链路费用,每个节点等待来自邻居的更新,当收到一个更新时,重新计算新的邻居向量。
链路费用改变
- 链路费用减少时,这种改变很快传递到整个网络,并且完成更新
- 链路费用增加时,可能会导致路由选择环路,x-z的最短路径经过y,y-z的最短路径经过x,链路增加的费用这种改变就会传递的很慢
- 解决方法:毒性逆转,如果y-z的最短路径改变,如果x-z经过了y,那么x会告知y,D(x-y)=无穷
3、对比
- 报文复杂度,LS在算法开始之前要发送O(|V|*|E|)个报文,并且任何一条链路费用改变时,要向所有的节点发送新的链路费用。DV发送的报文数量跟很多因素相关
- 收敛速度,O(|V|*|E|)个报文的O(n^2),DV收敛较慢,并且在收敛时可能会导致无穷计数问题
- 健壮性,当一台路由器发生故障,或者费用改变时,LS只需广播,然后节点自己计算自己的转发表,路由计算式分离的,就算一个节点计算错,也不会影响其他节点,相对健壮,而DV以个不正确的节点计算值会扩散到整个网络