OSPF域内路由计算:SPF计算
- 在1类LSA和2类LSA中,包括了拓扑信息和路由信息
- Phase 1 :根据1类LSA中的P2P、TransNet、2类LSA,构建SPF树
- Phase 2:根据1类LSA中的Stub、2类LSA,计算最优路由
左边是拓扑图,右边是最终结果,不是五台吗,你怎么多了两台啊,DR会在拓扑里面存在的,所以这里面有七个节点
当我们五台路由器数据库同步以后,我们计算路由啊,是自己计算的,所以我们现在以R1做例子,看R1是怎么把图画出来,计算出路由的
首先R1啊,这是他的数据库,首先R1以自己为根,所以他得知道他自己周边有哪些邻居吧,所以他先看一下自己产生的LSA(display ospf lsdb router self-originate这条命令的意思就是查看自己产生的router LSA)有三条链路信息,stubNet不是路由信息吗,这是第一个路由前缀,咱们先看邻居的,因为这是一类LSA,这两个表示我们拓扑信息,我有个邻居3.3 有个邻居12.2,虽然这是12.2是DR的地址,3.3是route-id,但这表示我的对端邻居,R1在这边,下面连着3,右边连着2,但你要知道不是直接连的2,他连的是DR,这是DR的地址,所以他现在有个候选表格,他会将非路由类型的link加入到候选列表中,把这个ID加入到候选列表中,这就表示我们两个邻居信息 ,一个只不过是route-id,一个只不过是接口信息。我发现我有两个邻居,假如我两条线都画,那他们万一最终连起来,那不就环路了嘛,所以我肯定要先画一个无环的拓扑,怎么画呢?咱们把开销最小的先挑出来,到这边的DR开销是1,到下面的点到点开销是48,所以我们先挑DR,因此我们就把图画出来了(上图第二点)
候选列表我们到时候是要清空的,所以我们现在把两个Link信息放里面,但是我挑了一个开销最小的,开销最小的挑出去以后,我就把图画出来的,注意我连的是DR 不是R2,DR会告诉我,他连着1.1和2.2,所以现在我还不知道,因为我要看二类我才知道,我现在只知道我连着DR开销是1,好,这是第一步啊,这个候选列表里没有选中的,先放着
接下来因为我选了DR这条路了,所以接下来我去看DR的LSA信息了,他是不是DR啊,所以接下来就去看二类的啊,DR不是会产生二类的LSA嘛,那我就要去看他二类的LSA
二类里面写的很清楚,DR连了两个人,一个是10.0.2.2,一个是10.0.1.1,红色部分忽略,因为是我自己啊,然后是不是还连着10.0.2.2,所以我把新的信息加到候选列表里,然后黄色部分是路由啊,不用管他先,就是我会把路由信息先挑出来,一会再往里面加,先看蓝色的,所以我就把蓝色部分放入候选列表中,和前面做个开销的对比,一个开销是1 ,一个开销是48,我还是挑你,所以我就连到了R2了(上图)注意啊,10.0.2.2是Route-id啊,我就知道了,你连着我又连着他,注意DR到达R2开销是0的,因为DR在R2身上,所以这开销是0,我要加的啊,加完开销才对比的。所以我们把R2接上来
既然我到了这个Route-id,我就去找这个Route-ID发的一类LSA,我选了他了,那我就要去根据他的信息再去看他的连着谁,所以我们每次挑一个最优的,并将候选列表中最优的清空
接下来我们就去看R2的一类LSA
所以R2的类型1的LSA,他把这些挑出来,他看到这边有个235的MA网络,他还看到跟R4有个点到点网络,把这些东西放入候选列表以后,如果我通过你到达这边的MA的DR开销是1+0+1,到达R4是1+0+48,所以这三是不是就做对比了,再挑出最好的,235是最好的,所以我就把你连的DR画出来(上图)
DR连接着几个人?查二类
在查DR的二类,连着几个人?哦,连着三个人,然后发现2已经有了(忽略),连着3和5,然后把3和5都放进来,注意啊,这时候就出现开销一样的了,那如果开销一样怎么办,这两个连的235,开销都一样,这个时候就把他俩都放进来,所以这两个都在候选列表里删除,所以这俩个都放在拓扑图里面,然后注意啊,第一个条10.0.3.3也删了,因为我已经选完了到R3的最佳路由了啊,所以第一个就清掉了啊,第一个这条路我就不会走了啊。
是不是到3和5了,所以你就继续去查R3和R5的1类LSA
查完R3发的一类后,发现R3的一类都忽略了,因为R3的这些链路咱都有了
然后再去查R5发的一类,R5连着4,先放入候选列表,两个到10.0.4.4的路径开始比较,5到4优,还是2到4优,他发现2到4优,所以说我选第一条,然后又因为我已经选完了到达R4的最佳路径,所以我就把和到达R4相关的路径信息都删除掉了,候选列表就没东西了
然后我们是不是到R4了,没完了,到4还要查4的啊,所有都查一遍,再查4的,发现4里面的东西都有了,好,结束
然后最后再计算路由,路由就简单了,因为前面不是挑出来路由前缀了嘛,什么掩码啊,前缀啊,开销啊,所以我们就把这些路由挂在这些节点上不就行了吗。
OSPF域内LSA总结:
一类每台路由器都会产生,描述自己身上的直连接口的信息,这个信息有不同的类型的,有stubnet,p2p,transit
而二类呢,只有DR的网络,那我就会产生二类,DR的二类很简单,DR的地址以及所连的设备的Router-id,然后是掩码
两个都有拓扑信息和路由信息