0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OSPF邻居状态机的详细讲解

电子设计 ? 来源:电子设计 ? 作者:电子设计 ? 2020-12-26 02:12 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1、背景

我们都知道,任何新技术的诞生,都是有它一定的自然规律的。绝逼不是凭白无故的产生。所以,龙哥希望大家学习一个技术时,学会多关联相关协议,联想他们各自的特点,学会把知识串联起来,这样你就不会觉得学技术好难啊,就不会总是跟龙哥抱怨:总是记不住怎么办呢?

会有链路状态协议的OSPF产生,是因为前面距离矢量路由协议存在两个非常严重的问题:

1、收敛速度缓慢,就是太磨叽了;2、容易产生路由环路。

OSPF,全称Open Shortest Path First,即开放最短路径优先,是由IETF的OSPF工作组在1989年10月开发的,发表的RFC为1131, OSPFv1从此诞生,该协议是基于著名的DijKstra算法。不过版本1一直都是在实验室中使用,未推广成功。版本2才开始被广泛使用,在RFC2328说明。

注:IETF:国际互联网工程任务组(The Internet Engineering Task Force,简称 IETF。1985年年底成立。

2、LSDB

LSDB,全称是Link State DataBase,链路状态数据库。为啥会有它呢?还不是因为距离矢量路由协议RIP,是个“传言”路由协议,在距离矢量路由协议中,邻居说有啥路由,你就信啥,你心中自己都没有一张地图,就很容易经常被骗,所以会导致环路。所以OSPF干脆就给区域内每台路由器都搞一张地图,这样就不会上当受骗了,这个地图就是LSDB,这样就使得OSPF可以保证区域内无环,区域间无环,通过一些规则来限制,这样区域内外都能保证无环。下面,简单介绍一下:

简单说明一些,区域内路由器一旦配置了OSPF,每台路由器就会开始泛洪LSA(包含IP地址、掩码、开销、网络类型等信息),每台都能收到LSA,会构建一张数据库,即LSDB。然后每台路由器都会以自己为根节点,构建一颗最短路径树,然后从这棵树中计算路由,将最优的放进路由表,用于指导业务数据转发。

可能上图小白看着会觉得有点抽象,很难受。行吧,那龙哥动手搭个环境,联系实际场景,可能就会更好理解了。

现在我登录到每台设备给大家演示一下如何查看LSDB(链路状态数据库):

从以上截图来看,相信大家应该发现一个现象了,那就是每台路由器的LSDB是一样的,说明区域内每台路由器的“地图”都是长一个样的。

然后我再每台路由器都创建loopback 0,都宣告到OSPF,目的是验证计算路由。不然上述环境,直连路由优先OSPF路由,所以查看路由表是不会看到OSPF路由的。

创建后随便登录一台路由器就可以了(因为每台路由器LSB都是一样的),去查看1类LSA(1类LSA每台路由器都会产生的)

然后我们在R1查看路由表中的OSPF路由:

我们可以看到只有2条OSPF路由,10.10.10.10没有在里面,是因为它不是最优的,因为它是直连路由,直连路由(优先级0)比OSPF(优先级10)优。

3、报文类型

不管你学什么协议,都绕不开学习报文。报文,就是协议之间互相交付的数据内容。

OSPF在层次模型中,是基于IP层之上的,协议号是89。

上图看完,我们是不是就可以定位出OSPF其实也是跟TCP、UDP同一传输层级别的协议了。

现在,是不是明白了,为啥OSPF报文需要LSAck了吧? 因为OSPF不是基于TCP,TCP有确认机制,所以OSPF如果要确认机制,就需要开发一个报文类型,用来做确认,即LSAck。

现在,我们来总结一下OSPF的报文类型有:

Hello报文:用于发现、建立、维护邻居关系。

DBD报文:链路状态数据库的目录,即摘要信息。

LSR报文:发现自己缺少哪些摘要信息的,就去请求缺少的LSA。

LSU报文:完整的LSA信息。

LSAck报文:确认收到LSA。

本期主题龙哥于大家分享的是OSPF邻居状态机,所以重点介绍一下OSPF的Hello报文。

有些人遇到OSPF邻居不能建立成功,总是不知所措;或者有些考试应付考试,来问龙哥,影响OSPF邻居建立因素好几条,总是记不住怎么办呀?其实,这个问题很简单,就是你没有把Hello报文格式内容给了解透彻。

你细品Hello报文,再去看影响OSPF邻居建立的因素,就清晰多了:(1)router id(2)area id(虚链路的area id可以不一致,什么意思)(3)认证(4)hello/dead(5)区域类型(option位,e=1、n=0为普通/骨干区域,e=0、n=0为stub区域,e=0、n=1为nssa区域)(6)接口的地址掩码(ma网络,LSA2的掩码描述接口的掩码,如果掩码不一致会认为有两台DR,p2p没有问题)不在hello包(7)接口mtu(邻接关系出问题)(8)ospf进程下静默

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    7264

    浏览量

    92404
  • OSPF
    +关注

    关注

    0

    文章

    81

    浏览量

    15275
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    请问如何在FX10上使用GPIF III状态机 *.h 文件?

    LVCMOS 2 位 SlaveFIFO GPIF III 状态机的演示中有一个 cy_gpif_header_lvcmos.h 文件。 我想知道如何使用.h文件,只需放入.h文件放入 FX10 项目? 您有它的用户指南文档吗?
    发表于 07-16 08:17

    NVMe高速传输之摆脱XDMA设计之十:NVMe初始化状态机设计

    1为NVMe配置初始化状态机状态转移图。各状态的说明如下: 图1NVMe初始化状态转移图 IDLE:空闲状态,复位后的初始
    发表于 07-05 22:03

    NVMe高速传输之摆脱XDMA设计之八:PCIe初始化状态机设计

    PCIe配置初始化状态机实现PCIe设备枚举和配置空间初始化过程,在完成链路训练后,使用DFS(深度优先搜索)算法枚举PCIe总线上的设备,完成PCIe总线域的地址分配和设备的初始化。PCIe配置
    发表于 07-05 22:00

    有可能在 FX3 GPIF2 中创建两个独立的状态机吗?

    我想,如果我想通过 FX3 GPIF2 创建两个独立的传输流接口,我需要在 GPIF2 设计器中创建两个独立的状态机,我是否有可能在 GPIF2 设计器中创建两个独立的状态机
    发表于 05-20 06:14

    cypress3014视频格式改变的话,GPIF状态机需不需要重新配置?

    你好,请问视频格式改变的话,GPIF状态机需不需要重新配置
    发表于 05-14 07:28

    求助,关于srammaster.cydsn中状态机的问题求解

    晚上好。 我目前正在学习 GPIF II。 查看..EZ-USB FX3 SDK1.3firmwaregpif_examplescyfxsrammastersrammaster.cydsn中的状态机,有状态START和START1。 这意味着什么?
    发表于 05-12 06:20

    高速ssd存储系统中数据缓存控制器流程控制设计

    高速SSD系统中流程控制模块设计。该模块主要由寄存器、读状态机、写状态机和命令生成模块组成,系统介绍各模块功能。
    的头像 发表于 04-14 10:43 ?341次阅读
    高速ssd存储系统中数据缓存控制器流程控制设计

    何时选择OSPF作为路由协议

    在构建网络时,选择合适的路由协议对于确保网络的高效性和稳定性至关重要。OSPF(开放最短路径优先)是一种广泛使用的内部网关协议,特别适合于大型、复杂或多路径的网络环境。本文将探讨何时选择OSPF作为路由协议,并分析其优势和其他路由协议的对比。
    的头像 发表于 03-18 09:14 ?672次阅读
    何时选择<b class='flag-5'>OSPF</b>作为路由协议

    L298电机驱动模块的详细讲解

    电动小车的组成 ? 一个电动小车整体的运行性能,首先 取决于它的电源模块和电机驱动模块。 ? 电机驱动模块主要功能:驱动小车轮子 转动,使小车行进。 ? 电源模块:顾名思义,就是为整个系统 提供动力支持的部分 下载PDF文档了解L298电机驱动模块详细讲解
    发表于 02-26 15:53

    Simulink中的状态机建模方法 Simulink数据可视化与分析功能

    1. Simulink中的状态机建模方法 1.1 理解状态机的基本概念 在开始建模之前,了解状态机的基本概念是必要的。状态机由以下几个部分组成:
    的头像 发表于 12-12 09:27 ?3271次阅读

    芯片封装工艺详细讲解

    芯片封装工艺详细讲解
    发表于 11-29 14:02 ?2次下载

    基于状态机和面向对象的思想设计按键检测模块

    嵌入式入门学习的教程里面,按键原理普遍被认为是“很简单”的知识点之一,按键输入检测的原理,无非就是通过CPU不断扫描按键引脚的电平状态,或者采用单片引脚外部中断方式,然后在死循环或者中断服务程序里面处理按键被按下
    的头像 发表于 11-14 11:44 ?1070次阅读
    基于<b class='flag-5'>状态机</b>和面向对象的思想设计按键检测模块

    什么是开放最短路径优先 (OSPF)?

    OSPF是一种典型的链路状态路由协议,一般在同一个路由域中使用。这里的路由域指的是一个自治系统(AS),是指一组通过统一的路由策略或协议相互交换路由信息的网络。
    的头像 发表于 10-18 17:47 ?628次阅读

    电感技术的讲解

    详细讲解电感的原理及计算
    的头像 发表于 09-06 02:07 ?3034次阅读
    电感技术的<b class='flag-5'>讲解</b>

    第12章-ADC采集电压和显示 基于STM32的ADC—电压采集(详细讲解+HAL库)

    第12章-ADC采集电压和显示 基于STM32的ADC—电压采集(详细讲解+HAL库)
    的头像 发表于 08-21 16:31 ?5566次阅读
    第12章-ADC采集电压和显示 基于STM32的ADC—电压采集(<b class='flag-5'>详细</b><b class='flag-5'>讲解</b>+HAL库)