三分钟带你学习OSPF域内路由

2023-10-28 02:01:26


该文章主要介绍OSPF的工作原理以及如何计算区域内路由,主要包括如何使用Router-LSA和Network-LSA描述拓扑信息和路由信息,以及如何构建最短路径树。

OSPF工作原理:

①发现并建立邻居关系

②同步LSDB

③计算最优路由

LSA的泛洪,LSA包含链路拓扑信息和路由信息。LSA的集合成为LSDB.

邻居关系建立的条件:

三层直连

Router ID唯一

Hello/Dead时间间隔一致

Area ID一致

如果启用认证,认证相同

MTU大小

mask相同

网络地址一样

末梢区域一致(Option)

邻居关系建立过程:

A和B同时发送hello报文,hello报文里面带有自己的Router ID.(还有其他建立邻居的必要参数)收到对方的hello报文后,路由器从Down变迁为init状态。

再次发送hello报文。里面带有自己的Router ID和对端路由器的Router ID。

对方收到带有对端和自己的Router ID后,从init变迁为2-way状态。(2-way选举DR和BDR)

2-way之后进行LSDB的同步:

前两个DD报文里面只有头部信息:


路由器使用DD报文来进行主从路由器(转发送两个包,包含了Router ID,大的为主)的选举和数据库摘要信息的交互。

选举完主从关系slave先发送DD报文,以后的DD报文的序列号以master的序列号为基准。

在选举DR和BDR(或不需要选举DR和BDR)后,进入exstart state,开始选主从(ROUTER-ID大的为主,作用为了同步DBD的序列号)R1和R2分别向外发DBD报文,都认为自己为主,其中的I、M、MS位分别置为1:

I表示为第一个包,

M表示后面还有更多包,

MS表示为主

DD报文包含LSA的头部信息(ExStart状态),

用来描述LSDB的摘要信息(Exchange状态)。摘要信息包含了自身的路由信息。

主从双方利用序列号来保证DD报文传输的可靠性和完整性。

loading到full的过程是互相发送和请求详细的LSA,交互路由的过程。

LSR用来向对方请求自己所需的LSA.

LSU用于向对方发送其所需的LSA.

LSACK用于向对方发送收到所需LSA的确认。


注意点:

两台路由器邻居关系是full,表明已经建立邻接关系,但是不能说明一定会交互路由信息,比如在网络类型不一样的时候,也可以达到full的状态,LSA可以同步,LSDB也可以建立完成,但是SPF算法无法完成计算,LSDB无法转换成路由表,路由也因此无法收敛。

Router-LSA的内容及作用图解
1.Router-LSA描述P2P网络


2、Router-LSA描述MA网络或NBMA网络


二Network-LSA的内容及作用图解

1.Network-LSA描述MA网络或NBMA网络


2.SPF区域内LSDB



图解SPF计算过程:

OSPF将依据SPF算法和各类LSA进行最短路径树的计算:

阶段1:依据一类LSA中的Point to Point,TransNet以及二类LSA,构建SPF树。

阶段2:依据一类LSA中的Stub以及二类LSA,计算最优路由。

OSPF路由器分别将以自身为根节点计算最短路经树。

查看RTA的Router LSA:

以RTA为例,计算过程如下:

RTA将自己添加到最短路径树的树根位置,然后检查自己生成的Router-LSA,对于该LSA中所描述的每一个连接,如果不是一个Stub连接,就把该连接添加到候选列表中,分节点的候选列表为Link ID,对应的候选总开销为本LSA中描述的Metric值和父节点到达根节点开销之和。

根节点RTA的Router-LSA中存在TransNet中Link ID为10.1.12.2 Metric=1和P-2-P中Link ID为3.3.3.3 Metric=48的两个连接,被添加进候选列表中。

RTA将候选列表中候选总开销最小的节点10.1.12.2移到最短路径树上,并从候选列表中删除。


DR被加入到SPF中,接下来检查Ls id为10.1.12.2的Network-LSA。如果LSA中所描述的分节点在最短路径树上已经存在,则忽略该分节点。

如图所示,在Attached Router部分:

节点1.1.1.1被忽略,因为1.1.1.1已经在最短路径树上。

将节点2.2.2.2,Metric=0,父节点到根节点的开销为1,所以候选总开销为1,加入候选列表。

候选节点列表中有两个候选节点,选择候选总开销最小的节点2.2.2.2加入最短路径树并从候选列表中删除。

节点2.2.2.2新添加进最短路径树上,此时继续检查Ls id为2.2.2.2的Router-LSA:

第一个TransNet连接中,Link ID为10.1.12.2,此节点已经在最短路径树上,忽略。

第二个TransNet连接中,Link ID为10.1.235.2,Metric=1,父节点到根节点的开销为1,候选总开销为2,加入候选列表。

第三个P-2-P连接中,Link ID为4.4.4.4,Metric=48,父节点到根节点的开销为1,候选总开销为49,加入候选列表。

候选节点列表中有三个候选节点,选择候选总开销最小的节点10.1.235.2加入最短路径树并从候选列表中删除

DR被加入到SPF中,接下来检查Ls id为10.1.235.2的Network-LSA。

如图所示,在Attached Router部分:

节点2.2.2.2被忽略,因为2.2.2.2已经在最短路径树上。

将节点3.3.3.3,Metric=0,父节点到根节点的开销为2,候选总开销为2,加入候选列表。(如果在候选列表中出现两个节点ID一样但是到根节点的开销不一样的节点,则删除到根节点的开销大的节点。所以删除节点3.3.3.3 累计开销为48的候选项)。

将节点5.5.5.5,Metric=0,父节点到根节点的开销为2,候选总开销为2,加入候选列表。

候选节点列表中有三个候选节点,选择候选总开销最小的节点3.3.3.3和5.5.5.5加入最短路径树并从候选列表中删除。

节点3.3.3.3和5.5.5.5新添加进最短路径树上,此时继续检查Ls id分别为3.3.3.3和5.5.5.5的Router-LSA。

Ls id为3.3.3.3的LSA:

Link ID为10.1.235.2的节点已经在最短路径树上,忽略。

Link ID为1.1.1.1的节点已经在最短路径树上,忽略。

Ls id为5.5.5.5的LSA:

Link ID为10.1.235.2的节点已经在最短路径树上,忽略。

Link ID为4.4.4.4的P-2-P连接,Metric=48,父节点到根节点的开销为2,候选总开销为50。因为节点4.4.4.4已经在候选列表中出现,且候选总开销为49。49<50,所以子节点4.4.4.4的父节点选择2.2.2.2。

至此,再通过命令display ospf lsdb router 4.4.4.4发现,LSA中的连接所描述的相邻节点都已经添加到了SPF树中。

此时候选列表为空,完成SPF计算,其中10.1.12.2和10.1.235.2是虚节点(DR)。

计算最优路由
从根节点开始依次添加各节点LSA中的路由信息。
添加顺序为各节点加入SPF树的顺序

第二阶段根据Router LSA中的Stub、Network LSA中的路由信息,完成最优路由的计算。

从根节点开始,依次添加LSA中的路由信息(添加顺序按照每个节点加入SPF树的顺序):

1.1.1.1(RTA)的Router LSA中,共1个Stub连接,网络号/掩码10.1.13.0/24,Metric=48;

10.1.12.2(DR)的Network LSA中,网络号/掩码10.1.12.0/24,Metric=1+0=1;

2.2.2.2(RTB)的Router LSA中,共1个Stub连接,网络号/掩码10.1.24.0/24,Metric=1+0+48=49;

10.1.235.2(DR)的Network LSA中,网络号/掩码10.1.235.0/24,Metric=1+0+1=2;

3.3.3.3(RTC)的Router LSA中,共1个Stub连接,网络号/掩码10.1.13.0/24,已在RTA上,忽略;

5.5.5.5(RTE)的Router LSA中,共1个Stub连接,网络号/掩码10.1.45.0/24,Metric=1+0+0+1+48=50;

4.4.4.4(RTD)的Router LSA中,共2个Stub连接,网络号/掩码10.1.24.0/24,已在RTB上,忽略;网络号/掩码10.1.45.0/24,已在RTE上,忽略。


查看OSPF路由表


1.单区域OSPF配置实现


2.查看OSPF邻居状态



提个小问题:
1.Router-LSA中主要包含哪几种链路类型?
2.经过SPF算法计算后,被认为是最优的OSPF路由是否一定会被放入路由器的路由表中?

3. OSPF报文的可靠性机制是什么?