华为OSPF协议详解

开放式最短路径优先(Open Shortest Path First,OSPF)是一个内部网关协议(Interior Gateway Protocol,IGP),用于在单一自治系统(Autonomous System,AS)内决策路由。OSPF适合小型、中型、较大规模网络。OSPF采用Dijkstra的最短路径优先算法(Shortest Path Firs,SPF)计算最小生成树,确定最短路径。OSPF基于IP,协议号为89,采用组播方式交换OSPF包。OSPF的组播地址为224.0.0.5(全部OSPF路由器)和224.0.0.6(指定路由器)。OSPF使用链路状态广播(LSA)传送给某区域内的所有路由器

OSPF特点

路由器之间交流的语言是报文,而报文是通过协议承载的,路由协议有静态的,也有动态的,OSPF是动态协议中使用较为广泛的一种。
在OSPF网络中,每台路由器根据自己周围的网络拓扑结构生成链路状态通告LSA(Link State Advertisement),并通过更新报文将LSA发送给网络中的其它路由器。
OSPF交互的是链路状态信息,路由器的选路是一种“自主行为”,LSA只是一种选路的参考信息。
每台路由器都通过链路状态数据库LSDB(Link State DataBase)掌握全网的拓扑结构。如下图所示,每台路由器都会收集其它路由器发来的LSA,所有的LSA放在一起便组成了链路状态数据库LSDB。
LSA是对路由器周围网络拓扑结构的描述,LSDB则是对整个自治系统的网络拓扑结构的描述。
路由器将LSDB转换成一张带权的有向图,这张图便是对整个网络拓扑结构的真实反映。在网络拓扑稳定的情况下,各个路由器得到的有向图是完全相同的。

图片[1]-华为OSPF协议详解-木马屋

路由器根据最短路径优先(Shortest Path First)算法计算到达目的网络的路径,而不是根据路由通告来获取路由信息。

每台路由器根据有向图,使用SPF算法计算出一棵以自己为根的最短路径树,这棵树给出了到自治系统中各节点的路由。

图片[2]-华为OSPF协议详解-木马屋

总之,LSDB保证路由器能够时刻掌握全网的拓扑结构,SPF算法保证路由器能够迅速计算出到达目的网络的最短路径。

OSPF的运行机制

1、通过交互Hello报文形成邻居关系

2、通过泛洪LSA通告链路状态信息

3、通过组建LSDB形成带权有向图

4、通过SPF算法计算并形成路由

5、维护和更新路由表

OSPF报文类型

HELLO报文

最常用的一种报文,其作用为建立和维护邻接关系,周期性的在使能了OSPF的接口上发送。报文内容包括一些定时器的数值、DR、BDR以及已知的邻居。

——–hello包是建立邻居关系的

DD报文

两台设备在邻接关系初始化时,用DD报文描述本端设备的LSDB,进行数据库的同步。报文内容包括LSDB中每一条LSA的Header(LSA的Header可以唯一标识一条LSA)。LSA Header只占一条LSA的整个数据量的一小部分,这样可以减少设备之间的协议报文流量,对端设备根据LSA Header就可以判断出是否已有这条LSA。在两台设备交换DD报文的过程中,一台为Master,另一台为Slave。由Master规定起始序列号,每发送一个DD报文序列号加1,Slave方使用Master的序列号作为确认。

LSR报文

两台设备互相交换过DD报文之后,需要发送LSR报文向对方请求更新LSA,内容包括所需要的LSA的摘要信息

LSU报文

LSU报文用来向对端设备发送其所需要的LSA或者泛洪本端更新的LSA,内容是多条LSA(全部内容)的集合。LSU报文在支持组播和广播的网络中是以组播形式将LSA泛洪出去。为了实现Flooding的可靠性传输,需要LSAck报文对其进行确认,对没有收到确认报文的LSA进行重传,重传的LSA是直接发送到邻居的。

LSAck报文

LSAck报文用来对接收到的LSU报文进行确认,内容是需要确认的LSA的Header(一个LSAck报文可对多个LSA进行确认)。LSAck报文根据不同的链路以单播或组播的形式发送。

OSPF的状态

状态机

含义

Down

邻居会话的初始阶段。表明没有在邻居失效时间间隔内收到来自邻居设备的Hello报文。

Attempt

处于本状态时,定期向手工配置的邻居发送Hello报文。

说明:

Attempt状态只适用于NBMA类型的接口。

Init

本状态表示已经收到了邻居的Hello报文,但是对端并没有收到本端发送的Hello报文。

2-way

互为邻居。本状态表示双方互相收到了对端发送的Hello报文,建立了邻居关系。

如果不形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。

Exstart

协商主从关系。建立主从关系主要是为了保证在后续的DD报文交换中能够有序的发送。

Exchange

交换DD报文。本端设备将本地的LSDB用DD报文来描述,并发给邻居设备。

Loading

正在同步LSDB。两端设备发送LSR报文向邻居请求对方的LSA,同步LSDB。

Full

建立邻接。两端设备的LSDB已同步,本端设备和邻居设备建立了邻接关系。

down   init   2-way //建立了邻居关系
///以上为HELLO报文
我收到了对方的hello包,但是没有我的routeid ,我看对方是init
我收到了对方的hello包,但是有我的routeid ,我看对方是2-way
exstart   exchange
////以上DD报文
exstart状态下
双方互相发送DD请求选举主从,根据route ID大小选择主
exchange状态下
认定主后,从设备主动发送摘要信息,并将主状态改为 Exchange
主收到从摘要后,也主动发送摘要信息,并将对方状态改为 Exchange
loading
/////LSR LSU LSACK报文
主向从发送没有的摘要 (LSR链路请求报文)
回复主设备具体的LSA详细内容 (LSU报文)
主回复从,发送确认报文 (LSACK报文)
full
建立了邻接关系

拓扑实验

图片[3]-华为OSPF协议详解-木马屋
AR1配置
<Huawei>sy
[Huawei]sy AR1
[AR1]int g0/0/0
[AR1-GigabitEthernet0/0/0]ip address 10.0.0.1 24
[AR1-GigabitEthernet0/0/0]int g0/0/1
[AR1-GigabitEthernet0/0/1]ip ad 20.0.0.1 24
[AR1-GigabitEthernet0/0/1]int g0/0/02
[AR1-GigabitEthernet0/0/2]ip ad 192.168.1.254 24
[AR1-GigabitEthernet0/0/2]q	
[AR1]ospf 1
[AR1-ospf-1]area 0
[AR1-ospf-1-area-0.0.0.0]network 192.168.1.0 0.0.0.255
[AR1-ospf-1-area-0.0.0.0]network 10.0.0.0 0.0.0.255
[AR1-ospf-1-area-0.0.0.0]network 20.0.0.0 0.0.0.255
AR2配置
<Huawei>sy
[Huawei]sy AR2
[AR2]int g0/0/0
[AR2-GigabitEthernet0/0/0]ip ad 10.0.0.2 24
[AR2-GigabitEthernet0/0/0]int g0/0/01
[AR2-GigabitEthernet0/0/1]ip ad 30.0.0.1 24
[AR2-GigabitEthernet0/0/1]int g0/0/02
[AR2-GigabitEthernet0/0/2]ip ad 192.168.2.254 24
[AR2-GigabitEthernet0/0/2]q
[AR2]ospf 1
[AR2-ospf-1]area 0
[AR2-ospf-1-area-0.0.0.0]network 192.168.2.0 0.0.0.255
[AR2-ospf-1-area-0.0.0.0]network 10.0.0.0 0.0.0.255
[AR2-ospf-1-area-0.0.0.0]network 30.0.0.0 0.0.0.255
AR3配置
<Huawei>sy
Enter system view, return user view with Ctrl+Z.
[Huawei]sy AR3
[AR3]int g0/0/0
[AR3-GigabitEthernet0/0/0]ip ad 20.0.0.2 24
[AR3-GigabitEthernet0/0/0]int g0/0/01
[AR3-GigabitEthernet0/0/1]ip ad 192.168.3.254 24
[AR3-GigabitEthernet0/0/1]int g0/0/02
[AR3-GigabitEthernet0/0/2]ip ad 40.0.0.1 24
[AR3-GigabitEthernet0/0/2]q
[AR3]ospf 1
[AR3-ospf-1]a 0
[AR3-ospf-1-area-0.0.0.0]network 20.0.0.0 0.0.0.255
[AR3-ospf-1-area-0.0.0.0]network 20.0.0.0 0.0.0.255
[AR3-ospf-1-area-0.0.0.0]network 40.0.0.0 0.0.0.255
[AR3-ospf-1-area-0.0.0.0]network 192.168.3.0 0.0.0.255
AR4配置
<Huawei>sy
Enter system view, return user view with Ctrl+Z.
[Huawei]sy AR4
[AR4]int g0/0/0
[AR4-GigabitEthernet0/0/0]ip ad 30.0.0.2 24
[AR4-GigabitEthernet0/0/0]int g0/0/01
[AR4-GigabitEthernet0/0/1]ip ad 192.168.4.254 24
[AR4-GigabitEthernet0/0/1]int g0/0/02
[AR4-GigabitEthernet0/0/2]ip ad 40.0.0.2 24
[AR4-GigabitEthernet0/0/2]q
[AR4]ospf 1
[AR4-ospf-1]a 0
[AR4-ospf-1-area-0.0.0.0]network 30.0.0.0 0.0.0.255
[AR4-ospf-1-area-0.0.0.0]network 40.0.0.0 0.0.0.255
[AR4-ospf-1-area-0.0.0.0]network 192.168.43.0 0.0.0.255
图片[4]-华为OSPF协议详解-木马屋

对于OSPF的邻居表,需要了解:
OSPF在传递链路状态信息之前,需先建立OSPF邻居关系。
OSPF的邻居关系通过交互Hello报文建立。
OSPF邻居表显示了OSPF路由器之间的邻居状态,使用display ospf peer查看。

对于OSPF的LSDB表,需要了解:
LSDB会保存自己产生的及从邻居收到的LSA信息
Type标识LSA的类型,AdvRouter标识发送LSA的路由器。
使用命令行display ospf lsdb查看LSDB表。

对于OSPF的路由表,需要了解:
OSPF路由表和路由器路由表是两张不同的表项。
OSPF路由表包含Destination、Cost和NextHop等指导转发的信息。
使用命令display ospf routing查看OSPF路由表。



温馨提示
本文最后更新于2023-06-08 20:38:39某些文章具有时效性,若有错误或已失效。
请在下方留言或联系QQ:790085358
© 版权声明
THE END
喜欢就支持一下吧
点赞13分享
评论 抢沙发

请登录后发表评论

    暂无评论内容