OSPF 5种报文、状态机、邻居建立的过程
一、OSPF的5种报文
- Hello
用于发现邻居,维持邻居的状态
- DD
DD报文有确定设备主从,同步DD序列号
包含着LSA的头部信息,有同步LSDB数据库的作用
- LSA
请求发送缺少的LSA的信息
- LSU
回复LSA的请求,发送完整的LSA的信息
- LSACK
确认LSU的信息,将收到的LSA的头部信息发出
二、OSPF状态机
- down
- init
Attempt:该状态仅发生在NBMA网络中,表明对端在邻居失效时间间隔(dead interval)超时前仍然没有回复Hello报文。此时路由器依然每发送轮询Hello报文的时间间隔(poll interval)向对端发送Hello报文。
- 2-way
- exstart
- exchange
- loarding
- full
三、OSPF建立的过程
-
down
发送端端口未使能时,ospf的状态为down。启用后,发送端以组播(224.0.0.5)的方式发送hello包,寻找发现网络中ospf的邻居。
-
Init
响应端收到hello后,将hello报文发送端的router-id加入hello报文的邻居列表中,并发送hello报文。
-
2-way
发送端接收到有自己router-id的hello报文后,将响应端的router-id加入邻居表,进入two-way状态,形成邻居关系。形成邻居关系后会发送hello报文进行DR/BDR的选举,router-id大的为主,第二大的为备。
-
exstart
DR/BDR选举完成后,会发送一条空的DD报文确定主从设备(router-id大的成为主设备),从设备会同步到主设备的DD序列号,ospf邻接的建立会依据主设备的DD序列号进行。
-
exchange
发送端继续发送DD报文,包含着LSDB的摘要信息(LSA的头部信息),用于同步LSDB数据库
-
Loading
发送端将本身的LSDB与响应端发出DD报文中LSDB摘要进行对比,会发现有缺失LSDB的信息,这时候发送端会发送LSR报文,去请求缺失LSDB的完整信息。响应端收到LSR报文,会发出LSU报文(包含着完整的LSA信息)回应发送端。发送端收到LSU请求报文,回复LSACK确认报文(包含着所有LSA的摘要),去确认LSDB数据库是否全部同步。
-
full
LSDB数据库信息全部同步完成后,进入full状态,ospf的邻接状态建立完毕。之后,设备会定期发送hello报文维护邻接关系。
注:这里是发送端单方面ospf建立的过程,响应端也要执行相同的步骤