系列文章目录
第九章计算机网络之网络层之路由算法2链路状态路由算法二、链路状态路由算法
网络抽象:图
链路状态路由算法
每个路由器构建链路状态分组并且广播出去。
链路状态分组包含:与该路由器直接相连的路由的路由ID(如IP地址)和该路由直接相连的链路费用,广播出去。
广播:在链路状态算法里面是通过扩散(泛洪式),将该分组发送给所以邻居,邻居再发送给邻居,直到所有路由收集完全部分组构成完整的网络拓扑。
c(x,y)有物理链路直接相连费用则为权值,没有就置为无穷大。
D(v):可能是最短路径也可能不是,费用值(总路费用和)
P(v):A-B-C-D P(D)=C
Dijkstra算法
目的是找到原到目的最短路径或者通过其他路由转发那个最短路径的路由的接口
初始化:以u为例
到达w路径的最短路径没有找到:
在目前到达这些(w)结点除了找到最短路径(在N’中),没找到最短路径(不在N’中的)中的所有结点中,到达W的DW值最小的,满足该条件,则该路径就是到达W的最短路径。
Dijkstra算法:例1
Step0:初始化
找到不在当前N’所有结点,那个结点到u费用路径最小,v,w,x,y,z都不在,开始比较3,u最小,则w到u最短(则源为u到目的w最短路径找到)
将w加入N’中,更新w的邻居,比较最小:原先到达目的的费用值D or 到达最小W的费用值加w到达目的的费用值
这种迭代方法,通过5次迭代将最短路径找到。
Dijkstra算法:例2
Dijkstra算法:讨论
发生震荡时,可能B的数据报发给C后,C到D后,结果D的路由表重新计算更新,D又到C又到B,然后B路由表又重新计算,到C…
这样反复下去,直到TTL,数据报被丢弃。B的数据报始终到不了A
所以,使用该算法要采取一些机制,随机延迟链路状态更新。