CN-链路状态路由算法

[[CN-NotesView]]
链路状态路由算法
网络抽象:图
图: G = (N,E)
链路状态路由算法
Dijstra算法
所有节点(路由器)掌握网络拓扑和链路费用
要求每一个路由器都构造一个链路状态分组,并广播出去
- 通过“链路状态广播”
链路状态路由算法里面利用扩散或者泛洪的方法来进行发送
任何一个路由器都会收集全了所有路由器的链路状态分组
- 所有节点拥有相同信息
计算从一个节点(“源”)到达所有其他节点的最短路径
- 获得该节点的传发表
迭代:k次迭代之后,得到到达k个目的节点的最短路径
符号
c(x,y):结点x到结点y链路费用;如果x和y不直接相连,则为无穷大
D(v): 从源到目的v的当前路径费用值
p(v): 沿从源到v的当前路径,v的前序节点
N‘ :已经找到费用最小路径的结点集合
Dijstra 算法:
1 | 初始化 |
u 的最终最短路径树:
u 的最终转发表:
根据上面的内容进行计算最终转发表
Dijstra 算法
算法复杂性: O($n^2$)
每一次迭代:需要检测所有不在结合N’中的结点
n(n+1)/2次的比较:O($n^2$)
更高效的实现:O(nlogn)
存在震荡的可能:
假设链路费用是该链路承载的通信量
很有可能导致数据包在DCB之间反复震荡无法传送到A,最终会因为TTL被丢弃。
所以会使用一些机制来避免这样的情况
- 标题: CN-链路状态路由算法
- 作者: Molaters
- 创建于 : 2023-11-24 10:14:50
- 更新于 : 2023-10-30 10:39:34
- 链接: https://molaters.github.io/2023/11/24/计算机网络/CN-链路状态路由算法/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论