OSPF邻接关系建立

简介:

拓扑如下:

OSPF邻接关系建立

抓包:

OSPF邻接关系建立

第一份报文:

OSPF邻接关系建立
R1率先发送Hello报文,未携带R2的RID

第二份报文:

OSPF邻接关系建立
R2随后发送Hello报文,未携带R1的RID(P-2-P网络Network Mask字段可以不一致)

第三份报文:

OSPF邻接关系建立
R1收到R2发送的Hello报文(第二份),R1进入init状态,同时将R2的Router ID添加进Avtive Neighbor字段,发送Hello报文

  • 通过一个接口收到Hello报文,但这份Hello报文中不存在Avtive Neighbor字段或是Avtive Neighbor字段没有包含自身Router ID,代表邻居还没有收到自身发送的Hello报文,此时进入单向init状态

第四份报文:

OSPF邻接关系建立
R2收到R1发送的Hello报文(第三份)Avtive Neighbor字段描述了R2自身的Router ID
R2进入two-way状态,由于接口类型为P-2-P,无需等待wait时间,R2直接进入Exstart状态,发送First DD报文,同时随机生成一个序列号304

  • First DBD不携带LSA头部信息
  • 第五份报文:

    OSPF邻接关系建立
    R1收到R2发送的First DD报文(第四份),R1进入Exstart状态,R1发送First DD报文,同时随机生成一个序列号305(该序列号并非304+1,乃随机生成的数值,恰巧接近304)

    • First DBD不携带LSA头部信息

第六份报文:

OSPF邻接关系建立
R1 收到R2发送的First DD报文(第四份),比较双方RID(越大越优先),R1意识到自己是Slave的路由器,R1进入Exchange状态,发送“认怂”DD报文,Slave路由器的序列号采用Mater路由器(R2)的序列号数值304,这份DD报文中包含R1的LSA摘要信息

  • Exchange状态,路由器通过DD报文交互它们的链路状态数据库摘要信息

    第七份报文:

    OSPF邻接关系建立
    R2收到R1发送的“认怂”DD报文,通过查看LSA摘要信息,发现自身缺少
    LS type 1 Link ID 1.1.1.1 ADV router 1.1.1.1的LSA
    R2进入loading状态,发送LSR请求自己缺少的LSA
    LSR:只包含LS type 、 Link ID 、 ADV router (LSA三元组)

  • loading状态,路由器通过LSR报文请求完整的LSA信息

第八份报文:

OSPF邻接关系建立
R2发送DD报文,这份DD报文中包含R2的LSA摘要信息

  • 序列号305(Master路由器使用Slave路由器发送DD报文序列号+1数值)OSPF隐式确认

第九份报文:

OSPF邻接关系建立
R1收到R2的LSR,R1进入loading状态,应答LSU,LSU中包含完整的LSA信息
(包括LSA头部和具体的链路状态信息)

第十份报文:

OSPF邻接关系建立
R1收到R2的DD报文,通过查看LSA摘要信息,发现自身缺少
LS type 1 Link ID 2.2.2.2 ADV router 2.2.2.2的LSA
R1发送LSR请求自己缺少的LSA
LSR:只包含LS type 、 Link ID 、 ADV router (LSA三元组)

第十一份:

OSPF邻接关系建立
Slave路由器R1隐式确认Master路由器R2发送的最后一份DD报文(第八份),R1这份DD报文不包含LSA头部信息,序列号305
(Slave路由器使用Master路由器发送DD报文的序列号数值)

第十二份:

OSPF邻接关系建立
R2收到R1的LSR,向R1发送LSU,LSU中包含完整的LSA信息
(包括LSA头部和具体的链路状态信息)

  • 将loopback接口宣告进OSPF时,不论loopback接口真实掩码是多少(此例中是/24),都是以/32主机路由的形式通告,目的是为了解决loopback网段的路由黑洞
    但在MPLS环境中,本地关于loopback的路由是/24,把loopback宣告进OSPF后,邻居学到是/32路由,LDP无法进行标签交换,因此建议loopback接口直接使用/32的掩码

    第十三份:

    OSPF邻接关系建立
    R2发送LSU,包含已知的所有LSA

第十四份:

OSPF邻接关系建立
R1发送LSU,包含已知的所有LSA

第十五份:

OSPF邻接关系建立
R1通过LSAck应答R2的LSU(OSPF显式确认)

第十六份:

OSPF邻接关系建立
R2通过LSAck应答R1的LSU(OSPF显式确认)

第十七份报文 + :

OSPF完成收敛,R1和R2拥有一份相同的LSDB
R1和R2周期性发送Hello报文维持邻接关系
BMA和P-2-P: 默认Hello周期10秒,Dead时间40秒,Wait时间40秒
NBMA和P-2-MP:默认Hello周期30秒,Dead时间120秒,Wait时间120秒

OSPF显式确认:收到邻居发送的报文,使用独立的其他报文给它做确认

例如发送LSR,回复LSU
例如发送LSU,回复LSAck

OSPF隐式确认:使用相同的报文既做应答也做确认

例如Hello报文,DD报文

Hello报文使用Avtive Neighbor字段来做隐式确认
(收到邻居的Hello即在Avtive Neighbor字段添加邻居Router ID)

DD报文包含序列号,Slave路由器使用Master路由器的序列号
Master路由器使用Slave路由器的序列号+1
除First DD和Slave路由器应答Master路由器的最后一份DD报文外(DB description :0001)
其余DD报文还包含LSA摘要信息,既做应答又做确认,不用使用独立报文




     本文转自YANGCHAO1987 51CTO博客,原文链接:http://blog.51cto.com/11555417/2064185,如需转载请自行联系原作者


相关文章
|
SpringCloudAlibaba NoSQL Java
Seata配置参考
SeataClient是直接集成到我们的业务微服务中,SeataClient的原理是代理我们jdbc数据源,在应用程序和数据库之间加了一层,通过添加的这一层来做事务管理。
1032 0
|
Web App开发 存储 人工智能
从入门到进阶-如何基于FreeSWITCH搭建呼叫中心平台
FreeSWITCH 是一个开源的电话交换平台。博主从事多年AI技术,外呼中心搭建,需要演示站或技术支持联系博主。官方给它的定义是–世界上第一个跨平台的、伸缩性极好的、免费的、多协议的电话软交换平台
2132 0
|
敏捷开发 人工智能 安全
通义灵码+DeepSeek-R1:AI编程助手的新标杆?
通义灵码与DeepSeek-R1模型的深度集成,重新定义了AI编程工具的边界。该组合通过“大模型+垂直优化”技术路线,显著提升开发者效率。实测显示,在代码生成、上下文理解、缺陷检测等方面表现优异,函数补全响应时间仅0.8秒,内存占用减少41%,编码时间节省35%。适用于敏捷开发、系统重构等场景,尤其适合中小型研发团队和全栈开发者。
|
Kubernetes 开发者 容器
"Kubernetes的生死抉择:揭秘Pod容器重启策略如何决定应用命运的惊天大戏"
【8月更文挑战第20天】Kubernetes (k8s) 是一个强大的容器编排平台,其中Pod是最小的运行单元。Pod的重启策略确保服务连续性,主要有Always(总是重启)、OnFailure(失败时重启)和Never(从不重启)。默认策略为Always。根据不同场景,如Web服务、批处理作业或一次性任务,可以选择合适的策略。K8s还支持健康检查等高级机制来控制容器重启。合理配置这些策略对维护应用稳定性至关重要。
422 4
|
人工智能 安全 数据挖掘
AI在灾害预警与管理中的应用:提升应急响应能力
【9月更文挑战第23天】AI在灾害预警与管理中的应用正在逐步改变我们对灾害的应对方式。通过实时监测与数据分析、精准预测与风险评估、快速响应与决策支持、智能调度与资源优化以及灾后评估与恢复重建等多种手段,AI正逐步提升我们的应急响应能力,为保障人民生命财产安全提供有力支持。未来,随着AI技术的不断发展和完善,我们有理由相信,AI将在灾害预警与管理中发挥更加重要的作用,为人类社会的可持续发展贡献更多力量。
1274 5
|
Kubernetes 监控 负载均衡
Istio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?
本文介绍了服务网格(Service Mesh)的概念及其在微服务架构中的重要性。微服务强调围绕业务构建团队和去中心化的数据管理,带来更高的灵活性和扩展性。然而,随着服务数量增加,网络通信成为挑战,包括服务发现、路由和安全等问题。 Service Mesh如Istio应运而生,通过边车代理解决服务间通信,提供服务发现、负载均衡、智能路由、安全和监控等功能。它与Kubernetes结合,增强了容器环境的服务管理能力。Istio的bookinfo示例展示了其在多语言微服务中的应用,简化了代码中的服务调用逻辑,使开发更专注于业务本身。
1200 3
Istio:微服务开发的终极利器,你还在为繁琐的通信和部署流程烦恼吗?
|
运维 Kubernetes 调度
在K8S中,Pod亲和性和反亲和性作用区别有哪些?该如何使用?
在K8S中,Pod亲和性和反亲和性作用区别有哪些?该如何使用?
|
人工智能 自然语言处理 算法
AI时代的企业内训全景图:从案例到实战
作为一名扎根在HR培训领域多年的“老兵”,我越来越清晰地感受到,企业内训的本质其实是为企业持续“造血”。无论是基础岗的新人培训、技能岗的操作规范培训,还是面向技术中坚力量的高阶技术研讨,抑或是管理层的战略思维提升课,内训的价值都是在帮助企业内部提升能力水平,进而提高组织生产力,减少对外部资源的依赖。更为重要的是,在当前AI、大模型、Embodied Intelligence等新兴技术快速迭代的背景下,企业必须不断为人才升级赋能,才能在市场竞争中保持领先。
1868 13
|
人工智能 搜索推荐 数据挖掘
AI教育的评估方法有哪些?
【6月更文挑战第2天】AI教育的评估方法有哪些?
861 2
|
Java API Apache
【JAVA日志框架大全】一文快速讲透JAVA日志体系
【JAVA日志框架大全】一文快速讲透JAVA日志体系
1018 0