用Wireshark抓包,带你亲历OSPF邻居从‘相亲’到‘结婚’的7个状态

张开发
2026/6/22 4:43:19 15 分钟阅读
用Wireshark抓包,带你亲历OSPF邻居从‘相亲’到‘结婚’的7个状态
用Wireshark解密OSPF邻居关系从初次相遇到深度合作的7个浪漫阶段第一次打开Wireshark捕获OSPF数据包时那些闪烁的彩色数据流就像一场热闹的聚会——路由器们不断发送着各种社交邀请试图找到合适的伴侣建立长期稳定的合作关系。这种动态的社交行为背后隐藏着OSPF协议建立邻接关系的七个精妙状态。让我们戴上Wireshark这副社交显微镜观察路由器之间如何从陌生到熟悉最终达成完美的婚姻关系。1. 初识阶段Down状态与Hello包的搭讪艺术想象你走进一个全是陌生人的房间OSPF路由器在Down状态时就是这种感受。这时它会开始主动发送Hello包——相当于在社交场合中礼貌地自我介绍。在Wireshark中过滤ospf.msg 1你会看到这些周期性的社交名片OSPF Protocol Version: 2 Type: Hello (1) Router ID: 192.168.1.1 Area ID: 0.0.0.0 Authentication Type: Null (0) Hello Interval: 10 Options: (E) External Routing Priority: 1 Router Dead Interval: 40 Designated Router: 0.0.0.0 Backup Designated Router: 0.0.0.0 Neighbor: 0.0.0.0关键字段就像个人资料Router ID路由器的身份证号码全网唯一Hello Interval相当于多久主动打招呼一次Dead Interval如果这么久没收到回复就认为对方失联当路由器A第一次收到路由器B的Hello包时它会将对方加入自己的通讯录邻居表但此时还只是单方面认识——就像在聚会上注意到某人但还没说过话。这就是Init状态的开始。2. 确认眼神从Init到2-Way的双向暗恋在Init状态路由器A虽然收到了B的Hello包但还没确认对方是否也认识自己。这就像你向某人微笑后不确定对方是否也对你感兴趣。Wireshark中下一个关键帧会显示B的Hello包中出现了A的Router IDOSPF Protocol Type: Hello (1) Router ID: 192.168.1.2 Neighbor: 192.168.1.1 -- 这里出现了A的RID当A看到自己的ID出现在B的邻居列表中这场双向暗恋就确认了——进入2-Way状态。此时双方确认了基本的三观一致Hello参数匹配如果是广播网络还会选举DR/BDR相当于派对中的主持人如果只是普通邻居不形成邻接关系就停留在这个点头之交阶段2-Way状态检查清单确认双方的Area ID一致验证认证密码如果有设置检查网络掩码匹配确认Hello和Dead Interval相同3. 关系升级ExStart与Exchange的深入了解期当邻居决定从普通朋友升级为亲密伙伴建立邻接关系就进入了ExStart状态。这时双方会通过DBDDatabase Description包来协商谁先说——就像约会时决定谁先分享自己的故事。Wireshark中过滤ospf.msg 2你会看到这种有趣的谦让过程OSPF Protocol Type: Database Description (2) Sequence Number: 0x80000001 Initial: 1 -- 我建议从我开始 More: 1 Master: 1 -- 我认为我应该是主讲人这个阶段实际上是在协商主从关系Master/Slave——由Router ID决定数值大的成为Master序列号起始值——确保对话有序进行当主从关系确定后进入Exchange状态双方开始交换人生经历摘要LSDB目录。这就像交换社交媒体个人主页的概览而不是全部内容字段Master的DBDSlave的DBDSeq#主动递增跟随MasterI-bit00M-bit1(还有更多)1MS-bit1(我是Master)04. 深度交流Loading状态的灵魂对话有了目录之后路由器会检查自己缺少哪些人生经历LSA然后通过LSRLink State Request专门请求这些缺失的部分。在Wireshark中这表现为密集的LSR/LSU/LSAck包交换# 过滤表达式观察完整过程 ospf.msg 3 or ospf.msg 4 or ospf.msg 5一个典型的请求-响应流程路由器A发送LSR我想了解你连接到192.168.3.0/24的经历路由器B回复LSU这是我的详细经历包含完整的LSA路由器A确认收到已了解LSAckLoading状态的小技巧不是每个LSU都会立即确认而是采用类似TCP的累积确认只会请求自己确实缺少的LSA避免无效流量使用重传列表确保没有遗漏重要信息5. 终成眷属Full状态的完美默契当所有LSA交换完成重传列表清空路由器就进入了Full状态——这是OSPF邻接关系的最高阶段。此时双方的LSDB完全同步可以基于相同的世界观计算路由保持周期性的Hello包维持感情温度在Wireshark中此时你会看到稳定的Hello包每10秒一次偶尔的LSU更新当网络发生变化时没有未完成的LSR请求Full状态的特征验证# 在路由器上验证 show ip ospf neighbor # 应该看到状态为FULL/DR、FULL/BDR或FULL/-6. Wireshark实战捕捉OSPF恋爱全周期的技巧要完整捕获OSPF邻接建立过程需要掌握一些Wireshark高级技巧捕获设置要点开始捕获后清除OSPF进程触发重新建立clear ip ospf process使用正确的捕获过滤器host 224.0.0.5 or host 224.0.0.6保存为特定名称方便后续分析ospf_adjacency_建立.pcapng分析时的显示过滤器# 按阶段观察 ospf.msg 1 # Hello包 ospf.msg 2 # DBD包 ospf.msg 3 # LSR ospf.msg 4 # LSU ospf.msg 5 # LSAck # 按路由器观察 ospf.srcrouter 192.168.1.17. 常见感情危机排查OSPF邻接问题诊断即使是最稳定的关系也会遇到问题。以下是几种常见的OSPF邻接建立失败情况及其Wireshark表现问题类型Wireshark现象解决方案Hello参数不匹配Hello包中的Interval/Area不匹配检查双方配置MTU不一致DBD包交换后停滞调整接口MTU认证失败只有单边发送Hello检查密码配置网络类型不匹配一方等待DBD另一方不发统一网络类型区域类型冲突Hello包中的Option位不一致检查区域配置一个实用的排错流程确认双方都能收到对方HelloInit状态检查是否进入2-Way看到对方RID出现在邻居列表观察DBD交换是否成功ExStart/Exchange验证LSA请求是否完整Loading检查最终状态是否为Full在Wireshark中可以右键特定包选择Follow OSPF Stream来跟踪特定邻居的完整对话过程。

更多文章