OSPF---开放式最短路径优先协议

news2024/11/24 6:03:24

1. OSPF描述

          OSPF协议是一种链路状态协议。每个路由器负责发现、维护与邻居的关系,并将已知的邻居列表和链路费用LSU报文描述,通过可靠的泛洪与自治系统AS内的其他路由器周期性交互,学习到整个自治系统的网络拓扑结构;并通过自治系统边界的路由器注入其他AS的路由信息,从而得到整个Internet的路由信息。每隔一个特定时间或当链路状态发生变化时,重新生成LSA,路由器通过泛洪机制将新LSA通告出去,以便实现路由的实时更新

          这样,每台路由器都收到了自制系统中所有路由器生成的LSA,这些LSA的集合组成了LSDB(链路状态数据库),这样所有的OSPF路由器都维护一个相同的描述自治系统内部结构的数据库。

1.1基本概念

  • 协议使用范围----IGP
  • 链路状态型协议----传递拓扑
  • 传递真实掩码信息----无类别路由协议
  • OSPF版本
    • OSPFv1
    • OSPFv2----IPv4
    • OSPFv3----IPv6
  • 使用SPF算法
  • OSPF传递的是LSA信息(链路状态通告)
  • OSPF更新方式
    • 触发更新
    • 周期链路状态刷新-----30min
  • OSPF更新地址---组播
    • 224.0.0.5/224.0.0.6
  • OSPF开销值===参考带宽/实际带宽(参考带宽默认为100Mbps)
  • OSPF进行跨层封装----基于IP协议进行封装,协议号89

1.2 优点

  • 支持在多条等代价路由之间的负载均衡;
  • 支持路由信息交换的认证;
  • 可用作大型自治系统的内部路由协议。
  • OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环路
  • OSPF不限制网络规模,更新效率高,收敛速度快

2.OSPF数据包

  •  hello报文
    • 用来周期性发现、建立、保活OSPF邻居关系。
    • hello time:10S发送一次hello报文,来确认邻居的存在
    • 如果一个dead time时间没有收到邻居发送给自己的hello报文,则认为邻居不存在
    • time一般为hello时间的四倍,默认情况下为40S。
    • Router-ID------RID
      • 全域唯一,标识路由器的身份
      • 使用IP地址的表示形式
        • 配置方式:
          • 1、手工配置:满足上面两条规则即可。
            2、自动配置:路由器默认优选最大环回IP地址,没有环回则选择最大物理IP地址。
            注意:
                   启动OSPF进程前,必须有接口IP地址。若有,则在第一次启动OSPF进程时,选择第一个配置的IP地址作为RID值。
          • 在思科中,若没有IP,则OSPF启动失败。在华为中,RID会设定为0.0.0.0。
          • 华为逻辑:在第一次启动设备时,选择第一个UP的接口的IP作为全局RID。之后按照国际标准执行。
  • DBD报文
    • 数据库描述报文
    • 携带路径信息的摘要信息----为了避免重复更新和减少更新量。
  • LSR报文
    • 链路状态请求报文
    • 根据DBD中的信息,请求获取未知的链路信息(LSA信息)
  • LSU报文
    • 链路状态更新报文
    • 携带有真正的LSA信息的数据包
  • LSAck报文
    • 链路状态确认报文

3.OSPF七种邻居状态机

  • OSPF七种状态机
  • down----关闭状态-----一旦启动了OSPF协议,则发出hello报文,进入下一状态
  • init-----初始化状态----当收到的hello报文中,存在本地RID值时,进入下一状态
  • 2-way-----双向通讯状态-----------邻居关系建立的标志。
    • 条件匹配:匹配成功则进入下一阶段,失败则停留在邻居关系。
  • exstart----预启动状态-----使用未携带信息的DBD报文进行主从关系选举,RID大的为主
  • exchange-----准交换----使用携带目录信息的DBD包进行目录共享
  • loading-----加载状态-----邻居间使用LSR/LSU/LSACK三种报文来获取完整的拓扑信息
  • full----转发状态----拓扑信息交换完成后进入该状态-----邻接关系建立的标志。

 3.1条件匹配

  • 设备接口角色
    • 指定路由器------DR
    • 备份指定路由器-----BDR
    • 其他路由器----DRother
  • 角色之间的关系
    • DR与BDR----邻接
    • DR与DRother---邻接
    • BDR与DRother---邻接
    • DRother与DRother----邻居
  • OSPF条件匹配的情况
    • 在以太网网络中-----必须进行条件匹配
    • 在点到点网络中-----不需要进行条件匹配
  • 选举规则
    • 1. 优先级,默认为1,0-255,越大越优
    • 2. RID,越大越优
  • 选举范围
    • 一个广播域,进行一次条件匹配。
    • 条件匹配是属于非抢占模式-----一旦选举成功,不会因为新加入的设备而重新选举。

 4.OSPF七种接口状态机

  • Down:接口的初始状态。表明此时接口不可用,不能用于收发流量。
  • Loopback:设备到网络的接口处于环回状态。环回接口不能用于正常的数据传输,但可以通过Router-LSA进行通告。因此,进行连通性测试时能够发现到达这个接口的路径。
  • Waiting:设备正在判定网络上的DR和BDR。在设备参与DR和BDR选举前,接口上会启动Waiting定时器。在这个定时器超时前,设备发送的Hello报文不包含DR和BDR信息,设备不能被选举为DR或BDR。这样可以避免不必要地改变链路中已存在的DR和BDR。仅NBMA网络、广播网络有此状态。
  • P-2-P:接口连接到物理点对点网络或者是虚拟链路,这个时候设备会与链路连接的另一端设备建立邻接关系。仅P2P、P2MP网络有此状态。
  • DROther:设备没有被选为DR或BDR,但连接到广播网络或NBMA网络上的其他设备被选举为DR。它会与DR和BDR建立邻接关系。
  • BDR:设备是相连的网络中的BDR,并将在当前的DR失效时成为DR。该设备与接入该网络的所有其他设备建立邻接关系。
  • DR:设备是相连的网络中的DR。该设备与接入该网络的所有其他设备建立邻接关系。

 5.OSPF工作过程

  • OSPF协议启动后,路由器A向本地所有启动了OSPF协议的直连接口,使用组播地址224.0.0.5发送——hello报文
    • 该hello报文中携带了本地的全域唯一的RID值
  • 当对端路由器B接收到该报文后,也会回复hello报文
    • 该hello报文中携带了A的RID值。
  • 此时,A与B建立邻居关系,并生成邻居表。
  • 邻居关系建立后,邻居之间进行条件匹配,匹配失败则停留在邻居关系,仅使用hello报文保活。
    • 若匹配成功,则可以开始建立邻接关系
  • 邻接间共享DBD报文,将本地与邻接之间的DBD报文进行对比,查找本地没有的LSA信息,之后使用LSR来询问,对端使用LSU回复具体的LSA信息,之后本地使用LSAck报文进行确认。
    • 该过程全部完成后,生成数据库表(LSDB)
  • 在之后,本地基于数据库表,启用SPF算法,计算到达所有未知网段的最短路径,然后将其加载到本地的OSPF路由表中。
    • 并将OSPF路由表中的部分路由加载到本地全局路由表中。
    • 此时,路由器完成路由收敛工作。
  • 最后,使用hello报文进行周期保活,并且每30min进行一次链路状态刷新。

6.OSPF基本配置

1.启动OSPF协议,配置进程号(仅具有本地意义),手工配置RID值

  • 若没有配置RID值,则设备自动生成(环回接口最大IP>物理接口最大IP)
  • [r1]ospf 1 router-id 1.1.1.1

2.配置区域

  • [r1-ospf-1]area 0

3. 宣告:激活接口,发布拓扑或路由

  • 宣告网段
    • [r1-ospf-1-area-0.0.0.0]network 1.1.1.0 0.0.0.255
    • 反掩码:32位二进制,使用点分十进制表示,由连续0+连续1
  • 接口宣告方式-----精准宣告
    • [r1-ospf-1-area-0.0.0.0]network 12.0.0.1 0.0.0.0
  • OSPF邻居表
    • [r2]display ospf peer ---查看OSPF邻居
    • [r2]display ospf peer brief ----查看OSPF邻居简表
  • OSPF数据库表
    • [r2]display ospf lsdb -----查看OSPF数据库表
  • OSPF路由表
    • [r2]display ospf routing ---查看OSPF路由表
    • OSPF优先级====10
  • reset ospf 1 process -----重置OSPF进程

6.1 OSPF扩展配置

  • 修改OSPF默认参考带宽
    • [r2-ospf-1]bandwidth-reference 10000 -----修改参考带宽,两端均需要修改
  • 修改接口优先级,从而干涉条件匹配
    • [r1-GigabitEthernet0/0/0]ospf dr-priority 10 -----在接口修改
    • [r1-GigabitEthernet0/0/0]ospf dr-priority 0 ---优先级修改为0,代表放弃选举
  • 手工汇总
    • [r2-ospf-1-area-0.0.0.0]abr-summary 192.168.0.0 255.255.252.0
    • 必须在ABR上配置
    • 汇总的明细路由来源在那个区域,进入那个区域进行配置
  • 缺省路由
    • 在边界设备上
    • [r1-ospf-1]default-route-advertise -----非强制性下发,要求边界路由器中存在缺省路由才
    • 可以下发
    • [r1-ospf-1]default-route-advertise always -----强制性下发,不要求本地存在缺省路由
  • 静默接口
    • 不接受也不发送hello报文,与RIP的静默接口不同。
    • [r3-ospf-1]silent-interface GigabitEthernet 0/0/1
  • 接口认证
    • [r1-GigabitEthernet0/0/0]ospf authentication-mode ?
      • md5 Use MD5 algorithm -----MD5认证
      • null Use null authentication -----不认证----OSPF默认情况
      • simple Simple authentication mode ------简单认证----明文认证
    • [r1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
    • [r2-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
  • 加快收敛
    • [r3-GigabitEthernet0/0/0]ospf timer hello ? -------一端修改,另一端必须修改,若不修改,则会导致邻居关系无法建立。

                  INTEGER<1-65535> Second(s)

7.OSPF区域化结构 

  • OSPF为了适应大中型网络环境,进行了结构化部署------区域划分
  • 区域划分的特点
    • 区域内部传递拓扑信息,区域间传递路由信息。
    • 区域划分是基于路由器接口的。
    • 区域编号----32bit
      • 区域0-----骨干区域
      • 非骨干区域----非0区域

    • 区域划分规则
      • 所有的非骨干区域都必须和骨干区域直接相连----星型拓扑
      • 骨干区域唯一
  • 区域边界路由器----ABR
    • 同时属于多个区域,且至少有一个接口属于骨干区域。
    • 在骨干区域中至少存在一个活跃的邻居。
区域划分目的:为了减少OSPF域中LSA的数量

如果一台路由器的多个接口分别接入到了多个不同的区域,则该设备会为每一个区域单独维护一套LSDB

要求:

1、OSPF要求域中的所有非骨干区域(区域ID不为0)都必须与Area0相连

2、骨干区域不能被分割

OSPF区域结构部署规则的必要性

ABR设备规则:

  1. 至少连接两个区域
  2. 连接的区域中至少有一个是区域0
  3. 在区域0中至少存在一个活跃的邻居

ABR功能:传递区域间路由信息

OSPF为了保证所有工程师遵循两条区域划分规则,作出如下规定:

  • 非骨干区域之间不允许直接相互发布区域间路由信息。---因为不存在ABR设备。

  • 从非骨干区域收到的路由信息,ABR能接收但不会使用这条路由信息-----OSPF的区域水平分割机制(从一个区域学习到的路由信息,不能再传递回该区域)

OSPF有如下规定:

  1. 对于伪ABR设备,不允许转发区域间路由信息。
  2. 对于真是ABR设备:
  • 可以将直连的非骨干区域的区域内路由信息传递给骨干区域
  • 可以将直连的骨干区域的区域内路由信息传递给非骨干区域
  • 能够将自己从骨干区域学习到的域间路由信息传递给非骨干区域

路由器角色

  • 内部路由器---IR---所有接口都接入同一个OSPF区域
  • 骨干路由器---BR---接入Area0的路由器
  • 区域边界路由器---ABR
  • AS边界路由器---ASBR
    • 工作在OSPF自治系统的边界,负责将OSPF域外的路由引入到本OSPF域中。
      1. 设备连接在不同的AS,且具有活跃的邻居。
      2. 该设备执行了重发布操作。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vscode 常用插件和快捷键 2024版笔记

1. 常用插件2.常用快捷键 1. 常用插件 1.1 Chinese vscode 转成中文&#xff08;更新版后有进要重装&#xff09; 1.2 Live Server 浏览成网页 1.3 Material Icon Theme 文件目录和文件图标样式&#xff08;没有自定义&#xff09; 1.4 vscode 主题 1.5 代码截图 1.6 代码补…

【01-20】计算机网络基础知识(非常详细)从零基础入门到精通,看完这一篇就够了

【01-20】计算机网络基础知识&#xff08;非常详细&#xff09;从零基础入门到精通&#xff0c;看完这一篇就够了 以下是本文参考的资料 欢迎大家查收原版 本版本仅作个人笔记使用1、OSI 的七层模型分别是&#xff1f;各自的功能是什么&#xff1f;2、说一下一次完整的HTTP请求…

新能源充电桩站场AI视频智能分析烟火检测方案及技术特点分析

新能源汽车充电起火的原因多种多样&#xff0c;涉及技术、设备、操作等多个方面。从技术层面来看&#xff0c;新能源汽车的电池管理系统可能存在缺陷&#xff0c;导致电池在充电过程中出现过热、短路等问题&#xff0c;从而引发火灾。在设备方面&#xff0c;充电桩的设计和生产…

Python环境下基于机器学习的空压机故障识别(出口阀泄漏等)

Python环境下基于机器学习&#xff08;多层感知机&#xff0c;决策树&#xff0c;随机森林&#xff0c;高斯过程&#xff0c;AdaBoost&#xff0c;朴素贝叶斯&#xff09;的压缩机故障识别&#xff08;出口阀泄漏&#xff0c;止逆阀泄露&#xff0c;轴承损伤&#xff0c;惯性轮…

京东数据API接口采集/京东商品详情页SKU实时采集

京东电商实时数据采集是指通过自动化工具和技术&#xff0c;定时或不间断地收集京东电商平台的数据。这些数据可以包括商品信息、价格、销量、评价等。通过实时数据采集&#xff0c;可以帮助京东电商平台及其卖家了解市场情况、监控竞争对手、优化产品定价和营销策略等。 企业级…

C语言从入门到精通- CLion安装配置Gitee

CLion安装Gitee 需要先申请Gitee账号。 下载gitee插件 在CLion的plugins中查找gitee,安装后重启CLion。 CLion上关联gitee账号 安装git软件 下载git 访问网站&#xff1a; Git - Downloading Package (git-scm.com) 安装 创建本地用户名和邮箱 在弹出的命令行窗体中输入用户名…

vite+vue3使用模块化批量发布Mockjs接口

在Vue3项目中使用Mock.js可以模拟后端接口数据&#xff0c;方便前端开发和调试。下面是使用vitevue3使用模块化批量发布Mockjs接口的步骤&#xff1a; 1. 安装Mock.js 在Vue3项目的根目录下&#xff0c;使用以下命令安装Mock.js&#xff1a; npm install mockjs --save-dev …

constexpr与std::is_same_v碰撞会产生什么火花?

1. 只编译会用到的if分支 示例代码一中&#xff0c;checkType_v1和checkType_v2两个函数的区别就是if的条件里一个加了constexpr一个没加&#xff0c;加与不加从结果来看都一样&#xff0c;那在编译时和运行时各有什么区别呢&#xff1f; 示例代码一&#xff0c;test_01.cpp&…

canvas画图,拖动已经画好的矩形

提示&#xff1a;canvas画图写文字 文章目录 前言一、写文字总结 前言 一、写文字 test.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-widt…

【物联网】Qinghub opc-ua 连接协议

基础信息 组件名称 &#xff1a; opcua-connector 组件版本&#xff1a; 1.0.0 组件类型&#xff1a; 系统默认 状 态&#xff1a; 正式发布 组件描述&#xff1a;通过OPCUA连接网关&#xff0c;通过定时任务获取OPCUA相关的数据或通过执行指令控制设备相关参数。 配置文件&a…

基于spring boot的在线购票系统

在线购票系统的设计与实现 【摘要】这套在线购票系统是根据当前的现实需要&#xff0c;从现实工作中着手&#xff0c;剖析了以往的在线购票系统中出现的一些问题&#xff0c;并进一步提高了使用者的操作体验。利用电脑来对资料进行处理&#xff0c;以代替传统的手工方式进行资…

spring-boot之接口文档Swagger配置使用

Swagger 前后端分离 Vue SpringBoot 后端时代:前端只用管理静态页面; html> 后端。模板引擎JSP >后端是主力 前后端分离式时代: ●后端:后端控制层&#xff0c;服务层,数据访问层[后端团队] ●前端:前端控制层&#xff0c;视图层[前端团队] 。伪造后端数据&#xff0c;…

【保姆级】2024年最新Onlyfans使用订阅教程

【必看】开通步骤 订阅OnlyFans的步骤简要总结如下&#xff1a; 开通虚拟信用卡&#xff1a;虚拟信用卡开通使用教程。开卡后&#xff0c;进入首页&#xff0c;就能看到自己的虚拟信用卡信息把虚拟信用卡的信息填写到OnlyFans绑定信用卡界面就OK了 从上面的链接进入开卡费可…

Springboot工程依赖包与执行包分离打包与构建docker 镜像

文章目录 一、概述二、工程概况1. 代码原始结构2. 运行界面 三、常规打包1. 打包命令2. jar包结构 四、分离依赖包、执行包步骤1. 引入依赖包管理插件2. 打包验证 一、概述 某大数据项目&#xff0c;使用springboot常规打包方式&#xff0c;打出来的一体化执行包达几百兆&…

第三十二天-Django模板-DTL模板引擎

目录 1.介绍 2. 使用 1.配置jinja2 2.DTL模板变量使用 3.与jinja2区别 4.模板标签使用 1.循环 2.条件控制 3.注释 4.url解析 5.显示时间 5.模板的基础与包含 6.过滤器 内置过滤器 自定义过滤器 1.介绍 2. 使用 1.配置jinja2 2.DTL模板变量使用 与jinja2语法相似…

ssm 科研奖励申报管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 ssm 科研奖励申报管理系统是一套完善的信息系统&#xff0c;结合springMVC框架完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用…

激发数据潜力:企业数据中台的策略性构建与优化_光点科技

在信息时代&#xff0c;数据是企业价值链中不可或缺的一环。构建一个策略性的企业数据中台不仅能够整合分散的数据资源&#xff0c;还能提高决策效率和业务敏捷性。本文聚焦于如何策略性地构建和优化数据中台&#xff0c;以便企业能够最大化地利用数据资源&#xff0c;推动企业…

【测试篇】测试眼里的 BUG

文章目录 如何描述一个bug如何定义 bug 的级别BUG 的生命周期跟开发起争执怎么办&#xff08;高频面试题&#xff09; 如何描述一个bug 一个合格的bug描述应该包含以下几个部分&#xff1a; 发现问题的版本问题出现的环境错误重现的步骤预期行为的描述错误行为的描述其他&…

零基础入门转录组数据分析——绘制差异火山图

零基础入门转录组数据分析——绘制差异火山图 差异分析的火山图(Volcano Plot)在生物信息学数据分析中,特别是在基因表达差异分析中,是一个非常直观和有用的工具。 本教程将从导入的数据结构开始,一步步带大家在R中绘制好看的火山图,最后对火山图进行解读,确保读者理解…

google浏览器网站不安全与网站的连接不安全怎么办?

使用google谷歌浏览器访问某些网站打开时google谷歌浏览器提示网站不安全,与网站的连接不安全,您之所以会看到此警告,是因为该网站不支持https造成的怎么办? 目录 1、打开谷歌google浏览器点击右上角【┇】找到设置