OSPF的状态机及卡在各个状态的原因

本文详细解析了OSPF协议的状态机工作流程,包括从Down到Full的七个阶段,以及每个阶段可能遇到的问题。深入理解OSPF状态转换对于网络故障排查至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OSPF的状态机

  1. Down:本地一旦发出hello包,进入下一状态 ;
  2. Init(初始化):本地接收到的hello包中若存在本地的RID,进入下一状态;
  3. 2way(双向通信):邻居关系建立标志,条件匹配:点到点网络直接进入下一状态;MA网络将进行DR/BDR选举(40S),非DR/BDR间不能进入下一状态;
  4. Exstart(预启动):使用类hello 的DBD包进行主从关系选举,RID数值大为主,主优先进入下一状态;
  5. Exchange(准交换):使用真正的DBD进行数据库目录的共享,需要ACK;
  6. Loading(加载):使用LSR/LSU/LSack来获取未知的LSA信息;
  7. Full(转发):邻接关系建立的标志;

卡在各个状态的原因

  • 卡在down状态:OSPF没有运行;
  • 卡在init状态:没有收到对方的包;
  • 卡在2-way状态:MA网络没法选举;
  • 卡在exstart状态:MTU不匹配;
  • 卡在exchange状态:包交互有问题,发出DBD后没有收到ACK;
  • 卡在loading状态:LSA加载不完全、包交互有问题;
OSPF协议中的状态用于描述邻居关系的建立和维护过程。以下是OSPF状态各个状态及其作用和转换条件: - **Down**:这是邻居的初始状态,表示没有从邻居收到任何信息。在NBMA网络上,此状态下仍然可以向静态配置的邻居发送Hello报文,发送间隔为PollInterval,通常和RouterDeadInterval间隔相同[^3]。 - **Attempt**:此状态只在NBMA网络上存在,表示没有收到邻居的任何信息,但是已经周期性的向邻居发送报文,发送间隔为HelloInterval。如果RouterDeadInterval间隔内未收到邻居的Hello报文,则转为Down状态[^3]。 - **Init**:在这个状态下,路由器收到了来自邻居的Hello报文,但还没有建立起双向通信。 - **2-Way**:当路由器在其Hello报文中看到自己的ID时,它将进入2-Way状态,这表明双向通信已建立。对于DR/BDR选举来说,这是必要的步骤。 - **ExStart**:开始交换数据库描述(DBD)报文之前的状态。在这个阶段,路由器会协商主从关系以确定谁先发送DBD报文。 - **Exchange**:在这个状态下,路由器相互发送DBD报文来同步它们的链路状态数据库(LSDB)。随后,每台路由器检查自己缺少哪些条目,并通过链路状态请求(LSR)报文请求这些缺失的信息[^4]。 - **Loading**:在此状态下,路由器使用链路状态更新(LSU)报文来传输实际的链路状态通告(LSA)数据。接收到LSU的路由器会用链路状态确认(LSACK)进行回应[^4]。 - **Full**:当两台路由器的LSDB完全一致时,它们就进入了Full邻接状态,这意味着它们之间的路由信息已经同步完毕,可以正常转发流量了。 状态转换图通常包括上述提到的所有状态以及它们之间的转换箭头。工作原理基于OSPF协议通过Hello报文发现邻居、通过DBD报文同步LSDB、并通过LSR/LSU/LSACK报文交互详细的链路状态信息,最终达到所有路由器拥有相同的网络拓扑视图的目标。 ```plaintext State Machine Diagram (Text Representation): Down <--> Attempt | v Init --> 2-Way --> ExStart --> Exchange --> Loading --> Full ``` 这个简化的文本表示展示了状态间的典型转换路径。请注意,实际的图形化状态可能更为复杂,并且可能会包含更多的细节。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值