关于OSPF的五种报文类型介绍、OSPF八种状态机变化与报文交互介绍。

4.2.2 路由 OSPF(OSPF的5种报文、8种状态机、邻居与邻接的形成)

目录

  • OSPF的5种报文
    • Hello报文
      • 报文字段简介
    • DD/DBD报文
    • DD报文字段简介(首个DD报文)
    • DD报文字段简介(非首个DD报文——携带简要路由信息)
    • LSR报文
      • LSR报文简介
    • LSU报文
      • LSU报文简要介绍
    • LSACK报文
      • LSACK报文简要介绍
  • OSPF的8种状态机与邻居邻接关系建立
    • 邻居建立过程
      • 1、Down状态
      • 2、Init状态
      • 3、Attempt状态(NBMA)
      • 4、2-way状态
        • DR与BDR的作用如图:
        • DR与BDR、DR-Other的关系:
        • DR与BDR的选举流程:
    • 邻居建立过程(图片)
    • 邻接建立过程
      • 5、Exstart状态
        • 选举主从(图片)
      • 6、Exchange状态
        • DD报文交互过程(图片)
      • 7、Loading状态
        • LSR、LSU、LSA交互过程(图片)
      • 8、Full状态
    • OSPF的3种稳定状态
    • 邻居与邻接的关系

OSPF的5种报文

OSPF设备之间交互并不是像Rip协议一般直接发送路由信息,而是先发送一些基础报文进行建立邻居。

邻居建立之后再进行交互LSA通过SPF选举出最优的路由加入到路由表中。

每种报文都有各自的作用,且在OSPF邻居与邻接建立过程中起到重要的作用。

在开始之前简单介绍LSA:LSA(链路状态通告) 是链接状态协议使用的一个分组,它包括有关邻居和通道成本的信息。

Hello报文

Hello报文,周期性发送,用于发现和维护OSPF邻居关系。

周期发送的时间受OSPF链路类型影响,如广播网络类型下的Hello发送间隔为10秒。

不同链路状态下的Hello报文发送方式不同,广播网络类型下的Hello报文以组播发送。

扩展了解可结合上一篇内容进行观看:路由 OSPF常见4种网络类型MA、P2P、NBMA、P2MP、OSPF报头字段信息简介。

报文字段简介

在这里插入图片描述

DD/DBD报文

DD(Database Description)数据库描述信息,建立邻居的基础上用于描述本地的路由摘要信息,主要用于数据库的同步。

DD报文中携带简要的路由信息。当对端邻居收到之后基于DD报文中的信息从而通过LSR进行请求所需的详细路由信息。

先描述后请求,减少了交换LSA的次数,提高网络的收敛速度。

如果没有DD报文,每次建立邻居后都要发送全部的LSA,如果对方已经有了大部分了,你还发一堆过去就产生了不必要的流量。

不同链路状态下的DD报文发送方式不同,广播网络类型下的DD报文以单播发送。

DD报文字段简介(首个DD报文)

在这里插入图片描述

DD报文字段简介(非首个DD报文——携带简要路由信息)

在这里插入图片描述

LSR报文

LSR(Link State Request)链路状态请求,用于请求DD报文中的详细路由信息。

不同链路状态下的LSR报文发送方式不同,广播网络类型下的LSR报文以单播发送。

LSR报文简介

在这里插入图片描述

LSU报文

LSU(Link State Update)链路状态更新,用于回复详细的LSR请求信息。

同时该LSU报文还用于在OSPF链路状态更新/拓扑变更时进行路由的更新通知

即自动发送LSU报文,并不需要通过LSR请求后发送,主要为了让OSPF的网络更快的适应网络变更。不至于说当发现路由不通的时候再进行路由更新。

不同链路状态下的LSU报文发送方式不同,广播网络类型下的LSU报文以组播发送。

LSU报文简要介绍

在这里插入图片描述

在这里插入图片描述

LSACK报文

LSACK(Link State ACK)链路状态确认,用于对LSU报文内容进行确认。

回复LSACK可保障LSA传输的可靠性,不至于说发送LSU丢了也不知道。

不同链路状态下的LSACK报文发送方式不同,广播网络类型下的LSACK报文以组播发送。

LSACK报文简要介绍

在这里插入图片描述

OSPF的8种状态机与邻居邻接关系建立

OSPF在邻居与邻接建立的过程中会经过多个状态机的变化,状态机的出现不仅能让我们了解OSPF建立过程,也能在OSPF出现故障的时候通过状态机的状态来粗略判断问题的所在。

邻居建立过程

1、Down状态

启用了OSPF功能的链路默认成为down状态,并开始向外发送Hello报文(基于网络类型的不同发送方式也会不同,广播类型Hello为组播发送)

》报文发出之后,从Down状态转Init状态

值得注意的是OSPF的每条链路都会经历状态机,每条OSPF链路的状态机互不影响

【简:启用OSPF的链路从Down状态开始,向外发送Hello报文后转为Init状态】

2、Init状态

OSPF设备接收到对端的Hello报文后,将再发送一个Hello报文,并在其它附上对端的router-id。

在Init状态下的链路,如果接收到传来的Hello包中含有自己的router-id,则表示对端已经发现了自己,此时链路就能成为2-way状态了。

【简:收到Hello回复Hello并携带邻居的router-id,如果Init链路收到Hello中有自己设备的router-id则转为2-way状态】

3、Attempt状态(NBMA)

该状态仅发生在NBMA网络中,表明该链路在发送Hello报文之后,到达了失效时间(dead interval)仍然没有收到对端回复Hello报文。

处于该状态下的链路仍然会向对端发送Hello报文。

4、2-way状态

链路处于该状态下,表明邻居建立成功。

》其它链路类型在成为2-way之后,发送第一个空DD报文后,进入Exstart状态。
因为在其它网络类型中,DD报文通过单播发送,无法确认谁先发送DD报文,同时为了保障DD的可靠传递,需要进行选举主机设备
》如果链路为P2P类型,则直接进入Exchange状态进行交互DD报文
因为p2p类型链路所有报文交互都是组播,同时p2p是点到点网络,完全不需要担心LSA传递过程中丢失

在邻居建立过程中,为了提高OSPF网络收敛的速度。在广播网络中建立邻居时,需要同时进行DR与BDR的选举。(2-way建立之前或之后就已经选举出DR与BDR了)

选举DR与BDR主要为了解决同网络中,报文信息相互发送造成网络中流量过大的问题。通过选举DR与BDR实现流量的统一整理与发送,减少网络中的OSPF报文过多,同时提高收敛的速度。

DR与BDR的作用如图:

在这里插入图片描述

在这里插入图片描述

DR与BDR、DR-Other的关系:
  • 在一个广播网络中可以没有BDR,但必须存在一个DR设备。没有成为DR与BDR设备的其它OSPF设备称为DR-Other设备。
  • 每条MA/NBMA链路中,都会独立选举DR、BDR
  • BDR是DR备份,DR失效之后,BDR成为DR,同时也将重新选举新的BDR。
  • DR与BDR没有抢占性,当网络中出现新的更优先的路由器,也不会成为抢占现有网络中的DR身份。
  • 接口优先级为0将不参与选举,如果此时为DR/BDR将立马失效,成为DRother。

1、DR、BDR、DR-Other的邻居与邻接关系:

  • DR、BDR、DR-Other都能相互建立邻居关系,因为能够交互Hello报文。

  • 但建立邻接关系的只有DR、BDR、DR与DR-Other之间、BDR与DR-Other之间。

  • 因为在广播网络中OSPF规定DR-Other之间不能直接交互DD报文、LSR、LSU、LSACK报文,所以DR-Other之间无法建立邻接关系。

2、DR、BDR、DR-Other之间的报文交互

  • DR-Other交互路由信息时,通过组播地址224.0.0.6向DR与BDR发送路由信息。

  • DR、BDR收到224.0.0.6传来的报文时,通过组播地址224.0.0.5向所有的OSPF发送信息。

  • 如果DR-Other有路由更新的时候,DR-Other会向224.0.0.6发送LSU信息,再由DR向224.0.0.5发送LSU报文,通知所有的OSPF设备更新路由。

DR与BDR的选举流程:

1、优选广播域中接口优先级大的,默认接口优先级为1。

2、优先级相同,比较router-id,大的成为DR,次BDR、其它DRother。

注意:在配置OSPF的时候,第一台配置之后的40秒内,同一个广播域中如果没有遇到比自己更优先的设备,自己将成为DR,往后的其它设备将是这个广播网络中的BDR与DRother。

所以在配置OSPF的时候,先配置实际DR的设备,其它再配置BDR、DRother设备,这样能有效保障初始的正常选举。

当然也能通过reset ospf process的方式将的身份有误的OSPF设备进程注销,从而进行重新选举,但在实际环境中谨慎使用。

邻居建立过程(图片)

在这里插入图片描述

邻接建立过程

5、Exstart状态

OSPF为了保障LSA信息在传递过程中的可靠性,定义了OSPF主从身份(Master、Slave)。

OSPF为何设计如此复杂的交互机制?

1、OSPF基于IP层的协议,IP本身是一种不可靠、不安全的。

2、通过设置主从设备+序列号,让报文有序的进行交互,能有效提高OSPF传递报文的可靠性。

选举主从的方式通过OSPF的第一个空DD报文,比较router-id,router-id大的成为主。

选举主从(图片)

在这里插入图片描述

6、Exchange状态

如何通过DD报文确定主从身份?

在这里插入图片描述

主从设备在Exchange状态下的工作过程

(1)基于选出的主从,slave主动向master发送DD(LSA信息)报文描述本地LSDB数据库信息,此时报文序列号使用的是master的序列号

(2)masterr收到DD信息之后序列号递增并回复自己的DD报文(携带自己的链路状态信息)

(3)slavev收到master回复的DD时,需要回复确认信息,序列号为master的序列号(slave不可递增序列号值)

DD报文交互过程(图片)
  • 1、从设备主设备发送序列号为Y的DD报文,携带自己的设备路由简要信息。
    • 从设备发送的序列号Y为主设备的序列号,该序列号是在空DD报文主从选举时知道的。
  • 2、主设备从设备发送序列号为Y+1的DD报文,携带主设备路由简要信息。
    • 序列号+1,对从设备发来的DD报文进行确认。同时也是作为下一个从设备DD报文的序列号。
  • 3、从设备主设备发送序列号为Y+1的空DD报文,用于确认收到主设备的DD报文。
  • 仔细观察会发现与TCP协议报文交互相似,在给对端发送报文之后,对端会给予一个确认的回复报文。如此下来就能够有效提升OSPF报文交互的可靠性,这也就是主从机制的作用。

在这里插入图片描述

7、Loading状态

基于DD报文中的描述信息,OSPF设备按需求发出LSR与LSA、LSACK等报文。

LSR、LSU、LSA交互过程(图片)
  • A设备主要向B设备发起LSR请求详细的LSA信息。
  • B设备通过LSU回复A设备所需的详细LSA信息。
  • A设备收到LSU确认无误之后,回复B设备LSACK。
  • A设备与B设备在完成所有LSA交互之后,就能够进入Full状态了。
  • 这里不需要应用到主从了嘛?
  • 不需要,主从机制主要是在Exchange状态下保障DD报文的可靠传输。而在Loading状态下有LSACK保障可靠传输。

在这里插入图片描述

8、Full状态

该状态下表示链路LSA已经交互成功,邻接关系建立完成。

后继链路将定时发送Hello报文进行维持邻接关系,如果链路到达Dead死亡时间未能收到Hello报文,则邻接关系断开,成为Down状态重新进行建立。

Full状态下会将学习到的LSA信息加入到LSDB表中,通过SPF算法计算选举出最优的路由条目加入到路由表中。

OSPF的3种稳定状态

什么是稳定的状态即链路状态会长时间所处的状态机。

在OSPF状态机中,有三个稳定的状态机状态:Down、2-way、Full

Down:启用OSPF功能的链路默认所处状态机 或者 邻居失效后的状态。

2-way:在交互了Hello报文建立邻居之后所处的状态,DR-Other与DR-Other之间所处的状态。

Full:在邻接建立成功之后的状态,也是OSPF的最终状态。

邻居与邻接的关系

邻居是通过Hello报文发现了彼此,但没有交互LSA信息。

邻接是基于邻居的基础,交互了LSA信息,相互了解了对方的路由信息。

DR-Other与DR-Other之间可以通过Hello报文发现彼此,但不能直接进行交互LSA信息,需要通过广播网络中的DR设备进行统一的发送LSA。故DR-Other与DR-Other之间只会建立邻居,不会建立邻接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/234496.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FineBI实战项目一(7):每天每小时上架商品个数

1 明确数据分析目标 对所有商品的商家时间进行统计,统计每个小时上架商品的个数 2 创建用于保存数据分析结果的表 create table app_hour_goods(id int primary key auto_increment,daystr varchar(20),hourstr varchar(20),cnt int ); 3 编写SQL语句进行数据分析…

WPS或word中英文字母自动调整大小写,取消自动首字母大写,全部英文单词首字母大小写变换方法

提示:写英文论文时,如何实现英文字母大小写的自动切换,不用再傻傻的一个字母一个字母的编辑了,一篇文章搞定WPS与Word中字母大小写切换 文章目录 一、WPS英文单词大小写自动修改与首字母大写调整英文字母全部由大写变成小写 或 小…

论文阅读 Attention is all u need - transformer

文章目录 1 摘要1.1 核心 2 模型架构2.1 概览2.2 理解encoder-decoder架构2.2.1 对比seq2seq,RNN2.2.2 我的理解 3. Sublayer3.1 多头注意力 multi-head self-attention3.1.1 缩放点乘注意力 Scaled Dot-Product Attention3.1.2 QKV3.1.3 multi-head3.1.4 masked 3.…

蓝牙模块在智能城市中的关键角色

随着城市的不断发展,智能城市的概念正日益深入人心。在构建智能城市的过程中,蓝牙模块作为一种无线通信技术,发挥着重要的角色,连接和协调各种智能设备,提升城市的效率、可持续性和便利性。本文将深入探讨蓝牙模块在智…

React 入门 - 05(响应式与事件绑定)

本章内容 目录 一、响应式设计思想二、React 中的事件绑定 继上一节我们简单实现一个 TodoList来更加了解编写组件的一些细节。本节继续这个案例功能的完成。 一、响应式设计思想 1、在原生的 JS中,如果要实现点击”提交“按钮就将输入框的内容添加至页面列表中&…

对话惠买集团董事长兼CEO杜瑞勇:直播电商粗放时代结束,如何用AI+XR打造精细化的智慧直播生态?

“ 未来将是专业选手精细化运营的智慧直播时代。“ 整理 | 梦婕 编辑 | 渔舟 出品|极新&北京电子商务协会 直播电商在经过爆发式增长后,从业者不断涌入,竞争日趋激烈,行业发展必然将会进入到一个缓慢增长阶段。直播…

时间序列数据库选型: influxdb; netdiscover列出docker实例们的ip

influxdb influxdb: 有收费版本、有开源版本 influxdb 安装、启动(docker) docker run -itd --name influxdb-dev -p 8086:8086 influxdb #influxdb的web客户端(端口8003)被去掉了 #8006是web-service端口#docker exec -it influxdb-dev bashinfluxdb 自带web界面 从后面的…

Angular - 笔记

文章目录 语法属性绑定引用模板变量组件绑定父组件传子组件 input子组件传父组件 outputEventEmitter ViewChildViewChildren获取子组件对象列表 管道常用模块 参考文档 语法 属性绑定 Angular 的双向绑定语法是方括号和圆括号的组合 [()]。[] 进行属性绑定,() 进行…

phpcms v9后台添加草稿箱功能

一、后台添加文章模板phpcms/modules/content/templates/content_add.tpl.php中94行增加”保存草稿“按钮&#xff1a; <div class"button"><input value"<?php echo L(save_draft);?>" type"submit" name"dosubmit_draf…

PostGIS教程学习十九:基于索引的聚簇

PostGIS教程学习十九&#xff1a;基于索引的聚簇 数据库只能以从磁盘获取信息的速度检索信息。小型数据库将完全位于于RAM缓存&#xff08;内存&#xff09;&#xff0c;并摆脱物理磁盘访问速度慢的限制。但是对于大型数据库&#xff0c;对物理磁盘的访问将限制数据库的信息检…

DataFrame详解

清洗相关的API 清洗相关的API: 1.去重API: dropDupilcates 2.删除缺失值API: dropna 3.替换缺失值API: fillna 去重API: dropDupilcates dropDuplicates(subset):删除重复数据 1.用来删除重复数据,如果没有指定参数subset,比对行中所有字段内容,如果全部相同,则认为是重复数据,…

学习笔记之——3D Gaussian Splatting及其在SLAM与自动驾驶上的应用调研

之前博客介绍了NeRF-SLAM&#xff0c;其中对于3D Gaussian Splatting没有太深入介绍。本博文对3D Gaussian Splatting相关的一些工作做调研。 学习笔记之——NeRF SLAM&#xff08;基于神经辐射场的SLAM&#xff09;-CSDN博客文章浏览阅读967次&#xff0c;点赞22次&#xff0…

Java中的输入输出处理(一)

文件 文件&#xff1a;文件是放在一起的数据的集合。比如1.TXT。 存储地方&#xff1a;文件一般存储在硬盘&#xff0c;CD里比如D盘 如何访问文件属性&#xff1a;我们可以通过java.io.File类对其处理 File类 常用方法&#xff1a; 方法名称说明boolean exists()判断文件或目…

LiveGBS流媒体平台GB/T28181常见问题-国标编号是什么设备编号和通道国标编号标记唯一的摄像头|视频|镜头通道

LiveGBS国标GB28181中国标编号是什么设备编号和通道国标编号标记唯一的摄像头|视频|镜头通道 1、什么是国标编号&#xff1f;2、国标设备ID和通道ID3、ID 统一编码规则4、搭建GB28181视频直播平台 1、什么是国标编号&#xff1f; 国标GB28181对接过程中&#xff0c;可能有的小…

安科瑞对电子半导体行业电能质量监测与治理系统解决方案——安科瑞赵嘉敏

摘要&#xff1a;在国家鼓励半导体材料国产化的政策导向下&#xff0c;本土半导体材料厂商不断提升半导体产品技术水平和研发能力&#xff0c;逐渐打破了国外半导体厂商的垄断格局半导体材料国产化进程&#xff0c;促进中国半导体行业的发展。半导体产品的制造使用到的设备如单…

c++|关键字extern

一个C语言项目往往由多个文件组合而成。而对于多个文件来说&#xff0c;它们可能会共用到一些相同的变量。而有些情况下&#xff0c;这些相同的变量并没有出现在本文件内&#xff0c;有可能在其他文件内。而一个文件可能只会搜寻该文件内部是否有该变量。 所以&#xff0c;需要…

ROS学习笔记(9)进一步深入了解ROS第三步

0.前提 1. (C)Why did you include the header file of the message file instead of the message file itself?&#xff08;为包含消息的头文件而不是消息本身&#xff1f;&#xff09; 回答&#xff1a;msg文件是描述ROS消息字段的文本文件&#xff0c;用于生成不同语言消息…

NX二次开发 Block UI 指定方位控件的应用

一、概述 NX二次开发中一般都是多个控件的组合&#xff0c;这里我首先对指定方位控件进行说明并结合选择对象控件&#xff0c;具体如下图所示。 二、实现功能获取方位其在选择面上原点的目标 2.1 在initialize_cb()函数中进行初始化&#xff0c;实现对象选择过滤面 //过滤平…

回归预测 | Matlab实现DE-BP差分算法优化BP神经网络多变量回归预测

回归预测 | Matlab实现DE-BP差分算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现DE-BP差分算法优化BP神经网络多变量回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现DE-BP差分算法优化BP神经网络多变量回归预测&#xff08;完整源码和…

计算机组成原理19——控制单元的功能和实现1

本系列文章是学习了网课《哈尔滨工业大学–计算机组成原理》之后&#xff0c;用以梳理思路而整理的听课笔记及相关思维拓展。本文涉及到的观点均为个人观点&#xff0c;如有不同意见&#xff0c;欢迎在评论区讨论。 目录 四种周期下的微操作命令取指周期间址周期执行周期非访存…