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

20.OSPF路由协议·单区域

OSPF–单区域

课程目标

  • 了解为什么要用OSPF?

  • 掌握OSPF路由协议基本原理

  • 熟练配置单区域OSPF

一 RIP的不足

1 以跳数评估的路由并非最优路径

在这里插入图片描述

  • 如果RTA选择S0/0传输,传输需时会大大缩短为3s

2 最大跳数16导致网络尺度小

在这里插入图片描述

  • RIP协议限制网络直径不能超过16跳

3 收敛速度慢

在这里插入图片描述

  • RIP定期路由更新

    • 更新计时器:定期路由更新的时间间隔,默认30秒

    • 失效计时器:失效计时器内未收到更新,路由失效,默认180秒

    • 清除计时器:清除计时器内未收到更新,路由清除,默认240秒

4 更新发送全部路由表浪费网络资源

在这里插入图片描述

  • 假设RTA和RTB各有1000条路由,每条路由需占用20个字节
  • 每次路由更新时,RTA和RTB之间单向需消耗至少160Kb的带宽资源

OSPF简介

1 OSPF的概念

  • OSPF英文全称Open Shortest Path First (开放式最短路径优先)

  • OSPF是IETF开发的一种链路状态路由协议,使用基于带宽的度量值

  • OSPF采用SPF算法计算路由,从算法上保证了无路由环路

  • OSPF通过邻居关系维护路由,避免了定期更新对带宽的消耗

  • OSPF路由更新效率高,网络收敛快,适用于大中型网络

  • OSPF报文封装于IP,协议号89,组播地址224.0.0.5224.0.0.6

2 OSPF的组成

1.四张表(核心数据存储结构)

OSPF 通过四张表实现路由信息的收集、计算和转发,四者分工明确且相互关联

  • OSPF 邻居表(Neighbor Table)

    • 作用

      • 记录与本地路由器建立邻居关系的其他路由器信息,是 OSPF 通信的基础
    • 内容

      • 包括邻居路由器的 Router ID、接口 IP、邻居状态、hello 报文发送间隔等
    • 举例

      • 若路由器 A 与路由器 B 通过以太网相连,A 的邻居表中会显示 B 的 Router ID、B 连接 A 的接口 IP,以及当前邻居状态
  • 链路状态数据库(LSDB,对应 DBD 相关存储)

    • 作用

      • 存储全网的链路状态信息(以 LSA 为单位),是 OSPF 计算路由的 “原始数据”
      • 同一区域内的所有路由器 LSDB 完全一致
    • 内容

      • 包含各类 LSA(如路由器 LSA、网络 LSA 等),记录了网络拓扑(如链路带宽、接口 IP、路由器连接关系)
  • OSPF 路由表(OSPF Routing Table)

    • 作用
      • 基于 LSDB,通过 SPF(最短路径优先)算法计算出的、针对 OSPF 网络的最优路由
    • 内容
      • 包括目的网络、掩码、下一跳路由器、出接口、度量值(Cost,与链路带宽相关)等
      • 仅包含 OSPF 协议发现的路由
  • 全局路由表(Routing Table)

    • 作用

      • 整合所有路由协议(如 OSPF、RIP、静态路由)发现的路由,最终用于数据包转发的 “总路由表”
    • 内容

      • 从各协议路由表中选择最优路由(按路由优先级和度量值),包含目的网络、出接口、下一跳等转发关键信息
2.五种报文(OSPF 通信的 “语言”)

OSPF 通过五种报文完成邻居建立、LSA 交换和路由计算,所有报文均基于 IP 协议(协议号 89)发送:

  • Hello 报文

    • 作用

      • 发现和维护邻居关系,周期性发送
        • 如广播网络中默认 10 秒
        • 点对点链路中默认 30 秒
    • 关键信息

      • 包含本地 Router ID、Hello 间隔、死亡时间(默认 4 倍 Hello 间隔)、区域 ID、掩码等
      • 只有参数匹配的路由器才能建立邻居
  • DBD(数据库描述)报文

    • 作用

      • 交换 LSDB 的 “目录”(LSA 头部信息),用于同步双方 LSDB
      • 类似 “图书目录”,告知对方自己有哪些 LSA。
    • 特点

      • 包含 LSA 的摘要信息(如 LSA 类型、链路状态 ID、通告路由器、序列号),不包含完整 LSA 内容
  • LSR(链路状态请求)报文

    • 作用

      • 向邻居请求本地缺少或更新的 LSA
      • 当通过 DBD 发现对方有自己没有的 LSA 时,发送 LSR 请求
    • 内容

      • 指定需要请求的 LSA
      • 通过 LSA 类型、链路状态 ID、通告路由器标识
  • LSU(链路状态更新)报文

    • 作用

      • 响应 LSR 请求,或主动发送新的 LSA(如链路状态变化时),是传递 LSA 完整内容的核心报文
    • 特点

      • 一个 LSU 可包含多个 LSA,发送后需要对方回复 LSAck 确认
  • LSAck(链路状态应答)报文

    • 作用

      • 确认收到 LSU 报文,保证 LSA 传输的可靠性。
    • 内容

      • 包含已接收 LSA 的头部信息,告知对方 “已收到指定 LSA”
3.六类核心 LSA(链路状态信息的 “载体”)

LSA(链路状态通告)是 OSPF 描述网络拓扑的基本单元,不同类型 LSA 用于传递不同场景的信息,常见核心类型有 6 类

LSA 类型名称作用范围主要内容
1 类路由器 LSA(Router LSA)仅本区域描述路由器自身接口的链路状态(如接口 IP、Cost、连接的网络)
2 类网络 LSA(Network LSA)仅本区域由 DR(指定路由器)生成,描述广播 / NBMA 网络中所有连接的路由器
3 类网络汇总 LSA(Summary LSA)区域间(通过 ABR)由 ABR(区域边界路由器)生成,将本区域路由汇总后通告到其他区域
4 类ASBR 汇总 LSA(ASBR Summary LSA)区域间(通过 ABR)描述到 ASBR(自治系统边界路由器)的路由,用于指引访问外部路由
5 类AS 外部 LSA(AS External LSA)全网(除 Stub 区域)由 ASBR 生成,描述自治系统外部的路由(如外部网络、其他 AS 的路由)
7 类NSSA 外部 LSA(NSSA External LSA)仅 NSSA 区域内在 NSSA(非完全 Stub 区域)中替代 5 类 LSA,描述外部路由,需经 ABR 转换为 3 类 LSA 传递到其他区域
4 七个状态(邻居关系建立的 “生命周期”)

OSPF 邻居从发现到完全邻接需经历七个状态,状态转换反映了邻居关系的进展:

  • Down(down)

    • 初始状态,未收到任何 Hello 报文,无邻居信息
  • Init(初始化)

    • 收到邻居的 Hello 报文,但对方 Hello 中未包含本地 Router ID(未被对方发现)
  • 2-Way(双向通信)

    • 双方互相在对方 Hello 报文中发现自己的 Router ID,确认 “双向可达”
    • 此时若为广播 / NBMA 网络,会选举 DR/BDR(指定路由器 / 备份指定路由器)
  • ExStart(交换开始)

    • 准备交换 DBD 报文,双方协商主从关系(主路由器控制报文交互节奏),确定初始序列号
  • Exchange(交换)

    • 发送 DBD 报文,交换 LSDB 的 LSA 摘要,双方了解对方的 LSDB 内容
  • Loading(加载)

    • 根据 DBD 对比结果,发送 LSR 请求缺少的 LSA,接收 LSU 并回复 LSAck
    • 此阶段补充完整 LSDB
  • Full(完全邻接)

    • 双方 LSDB 完全同步,邻居关系建立完成
    • 此时可基于 LSDB 计算路由
  • Attempt(尝试)-- 不常用

    • 适用于NBMA中:帧中继

OSPF的基本工作原理

1 OSPF协议模型

OSPF基本协议模型

在这里插入图片描述

OSPF四张表

在这里插入图片描述

2 OSPF基本概念

1.Router ID
  • 一台路由器如果要运行OSPF协议,则必须存在Router ID(RID)

  • RID是一个32比特无符号整数,可以在一个自治系统中唯一的标识一台路由器

  • RID可以手工配置,也可以自动生成

  • 如果没有通过命令指定RID,将按照如下顺序自动生成一个RID:

    • 如果当前设备配置了Loopback接口,将选取所Loopback接口上数值最大的IP地址作为RID

    • 如果当前设备没有配置Loopback接口,将选取它所有已经配置IP地址且链路UP的接口上数值最大的IP地址作为RID

    • Router ID建议手工配置–默认生成最大的IP地址

  • Router ID选取示例

在这里插入图片描述

2.LS

链路状态(LS):路由器周边的链路的状态

  • 直连网段状态:通过接口网段和接口状态感知

    • 描述直连网段:(网段,掩码,接口开销)
  • 直连拓扑状态:通过OSPF邻居和邻居状态感知

    • 描述直连拓扑:(邻居RouterID,连接接口,接口开销)
  • 接口开销:OSPF参考带宽/接口带宽

    • OSPF参考带宽默认为100Mbps

    • Loopback接口的开销默认为1

在这里插入图片描述

3.LSA

链路状态通告(LSA)

  • 按一定格式封装后的链路状态信息。

    • LSA 1:路由器链路状态通告

      • 每台路由器都会发起自己的LSA 1
    • LSA 2:传送网络链路状态通告

在这里插入图片描述

  • 一个链路状态报文可以携带多个链路状态更新信息
3.LSDB

链路状态数据库(LSDB)

  • 每台OSPF路由器都有一个LSDB,用于存储LSA

  • 同一个区域中的OSPF路由器的LSDB一致

    • LSA封装在LSU报文中,在区域内洪泛,最终达到区域内LSDB一致

    • LSA在洪泛过程中内容保持不变

在这里插入图片描述

5.SPF

SPF计算

  • 以自己LSA 1为根,进行SPF计算

  • 各OSPF路由器单独进行SPF计算,互不影响

在这里插入图片描述

SPF开销计算

OSPF路由开销计算

  • 以自己为根,到目标网段的出接口开销和

在这里插入图片描述

  • OSPF的度量值为cost,也叫开销,是以链路的接口带宽为依据

  • 计算方法为10的8次方除以带宽

6 OSPF网络类型
  • Broadcast广播多路访问:以太网接口

  • NBMA(Non-Broadcast Multi-Access,非广播多点访问网络):帧中继接口*

  • P2MP(Point-to-MultiPoint,点到多点)

  • P2P(Point-to-Point,点到点):PPP HDLC接口

  • 接口的网络类型可以通过命令修改,但是两个端口网络类型要一致
    • 处于同一个广播域内的网络接口类型要一致
  • 路由器/三层交换机是根据接口类型来确定网络类型
7 OSPF报文类型与封装

OSPF报文类型

在这里插入图片描述

  • OSPF报文直接封装在IP报文中,协议号为89

在这里插入图片描述

OSPF报文的目的地址

在这里插入图片描述

8 DR/BDR的选举(广播多路访问)

在这里插入图片描述

  • 采用DR/BDR建立邻接关系,可以降低需要维护的邻接关系数量
  • DR/BDR选举在广播多路访问中的广播域中,几个广播域几个DR/BDR

  • DR/BDR是相对于路由器接口的而不是路由器,一个路由器可以有多个选举状态

DR/BDR的选举原则

  • 首先比较Hello报文中携带的优先级

    • 优先级最高的被选举为DR,优先级次高的被选举为BDR

    • 优先级为0的不参与选举

  • 优先级一致的情况下,比较Router ID

    • Router ID越大越优先
  • 保持稳定原则

    • 当DR/BDR已经选举完毕,就算一台具有更高优先级的路由器变为有效,也不会替换该网段中已经选举的DR/BDR成为新的DR/BDR

DR/BDR的选举示例

在这里插入图片描述

  • RTE后来加入网络,虽然它的Router ID比原有的DRBDR都高,但是出于稳定性的考虑,只能成为DRother路由器

在这里插入图片描述

  • 当DR失效时,BDR立刻成为新的DR

  • DRother路由器进行竞争,Router ID高的成为新的BDR

  • 只有当DR和BDR都失效时,RTE才会重新选举为DR

9 邻居状态变换

在这里插入图片描述

在这里插入图片描述

  • DR/BDR选举 发现邻居之后,发送链路状态同步数据库之前
  • 2-way之后路由器会判断接口的网络类型,手动配置的接口类型优于默认
  • 同一时间 路由器 的状态可以不一致,可以根据报文改变
  • DOther之间不建立邻接关系,不同步数据库,状态停留2-way

在这里插入图片描述

在这里插入图片描述

  • 状态背景:ExStart

    • 在 OSPF 邻居关系中,ExStart 状态是链路状态数据库同步的初始阶段
    • 两台路由器(RTA 和 RTB)通过 Hello 报文建立双向通信(2-Way 状态)后,进入 ExStart 状态,准备交换数据库描述(DD)报文
  • DD 报文

    • DD 报文:用于描述链路状态数据库(LSDB)的摘要信息,包含 LSA(链路状态通告)的头部信息(如类型、ID、通告路由器、序列号等)
    • 关键标志位
      • I(Initial):表示这是初始 DD 报文
      • M(More):表示后续还有更多 DD 报文
      • MS(Master/Slave):用于选举主从关系(Master 路由器控制报文交换节奏)
  • 步骤详解

步骤 1:RTA 发送初始 DD 报文

  • RTA 向 RTB 发送 DD 报文,内容包括:
    • Seq=552A:初始序列号(随机生成)。
    • I, M, MS:表示这是初始报文,后续还有更多报文,并声明自己为 Master。
  • RTB 收到此报文后,确认进入 ExStart 状态。

步骤 2:RTB 回复 DD 报文

  • RTB 生成新的 DD 报文,内容包括:
    • Seq=5528:新的序列号(通常比 RTA 的序列号小,因为 RTB 可能未完全准备好)。
    • I, M, MS:同样声明自己为 Master。
  • RTA 收到此报文后,比较序列号,发现 RTB 的序列号更小,因此确认 RTB 为 Master(主路由器),自己为 Slave(从路由器)。

步骤 3:RTA 确认 Master 并发送 DD 报文

  • RTA 确认 RTB 为 Master 后,使用 RTB 的序列号(5528)发送 DD 报文,表示接受 Master 的控制。
  • 此时,RTA 的状态从 ExStart 转换为 Exchange。

步骤 4:RTB 发送新的 DD 报文

  • RTB 生成新的 DD 报文,内容包括:
    • Seq=5529:递增的序列号(Master 控制序列号)。
    • MS:声明自己为 Master。
  • RTA 收到此报文后,确认 RTB 的 Master 角色,并继续同步数据库。

步骤 5:RTA 确认并发送 DD 报文

  • RTA 使用 RTB 的序列号(5529)发送 DD 报文,表示已收到并确认。
  • 此时,RTB 的状态从 Exchange 转换为 Full(完全邻接),RTA 的状态从 Exchange 转换为 Loading(加载 LSA)
  • 核心原理

    • 主从选举(Master/Slave)
      • 通过 DD 报文中的 MS 标志位选举 Master 路由器,Master 控制序列号的生成和同步节奏
    • 序列号同步
      • Master 生成递增的序列号,Slave 使用 Master 的序列号回复,确保 DD 报文的有序性和可靠性
    • 数据库同步
      • 通过交换 DD 报文的摘要信息,路由器能够发现对方数据库中缺少的 LSA,并在后续步骤中通过 LSR(链路状态请求)和 LSU(链路状态更新)报文请求和发送完整的 LSA

在这里插入图片描述
在这里插入图片描述

  • OSPF协议包具备超时重传机制
  • OSPF协议包具备序列号,对重复包不做处理
10 LSA报文格式

在这里插入图片描述

字段长度(位)含义
LS age16LSA 的老化时间(秒),初始为 0,最大为 3600 秒(1 小时)
Options8包含一些可选标志位,用于支持特殊功能(如 NSSA、多播 OSPF 等)
LS type8LSA 的类型(如 1 类、2 类、3 类等),决定 LSA 的格式和用途
Link State ID32LSA 的标识符,具体含义取决于 LSA 类型(如路由器 ID、网络地址等)
Advertising Router32生成此 LSA 的路由器的 Router ID
LS sequence number32LSA 的序列号,用于检测 LSA 的新旧(序列号越大,LSA 越新)
LS checksum16LSA 的校验和,用于检测数据完整性
Length16LSA 的总长度(字节)
  • 只有 Hello 报文不需要序列号,其余四种报文都依赖序列号机制确保可靠性
  • 需要重传的报文:DD、LSR、LSU 报文在发送后会启动重传定时器,若未收到确认(如 LSAck),则会重传
  • 不需要重传的报文:Hello 报文是周期性发送的,丢失的 Hello 报文会被后续的 Hello 报文自动弥补,因此不需要重传

包含在各种报文中的LSA信息

在这里插入图片描述

3 LSA洪泛与更新

泛洪新LSA

在这里插入图片描述

  • 当有新的LSA生成或收到时,这条新的LSA应当被泛洪

  • 泛洪新的LSA时,只需要使用LS Update报文和LS Ack报文

    • 当RTA有新的LSA要泛洪时,RTA向RTB发送一个LS Update报文,在这个报文里包含这条LSA

    • 收到新的LSA以后,RTB向RTA泛洪一个LS Ack报文进行确认

  • 当在两个处于完全邻接状态(邻居状态为Full)的路由器之间泛洪新的LSA时,邻居状态不受影响

广播网络中LSDB更新

在这里插入图片描述

  • 在广播和NBMA网络中,链路状态发生变化时,主要是通过DR路由器发送更新报文

OSPF LSA洪泛与老化

OSPF LSA老化

  • LSA不老化的缺点:当网络长时间中断,故障网络中的设备发起的LSA长时间无效,但仍然存储在LSDB中,浪费设备内存

  • OSPF LSA采用递增老化

    • LSA自发起时开始计时,到达最大老化时间后,从LSDB中清除

    • OSPF最大老化时间3600秒,LSA头部的老化时间字段用于计时

在这里插入图片描述

OSPF LSA老化与全网刷新

  • 正常OSPF网络的路由维护

    • LSA老化时间到达最大老化时间的一半(30分钟),发起路由器随机等待一段时间后重新发起该LSA,然后洪泛,刷新所有路由器LSDB

    • 新发起的LSA序列号加1,老化时间为0

  • LSA在整个洪泛过程中,除老化时间外,其余各字段都保持不变

在这里插入图片描述

  • 半小时更新一次,一小时未更新则删除

在这里插入图片描述

OSPF区域划分

OSPF协议分区域管理及路由器角色

在这里插入图片描述

OSPF区域号

  • OSPF路由域:运行OSPF路由协议的网络

  • OSPF区域:OSPF是一种支持划分多区域的协议

    • Area ID:32位,用数字或IP地址表示

在这里插入图片描述

OSPF协议区域LSA发布

在这里插入图片描述

OSPF单区域配置案例

OSPF基本配置命令

  • router ospf <进程号>:启动OSPF进程,进程号本路由器有效

  • router-id < router-id >:手动指定router-id

  • network <IP地址> <通配符> area <区域号>

    • 落在通配范围内的接口启动OSPF,并放入<区域号>指定的区域中

      • 发现并描述直连网段至自己的LSA 1

      • 在该接口上发送Hello报文探测邻居

    • 通配符

      • 按位通配,位为0表示这一位不能变,位为1表示这一位可变

      • 一般将<IP地址>写成接口的IP网段,<通配符>写成接口掩码的反码,那么接口IP刚好落在该通配范围内

    • network + 被动接口

      • 发现并描述直连网段至自己的LSA 1

      • 只收不发Hello报文,无法形成邻居

      • 因无法建邻居,不能从该接口学习路由,也不能向该接口通告路由

OSPF基本配置

在这里插入图片描述

单区域OSPF

在这里插入图片描述

单区域OSPF配置

在这里插入图片描述

单区域OSPF查看

在这里插入图片描述

http://www.dtcms.com/a/296725.html

相关文章:

  • 枚举右,维护左高级篇
  • [明道云] -基础入门1- 什么是明道云 HAP 平台?
  • 【基础篇一】Python Web开发的演进历程(CGI → WSGI → ASGI)
  • 100条SQL语句分类精讲:从基础到进阶的实操指南
  • Matplotlib详细教程(基础介绍,参数调整,绘图教程)
  • 支付宝小程序 SEO 优化指南:从流量获取到商业转化
  • 【Linux】常用命令(一)
  • LockscreenCredential 类方法详解
  • 机器学习入门与经典knn算法表文解析
  • 模型的存储、加载和部署
  • 天邑TY1613_S905L3SB_安卓9-高安版和非高安版-线刷固件包
  • SSE与Websocket有什么区别?
  • P1049 [NOIP 2001 普及组] 装箱问题
  • 数据采集分析:从信息洪流中掘金的科学与艺术
  • Linux和Windows基于V4L2和TCP的QT监控
  • 欧姆龙CJ1MPLC配以太网模块,打造上位机、触摸屏、变频器高效通讯生态系统案例
  • 词嵌入维度与多头注意力关系解析
  • C++课设实践项目:C++构建的学籍管理系统
  • 【阿里云-ACP-1】疑难题解析
  • CPU绑核并独占
  • 网络编程之多路复用---mutilio
  • tauri实用教程:阻止除控制台关闭程序外的全部手动关闭
  • 大模型-batch之static batch
  • 基于Matlab图像处理的水果分级系统
  • 【软件与环境】--Visual Studio2022安装教程
  • JMeter压测黑马点评优惠券秒杀的配置及请求爆红问题的解决(详细图解)
  • 在Ubuntu上使用QEMU学习RISC-V程序(2)gdb调试
  • 2025年7月23日 AI 今日头条
  • C++ 基础入门
  • 144. 二叉树的前序遍历