OSPF的状态机--

当设备启动之后会自动从down进入到init初始化状 态,发送hello报文,如果收到hello报文中携带自己的RID就会自动进入two-way状态---标志设备邻居关系建立的标志
条件匹配---

FULL状态
工作完成的状态:标志邻接关系的建立
OSPF状态总结
DOWN状态:
协议没有启动没有进行宣告时进入的状态
init(初始化)状态:
协议启动之后将以组播224.0.0.5发送hello报文,发现建立邻居关系
two-way(双向通讯状态):
收到对端发送的hello包中携带自身的RID时,将进入two-way状态,标志着邻居关系的建立
exstart(预启动)状态:
进行主从关系的选举,使用没有携带数据的DBD包
exchange(准交换)状态:
主从关系选举完成之后,错开共享数据库描述报文
loading(加载)状态:
交互LSA信息之后将获取到的LSA信息加载到自身的链路状态数据库中
FULL状态:
标志着邻接关系建立的标注,协议工作完成状态
OSPF的工作过程
1.建立邻居:
启动配置之后,
ospf
将向本地所有的运行了ospf协议的端口发送
hello
包(
224.0.0.5
),
hello
包中携带自己的RID
用来区分不同路由器的身份(不携带路由信息),同时携带自己已知的邻居RID,之后会将
这些RID
存储在自己的邻居表中。
2.条件匹配:
邻居表建立完成之后,会进行条件匹配,如匹配成功则开始进入下一个状态,如果匹配失败则会停留在邻居关系。---
之后仅
hello
包进行保活。
3.如果匹配成功,则开始建立邻接关系
之后会使用未携带数据(没有携带真正的摘要信息)DBD
包(并没有携带
LSDB的摘要信息)进行主从关系的选举。主路由器会优先进入下一个状态,会优先发送摘要进行比对,比对之后,会请求自己本地没有的lsa
信息。对端会发送真正携带
lsa
信息的LSU
包,会利用
LSACK
进行确认。本地的链路状态数据库建立完成,生成本地链路数据库表。
4.完成收敛
基于本地的链路状态数据库收集的
lsa
,根据自己的spf
算法计算得出最短路径树。生成路由表。
5.收敛完成
收敛完成后,会使用hello
包每
10s
发送一次,用来保活邻居关系。ospf
会每
30min
进行一次周期更新。