当前位置: 首页 > news >正文

OSPF协议

目录

什么是OSPF协议?

OSPF数据包类型

OSPF中DD包与DBD包的区别 

OSPF的状态机

OSPF的工作过程

区域划分规则


 

什么是OSPF协议?

开放式最短路径优先协议

OSPF(Open Shortest Path First)协议是一种用于动态路由的内部网关协议(IGP)。它是一种开放式协议,用于在大型IP网络中通过选择最佳路径来传递数据。OSPF协议使用链路状态路由算法,它通过收集网络上的路由信息,并计算最短路径。OSPF协议可以根据网络的拓扑结构和链路状态来动态调整路由,并根据实时情况更新路由表。它具有快速收敛、可伸缩性强、支持可区分服务(QoS)等特点,被广泛用于大型企业网络和互联网中。

OSPF数据包类型

  1. Hello 数据包:用于发现和维护邻居关系,周期保活,默认10s为一个周期,交互router_id(RID)
  2. Database Description(DD)数据包:用于交换链路状态数据库(LSDB)的摘要信息。
  3. Link State Request(LSR)数据包:用于请求某个特定的链路状态信息,链路状态请求包
  4. Link State Update(LSU)数据包:用于传输链路状态信息,包括路由器自身的链路状态以及其它路由器的链路状态,链路状态更新包
  5. Link State Acknowledgement(LSAck)数据包:用于确认收到的链路状态信息,链路状态确认包
  6. LSA:链路状态通告   具体的一条一条拓扑或路由信息;基于LSU包进行传递。

OSPF中DD包与DBD包的区别 

DD包用于通知邻居节点本地数据库的摘要信息,判断是否需要进行数据库同步,而DBD包则是用于请求详细的数据库信息,以供邻居节点更新自己的数据库

OSPF协议中的DD包(Database Description packets)与DBD包(Database Description packets)都用于在邻居节点之间交换路由信息,但它们的功能和作用略有不同。

DD包是由Master(即优先级最高的路由器)向Slave(即邻居路由器)发送的,用于通过比较两个节点的LSDB(Link State Database,即链路状态数据库)来确定是否需要更新路由信息。DD包中包含了当前节点的数据库摘要信息,包括LSA(Link State Advertisement,链路状态广播)的数量、版本号、类型、序列号等。Slave(即邻居路由器)节点会根据接收到的DD包中的信息来判断是否需要进行数据库同步,如果需要,则向Master发送DBD包。

DBD包是Slave(即邻居路由器)节点向Master节点发送的,用于请求路由数据库的详细信息。DBD包中包含了Slave(即邻居路由器)节点需要的LSA信息,通过这些信息Slave(即邻居路由器)节点可以更新自己的LSDB。Master节点收到DBD包后会根据其请求发送相应的LSA信息给Slave节点。

OSPF的状态机

Down :     一旦接收到其他设备发送过来的hello包进入下一个状态机

Init :         初始化 接收到的hello包中若存在本地的RID,进入下一个状态机

2way:       双向通讯   邻居关系建立的标志 

关注条件:若点到点网络,邻居间直接进入下一个状态机;在MA网络中将进行DR/BDR选举;(40s)非DR/BDR间不能进入下一个状态机

Exstart 预启动  使用不携带目录信息的DBD包进行主从关系的选举,RID数值大为主,优先进入下一个状态机; --  排序

Exchange 准交换:使用携带目标的DBD包进行共享,由主先进行,从在收到主的DBD包后再发出DBD

Loading 加载 :对比DBD目录后,基于本地未知的LSA信息,使用LSR向邻居发出请求,邻居使用LSU来更新共享这些LSA信息,本地在收到LSU后需要ACK确认;加载过程完成后,邻居间的数据库一致;

Full 转发: 邻接(毗邻)关系建立的标志

OSPF的工作过程

当启动配置完成后,邻居间收发hello包,建立邻居关系,生成邻居表:

邻居邻居hello包中有5个参数必须完全一致,否则无法建立邻居关系;

启动ospf的配置完成后,直连的邻居间组播收发hello包,建立邻居关系,生成邻居表;之后关注条件,条件不满足的邻居间将维持为邻居关系,仅hello周期保活即可;

条件匹配的邻居间可以建立为邻接关系;

先使用DBD包进行主从关系的选举,目的在于有序进行数据的共享;

先使用携带数据库目录的DBD,共享本地数据库目录;之后邻居基于所有的目录比对出本地未知的LSA目录;再使用LSR进行查询,对端使用LSU进行回复,本地LSACK表示确 认; ---- 使用DBD/LSR/LSU/LSack来获取本地未知的LSA信息; 生成数据库(LSDB)表;

当网络中所有路由器的数据库同步完成后,邻接关系建立;本地基于数据库生成有向图--->最短路径树--->计算本地到达所有未知网段的最短路径,然后将其加载到路由表;

收敛完成后,仅hello包每10s周期保活邻居关系;每30min邻接间再使用DBD进行数据库的清查,保障无误;

区域划分规则

  1. 星型结构 --- 区域0为骨干区域  大于0为非骨干  所有的非骨干区域必须直连到骨干
  2. ABR 区域边界路由器  两个区域互联时,必须基于ABR进行

相关文章:

  • 爬虫与DataFrame对象小小结合
  • [创业之路-99/管理者与领导者-141] :绩效管理-1-绩效管理是一把手工程、是系统工程、是化繁为简工程
  • 【Flutter】IOS运行工程二次启动崩溃问题。
  • Transformer家族
  • 汽车IVI中控开发入门及进阶(十四):功能安全
  • Spring Boot+Vue前后端分离项目如何部署到服务器
  • 基于YOLOv8深度学习的野外火焰烟雾检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测
  • 2024年AI辅助研发:科技创新的引擎
  • 【C++ vector 类】
  • Selenium操作浏览器,弹出文件选择框,实现自动选定“目标文件”
  • 链表的简单概念
  • Python 单元测试
  • 3 模型评估
  • 设计模式 单例模式
  • idea远程服务器debug
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 2017前端实习生面试总结
  • Android交互
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • IDEA 插件开发入门教程
  • Java IO学习笔记一
  • JAVA并发编程--1.基础概念
  • JS基础之数据类型、对象、原型、原型链、继承
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • mysql中InnoDB引擎中页的概念
  • node-glob通配符
  • Shadow DOM 内部构造及如何构建独立组件
  • Vue UI框架库开发介绍
  • Vue2.0 实现互斥
  • 高度不固定时垂直居中
  • 将 Measurements 和 Units 应用到物理学
  • 近期前端发展计划
  • 聚簇索引和非聚簇索引
  • 利用jquery编写加法运算验证码
  • 深度学习在携程攻略社区的应用
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 数据可视化之 Sankey 桑基图的实现
  • 微信小程序--------语音识别(前端自己也能玩)
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • No resource identifier found for attribute,RxJava之zip操作符
  • elasticsearch-head插件安装
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • #NOIP 2014#Day.2 T3 解方程
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (30)数组元素和与数字和的绝对差
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (WSI分类)WSI分类文献小综述 2024
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (一) storm的集群安装与配置