最通俗易懂的OSPF五种报文+七种状态

这篇具有很好参考价值的文章主要介绍了最通俗易懂的OSPF五种报文+七种状态。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

OSPF是什么?

OSPF,Open Shortest Path First,一种链路状态路由协议,更是一种内部网关协议(如下图),封装在IP报文中,协议号为89。简单的理解,部署了该协议的网络会周期性收集拓扑和路由的所有信息,然后计算出到达目的网段的最短路径,并且通过周期更新机制实时监控网络的变化。

    按区域自治与否,可分为:IGP(AS内部)、EGP(AS与AS之间)
    按路由算法,可分为:
    ①链路状态路由协议
    ②距离矢量路由协议

    IGP:工作在AS内,周期更新,收集运行了该协议的路由信息并实时监控网络的变化(如OSPF、ISIS、RIP);
    EGP:工作在AS之间,不存在周期更新,存在触发更新,主要用于传递和选择AS间的路由(如BGP);

动态路由协议的一般应用

    无环路
    类似于STP生成树协议,每一个OSPF区域(每一朵“云”)相当于一个树干的枝杈,不会构成环路。

    收敛快
    这是作为动态路由所特有的特点,每当链路/设备出现故障时,该部署了OSPF的区域会动态的扫描并感知到链路状态异常,从而进行拓扑的链路的更新。

    扩展性好
    可以划分为多个OSPF区域,就像树干可以长出多个枝杈一样。

    支持认证
    认证,是为了提高网络通信的安全性,OSPF区域下所有设备接口之间的相互认可的一种口令/密钥方式。就像直播房间平台下,你输入对应的密码/房间号才可以进去一样。

OSPF的五种报文,你知道哪几个?

(1)Hello报文:发现、协商、维护(周期发送)OSPF邻居;
关于邻居的发现,有两种方式:
①自动发现:通过发送目的IP地址为224.0.0.5;
②手工指定(NBMA)

    那两者如何才能成功建立邻居(两者如何通过hello报文协商“邻居的建立”)
    通过查看ospf报文的头部,我们可以知道影响OSPF邻居建立的因素:
    ①version必须要一致;
    ②router id不能一致;
    ③area ID要一致;
    ④authentication-mode要一致,password也要一致;
    ⑤netmask要一致(广播、NBMA网络中有这一要求的);
    ⑥hello/dead time要一致;
    ⑦option字段的N bit和E bit要一致;

N位/E位    代表的功能区域
N=0,E=0    代表stub区域(末节区域)
N=0,E=1    代表普通区域
N=1,E=0    代表NSSA区域 (Not so 末节区域)

    N=1,代表支持7类LSA
    E=1 ,代表支持5类LSA

(2)DD(Database Description)报文:数据库描述报文,携带LSA的摘要(就像快递单号,仅仅是对快递具体内容的简单描述标识而已);

    注意:DD报文携带的LSA摘要有什么字段?

    答:link state type、link state id、advertiser(简称ADV)。

(3)LSR(link state request)报文:请求本设备缺少的LSA信息(很容易理解,请求的东西一般是自己没有的),通过携带本设备所缺少的LSA的摘要信息来实现请求;

(4)LSU(link state update)报文:携带LSA信息的报文。(类似于报刊会按照你订阅所需要看、但又还没有收到的报纸的单号进行递送)

    ①收到了LSR请求报文后,LSU会进行回复;
    ②默认情况下,LSU报文会周期为1800s动态更新,dead time为3600s;
    ③当网络发生变化时,也会发送出LSU更新链路状态(触发更新);

(5)LSACK(link state ACK)报文:用来确认收到了LSU的报文,携带了LSA的详细信息(而不仅是LSA摘要了);(快递员给你送完东西,这时候快递员会验收确认,我们这边也要验货看看有无缺损、符不符合当初买的标准和实际的需求)

    PS:LS Ack报文携带的仅是LSA的摘要并不会携带完整的LSA,跟DD报文类似。


那OSPF协议是怎么通过这几个报文运作?

下图很好地描述了其运作的流程:
OSPF报文-简单时序图

上图粗略的描述了ospf路由协议是怎么通过报文运作的。但我还是墙裂建议各位亲自抓取OSPF报文来分析,理解会更深一点。

OSPF状态机是如何运作的啊?

1、down:刚开机时,随即发送第一个hello报文的状态。

2、init:发送了第一个hello报文后,等待收到对方发来hello报文的状态。

        attempt:跟init状态类似,但它只用于NBMA接口网络类型之中

3、2-way:双向连接,收到了邻居发来的hello报文(其中携带一些信息说明本设备为邻居的route id等),在这个状态里完成DR和BDR的选举。

    PS:
    DR(Designated Router),指定路由器
    BDR(Backup Designated Router),备份指定路由器

4、exstart:双方开始交换‘空’的DD报文,通过DD报文中序号等摘要信息协商并选举出主从设备。

    为什么要选举主从设备?
    选举主从设备用于确定由哪台路由器开始发送DBD包。
    由于ospf主要是建立在IP数据包的基础上,所以没有tcp报文的可靠传输保证,所以需要建立主从关系保证DBD数据库描述信息可靠交互。虽然主从选举表面只是一种关系选举,实际上是一种可靠更新机制,保证数据传输有序、可靠。

    其中主从关系选举与优先级无关,只与Router-ID 有关

        router id较大的设备(比如选举出的主设备),不一定是DR

5、exchange:双方交换携带了LSA摘要DD报文,用于同步LSDB(可以说双方各自存储着自己的LSA报文数据库即LSDB)。

6、loading:用于加载exchange交换之后各自缺少的LSA报文。(此过程会发送LSR、LSU、LSAck报文)

7、**full:**同步LSDB完成。(此过程拓扑链路发生变化会发送HELLO、DD报文、LSR、LSU、LSAck报文,以进行动态刷新LSDB)

下面演示七种状态通过OSPF协议如何运作的一个状态机制:

OSPF--状态机

下图进一步的描述了OSPF协议的状态机大致运作流程。 最通俗易懂的OSPF五种报文+七种状态
如果OSPF进程停留在某个状态,问题出至哪里呢?

答:
停留在init状态:存在流量过滤,或链路存在单点故障
停留在2-way状态:DR/BDR选举卡住了,通常是路由器中双方或某一方弃权了导致选举不成功(优先级为0时代表弃权)

停留在exstart、exchange、loading状态:通常是本端接口的MTU与对端接口的MRU不一致,本端发送的报文过大,对端接收不过来;(但注意两设备互联接口的MTU不匹配,华为默认不检查的)

那OSPF链路状态(拓扑)发生改变时怎么办?

答:OSPF是链路状态路由协议,当链路状态(拓扑)发生变化时会执行触发更新机制,即:当链路状态发生改变时,运行OSPF的设备就会泛洪发出链路更新报文(LSU),如此很快地就告知给了所有相邻的路由器,然后通过比对链路数据库(LSDB)与路由表(Routing table),找出拓扑变化的部分,进而更新LSDB。

搞懂邻居关系、邻接关系及其区别

1、邻居关系?邻接关系?
邻居关系:邻居之间只能发送hello报文;
邻接关系:OSPF的五种报文都可以发送;

2、DR、BDR、DR other

    在这之前我们先明白**DR、BDR、DR other是什么角色?**

    DR:相当于一个班级(广播网络)里被选举出来的正班长。
    BDR:相当于一个班级里选举出来的的副班长。
    DR other:该班级学生里面除了上面的正班长、副班长之外的“臣子”了。

3、邻居关系和邻接关系区别?
理解了DR、BDR 和 DR other所扮演的角色,我们可以这样认为:邻居关系是简单的隔壁关系,邻接关系是更深层次的友好关系。

    DR/BDR与DR other之间是邻接关系;(班长/副班长与班级同学肯定友好啦)
    BDR与DR之间是邻接关系;(副班长与班长肯定友好啦)
    DR other与DR other之间邻居关系;(同学和同学就是毗邻而已,关系不一定友好)
 文章来源地址https://www.toymoban.com/news/detail-502142.html

到了这里,关于最通俗易懂的OSPF五种报文+七种状态的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 通俗易懂:什么是拉链表

    拉链表是数据仓库中一种重要的模型,相信很多数据工作者都接触过,面试也是经常考察的点。 但是很多人第一次接触“拉链表”这个词,难免会产生疑惑:拉链表是什么? 按照度娘的解释:“拉链表是一种针对数据仓库设计中表存储数据的方式而定义的数据模型,它有点

    2024年02月08日
    浏览(40)
  • 通俗易懂声学基础

    声音是由振动产生的,当物体振动时,会引起周围空气的波动,导致空气粒子间的距离发生疏密的变化,从而引发空气压强的变化,这种变化会传到人的耳膜,再传到人的大脑,人就听到声音了。 物理上,声音有四个基本特性:音色、音强、音高、音长。其中音色为音段特征

    2023年04月24日
    浏览(48)
  • 通俗易懂的TextCNN

      了解TextCNN,看这一篇就够了。   我们之前提到CNN时,通常会认为属于CV领域,是用于解决计算机视觉方向问题的模型,但是在2014年,Yoon Kim针对CNN的输入层做了一些变形,提出了文本分类模型TextCNN。与传统图像的CNN网络相比,TextCNN 在网络结构上没有任何变化(甚至更

    2024年02月06日
    浏览(41)
  • C 递归 详解(通俗易懂)

    目录 一、定义         1.概述         2.条件         3.比较 二、 如何理解递归?         1.函数调用其他函数示例 :          2.函数调用函数自身示例 :          3.函数调用自身的底层操作 :                  ①在主调函数调用被调函数之前——              

    2024年02月05日
    浏览(39)
  • Zookeeper选举机制(通俗易懂)

    SID: 服务器ID。用来唯一标识一台ZooKeeper集群中的机器,每台机器不能重复,和myid一致。 ZXID: 事务ID。ZXID是一个事务ID,用来标识一次服务器状态的变更。在某一时刻,集群中的每台机器的ZXID值不一定完全一致,这和 ZooKeeper服务器对于客户端“更新请求”的处理逻辑有关

    2024年01月22日
    浏览(44)
  • Java反射(通俗易懂)

    目录 1、反射介绍 2、反射API 2.1 获取类对应的字节码的对象(三种) 2.2 常用方法 3、反射的应用 3.1 创建 : 测试物料类 3.2 获取类对象 3.3 获取成员变量 3.4 通过字节码对象获取类的成员方法 3.5 通过字节码对象获取类的构造方法 4、创建对象         Reflection(反射) 是 Java

    2024年02月03日
    浏览(42)
  • 小白入门区块链(通俗易懂)

    区块链基础入门 什么是区块链 科技层面解释 数学,密码学,互联网,计算机编程 官方解释 区块链是一个分布式的共享账本和数据库,具有去中心化,不可篡改,全程留痕,可以追溯,集体维护,公开通明的特点分布式数字账簿,加密技术,不可篡改,通证(一种以数字形

    2024年02月08日
    浏览(44)
  • 简述马尔可夫链【通俗易懂】

    马尔可夫链(Markov Chain)可以说是机器学习和人工智能的基石,在强化学习、自然语言处理、金融领域、天气预测、语音识别方面都有着极其广泛的应用 The future is independent of the past given the present 未来独立于过去,只基于当下。 这句人生哲理的话也代表了马尔科夫链的思想:

    2023年04月08日
    浏览(40)
  • 【C++】继承(通俗易懂,超级详细)

      本篇文章会对c++中的继承进行讲解。其中讲解了 继承的概念及定义、基类和派生类对象赋值转换、继承中的作用域 、 派生类的默认成员函数 和 复杂的菱形继承及菱形虚拟继承等内容。 希望本篇文章会对你有所帮助。 文章目录 一、继承的概念及定义 1、1 继承的概念 1、

    2024年02月16日
    浏览(35)
  • 通俗易懂的GPT原理简介

            GPT是自然语言处理领域中最受欢迎的模型之一。GPT全称为Generative Pre-trained Transformer,是一种基于Transformer模型的预训练语言模型。在接下来的文章中,我们将详细介绍GPT的原理。         在了解GPT原理之前,需要了解以下一些基础知识: 1.自然语言处理:自然语言处

    2024年02月05日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包