目录

  • 一、OSPF的五种报文
  • OSPF的报文头部(24byte):
  • Hello报文:
  • DD报文:
  • LSR报文:
  • LSU报文:
  • LSAck报文:
  • 二、OSPF的七种状态机:
  • 三、OSPF的工作过程


一、OSPF的五种报文

类型

报文名称

报文描述

1

hello

发现、建立、周期保活邻居、邻接关系

2

DD(Database Description,数据库描述)

LSDB中LSA的头部信息(并非完整的LSA信息),也就是本地的数据库的目录(摘要)

3

LSR(Link State Request,链路状态请求)

基于对端发送的DD报文中的未知信息(未知的LSA)向OSPF邻居进行查询

4

LSU (Link State Update,链路状态更新)

用于答复对端的LSR,携带各种的LSA。

5

LSAck (Link State Acknowledgment,链路状态确认)

对从LSU中获取到的LSA进行确认

OSPF的报文头部(24byte):

ospf 1定义了五种类型的报文 ospf有哪五种报文?_OSPF

Hello报文:

ospf 1定义了五种类型的报文 ospf有哪五种报文?_ospf_02

DD报文:

ospf 1定义了五种类型的报文 ospf有哪五种报文?_ospf_03

LSR报文:

ospf 1定义了五种类型的报文 ospf有哪五种报文?_ospf_04

LSU报文:

ospf 1定义了五种类型的报文 ospf有哪五种报文?_状态机_05

LSAck报文:

ospf 1定义了五种类型的报文 ospf有哪五种报文?_状态机_06

二、OSPF的七种状态机:

状态机名称

状态机描述

Down(失效)

该状态还没有进行hello包的收发,一旦进行hello的收发,则进入下一状态

Init(初始化)

接收到的hello包中并不存在本地的route-id,但是会将发送该hello包的邻居置为init状态,此时双方并没有建立双向通信,随着双方互相收发hello包,于是才会进入下一状态

2-way(双向通信)

接收到的hello包中存在本地的route-id,则双方就会进入2-way双向通信状态。该状态也是OSPF最稳定的状态之一,它标志着邻居关系的建立,同时也是邻接关系建立的基础

Exstart(预启动)

使用类似hello的DD报文进行主从关系(Master/Slave)选举,route-id数值大为主,优先进入下一状态。此时的DD报文是空的。

Exchange(准交换)

使用真正的DD报文进行数据库目录的共享

Loading (加载)

使用LSR、LSU、LSAck去获取未知的LSA信息(LSDB同步)

Full(全毗邻)

邻接关系建立的标志,此时不再进行LSDB的同步

三、OSPF的工作过程

224.0.0.5:指的是所有OSPF路由器所使用的组播地址;
224.0.0.6:指的是所有OSPF DR路由器所使用的组播地址。

(1)在启动宣告配置之后,OSPF路由器会使用组播224.0.0.5进行OSPF hello包的收发;若接收到的hello包中存在本地的route-id,则建立邻居关系,生成邻居表

之后基于表中所有的邻居进行条件的匹配,匹配失败则将维持邻居关系,仅hello包周期保活即可;

(2)匹配成功者之间可以建立邻接关系;邻居间使用DD数据包进行数据库目录的比对;之后使用LSR查询目录中未知的LSA信息,对端使用LSU来携带传递LSA,最终需要LSAck进行接收确认;

当本地收集到区域内所有设备的LSA信息后,生成LSDB—链路状态数据库表

(3)本地基于LSDB启用SPF算法,计算到达所有未知网段的最短路径,然后将其加载到路由表内;