OSPF原理(1)

一、OSPF介绍

 OSPF(Open Shortest Path First,开放最短路径优先)协议作为一种基于链路状态的路由协议,它为网络中的路由器提供了一种高效、可靠的方式来共享路由信息,并计算出最短路径。

特点:

  • 收敛速度快,能快速适应网络变化。
  • 支持区域划分,适合大规模网络。
  • 提供更准确和详细的路由信息。
  • 对网络拓扑变化的适应性强。

二、OSPF概念

1.Router ID

Router ID(路由器标识符)是一个 32 位的标识符,用于唯一标识一台 OSPF 路由器。

  • 唯一性:在一个 OSPF 域内必须是唯一的,不能与其他路由器的 Router ID 重复。

  • 选举规则:通常,管理员可以手动配置 Router ID。如果没有手动配置,OSPF 会自动选取路由器上活动的最大 IP 地址作为 Router ID。
  • 稳定性要求:一旦确定,应尽量保持不变,因为 Router ID 的改变可能会导致一些路由信息的重新计算和传播,对网络稳定性有一定影响。
  • 路由计算:在进行路由计算和构建拓扑结构时,Router ID 是关键的标识。
  • 邻居建立:在 OSPF 邻居建立过程中,Router ID 用于识别不同的路由器。

2.链路状态

链路状态指的是路由器接口的状态信息,包括接口的 IP 地址、子网掩码、网络类型、Cost(成本)值等。

链路状态信息通过 LSA(Link State Advertisement,链路状态通告)报文在路由器之间进行交换。

主要作用包括:

  • 构建拓扑图:通过收集各个路由器的链路状态信息,OSPF 可以构建出整个网络的拓扑结构,包括路由器的连接关系、链路的带宽等信息。
  • 计算最优路径:基于链路状态信息和最短路径算法,OSPF 可以计算出到达每个目的地的最优路径,并将其存储在路由表中。
  • 快速收敛:当网络拓扑发生变化时,路由器可以迅速感知并更新链路状态信息,从而快速计算出新的最优路径,实现快速收敛。
  • 避免路由环路:OSPF 通过使用链路状态信息和最短路径算法,可以避免出现路由环路,保证网络的稳定性和可靠性。

3.Cost

Cost(花销)用于表示到达目的地的路径代价。

Cost 值通常由以下因素决定:

  • 链路带宽:链路的带宽会影响 Cost 的值。一般来说,带宽越高,Cost 值越小,表示通过该链路到达目的地的代价越低。
  • 接口类型:不同类型的接口可能具有不同的默认 Cost 值。例如,以太网接口的默认 Cost 值通常为 1,而广域网接口的默认 Cost 值可能较高。
  • 手动配置:管理员可以手动配置接口的 Cost 值,以影响 OSPF 路由的选择。

Cost 的计算公式

  • 通常是参考带宽除以接口带宽。例如,如果参考带宽为 100Mbps,而接口带宽为 10Mbps,则 Cost 值为 10。

Cost 值的作用

  • 帮助 OSPF 协议选择最优路径,OSPF 路由器会根据链路状态信息和 Cost 值计算到达每个目的地的最短路径,并将其存储在路由表中。当需要转发数据包时,路由器会根据路由表选择成本最低的路径。

4.报文类型

  • Hello 报文:用于发现、建立和维护邻居关系。
    • Hello 报文会被周期性地发送到邻居路由器,以确保链路的可用性和邻居的存在。Hello 报文还用于选举 DR和 BDR。
      • (Designated Router,指定路由器)
      • (Backup Designated Router,备份指定路由器)
  • DD报文:数据库描述报文,用于描述本地链路状态数据库(LSDB)的情况。
    • DD 报文包含了 LSA的头部信息,用于与邻居路由器进行数据库同步。
      • (Database Description)
      • (Link State Advertisement,链路状态通告)
  • LSR报文:链路状态请求报文,用于向邻居路由器请求自身缺少的链路状态信息。
    • 当路由器发现自己的链路状态数据库中缺少某些 LSA 时,会发送 LSR 报文请求邻居路由器发送相应的 LSA。
      • (Link State Request)
  • LSU报文:链路状态更新报文,用于向邻居路由器发送详细的链路状态信息。
    • 当路由器接收到 LSR 报文后,会使用 LSU 报文回复请求的 LSA。LSU 报文包含了真正的 LSA 内容,用于更新邻居路由器的链路状态数据库。
      • (Link State Update)
  • LSAck报文:链路状态确认报文,用于确认收到的 LSU 报文。
    • 当邻居路由器收到 LSU 报文后,会发送 LSAck 报文进行确认。LSAck 报文可以确保链路状态信息的传输可靠性。
      • (Link State Acknowledgment)

5.LSA类型

  • 路由器 LSA:每台运行 OSPF 的路由器都会产生这种类型的 LSA。
    • 它描述了路由器的接口和接口的Cost值以及描述路由器的特殊角色,如虚拟链路、ABR和 ASBR等。
      • (Router LSA,Type 1)
      • (Area Border Router,区域边界路由器)
      • ( Autonomous System Border Router,自治系统边界路由器)

  • 网络 LSA:在多路访问型网络(如以太网或帧中继网络)中,会选举出 DR(和 BDR。DR 会发送这种类型的 LSA,用来描述网络中的所有路由器。
    • (Network LSA,Type 2)

  • 网络汇总 LSA:由 ABR产生,用于通告其他区域的网络信息。
    • 汇总了与 ABR 相连的其他区域的网络信息,并将其发送到其他区域。
      • (Network Summary LSA,Type 3)
      • (Area Border Router,区域边界路由器)

  • ASBR 汇总 LSA:由 ABR 产生,用于通告 ASBR的位置。
    • 告诉其他区域 ASBR 的位置,以便其他区域的路由器能够通过 ABR 到达 ASBR。
      • (ASBR Summary LSA,Type 4)
      • ( Autonomous System Border Router,自治系统边界路由器)

  • 外部 LSA:由 ASBR 产生,用于通告外部路由信息。
    • 描述了 ASBR 从其他路由协议(如 BGP)学习到的路由信息,并将其通告给 OSPF 网络。
      • (External LSA,Type 5)

  • 组播 LSA:用于支持组播路由。
    • (Multicast LSA,Type 6)

  • NSSA 外部 LSA:在 NSSA使用,类似于 Type 5 LSA,但它的通告范围仅限于 NSSA 区域。
    • (NSSA External LSA,Type 7)
    • (Not-So-Stubby Area,非完全末梢区域)

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

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

相关文章

踩坑——纪实

开发踩坑纪实 1 npm安装1.1 查看当前的npm镜像设置1.2 清空缓存1.3 修改镜像1.4 查看修改结果1.5 重新安装vue 2 VScode——NPM脚本窗口找不到3 springboot项目中updateById()失效4 前端跨域4.1 后端加个配置类4.2 CrossOrigin注解 5 路由出口6 springdoc openapi3 swagger3文件…

C语言函数递归

文章目录 一、递归1.递归的概念2.递归的思想3.递归的限制条件 二、递归的一些典型例子1.求一个数的阶乘2.顺序打印一个整数的每一位3.汉诺塔4.青蛙跳台阶5斐波那契数列递归和迭代的对比 一、递归 1.递归的概念 递归是学习C语言函数绕不开的一个话题,那什么是递归呢…

【算法刷题day56】 Leetcode:647. 回文子串、516. 最长回文子序列

文章目录 Leetcode 647. 回文子串解题思路代码总结 Leetcode 516. 最长回文子序列解题思路代码总结 草稿图网站 java的Deque Leetcode 647. 回文子串 题目:647. 回文子串 解析:代码随想录解析 解题思路 斜上三角,从左下往上遍历&#xff0c…

【代码随想录】动态规划之完全背包问题与打家劫舍问题

前言 更详细的在大佬的代码随想录 (programmercarl.com) 本系列仅是简洁版笔记&#xff0c;为了之后方便观看 完全背包 for(int i 0; i < weight.size(); i) { // 遍历物品for(int j weight[i]; j < bagWeight; j) { // 遍历背包容量dp[j] max(dp[j], dp[j - weigh…

ElementPlus Steps步骤条插槽 v-slot:title

<el-steps finish-status"success"><el-stepv-for"item in uniqueReverseArr":status"item.status 2? success: item.status 3? error: item.status 1? finish: process"click.native"stepClick(item)"><templat…

PyTorch中Tensor简介

PyTorch中所有的操作都是基于Tensor&#xff08;张量&#xff09;的&#xff0c;因此理解张量的含义并能够自由创建张量是十分必要的。 张量是PyTorch中最基本的操作对象。我们可以用数学中的概念来辅助理解一下张量&#xff0c;如图5-1所示。 标量&#xff08;Scalar&#x…

c#数据库的增删改查

** 安装数据库包 ** 在使用 SQLite 数据库时&#xff0c;你需要安装适当的 NuGet 包来提供与 SQLite 的集成。 1.打开 Visual Studio 中的你的项目 2.在顶部菜单栏中选择 “项目” -> “管理 NuGet 包” 3.在 NuGet 管理器中搜索 “System.Data.SQLite” 4.找到适合你项目…

【openlayers系统学习】1.1渲染GeoJSON,添加link交互

一、渲染GeoJSON 在进入编辑之前&#xff0c;我们将看一下使用矢量源和图层进行基本要素渲染。Workshop在 data​ 目录中包含一个 countries.json​ GeoJSON文件。我们首先加载该数据并将其渲染在地图上。 首先&#xff0c;编辑 index.html​ 以便向地图添加深色背景&#xf…

Vue 组件的生命周期钩子有哪些用途是什么

Vue 组件的生命周期钩子提供了在不同阶段执行特定逻辑的机会&#xff0c;这些钩子在组件的创建、挂载、更新、销毁等过程中被调用。以下是每个生命周期钩子的常见用途&#xff1a; beforeCreate 用途&#xff1a;由于在这个阶段&#xff0c;组件的 data、computed、methods 和…

使用llama.cpp实现LLM大模型的格式转换、量化、推理、部署

使用llama.cpp实现LLM大模型的量化、推理、部署 大模型的格式转换、量化、推理、部署概述克隆和编译环境准备模型格式转换GGUF格式bin格式 模型量化模型加载与推理模型API服务模型API服务(第三方)GPU推理 大模型的格式转换、量化、推理、部署 概述 llama.cpp的主要目标是能够在…

【代码随想录算法训练营第37期 第十五天 | LeetCode226.翻转二叉树、101.对称二叉树 2】

代码随想录算法训练营第37期 第十五天 | LeetCode226.翻转二叉树、101.对称二叉树 2 一、226.翻转二叉树 解题代码C&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : …

【软考中级 软件设计师】数据结构

数据结构是计算机科学中一个基础且重要的概念&#xff0c;它研究数据的存储结构以及在此结构上执行的各种操作。在准备软考中级-软件设计师考试时&#xff0c;掌握好数据结构部分对于通过考试至关重要。下面是一些核心知识点概览&#xff1a; 基本概念&#xff1a; 数据结构定义…

VBA_MF系列技术资料1-615

MF系列VBA技术资料1-615 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧&#xff0c;我参考大量的资料&#xff0c;并结合自己的经验总结了这份MF系列VBA技术综合资料&#xff0c;而且开放源码&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-0…

spring-boot集成slf4j(二)logback配置详解

一、configuration 根节点&#xff1a;configuration&#xff0c;作为顶级标签&#xff0c; 可以用来配置一些lockback的全局属性&#xff0c;常见的属性如下&#xff1a; &#xff08;1&#xff09;scan“true” &#xff1a;scan是否开启自动扫描&#xff0c;监控配置文件更…

el-table 组件实现 “合并单元格 + N行数据小计” 功能

目录 需求 - 要实现的效果初始代码代码升级&#xff08;可供多个表格使用&#xff09;CommonTable.vue 子组件 使用子组件1 - 父组件 - 图1~图3使用效果展示 使用子组件2 - 父组件 - 图4使用效果展示 注意【代码优化 - 解决bug】 需求 - 要实现的效果 父组件中 info 数据示例 …

内网安全之证书服务基础知识

PKI公钥基础设施 PKI(Public Key Infrastructure)公钥基础设施&#xff0c;是提供公钥加密和数字签名服务的系统或平台&#xff0c;是一个包括硬件、软件、人员、策略和规程的集合&#xff0c;用来实现基于公钥密码体制的密钥和证书的产生、管理、存储、分发和撤销等功能。企业…

Android Debug Bridge(ADB)命令使用

引言 Android Debug Bridge&#xff08;ADB&#xff09;是一套功能强大的命令行工具&#xff0c;它为Android开发者和高级用户提供了与Android设备通信的能力。无论是进行应用开发、测试还是执行日常设备管理任务&#xff0c;ADB都是不可或缺的工具。本文将详细介绍一些常用的…

element-plus:踩坑日记

el-table Q&#xff1a;有fixed属性时&#xff0c;无数据时&#xff0c;可能出现底部边框消失的bug 现象&#xff1a; 解决方法&#xff1a; .el-table__empty-block {border-bottom: 1px solid var(--el-table-border-color); } el-collapse 折叠面板 Q&#xff1a;标题上…

云平台的安全能力提升解决方案

提升云平台的安全能力是确保数据和服务安全的关键步骤。针对大型云平台所面临的云上安全建设问题&#xff0c;安全狗提供完整的一站式云安全解决方案&#xff0c;充分匹配云平台安全管理方的需求和云租户的安全需求。协助大型云平台建设全网安全态势感知、统一风险管理、统一资…

加强堆(大根堆)

way&#xff1a;看上去好像就是加了个indexMap记录节点在数组heap中的下标&#xff0c;然后就是可以查到某个元素是否在堆里并且可以进行位置的调整&#xff0c;普通的堆是没法知道元素是不是在的&#xff0c;只能弹堆顶元素&#xff0c;插入到堆尾这样子。如果觉得heapSize有点…