OSPF Init 状态 概念及题目
OSPF Init 状态 概念
我们来详细讲解OSPF邻居关系中的 Init状态 概念。
Init状态是OSPF邻居关系建立过程中的一个关键中间状态,理解它对于OSPF故障排查至关重要。
一、核心概念
Init状态 表示:本地路由器已经收到了邻居发来的Hello报文,但在该Hello报文的邻居列表字段中,没有发现自己的Router ID。
可以把它理解为一种 “单向认识” 的状态:
“我认识你”:我收到了你的Hello包,知道了你的存在。
“但你还不认识我”:你还没有确认收到我的Hello包,所以在你的Hello包里没有提到我。
二、状态机中的位置
在OSPF邻居状态机中,Init状态的位置如下:
Down → Init → 2-Way → ExStart → Exchange → Loading → Full
从Down到Init:当路由器收到一个Hello包,但该包中不包含自己的Router ID时,进入Init状态。
从Init到2-Way:当收到一个Hello包,且该包的邻居列表中包含自己的Router ID时,进入2-Way状态。
三、Init状态的工作原理
为了更好地理解,我们来看一个具体的工作流程:
场景:路由器A和路由器B刚刚启动
A发送Hello包
A向外发送Hello包,此时邻居列表为空。
B收到此Hello包,但在邻居列表中没有找到自己的Router ID,B将A的状态置为Init。
B发送Hello包
B向外发送Hello包,此时邻居列表中包含了A的Router ID。
A收到此Hello包,在邻居列表中发现了自己的Router ID,A将B的状态置为2-Way。
A再次发送Hello包
A再次发送Hello包,此时邻居列表中包含了B的Router ID。
B收到此Hello包,终于在邻居列表中发现了自己的Router ID,B将A的状态从Init推进到2-Way。
关键点:只有当双方都在对方的Hello包中看到自己时,才能都进入2-Way状态。如果有一方始终看不到自己,它的状态就会卡在Init。
四、Init状态的数据包视角
事件 路由器A 路由器B 说明
1 发送Hello,邻居列表:[ ] 状态:Down A主动打招呼,但还不认识B
2 状态:Init 收到A的Hello,邻居列表:[ ] B听到了A,但在A的招呼名单里没发现自己
3 收到B的Hello,邻居列表:[A’s ID] 发送Hello,邻居列表:[A’s ID] 关键步骤:A在B的Hello中看到了自己!A将B的状态置为2-Way
4 发送Hello,邻居列表:[B’s ID] 状态:Init A在招呼名单里加上了B
5 状态:2-Way 收到A的Hello,邻居列表:[B’s ID] 关键步骤:B在A的Hello中看到了自己!B将A的状态置为2-Way
如果第5步没有发生,路由器B的状态就会持续显示为Init。
五、导致卡在Init状态的常见原因
当状态持续卡在Init时,意味着单向通信已建立,但双向通信失败。根本原因是: