当前位置: 首页 > news >正文

探索 OSPF 协议:构建高效网络的基石

文章目录

  • 目录

    文章目录

    前言

    一.OSPF协议概述

    二.OSPF相关概念

    🕤 2.1 基本思想

    🕤 2.2 SPF算法

    🕤 2.3 区域划分​编辑

    三.OSPF工作原理

    ​编辑

    🕤 3.1 DR/BDR选举

    四.OSPF网络类型

    🕤4.1 BMA

    🕤4.2 P2P

    🕤4.3 P2MP

    🕤4.4 NBMA

     五.OSPF数据包结构分析

    🕤 5.1 首部公有信息 

    🕤 5.2 Hello 报文

    🕤 5.3 数据库描述报文 (DBD)

    🕤 5.4 链路状态请求报文 (LSR)

    🕤 5.5 链路状态更新报文 (LSU) 

     🕤 5.6 链路状态通告报文 (LSA)

    5.6.1 首部公有信息

    5.6.2  类型 1:Router

    5.6.3  类型 2:Network

    5.6.4  类型 3:Sum-Net

    5.6.5  类型 5:External

    5.6.6  类型 4:Sum-Asbr

     5.6.7  类型 7 :NSSA

    六.OSPF 路由优化

    🕤6.1  特殊区域

    6.1.1 末梢区域:Stub

    6.1.2 完全末梢区域

    6.1.3 非完全末梢区域:NSSA

     6.1.4 完全的非完全末梢区域

    🕤6.2  路由汇总

    6.2.1 域间汇总

    6.2.2 域外汇总

    七.OSPF不规则区域 

    🕤7.1 远离骨干的非骨干区域

    7.1.2 虚链路技术

    8.1.2 多进程双向重发布


前言

        在复杂庞大的网络世界,高效稳定的路由协议对数据传输与网络稳定至关重要。开放式最短路径优先(OSPF)协议,广泛应用于大型企业、数据中心和 ISP 网络,凭借链路状态算法、区域划分等特性,解决了传统协议在大规模网络中的难题,如收敛慢、易成环路、难以适应复杂拓扑等。本文将深入探索 OSPF 协议的原理、特性、应用场景及配置方法,助力构建更健壮高效的网络基础设施。


一.OSPF协议概述

        早期网络规模较小时,RIP 等距离矢量路由协议因原理简单、配置容易而被广泛采用。但随着网络规模迅速扩大,RIP 收敛慢、难以适配复杂拓扑等缺陷逐渐暴露。为解决大规模网络的路由难题,IETF 开发了链路状态路由协议 OSPF,保障网络稳定高效运行。

OSPF 对比 RIP 优点
对比维度OSPFRIP
收敛速度周期更新10s周期更新30s
防环机制SPF算法/星型拓扑水平分割/毒性逆转触发更新
选路方式以带宽作为开销值以跳数作为开销
数据更新量区域内更新/路由汇总/特殊区域更新完整路由表信息

二.OSPF相关概念

🕤 2.1 基本思想

        OSPF将整个网络世界抽象成一个有向的加权图,参与链路状态选路的路由器监听所连接链路的网络状态,并将本地的链路状态信息发送给其它路由器,路由器将这些信息存入链路状态数据库LSDB中,每台路由器根据LSDB构建出完整的网络拓扑,路由器在构建的网络拓扑上计算出从自身出发到达任意网络的最短路径,从而建立自己的路由表。

🕤 2.2 SPF算法

初始设定:路由器 A 为根节点,A 到自身距离标记为0,到B,C,D的距离为无穷大(∞)。

  • 更新状态节点:A(0,以确定),B(∞,未确定),C(∞,未确定),D(∞,未确定)

第一轮探索(A探索邻居B/C):A 到 B 距离为 1;A 到 C 距离为2;比较后将B纳入最短路径树。

  • 更新状态节点:A(0,以确定),B(1,以确定),C(∞,未确定),D(∞,未确定)

第二轮探索(B探索邻居D):此时 C 距离 A 为 2 ,D 距离 A 为 2 ,任选 D 纳入最短路径树。

  • 更新状态节点:A(0,已确定) ,B(1,已确定) ,C(∞,未确定) ,D(2,已确定) 

第三轮探索(D探索邻居C和网络1): A 经 D 到 C 的距离为 2 + 2 = 4 ,而之前 A 到 C 距离暂为 2 ,保持 A 到 C 距离为 2 ,A 经 D 到网络 1 的距离为 2 + 1 = 3 。

  • 将 C 和网络 1 纳入最短路径树,最终得到右侧的最短路径树,各节点到 A 的最短距离及路径确定 。

🕤 2.3 区域划分

        OSPF 区域划分能降低网络复杂度,将网络分割成多个独立区域,每个区域独立运行SPF算法,区域内路由器仅处理本区域链路状态信息,缩小了链路状态数据库规模。同时,区域划分限制了链路状态通告(LSA)的泛洪范围,区域拓扑变化时,LSA 更新仅在本区域传播,减轻了带宽压力与路由器负载,保障网络快速收敛和稳定运行。

不同区域中路由器承担的角色   

  1. 区域内路由器:所有接口均位于同一区域内,专注于处理本区域的链路状态信息,确保区域内通信的高效稳定,如:AR1/AR6/AR12
  2. 区域边界路由器(ABR):连接多个不同区域,负责汇总和过滤区域间的链路状态信息,在不同区域之间传递路由信息,是实现区域间通信的关键节点。​如:AR7/AR9
  3. 自治系统边界路由器(ASBR):连接 OSPF 自治系统与外部网络,负责将外部路由信息引入 OSPF 网络,并向外部网络通告 OSPF 网络内的路由信息,实现了 OSPF 网络与外部网络的互联互通。如:AR8

丰富多彩的区域类型 

  1. 骨干区域(Backbone Area):骨干区域的 ID 为 0.0.0.0,它就像OSPF网络的 “中枢神经”,负责在不同的非骨干区域之间传递路由信息,保证区域间的连通性。

  2. 非骨干区域(Normal Area):非骨干区域通过区域边界路由器(ABR)与骨干区域相连且都有专属区域ID,用户可以根据不同需求将非骨干区域配置为下面四种不同特殊区域

  3. 末梢区域(Stub Area):该区域不接收其它自治系统(AS)的路由信息,ABR 会为其生成一条默认缺省路由,使区域内设备能通过默认路由访问其它(AS)的网络。

  4. 完全末梢区域(Totally Stub Area):在末梢区域的基础上拒绝访问其它非骨干区域的路由信息进而简化路由信息,ABR会为其生成一条默认缺省路由,使区域内设备能够访问其它AS和非骨干区域网络。

  5. 非完全末梢区域(Not-So-Stubby Area, NSSA):NSSA 区域内的 ASBR 可以将外部路由引入本区域,以特殊的路由信息在区域内传播,在区域边界处再转换为普通的外部路由传播到其他区域,ABR会为其生成一条特殊的默认缺省路由使区域内设备能够访问其它AS网络。

  6. 完全非完全末梢区域(Totally NSSA):它在完全末梢区域的基础上,拒绝访问其它非骨干区域的路由信息进而简化路由信息,ABR会为其生成一条特殊的默认缺省路由使区域内设备能够访问其它AS网络,因此在该区域种会存在两条特殊的默认缺省路由,一条用于访问非骨干区域网络,一条用于访问其它AS区域网络。

:编号3-6为特殊区域需要手动配置,此处先做了解,后文会重点介绍。

三.OSPF工作原理

建立和维护邻居关系

        路由器通过发送 Hello 报文来发现邻居。Hello 报文每10s以组播形式发送到组播地址224.0.0.5

  • Init 状态:当路由器收到邻居发送的 Hello 报文,但在该报文中没有看到自己的路由器 ID 时,就会进入 Init 状态。这意味着路由器已经收到了来自邻居的 Hello 报文,确认了对端邻居的存在,但还不确定邻居是否也收到了自己发送的 Hello 报文。
  • 2-Way 状态:当路由器收到邻居发送的 Hello 报文,并且报文中包含了自己的路由器 ID 时,就进入了 2 - Way 状态。这表明两台路由器之间已经建立了双向通信,邻居关系初步形成。

限制邻居关系建立的因素
hello/死亡时间 如果邻居之间不相同,则影响邻居关系建立 
特殊区域标记如果邻居双方特殊区域标记不同,则将无法建立邻居关系 
网络掩码如果邻居双方网络掩码不同,则邻居关系无法建立(只针对MA网络,p2网络不核查)
认证邻居双方认证类型不同,认证数据不同则无法建立邻居关系

:处于MA和NBMA网络种的路由器2-Way状态在进入链路状态数据库同步前会先基于Hello报文种的信息进行DR/BDR的选举,此处先知道即可,后文会详细介绍DR/BDR。 

链路状态数据库同步

        邻居路由器之间通过交换数据库描述(DBD)报文、链路状态请求(LSR)报文和链路状态更新(LSU)报文等,来同步链路状态数据库,最终建立邻接关系。只有建立了邻接关系的路由器才能进行路由信息的交换。

  • ExStart 状态:(1)路由器在 2 - Way 状态之后,为了进行链路状态数据库的同步,会进入 ExStart 状态。该状态下,两台路由器会通过交换数据库描述(DBD)报文来确定彼此的数据库版本信息,并选举出主从关系。ID 较大的路由器成为主路由器,负责控制数据库描述报文的交换过程。主从关系确定后,进入Exchange 状态。
  • Exchange 状态:进入 Exchange 状态后,路由器开始正式交换 DBD 报文。DBD 报文中包含了链路状态数据库的摘要信息,通过交换 DBD 报文,路由器可以了解邻居的链路状态数据库内容。
  • Loading 状态:该状态下,路由器根据Exchange状态交换的DBD报文识别本地缺少的链路状态信息(LSA),并发送链路状态请求报文(LSR)向对端请求缺少的链路状态信息然后接受邻居的LSU报文来更新加载自己的链路状态数据库,双方的状态同步完成后进入 Full 状态。

🕤 3.1 DR/BDR选举

        在 OSPF(开放式最短路径优先)协议中,DR(指定路由器)和 BDR(备份指定路由器)是在广播型网络或非广播多路访问(NBMA)网络中选举出来的特殊路由器,用于优化网络中链路状态信息的传播和路由计算。

DR 和 BDR 定义

  • DR(Designated Router)指定路由器:在广播型网络(如以太网)或非广播多路访问(NBMA)网络中,被选举出来负责收集链路状态信息,并向区域内其他路由器传播的路由器。简言之,DR 充当网络内链路状态信息的 “分发中心”。
  • BDR(Backup Designated Router)备份指定路由器:作为 DR 的备份,当 DR 因故障无法工作时,BDR 会迅速接替其工作,继续承担链路状态信息的收集与分发任务,保障网络的持续稳定运行。

 选举 DR 和 BDR 的原因

  • 降低网络流量负载:在MA和NBMA网络中,如果没有 DR 和 BDR,每台路由器都需与其他所有路由器建立邻接关系,并相互交换链路状态信息,导致大量的链路状态通告(LSA)在网络中传播,极大消耗网络带宽。选举 DR 和 BDR 后,各路由器只需与 DR 和 BDR 建立邻接关系,由 DR 负责收集和分发链路状态信息,减少 LSA 的传输数量,降低网络流量负载。
  • 提升收敛速度:网络拓扑变化时,DR 能快速将变化信息通知给其他路由器,加快整个网络的收敛速度。同时,BDR 作为备份,可在 DR 故障时迅速接管工作,减少网络因故障导致的中断时间。

DR/BDR按照如下规则逐一选举

  • 接口优先级最大的作为DR,次之的作为BDR
  • 邻居ID最大的作为DR,次之的作为BDR

DR/BDR特性:

  • 非抢占:若存在DR/BDR设备,即使新加入的设备优先级更大也不会抢占原有DR成为新DR。
  • 只有优先级大于 0 的设备才能进行DR/BDR选举。

四.OSPF网络类型

根据数据链路层协议的类型,OSPF 将网络分为 4 种类型:广播,P2P(点到点),P2MP(点到多点)和 NBMA (非广播多路访问)。因此在默认情况下,不同类型呢的网络接口有其默认的 OSPF 接口网络类型。

以下接口为例:

  • 以太网接口的 OSPF 网络类型为广播
  • 串行链路接口的 OSPF 网络类型为 P2P
  • ATM (异步传输模式)接口的 OSPF 网络类型为 NBMA
  • 没有一种数据链路层协议默认对应 P2MP 类型,因此 P2MP 类型只能由工程师强制更改

工程师有时需要根据网络中的实际情况对接口的 OSPF 网络类型进行更改,如下:

  • 如果接口的 OSPF 网络类型为 NBMA,但网络不是全互联的,那么工程师必须将接口的 OSPF 网络类型更改为P2NP。这样一来,两台不能直接可达的路由器就可以通过它们都直接可达的一台路由器来交换路由信息。
  • 当网络中的部分路由器不支持组播,或者根据网络规划中的安全规则不允许传播组播时,工程师可以将接口的 OSPF 网络类型更改为NBMA。
  • 当同一个网段内只有两台路由器参与 OSPF 的运行时,工程师可以将相应的接口OSPF 网络类型更改为P2P。

拓扑图如下:

我们可以在路由器命令行中输入如下命令查看接口所处的网络类型:

[R1]display ospf interface GigabitEthernet 0/0/0

🕤4.1 BMA

在网络里,像咱们办公室或者家里的局域网,很多电脑、打印机等设备都连在同一个网络里,能互相发广播消息,还能互相通信,这就是 BMA 网络类型,大家都在一个 “大广场” 里交流信息 。

知识点相关信息及分析
DR / BDR  在 BMA 网络中路由器会进行DR和BDR选举并与DR设备建立邻接关系
Hello 间隔表示每隔 10 秒发送 Hello 报文,用于发现和维护邻居关系
Dead 间隔若 40 秒内未收到邻居 Hello 报文则认为邻居失效,一般为 Hello 间隔 4 倍
Poll 间隔在邻居处于 Down 状态时,每 120 秒发送 Hello 报文探测,加快邻居关系恢复
Retransmit 未收到链路状态确认报文时,5 秒后重传链路状态更新报文
开销(Cost)OSPF 根据接口带宽计算开销,千兆以太网接口(BMA 网络典型)默认开销为 1,用于计算最短路径

 值得注意的是不同类型的网络中 hello报文更新以及死亡时间是不同的,此外是否进行DR/BDR选举也和网络类型有关。

🕤4.2 P2P

P2P 就是 “点到点” 。打个比方,就像你和朋友打电话,你们俩直接通话,中间没有其他人帮忙转接或者管理。在网络里,P2P 网络类型也是这样,就两台设备直接连起来,比如两个路由器用一根线直接连起来。

 可以使用下面的命令公式将 R1 设备的 G0/0/1接口类型改为 P2P

[R1-GigabitEthernet0/0/1]ospf network-type p2p
[R7-GigabitEthernet0/0/0]ospf network-type p2p

更改接口的 OSPF网络类型会导致OSPF邻居关系断开并重新建立,等待AR1AR7之间的OSPF邻居关系重新建立后,再次查看AR1G0/0/接口的 OSPF 网络类型:

        AR1 G0/0接口的OSPF网络类型已经被更改P2P,并且我们还可以从阴影部分看到它的邻居(AR7G0/0/1按口)的I地址。

        在更改接口的 OSPF网络类型时,工程师必须同时对建立邻居的两个接口进行更改使两台路由器以相同的OSPF网络类型建立邻居关系。在上述将广播类型更改为P2P型的示例中,若我们只将AR1G0/0/接口的OSPF网络类型更改为P2P,而将AR7G00接口保留为广播,两台路由器仍可以建立邻居关系并进入Full状态,但它们无法学习对方的OSPF由信息。对此兴趣的读者可以自行验证, 

知识点详情
Hello 间隔10 秒,用于发现和维护邻居关系
Dead 间隔40 秒,未在该时间收到 Hello 报文则判定邻居失效,一般为 Hello 间隔 4 倍

 重点:通过对比BMA网络中的接口信息不难发现,P2P网络中缺少DR/BDR设备的信息,这也是P2P网络与BMA网络的不同点,在P2P网络中只有双方设备,因此无需进行DR/BDR选举。

:环回接口默认的接口类型为 P2P

🕤4.3 P2MP

P2MP讲解链接在此

🕤4.4 NBMA

NMBA讲解链接在此

 五.OSPF数据包结构分析

 本章节的数据包结构分析将基于下面的这张拓扑图的骨干区域进行分析

OSPF 拓扑图演示

🕤 5.1 首部公有信息 

eb6e7e617d164b89b2b728df73403670.jpeg

版本号(Version)目前广泛使用的是 OSPFv2,对应版本号为 2。
报文类型(Type)标记报文的类型,OSPF协议定义了 5 种报文
报文长度指明整个OSPF首部的长度。
路由器 ID(Router ID)OSPF协议中路由器的标识符,该标识唯一。
区域 ID(Area ID)OSPF协议中报文所属区域的标识符。
校验和(Checksum)用于检测 OSPF 报文在传输过程中是否出现错误。
认证类型存储OSPF认证相关数据。
认证数据存储和OSPF认证相关的密码等信息
OSPF 报文公有首部内容抓包演示

🕤 5.2 Hello 报文

 邻居发现与维护:路由器通过启用 OSPF 的接口周期性发送 Hello 报文,可发现同一网络中运行 OSPF 的其他路由器,建立邻居关系。还会按照固定时间间隔持续发送,用于监测邻居状态,若在规定的 Router Dead Interval 内未收到邻居 Hello 报文,便判定邻居失效。

字段含义与作用
OSPF 首部包含版本号、报文类型、报文长度、路由器 ID、区域 ID、校验和、认证类型、认证数据等公有信息,是报文的基础标识部分,用于识别报文基本属性、来源及保障传输正确性与安全性;这部分内容在上面的4.1章节详细介绍
网络掩码表示发送该 Hello 报文接口所在网络的子网掩码,用于判断邻居路由器是否处于同一网络,若掩码不同,可能无法建立邻居关系
Hello 报文间隔指定路由器发送 Hello 报文的时间间隔,一般默认为 10 秒(在广播和点到点网络中)或 30 秒(在非广播多路访问网络中),用于邻居间周期性的状态检测和维护
选项包含一些标志位,用于标识路由器支持的功能特性等,如是否支持外部路由、是否支持 NSSA 区域等,不同标志位组合可表明路由器具备的不同能力
路由器优先级取值范围 0 - 255 ,用于 DR/BDR 选举,优先级越高,在选举中越容易被选为 DR 或 BDR,0 表示不参与选举
路由器故障间隔也叫 Dead Interval,通常为 Hello 报文间隔的 4 倍,若在该间隔内未收到邻居的 Hello 报文,就认为邻居路由器故障
指定路由器(DR)在广播或 NBMA 网络中选举出的路由器,负责收集链路状态信息并向区域内其他路由器传播,减少链路状态信息交换次数;未选举前使用0.0.0.0填充
备份指定路由器(BDR)作为 DR 的备份,当 DR 出现故障时,BDR 接替其工作,继续承担链路状态信息收集与分发任务;未选举前使用0.0.0.0填充
邻居路由器记录本路由器已知的邻居路由器的 Router ID,用于维护邻居关系列表 ,跟踪邻居状态
Hello 报文主要数据内容抓包演示

🕤 5.3 数据库描述报文 (DBD)

数据库同步:在 OSPF 邻接关系初始化阶段发挥关键作用,用于描述本端设备的链路状态数据库(LSDB)概要信息 ,实现邻居路由器间数据库同步。通过交互 DD 报文,路由器能了解对端拥有的 LSA 情况。

字段含义与作用
接口MTU报文发送接口所连接网络的最大传输单元;0代表路由器不考虑MTU值对OSPF报文的限制
选项用于OSPF路由器之间交换各自的能力等级
“ I ” 标志位该位置 1 代表:该报文是描述链路状态数据库摘要的第一个数据库描述报文
“ M ” 标志位该位置 1 代表:后续还有其它的数据库描述报文
“ MS ” 标志位该位置 1 代表:发送该报文的路由器在数据库交换过程中是主方
DBD 报文主要数据内容抓包演示

🕤 5.4 链路状态请求报文 (LSR)

LSA 请求:在邻接关系初始化,交换 DD 报文后使用。当路由器根据 DD 报文得知对端有新的或更新的 LSA(链路状态通告)时,会向邻居发送 LSR 报文,请求获取特定的 LSA 详细信息,以实现自身链路状态数据库的同步更新 。

字段含义说明
LS Type链路状态类型Router-LSA (1) ,表示请求的是路由器链路状态通告,是 OSPF 中用于描述路由器自身链路状态信息的 LSA 类型
Link State ID链路状态 ID10.0.0.2 ,在 Router - LSA 中,一般表示产生该 LSA 的路由器的 Router ID ,这里代表对应 Router - LSA 所描述的路由器标识
Advertising Router通告路由器10.0.0.2 ,指产生并通告该链路状态信息的路由器的 Router ID ,即发送此 LSA 的路由器标识
LSR 报文主要数据内容抓包演示

🕤 5.5 链路状态更新报文 (LSU) 

LSA 请求:在邻接关系初始化,交换 DD 报文后使用。当路由器根据 DD 报文得知对端有新的或更新的 LSA(链路状态通告)时,会向邻居发送 LSR 报文,请求获取特定的 LSA 详细信息,以实现自身链路状态数据库的同步更新 。

LSU 报文主要数据内容抓包演示

 🕤 5.6 链路状态通告报文 (LSA)

链路状态通告报文作用于向其它邻接路由器传递拓扑和路由信息

5.6.1 首部公有信息

在 OSPF(开放最短路径优先)协议中,LSA(链路状态通告)三元组是唯一标识一条 LSA 的关键要素,具体如下:

三元组要素说明
Link - State Type(链路状态类型)用于区分 LSA 的种类,不同类型的 LSA 描述不同的网络信息
Link - State ID(链路状态 ID)其含义依据 LSA 类型有所不同(LSA分为6种后文会重点讲解)
Advertising Router(通告路由器)产生并向外通告这条 LSA 的路由器的 Router 

 仍然通过下面这张图谱中的路由器 R1 来具体分析一下LSA三元组。

OSPF 拓扑图演示

我们可以在路由器 R1 的命令行界面中输入如下命令查看OSPF的链路状态数据库(LSDB): 

[R1]display ospf lsdb
链路状态数据库内容

 解析:

图中的 Area:0.0.0.0 表示以下显示的是 Area 0 的 LSA 。从中我们可以看出,当前 Area 中共有 5 个 LSA ,其中包含 4 个 类型为 1 类的 LSA 和 1 个类型为 2 类的 LSA,以下参数需要重点专注:

  • LinkState ID :是对 LSA 的描述,也是 LSA 报文头中的链路状态 ID 字段。不同类型的 LSA 的这个字段含义不同,其中类型为 1 类的 LSA 的这个字段为生成这个 LSA 的 OSPF 路由器的 ID类型为 2 类的 LSA 这个字段为DR的接口 IP 地址。
  • AdvRouter:指明了生成这个 LSA 的 OSPF 路由器。
不同类型的 LSA 中 LinkState ID 字段含义
LSA 类型名称Link State ID 含义
Type 1Router LSA产生该 LSA 的路由器的 Router ID
Type 2Network LSA广播型网络或 NBMA 网络中 DR 的接口 IP 地址
Type 3Summary LSA for Network目的网络的网络地址
Type 4Summary LSA for ASBRASBR 的 Router ID
Type 5External LSA外部网络的网络地址
Type 7NSSA External LSANSSA 外部网络的网络地址

上述解析只是帮助大家更好的理解,下面将根据不同种类的LSA在只有骨干区域运行OSPF协议的基础上,添加其它区域运行OSPF协议。

5.6.2  类型 1:Router

每台运行 OSPF 协议的路由器都会生成 1 类 LSA,用来描述自身的链路状态信息,包括路由器的接口、链路类型、链路开销以及所连接的邻居路由器等。通过这些信息,其他路由器可以了解到该路由器在网络中的位置和连接情况。

我们可以在路由器 R1 的命令行种输入如下命令查看 链路状态数据库;SDB中路由器ID为10.0.0.3发送的 1 类LSA (Router)的详细信息:

[R1]display ospf lsdb router 10.0.0.3
1 类 LSA:Routet 内容详情

不难发现 1 类 LSA中会包含路由器的接口处于哪个链路类型中,在OSPF协议中接口所处的链路类型主要分为以下四种,链路类型与Link ID 和 Data 的对应关系如下:

链路类型Link ID 含义Data 含义
Point-to-Point邻居路由器的接口 IP 地址本地路由器在该链路上的接口 IP 地址
TransNetDR 的接口 IP 地址本地路由器在该链路上的接口 IP 地址
StubNet末梢网络的网络地址该末梢网络的子网掩码
Virtual Link虚连接另一端路由器的 Router ID本地路由器的 Router ID

解析: 

根据上述参数描述,我们再次观察 AR1 生成的类型 1 LSA ,其中包含两条链路信息:

  • 与 G0/0/0接口相关的链路,其类型为TransNet,因此 Link ID 为 DR 的 IP地址,Data 为G0/0/0接口IP。
  • 与Loopback0接口相关的链路,其类型为StubNet,因此 Link ID 为 Loopback0 接口的IP地址,Data为Loopbaak 0 接口的子网掩码。

5.6.3  类型 2:Network

        在MA网络中, 1 类 LSA 仅仅描述了DR设备发送该 LSA 的接口的IP地址,至于这个MA网络的其它情况(如:这个MA网络的掩码是多少,除了DR设备是否还存在其它设备)都无法通过 1 类LSA直观的看到,因此需要 2 类 LSA 对 1 类 LSA 进行一个补充

        2 类 LSA 由 DR(指定路由器)产生,用于向本区域内的其他路由器描述其所连接的广播型网络或 NBMA 网络的拓扑信息。包括网络中所有连接到该网络的路由器的接口 IP 地址等,这样其他路由器就可以了解到该网络的具体构成和连接情况。

2 类 LSA :Network 内容详情

字段含义
LS Type固定为 2,表示这是 Network LSA。
Link State ID

所描述的广播型网络或 NBMA 网络中 DR 的接口 IP 地址。

Network Mask网络的子网掩码,用于标识该网络的地址范围。
Attached Router列出连接到该网络的所有路由器的 Router ID,包括 DR 和 BDR 以及其他普通路由器。

5.6.4  类型 3:Sum-Net

3 类 LSA 由 ABR(区域边界路由器)产生,用于在不同区域间传递路由信息。ABR 会将某个区域内的路由信息汇总成 3 类 LSA 发布到其他区域,包含了目标网络的地址、掩码和开销等信息,这样其他区域的路由器就可以了解到本区域外部的网络可达信息以及到达这些网络的路径情况。

  我们在 路由器 R7 以及 R1 上配置好 Area 1 区域的OSPF 后,在路由器R2的命令中查看链路状态数据库会发现多了一条3类LSA的信息,如下所示:

R2 链路状态数据库内容展示

我们可以使用如下命令查看3类LSA的内容:

[R2]dis ospf lsdb summary
3 类 LSA 内容展示

: 路由器R2在解析3类LSA中的红框部分内容就知道172.16.1.0这个网段的存在且该网段的掩码为255.255.255.0,之后R2要向该网段发送数据时,会将数据甩给ABR(图中R1)再由ABR转发

路由器 R2 路由表展示

5.6.5  类型 5:External

        为了演示 5 类 LSA ,我们将路由器 AR2 作为 OSPF 域的 ASBR ,为了简单的实现外部路由的引入,我们添加一台路由器 AR9 与 AR 2相连,并在 AR9 上创建多个环回接口来模拟 OSPF 外部目的 IP 网段。

拓扑图

        在完成路由器 AR9 的相关配置后,我们可以在路由器 AR2 上输入如下命令来完成以外部路由的类型 1 方式引入静态路由(外部路由会在后文特殊区域章节中讲述):

[R2-ospf-10]import-route static type 1

:在引入外部路由之前需要先在 ASBR 设备上配置去往外部引入网段的静态路由 

         在ASBR AR2上成功引入外部路由后,我们可以在 Area 0中的其它路由器上观察这 3 条 OSPF 路由。我们以 AR1 为例,如下图展示:

AR1 路由表展示

5 类 LSA 由自治系统边界路由器(ASBR)产生,其功能是向整个 OSPF 自治系统通告来自外部路由协议(像 BGP、RIP 等)或者静态路由的网络信息,这样自治系统内的路由器就能了解到外部网络的可达性,从而实现与外部网络的通信。

        在这部分,我们可以通过下面的命令查看并确认 5 类 LSA,命令如下:

R1 路由器链路状态数据库外部路由展示
[R1]display ospf lsdb ase 8.8.8.8
5 类 LSA 内容展示
字段含义解释
Type类型标识 LSA 类型为 External,即 5 类 LSA,用于通告外部路由信息
Ls id链路状态 ID8.8.8.8 ,代表外部网络地址
Adv rtr通告路由器10.0.0.2 ,产生该 LSA 的 ASBR(自治系统边界路由器)的 Router ID
Options可选功能E 表示支持外部路由相关功能
Net mask网络掩码255.255.255.255 ,外部网络 8.8.8.8 的子网掩码
E type外部路由类型1 ,表示第一类外部路由(E1),计算路由开销时会结合内部开销与外部开销
Forwarding Address转发地址0.0.0.0 ,表示数据包应转发到通告路由器(ASBR)

 在 OSPF 中,外部引入路由分为两种类型:类型 1 外部路由(E1)和类型 2 外部路由(E2)。它们的种子度量值计算方式有所不同,具体如下:

类型分类:

  • E1型外部路由:域内设备到达域外目标网段总开销=内部网段到达ASBR的开销+种子度量值
  • E2型外部路由:域内设备到达域外目标网段总开销=种子度量值
  • 种子度量值默认为1,可以在重发布时修改

在 OSPF(开放最短路径优先)中,种子度量值(Seed Metric )是在进行路由重发布时用到的一个概念 。当把外部路由信息(比如从其他路由协议,像 RIP、EIGRP 等,或者其他 OSPF 进程)引入到 OSPF 网络中时,由于不同路由协议度量值计算方式和评判标准差异巨大,OSPF 会放弃外部路由原来的开销值,给这些引入的路由赋予一个特定的初始度量值,这个值就是种子度量值 。

根据上图 5 类 LSA 内容展示,我们可以知道外部引入路由的类型为 1 类,此时我们可以通过Area1区域内的 AR7 设备验证我们的猜想。

AR7 OSPF路由表展示

        图中蓝色框图部分得知 AR7 设备到达172.16.0.0网段的开销值=2,代表 AR7 到达 ASBR 设备 AR2 的开销值=2,根据 1 类外部路由的计算方式可得知,AR7 到达外部网段8.8.8.8的开销值=到达ASBR的开销值+种子度量值=2+1=3,也就是图中红框部分显示的cost=3。

5.6.6  类型 4:Sum-Asbr

 由区域边界路由器(ABR)产生,用于向除 ASBR 所在区域之外的其他区域,宣告自治系统边界路由器(ASBR)的位置 。当 ASBR 将外部路由引入到 OSPF 自治系统时,其他区域的路由器需要知道 ASBR 的位置,才能通过它访问外部网络。

[R1]dis ospf lsdb asbr 10.0.0.2
4 类 LSA 内容展示

 5.6.7  类型 7 :NSSA

类型 7 会在后文特殊区域:非完全末梢区域 NSSA 中单独讲解。

六.OSPF 路由优化

特殊区域作为OSPF减少LSA的更新手段之一。

🕤6.1  特殊区域

6.1.1 末梢区域:Stub

OSPF Stub区域中存在一种路由优化的方式即该区域不允许出现 4 类 LSA 和 5 类 LSA。在这个配置任务中,我们重点是对 Area 2 进行配置,实现 Area 2 与其它区域之间的通信,并观察Stub区域中的LSA。

 配置过程:

在 AR4 和 AR5  上更改 Area 2 为 Stub区域:

[R4-ospf-10-area-0.0.0.2]stub
[R5-ospf-10-area-0.0.0.2]stub

 等待 AR4 和 AR5 重新建立邻居关系,我们再次查看 AR5 的链路状态数据库:

AR5的链路状态数据库内容展示

         根据 Stub区域的定义,ABR不会将 4 类 和 5 类 LSA通告到 Stub 区域(Area 2),但是它会将 3 类 LSA 通告到 Stub 区域,并且产生一个新的 3 类 LSA ,将一条默认路由通告到Stub区域中,如红框部分所示。

AR5 的OSPF路由表展示

6.1.2 完全末梢区域

        对于单一 ABR 的非骨干区域来说,一条默认路由就可以满足这个区域的通信需求,完全末梢区域会在末梢区域拒绝接收 4 类 和 5 类 LSA的基础上进一步拒绝接收 3 类 LSA,只会生成一条默认的 3 类 缺省路由。

[R4-ospf-10-area-0.0.0.2]stub no-summary 
[R5-ospf-10-area-0.0.0.2]stub no-summary

 配置完成后查看 AR5 的 OSPF链路状态数据库,此时中剩下一条 3 类缺省LSA

R5 链路状态数据库展示

 在AR5上查看OSPF路由表

R5 的OSPF路由表

6.1.3 非完全末梢区域:NSSA

        与 OSPF Stub 区域类似,NSSA 区域中不允许出现 4 类 LSA 和 5 类 LSA。但与 Stub 区域不同的是,NSSA 区域可以引入外部路由在NSSA区域中,引入的外部路由会以 7 类 LSA 的形式出现

: Stub 区域适用于不需要通过配置的区域引入外部路由的情况,NSSA 区域适用于需要通过配置的区域引入外部路由进而向其它区域泛洪 5 类 和 4 类 LSA 的情况(参考下面的案例,需要通过Area3 区域内的 R6 设备引入外部路由)。

         为了更好的效果演示,我们需要在路由器 AR6 上引入外部路由 6.6.6.6/32,我们使用如下方法引入外部路由:

[R6]ip route-static 6.6.6.6 255.255.255.255 null 0
[R6]ospf 10
[R6-ospf-10]import-route static type 1

        在 ASBR AR6 上成功引入外部路由后,我们可以在其它 OSPF 区域中的路由器上观察这条 OSPF 路由,下面以 AR1 为例:

AR1 OSPF 路由表展示

         接着,我们将 Area3 更改为 NSSA 区域,并观察 Area 3 以及其它区域的 LSA 变化为了将OSPF Area 3 更改为 NSSA 区域,我们需要做如下配置:

[R3-ospf-10-area-0.0.0.3]nssa
[R6-ospf-10-area-0.0.0.3]nssa

        等待 AR3 与 AR6 重新建立 OSPF 邻居关系后,我们再次查看 AR6 的 LSDB ,如下所示:

AR6 链路状态数据库展示

        根据 NSSA 区域定义, NSSA 区域不存在 4 类 和 5 类 LSA ,ASBR AR6 所引入的外部路由(6.6.6.6)以 7 类 LSA 的形式存在接着,查看 AR6 的 OSPF 路由表,此时 AR6 中没有任何 ASE(外部路由),多了一条 NSSA 路由(0.0.0.0/0),如下所示:

AR 6 OSPF 路由表展示

        路由器 AR3 作为 ABR ,在将 NSSA 区域中的外部路由通告到其它区域之前,会将 NSSA 区域中的 7 类 LSA 转换为 5 类 LSA, 下面,我们来查看下 7 类 LSA 的具体信息:

7 类 LSA 内容展示

         我们可以在ABR AR3 上使用如下命令查看 AR3 的身份信息:

[R3]dis ospf brief 
AR 3 身份信息展示

         红框部分字段显示了 AR3 当前身份:AREA  AS NSSA ,也就是说 AR3 作为 ABR,ASBR,并且 AR3 有接口属于 NSSA 区域。AR3的身份中还包含了 ASBR ,这是因为 AR3 作为 NSSA 区域的 ABR ,会将 7 类 LSA 转换为 5 类 LSA,并将这个 5 类 LSA 通告到其它 OSPF 区域中,以此通告外部路由。 

R3 路由器中 7 类 LSA 转化为 5 类 LSA 内容展示

         继续在其它路由器 AR1 上观察与 6.6.6.6 相关的 LSA:

R1 链路状态数据库外部引入路由内容展示

        从图中红框的部分展示结果可见,该条 5 类 LSA 通告了 6.6.6.6 这条外部路由,进一步验证了 AR3 已经将 7 类 LSA 转换为 5 类 LSA,并将其通告到其它区域中。

 6.1.4 完全的非完全末梢区域

        我们可以进一步缩小 NSSA 区域内路由器的路由表,将 NSSA 区域更改为 Totally NSSA 区域,也就是说,ABR 只会向 Totally NSSA 区域中通告一条自己生成的默认路由,并隐藏其它区域的 OSPF 路由。

[R3-ospf-10-area-0.0.0.3]nssa no-summary
[R6-ospf-10-area-0.0.0.3]nssa no-summary

重新建立邻居后,我们再次查看 AR6 的 LSDB,如下所示:

R6 链路状态数据库展示

 我们可以对比之前的 AR6 链路状态数据库,可以发现当前 AR6 上所有的 3 类 LSA 全部消失,只剩下一个默认的 3 类 缺省LSA,AR3 不再向 NSSA 区域通告其它 3 类 LSA,同时会生成一条 7 类 缺省 LSA。

AR 6 OSPF 路由表展示

🕤6.2  路由汇总

6.2.1 域间汇总

        域间汇总是指区域边界路由器(ABR)将一个区域内的路由信息进行汇总后,再通告到其他区域 。ABR 基于某个区域的 1 类(路由器链路状态通告,LSA1 )和 2 类(网络链路状态通告,LSA2 )LSA 计算出最佳路由,然后在向其他区域共享这些路由信息时,把多条具体的路由汇总成一条或几条汇总路由进行传递

域间汇总拓扑图

        为了演示效果,我们在 AR7 设备上手动创建两个演示环回接口分别为192.168.1.0/24 和192.168.2.0/24,创建完成后通过 OSPF 协议发布后,先查看下 ABR AR1 的 LSDB ,如下:

ABR设备 AR1 的链路状态数据库展示

         根据图中链路状态数据库展示,我们刚刚新创建的演示环回接口的路由信息被 ABR 设备以 3类 LSA 的形式泛洪到区域 Area0中,下面我们进行域间汇总的配置,例如,想要汇总 Area1 中的路由信息,就进入到 Area1中进行配置。

[R1-ospf-10-area-0.0.0.1]abr-summary 192.168.0.0 255.255.252.0
域间汇总后 ABR 设备链路状态数据库展示

         我们在进行域间汇总之后,对比 ABR 设备的链路状态数据库可见,原有的两条 LSA 被汇总成为了一条。

6.2.2 域外汇总

        和域间汇总演示配置一致,我们先在 AR9 上创建两个演示环回接口:192.168.3.0/24 和 192.168.4.0/24,创建完之后在 ASBR 设备 AR2上引入外部路由。

域外汇总拓扑图

我们按照下面的配置,将外部路由进行引入,之后查看下: 

# ASBR 设备上先配置静态路由
[R2]ip route-static 192.168.3.0 24 172.16.4.8
[R2]ip route-static 192.168.4.0 24 172.16.4.8# ASBR 设备引入外部路由
[R2-ospf-10]import-route static type 2
ASBR 链路状态数据库展示

根据上图可以发现,ASBR设备已经将外部路由引入到,下面我们进行域外汇总,并验证结果:

[R2-ospf-10]asbr-summary 192.168.0.0 255.255.248.0
ASBR 链路状态数据库展示

七.OSPF不规则区域 

🕤7.1 远离骨干的非骨干区域

在 OSPF协议中,区域分为骨干区域(Area 0 )和非骨干区域 。远离骨干的非骨干区域,指未与骨干区域(Area 0)直接相连的非骨干区域,是一种不规则区域。

拓扑图展示

        图中 Area 4 是远离骨干的非骨干区域。正常情况下,非骨干区域应与骨干区域直接相连,通过区域边界路由器(ABR)与骨干区域交互路由信息 。但在此图中,Area 4 没有直接连接到骨干区域 Area 0 。 

        首先将 Area 3 区域的OSPF配置完成,接着查看 AR7 和 AR1 的链路状态数据库,如下所示

R1 链路状态数据库

        分析 R1 链路状态数据库,发现 R1 设备并未收到来自 Area4 区域 AR13 设备通告的LSA ,下面接着分析 R7 设备的链路状态数据库,如下所示:

R7 链路状态数据库

 此时看见 R7 链路状态数据库中存在 Area 4 区域通告的 LSA ,为何 AR4 能收到 AR13 的 LSA信息,而 AR1 收不到呢?原因是:Area 4 属于不规则区域,带来的通信障碍导致 AR1 获取不到任何 LSA 信息。

7.1.2 虚链路技术

虚链路是在两台 ABR(区域边界路由器)之间,通过将骨干区域(Area 0)与远离骨干的非骨干区域(Area 5 )之间的非骨干区域(Area 1)在逻辑上虚拟成骨干区域的一部分。

虚链路演示图
#在需要 Area 1 区域中配置 ASBR 设备(AR7)寻找 ABR 设备(AR1)作为保证人
[R7]ospf 10
[R7-ospf-10]area 1
[R7-ospf-10-area-0.0.0.1]vlink-peer 10.0.0.1# AR1 同意作为担保人
[R1]ospf 10
[R1-ospf-10]area 1
[R1-ospf-10-area-0.0.0.1]vlink-peer 10.0.0.7
AR1 链路状态数据库

         当完成虚链路的配置,等待邻居关系的重新建立之后,重新查看 AR1 的链路状态数据库可以发现,AR1 在 区域 Area 1 中收到了通告172.16.5.0 网段的路由信息的 3 类 LSA。

AR7 链路状态数据库
AR7 链路状态数据库

与未配置虚链路时 AR7 链路状态数据库展示图对比,在配置完虚链路之后,原先作为ASBR 设备的 AR7 在逻辑上被虚拟成了 ABR 也就同时拥有了 3 个区域的 LSA 信息。

8.1.2 多进程双向重发布

在一台设备上若同时启动多个 OSPF 进程,不同的进程将宣告不同的接口,拥有各自的数据库,且不共享。仅将计算所得路由加载于同一张路由表中,再利用 ASBR 将 LSA(链路状态通告)翻译并传输,使得各个进程之间的网络能够有效地互通。

  • 多进程:在一台设备上同时启动多个 OSPF 进程,每个进程拥有独立的数据包、数据库,数据库间不共享,仅将计算所得的路由加载于同一张路由表中。不同的 OSPF 进程维护各自独立的链路状态数据库(LSDB)和路由表,就好像是不同的路由协议在运行27。
  • 双向重发布:在运行了不同协议或不同进程的边界设备(ASBR,自治系统边界路由器)上,将一种协议或进程按照另一种协议或进程的规则发布出去,实现路由信息在不同进程之间的双向传递1。
多进程双向重发布演示图

 我们先在 ASBR 设备上创建一个新的 ospf 进程 20 用来宣告 Area 4 区域的路由信息。

[R7]ospf 20 router-id 10.0.0.7
[R7-ospf-20]area 4
[R7-ospf-20-area-0.0.0.4]network 172.16.5.0 0.0.0.255

接着,我们在 ASBR 设备 AR7 上将进程 20 与进程 30 之间的路由信息进行双向发布。

[R7]ospf 10	
[R7-ospf-10]import-route ospf 20
[R7]ospf 20
[R7-ospf-20]import-route ospf 10
AR1 链路状态数据库展示

多进程双向重发布配置完成后,AR1 设备的链路状态数据库在 Area1区域收到了通告172.16.5.0网段路由信息的 5 类 LSA

:虚链路技术是将非骨干区域虚拟成骨干区域,从逻辑上将远离骨干的非骨干区域虚拟成非骨干区域,因此会收到通告路由信息的 3 类 LSA。

拓展:使用重发布技术引入的路由优先级默认为150,下面分析下原因。

         拓扑图中 AR14 设备上存在一个演示网段192.168.1.0,ASBR设备作为图中的 ASBR 设备会将演示网段的路由信息沿着绿色箭头方向重发布到 RIP 区域同时沿着该方向传递,同时会沿着紫色箭头方向重发布演示网段信息到 OSPF 区域并沿着该方向传递。

        同样作为 ASBR 设备的 AR15 会从 RIP 区域 以及 OSPF 区域收到演示网段的路由信息,此时,由于 OSPF 协议的路由优先级默认为10 > RIP 协议的路由优先级100,因此优先会将OSPF区域收到路由信息重发布到 RIP 区域,如此一来,AR12会存在两条去往演示网段的路由信息,造成负载均衡。

        基于上述情况,重发布技术将引入的路由优先级默认修改为150,该优先级大于所有IGP协议的优先级,从而解决路由回馈的问题。


总结

相关文章:

探索 OSPF 协议:构建高效网络的基石

文章目录 目录 文章目录 前言 一.OSPF协议概述 二.OSPF相关概念 🕤 2.1 基本思想 🕤 2.2 SPF算法 🕤 2.3 区域划分​编辑 三.OSPF工作原理 ​编辑 🕤 3.1 DR/BDR选举 四.OSPF网络类型 🕤4.1 BMA 🕤4.2 P2P …...

深入剖析C++单例模式的八种实现演进与工程实践

深入剖析C单例模式的八种实现演进与工程实践 一、从基础到工业级:单例模式的演进图谱 1.1 基础实现的致命缺陷分析 // 初级版(非线程安全) class NaiveSingleton { public:static NaiveSingleton* getInstance() {if (!instance) {instanc…...

手游防DDoS攻击SDK接入

在手游中集成防DDoS攻击SDK是抵御流量型和应用层攻击的核心手段之一。以下从​​SDK选型、接入流程、防护策略优化​​三个维度提供完整指南,并附关键代码示例: ​​一、SDK选型与核心能力对比​​ ​​服务商​​​​优势​​​​劣势​​​​适用场景…...

【C++进阶】关联容器:multimap类型

目录 一、multimap 基础概念与底层实现 1.1 定义与核心特性 1.2 底层数据结构 1.3 类模板定义 1.4 与其他容器的对比 二、multimap 核心操作详解 2.1 定义与初始化 2.2 插入元素 2.3 查找元素 2.4 删除元素 2.5 遍历元素 三、性能分析与适用场景 3.1 时间复杂度分…...

学习threejs,使用EffectComposer后期处理组合器(采用RenderPass、FilmPass渲染通道)

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.EffectComposer 后期…...

用Django和AJAX创建一个待办事项应用

用Django和AJAX创建一个待办事项应用 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录 用Django和AJAX创建一个待办事项应用让我们创建一个简单的 Django 项目,其中包含不同类型的 A…...

​【微调大模型】使用LLaMA-Factory进行监督微调 Qwen2.5 ​

本文使用LLaMA-Factory进行监督微调 Qwen2.5。 此监督微调(SFT)脚本具有以下特点: 支持单GPU和多GPU训练;支持全参数调优,LoRA,Q-LoRA,Dora。 下面详细介绍一下该脚本的使用方法。 目录 安装…...

前端 react+ant design ,后端 springboot +mysql+redis 全栈项目零基础小白从服务器初始化开始部署上线超详细保姆级教程

哈喽小伙伴们,好久不见,我是小李,今天,来电干货,希望对大家有帮助。 去年12月底的时候心血来潮,正好赶上腾讯云在做活动,就买了一台服务器,说是后面打算上线一两个项目,体验体验云服务器究竟是怎么玩的。后来由于实习和“冬招”,实在忙不过来了,就放在文件夹吃灰了…...

[Windows] OfficeAI 助手 v0.3.20(长期免费,2025-03-18 本地支持WPS_Word联动)

OfficeAI助手,作为Microsoft Office与WPS的得力智能插件,集文档自动生成、内容精准校对与润色、公式智能推荐等多功能于一体。它凭借强大的数据分析能力,深度融入Office/WPS办公生态,一键简化复杂流程,让办公效率倍增&…...

3DGS之光栅化

光栅化(Rasterization)是计算机图形学中将连续的几何图形(如三角形、直线等)转换为离散像素的过程,最终在屏幕上形成图像。 一、光栅化的核心比喻 像画家在画布上作画 假设你是一个画家,要把一个3D立方体画…...

可发1区的超级创新思路(python 、MATLAB实现):基于SAM+Informer+2DCNN的功率预测模型

首先声明,该模型为原创!原创!原创!且该思路还未有成果发表,感兴趣的小伙伴可以借鉴! 目录 首先声明,该模型为原创!原创!原创!且该思路还未有成果发表,感兴趣的小伙伴可以借鉴! 一、模型背景与核心创新 二、模型组件详解 1. SAM时空注意力模块 原理说明 代码实…...

【Java面试系列】Spring Boot微服务架构下的分布式事务解决方案与性能优化详解 - 3-5年Java开发必备知识

【Java面试系列】Spring Boot微服务架构下的分布式事务解决方案与性能优化详解 - 3-5年Java开发必备知识 1. 引言 在当今的微服务架构中,分布式事务是一个不可避免的话题。随着业务复杂度的提升,如何保证跨服务的数据一致性成为开发者和架构师必须面对…...

【MATLAB第114期】基于MATLAB的SHAP可解释神经网络分类模型(敏感性分析方法)

【MATLAB第114期】基于MATLAB的SHAP可解释神经网络分类模型(敏感性分析方法) 引言 该文章实现了一个可解释的神经网络分类模型,使用BP神经网络(BPNN)来预测特征输出。该模型利用12个变量参数作为输入特征进行训练。为…...

WPS免费使用宏(安装VBA插件)

WPS提示要开会员才能使用宏,多次搜索发现其实可以直接安装VBA插件就行,Mark一下 插件下载地址: https://www.onlinedown.net/soft/10044362.htm ‘’’ WPS插件软件介绍 wps vba是一款wps office插件,安装wps vba 7.1就可以让of…...

让测试飞起来——DevOps中的自动化测试实践指南

让测试飞起来——DevOps中的自动化测试实践指南 近年来,DevOps理念已经成为现代软件开发和运维的“最佳拍档”。它倡导“开发”和“运维”的协作,核心目标是加速交付,同时保障软件质量。而在这一过程中,测试自动化扮演了不可替代的角色。今天,我们就一起来聊聊测试自动化…...

开源AI大模型AI智能名片S2B2C商城小程序:科技浪潮下的商业新引擎

摘要: 本文聚焦于科技迅猛发展背景下,开源AI大模型、AI智能名片与S2B2C商城小程序的融合应用。通过分析元宇宙、人工智能、区块链、5G等前沿科技带来的商业变革,阐述开源AI大模型AI智能名片S2B2C商城小程序在整合资源、优化服务、提升用户体验…...

webpack配置导致浏览器自动刷新

文章目录 关键配置 - liveReload 关键配置 - liveReload const dev_config {devtool: source-map,// watch: true,devServer: {contentBase: path.resolve(__dirname, bin),port: 8005,host:192.168.xx.xx,inline: true,hot: false,liveReload: false //关键这一行【false不会…...

OPEX baota 2024.02.26

OPEX baota 2024.02.26 运维集成软件宝塔2024.02.26作废例子: 最重要的两个地方:上传文件 网站,重启应用服务器(tomcat) 其他很少用的...

【Pandas】pandas DataFrame to_numpy

Pandas2.2 DataFrame Conversion 方法描述DataFrame.astype(dtype[, copy, errors])用于将 DataFrame 中的数据转换为指定的数据类型DataFrame.convert_dtypes([infer_objects, …])用于将 DataFrame 中的数据类型转换为更合适的类型DataFrame.infer_objects([copy])用于尝试…...

Tensorflow2实现: LSTM-火灾温度预测

- **🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/rnFa-IeY93EpjVu0yzzjkw) 中的学习记录博客** - **🍖 原作者:[K同学啊](https://mtyjkh.blog.csdn.net/)** 一:理论知识基础 1.LSTM原理 一句话介…...

【降尺度】AI+CMIP6数据分析与可视化、降尺度技术与气候变化的区域影响、极端气候分析

气候变化已成为全球性挑战,对农业、生态系统、水资源、人类健康和社会经济系统产生深远影响。科学研究表明,自工业革命以来,人类活动导致的温室气体排放与全球气温上升、极端天气事件增加、冰川融化和海平面上升等现象密切相关。为科学理解和…...

粒子系统优化完成

按计划对幻世(OurDream)2D图形引擎的粒子系统进行了加强和优化,重点强化了粒子运动的控制和颜色混合效果的功能,目前优化过后的粒子系统的整体效果是令人满意的。...

spark-core编程

RDD转换算子 RDD 的两种算子:转换算子和行动算子。 RDD 根据数据处理方式的不同将算子整体上分为 Value 类型、双 Value 类型和 Key-Value 类型。 算子实际上是一些函数,用于数据处理。 Value类型 map 将处理的数据逐条进行映射转换,…...

智慧班牌系统解决方案,SaaS智慧电子班牌云平台

智慧班牌系统解决方案 系统概述 智慧班牌是智慧校园建设不断发展的产物,是教育信息化改革的载体。通过智慧班牌可以高效便捷传递各种知识信息和通知信息、及时反馈课堂信息、实现班级的透明化管理。智慧班牌将学生平安考勤、异常出勤情况及时反馈至家长、老师&…...

Flutter 2025 Roadmap

2025 这个路线图是有抱负的。它主要代表了我们这些在谷歌工作的人收集的内容。到目前为止,非Google贡献者的数量超过了谷歌雇佣的贡献者,所以这并不是一个详尽的列表,列出了我们希望今年Flutter能够出现的所有令人兴奋的新事物!在…...

【开发工具】科研开发中的主流AI工具整理及如何使用GPT润色英文论文

一、主流AI工具 AI技术发展至今已经逐渐成熟,并可以取代一部分科研和开发中的简单工作,并为复杂工作提高辅助,除此之外也是更高级的信息检索工具。熟练掌握 AI 工具在当前市场理应具有竞争优势,目前笔者在科研和开发中接触过AI工…...

用excel做九乘九乘法表

公式: IF($A2>B 1 , 1, 1,A2 & “" & B$1 & “” & $A2B$1,”")...

nacos配置达梦数据库驱动源代码步骤

1.在父工程pom.xml添加依赖&#xff1a; <dependency><groupId>com.dameng</groupId><artifactId>DmJdbcDriver18</artifactId><version>8.1.1.193</version> </dependency> 2.在nacos-config模块pom.xml添加依赖&#xff1…...

Spring Boot 线程池配置详解

Spring Boot 线程池配置详解 一、核心配置参数及作用 基础参数核心线程数 (corePoolSize)‌ 作用‌:线程池中始终保持存活的线程数量,即使空闲也不回收‌。 建议‌:根据任务类型设定(如 I/O 密集型任务可设为 CPU 核心数 2)‌。 最大线程数 (maxPoolSize)‌ 作用‌:…...

如何使用 qrcode.react生成二维码

qrcode.react&#xff08;查看官网&#xff09; 是一个用于 React 应用的 QR 码生成组件。下面是如何使用它的详细指南&#xff1a; 1、安装 npm install qrcode.react # 或者 yarn add qrcode.react2、基本用法 import {QRCodeSVG} from qrcode.react;const myPage () >…...

用VScode来编写前后端——构建基础框架

前言 我写这一个板块的原因是我参加了我们学校的新生项目课&#xff0c;需要创立一个系统&#xff0c;我们小组选的标题的基于计算机视觉的商品识别系统&#xff0c;那么我们需要一个网站来展示我们的功能&#xff0c;故写这些来记录一下自己&#xff0c;大家如果有什么问题的话…...

23.OpenCV轮廓逼近与拟合

OpenCV轮廓逼近与拟合 在计算机视觉中&#xff0c;轮廓是图像中边界或形状的重要表达形式。然而&#xff0c;直接从图像中提取的轮廓常常包含大量冗余点&#xff0c;且噪声较多。为了更好地描述图像中的形状&#xff0c;我们通常需要对轮廓进行逼近和拟合&#xff0c;从而降低…...

Flutter Row / Column 组件详解

1. 引言 在 Flutter 中&#xff0c;Row 和 Column 是最常用的布局组件&#xff0c;用于在水平方向 (Row) 或垂直方向 (Column) 排列子组件。它们提供了强大的对齐方式、空间分配策略&#xff0c;适用于各种 UI 设计需求。本文将详细介绍它们的基本用法、主要属性及自定义样式。…...

WHAT - 表单场景 - 依赖联动

目录 示例场景技术栈示例代码功能点总结详情场景 - 依赖联动初始化示例说明&#xff1a;详情页场景&#xff08;含回显、联动&#xff09;修改点说明示例代码&#xff08;详情页&#xff09;总结一下关键点 下面是一个基于 React TypeScript Ant Design (antd) 的表单联动示例…...

SecProxy - 自动化安全协同平台

本人为甲方安全人员&#xff0c;从事甲方工作近6年&#xff1b;针对在甲方平时安全工作的一些重复、复杂、难点的工作&#xff0c;思考如何通过AI、脚本、或者工具实现智能且自动化&#xff0c;于是花平时空闲时间准备将这些能力全部集中到一个平台&#xff0c;于是有了这个东西…...

网络3 子网掩码 划分ip地址

1.根据子网掩码判断主机数 IP地址网络位主机位 核心&#xff1a;将主机位划分为子网位和主机位 疑问&#xff1a;子网位有什么作用 子网掩码&#xff1a;网络位全为1&#xff0c;主机位全为0 主机数2^主机位 -2 2.根据主机和子网判断子网掩码 有一个B类网络145.38.0.0需要划…...

电容详解:定义、作用、分类与使用要点

一、电容的基本定义 电容&#xff08;Capacitor&#xff09; 是由两个导体极板&#xff08;正负极&#xff09;和中间绝缘介质组成的储能元件&#xff0c;其基本特性为存储电荷。 公式&#xff1a; C Q / V C&#xff1a;电容值&#xff08;单位&#xff1a;法拉F&#xff09…...

Sublime Text for Mac v4.0 【注册汉化版】代码编辑器

Sublime Text for Mac v4.0 【注册汉化版】代码编辑器 一、介绍 sublime text for Mac一款轻量级的文本编辑器&#xff0c;拥有丰富的功能和插件。它支持多种编程语言&#xff0c;包括C、Java、Python、Ruby等&#xff0c;可以帮助程序员快速编写代码。Sublime Text的界面简洁…...

OpenCV 进阶实战与技巧——图像处理的全面解析

在上篇文章中&#xff0c;我们一起迈入了 Python OpenCV 的奇妙世界&#xff0c;学习了图像的读取、显示和保存等基本操作&#xff1a;用Python和OpenCV开启图像处理魔法之旅-CSDN博客。今天&#xff0c;我们将继续深入&#xff0c;探索图像的各种变换、滤波、边缘检测以及更深…...

单细胞转录组-生物标志物篇 | 从异质性描绘到筛查应用

宫颈癌&#xff08;Cervical cancer, CC&#xff09;是一种常见的妇科恶性肿瘤。尽管目前的筛查方法已被证明有效并显著降低了CC的发病率和死亡率&#xff0c;但仍然存在缺陷。单细胞RNA测序可以在单细胞分辨率下鉴定复杂和稀有的细胞群。通过scRNA-seq&#xff0c;已经绘制和描…...

MQTT:深入剖析 paho.mqtt.embedded - c - master 目录结构

引言 在嵌入式开发领域&#xff0c;消息队列遥测传输&#xff08;MQTT&#xff09;协议因其轻量级、低带宽消耗等特性被广泛应用。Eclipse Paho 项目提供了多种语言的 MQTT 客户端实现&#xff0c;其中paho.mqtt.embedded - c - master是针对 C 语言在嵌入式环境下的 MQTT 客户…...

minio命令行客户端mc常见用法

安装minio命令行客户端mc https://min-io.cn/docs/minio/linux/reference/minio-mc-admin.html # Windows安装minio命令行客户端 choco install minio-client -y# Linux安装mc客户端 wget -c -P /usr/local/bin/ https://dl.min.io/client/mc/release/linux-amd64/mc # 赋予可…...

Mac提示无法打开应用程序DBeaver

问题&#xff1a;安装好后&#xff0c;打开DBeaver时候提示“无法打开应用程序DBeaver” &#xff08;1&#xff09;首先&#xff0c;进入到/Applications/DBeaver.app/Contents/MacOS目录查看可执行程序的权限是否为-rwxr-xr-x&#xff0c;如果不是执行chmod x DBeaver的命令 …...

Dart逆向之函数调用

我们从Blutter恢复的部分IL中可以看到Dart调用函数的逻辑 // 0x180490: r16 <int> // 0x180490: ldr x16, [PP, #0x8a0] ; [pp0x8a0] TypeArguments: <int> // 0x180494: r30 Instance_MethodChannel // 0x180494: ldr lr, [P…...

Word / WPS 页面顶部标题 段前间距 失效 / 不起作用 / 不显示,标题紧贴页眉 问题及解决

问题描述&#xff1a; 在 Word 或者 WPS 里面&#xff0c;如果不是新的一节&#xff0c;而是位于新的一页首行时&#xff0c;不管怎么设置段前间距&#xff0c;始终是失效的&#xff0c;实际段前间距一直是零。 解决方案&#xff1a; 查询了很多方案均无法解决问题&#xff…...

在 ASP.NET Web 应用中解析 JSON 数据实例

在 ASP.NET Web 应用中解析 JSON 数据有多种方法&#xff0c;取决于你使用的是传统的 Web Forms、MVC 还是现代的 Web API。以下是几种常见的解析方法&#xff1a; 1. 使用 Newtonsoft.Json (Json.NET) 这是最常用的 JSON 处理库&#xff0c;需要先安装 NuGet 包&#xff1a;…...

vSphere 8.x Advanced Design(3V0-21.23)题库

最新版vSphere 8.x Advanced Design(3V0-21.23)题库&#xff0c;完整版见上方二维码。 Following a review of security requirements, an architect has confirmed the following requirements: REQ001- A clustered firewall solution must be placed at the perimeter of t…...

vba讲excel转换为word

VBA将excel转换为word Sub ExportToWordFormatted() 声明变量Dim ws As Worksheet 用于存储当前活动的工作表Dim rng As Range 用于存储工作表的使用范围&#xff08;即所有有数据的单元格&#xff09;Dim rowCount As Long, colCount As Long 用于存储数据范围的行数和列数…...

【BUG】远程连接阿里云服务器上的redis报错

出现 Redis Client On Error: Error: connect ECONNREFUSED 47.100.XXX.XX:6379 错误&#xff0c;表明 Redis 客户端无法连接到指定的 Redis 服务器&#xff0c;可按以下步骤排查解决&#xff1a; 1. 检查 Redis 服务器是否运行 操作&#xff1a;在 Redis 服务器所在终端执行…...

数据中台、BI业务访谈(二):组织架构梳理的坑

这是数据中台、BI业务访谈系列的第二篇文章&#xff0c;在上一篇文章中&#xff0c;我重点介绍了在给企业的业务部门、高层管理做业务访谈之前我们要做好行业、业务知识的功课。做好这些功课之后&#xff0c;就到了实际的访谈环节了。 业务访谈关键点 那么在具体业务访谈的时…...