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

这篇具有很好参考价值的文章主要介绍了关于OSPF的五种报文类型介绍、OSPF八种状态机变化与报文交互介绍。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

OSPF的5种报文

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

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

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

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

Hello报文

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

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

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

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

报文字段简介

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

DD/DBD报文

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

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

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

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

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

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

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

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

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

LSR报文

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

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

LSR报文简介

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

LSU报文

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

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

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

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

LSU报文简要介绍

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

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

LSACK报文

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

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

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

LSACK报文简要介绍

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

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的作用如图:

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

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

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设备进程注销,从而进行重新选举,但在实际环境中谨慎使用。

邻居建立过程(图片)

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

邻接建立过程

5、Exstart状态

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

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

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

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

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

选举主从(图片)

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

6、Exchange状态

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

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

主从设备在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报文交互的可靠性,这也就是主从机制的作用。

关于OSPF的五种报文类型介绍、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保障可靠传输。

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

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之间只会建立邻居,不会建立邻接。文章来源地址https://www.toymoban.com/news/detail-473117.html

到了这里,关于关于OSPF的五种报文类型介绍、OSPF八种状态机变化与报文交互介绍。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 深入了解Linux中常见的五种文件类型

    了解文件类型对于正确理解和管理文件系统非常重要。希望本文能够帮助您更好地了解Linux中常见的文件类型及其在ls -l命令输出中的表示方式。​ 在Linux操作系统中,文件是操作系统中最基本的概念之一。在Linux中,每个文件都有一个特定的类型,这决定了系统如何处理和解

    2024年01月23日
    浏览(30)
  • 【分享】Redis的五种基本数据类型和应用场景

    Redis支持五种基本数据类型: String(字符串类型):可以是普通字符串,也可以是整数或浮点数值。可以设置过期时间;可以对字符串进行append、get、set、incr、decr等操作。 Hash(哈希类型):类似于一个数组,其中每个元素都是一个field和value的键值对。可以对整个哈希表或

    2024年02月16日
    浏览(32)
  • Redis的五种数据类型(string、hash 、list、set、zset)

                     Redis 提供了丰富的数据类型,常见的有五种: String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合) 。         String 是最基本的 key-value 结构,key 是唯一标识,value 是具体的值,value其实不仅是字符串, 也可以是数字(整

    2024年01月25日
    浏览(43)
  • 介绍我的mac上的五种GPT使用方式

    数了一下,现在我的mac上已经有5种可以使用GPT对话的工具了。 - openai官网 - new bing官网 - chat mac桌面 - app goland gpt插件 - 控制台工具 openai的官网就是最正常的入口,就是正常的登录访问。 new bing是微软推出的,虽然听说有的人很难排队,但是昨天我用日本的vpn排队基本秒过。

    2023年04月08日
    浏览(32)
  • 初识RabbitMQ(RMQ的五种消息模型介绍以及使用演示)

    RabbitMQ官方提供了5个不同的Demo示例,对应了不同的消息模型: 简单队列 Work模式 广播模式 路由模式 主题模式 其实我比较喜欢将他们分成三类: 1.简单队列:一个生产者,一个消费者。(名师指导,1V1) 2.Work模式:一个生产者,多个消费者。但是一条消息只能够给到一个人

    2023年04月08日
    浏览(33)
  • OSPF基础(二):OSPF区域、router-ID、度量值、修改度量值的方法、OSPF协议报文类型、OSPF邻接关系建立过程

    目录 OSPF术语:区域 OSPF术语:router-ID OSPF的基础术语:度量值 修改开销值的方法: 为什么要修改开销值,修改开销值的作用是什么: OSPF协议报文类型: OSPF三大表项 - 邻居表 OSPF常用的查看命令: 查看路由器邻居关系: 查看路由器链路状态数据库LSDB: 查看OSPF路由表: OSP

    2023年04月14日
    浏览(42)
  • redis五种数据类型介绍

    、string(字符串)     它师最基本的类型,可以理解为Memcached一模一样的类型,一个key对应一个value。   注意:一个键最大能存储 512MB。   特性:可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M   2、Hash(哈希)   Redis hash 是一个键值(key=value)对集合。

    2024年02月14日
    浏览(36)
  • redis 的基本介绍以及 五种 数据类型

    一句话:redis 是一个开源的、使用C语言编写的、支持网络交互,基于内存也可持久化的 key-value (非关系型)数据库 redis作者博客,有兴趣的小伙伴可以去逛一逛:http://github.com/antirez 关于key 的命名,不要太长也不要太短,Key太长越占资源,太短可读性又很差,key 之间的单词

    2024年02月11日
    浏览(40)
  • 数组求和的五种方法

    // 数组求和的方法 let arr = [1,2,3,4,5] // 方法一:递归 function sum(arr){ const len = arr.length; if(len === 0) { return 0; } else if(len === 1){ return arr[0]; } else { return arr[0] + sum(arr.slice(1)); } } // 方法二:循环 function sum(arr) { let s = 0; for(let i=0; iarr.length; i++){ s += arr[i] } return s; } // 方法三:map-reduce

    2024年02月10日
    浏览(38)
  • Linux的五种IO模型

    众所周知,出于对 OS 安全性的考虑,用户进程是不能直接操作 I/O 设备的。必须通过系统调用请求操作系统内核来协助完成 I/O 动作。 下图展示了 Linux I/O 的过程。 操作系统内核收到用户进程发起的请求后,从 I/O 设备读取数据到 kernel buffer 中,再将 buffer 中的数据拷贝到用户

    2024年02月04日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包