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

OSPF路由协议(单区域)

1. RIP的不足

(1)路径选择不优:仅以跳数评估路由,易选非最优路径(如带宽窄但跳数少的链路 )。

(2)网络规模受限:最大跳数 16,网络直径超 16 跳则不可达,限制网络尺度。

(3)收敛速度慢:依赖 30 秒更新、180 秒失效、240 秒清除计时器,拓扑变化后需久才能稳定。

(4)资源浪费严重:定期发送全路由表更新,路由多(如千条 )时,占用大量带宽(如单方向 160Kb )。

2. OSPF简介

SPF— —最短路径优先

3. OSFP基本概念

3.1 Router ID(RID,路由器ID)

3.2 LS(链路状态)

3.3 LSA(链路状态通告)

3.4 LSDB(链路状态数据库)

3.5 SPF(最短路径优先)

3.6 OSPF网络类型

       MA(Multi-Access)多路访问网络有两种类型:广播型多路访问网络(BMA)非广播型多路访问网络(NBMA)以太网(Ethernet)是一种典型的广播型多路访问网络。

3.6.1 维持邻居关系(点到点)

3.6.2 DR(指定路由器)/ BDR(备份指定路由器)的选举(广播多路访问)

DR/BDR的选举原则:

      在上图拓扑图中,有4个广播域,在选举DR、BDR的时候要在广播域里面选举,并且有几个广播域,就有几个DR和BDR。

问题1:点到点(广域网)与广播多路访问(局域网)有什么区别?

       A:是否有第三方参与。

问题2:点到点网络中,Hello报文的发送周期是多久?超时时间是多久?

       A:发送周期是10s,超时时间是4个周期=40s。

问题3:广播多路访问中,Hello报文的发送周期是多久?超时时间是多久?

       A:发生周期是10s,超时时间是4个周期=40s。

注意:网络类型可以手动修改,但是一条链路上的网络类型要一致。

3.7 OSPF报文类型与封装(5个报文)

3.8 邻居状态变换(Down、Init、2-Way、ExStart、Exchange、Full、Loading

1、 Down(没有发现任何的 OSPF 邻居):开启了 OSPF 协议,但是没有收到邻居发送的 Hello 报文。

2、 Init(代表自身发现了邻居的存在,但是邻居并没有发现自身的存在):收到了邻居的 Hello 报文,但是没有在 Hello 报文中看到自身的Router ID。

3、 Two-Way:收到了邻居的 Hello 报文,同时在 Hello 报文看到自身的 Router ID。

4、 Exstart(预开始):邻居之间发送 DD 报文(不携带任何 LSA 的摘要信息),进行主从协商,确定序列号,为了保证后续可靠的交互DD 报文做准备 • 主从协商的规则:比较路由器的 Router ID,大为主,小的为从。

5、 Exchange(更改):从向主发送一个带有 LSA 摘要信息的 DD 报文,主设备收到从的 DD 报文之后回复一个 DD 报文(里面携带了LSA 的摘要信息)同时序列号+1 告诉从你的 DD 报文我收到。

6、 Loading(加载):收到M=0的DD报文,会进入loading状态,继续向对方发送 LSR 报文进行请求本地 LSDB 缺失的LSA,对方收到 LSR 报文之后,回复一个 LSU 报文里面携带LSA的详细信息,本端收到 LSU 报文之后回复 LSAcK,针对LSU 里面的 LSA 进行确认。

7、Full:本地 LSDB 没有任何 LSA 的缺失,邻接关系建立。

        OSPF完成邻接关系的建立有四个步骤,建立邻居关系协商主/从交互LSDB信息同步LSDB

第一阶段(Down、Init、2-way):建立邻居关系

解释:

       首先,路由器(RTA、RTB)刚启动 OSPF,或接口未激活、链路断开时,处于 DOWN 状态 ,无邻居信息。

       RTA 发送 Hello 报文(携带自身 Router ID:1.1.1.1,及 “Neighbors seen = 0” ),RTB 收到后,在邻居表标记 RTA 状态为 Init(仅单向发现邻居 )。

       Hello 报文作用:周期性发送(默认 10 秒),用于发现邻居、维持邻接,还包含网络掩码、Hello 时间、DR/BDR 信息

       由于,RTB收到RTA发送的Hello报文后,知道了RTA的RID和地址,因此可以比较RID得出谁是DR(谁大谁DR,RTB大,RTB为DR)。

       RTB 回复 Hello 报文(携带 Router ID:2.2.2.2,及 “Neighbors seen = RTA” ),RTA 收到后,添加邻居表,并且邻居表中 RTB 状态变为 Two - way(双向确认邻居 )。

       RTA 回复 Hello 报文(携带 Router ID:1.1.1.1,及 “Neighbors seen = RTB” ),RTB收到后,将邻居表中RTA状态变为 Two - way(双向确认邻居 )。

第二阶段(Exstart、Exchange):协商主/从、交互LSDB信息

解释:

1. ExStart阶段(步骤① - ②:主从协商)

  • 目标:协商 主从关系(Master/Slave),确定 DD 报文序列号(Seq)的同步规则。
  • 步骤 ①(RTA → RTB)
    • RTA 进入 ExStart 状态,发送 DD 报文
      • Seq=552A初始序列号(随机值,仅本地意义)。
      • I(Initialize)标记为初始化报文,用于启动主从协商。
      • M(More)表示后续还有更多 DD 报文。
      • MS(Master/Slave)声明自己尝试成为 Master(需协商确认)。
  • 步骤 ②(RTB → RTA)
    • RTB 收到后,比较 Router ID(RTB:2.2.2.2 > RTA:1.1.1.1),成为 Master,回复 DD 报文:
      • Seq=5528Master 确定的起始序列号(Slave 需按此同步)。
      • I, M, MS同样标记初始化、更多报文,且声明 Master 身份。
    • RTA 接受主从关系,进入 ExStart→Exchange 过渡状态;RTB 仍为 ExStart 状态。

2. Exchange阶段(步骤③ - ⑤:LSDB摘要同步)

  • 目标:交换 链路状态数据库(LSDB)摘要(仅传 LSA 头部,不包含完整内容),快速对比双方 LSDB 差异。
  • 步骤 ③(RTA → RTB)
    • RTA 进入 Exchange 状态,发送 DD 报文:
      • Seq=5528:严格跟随 Master(RTB)的序列号,确认同步。
      • 无 I, MS:已完成主从协商,无需重复声明;M 仍为 1(还有内容要发)。
    • RTB 收到后,进入 ExStart→Exchange 过渡状态。
  • 步骤 ④(RTB → RTA)
    • RTB 发送 DD 报文:
      • Seq=5529:Master 递增序列号(确保有序传输)。
      • MS:重申 Master 身份;M=1(还有更多摘要)。
    • RTA 收到后,确认序列号同步,保持 Exchange 状态。
  • 步骤 ⑤(RTA → RTB)
    • RTA 回复 DD 报文:
      • Seq=5529:跟随 Master 序列号,确认接收。
      • M=0:表示本批次摘要已发完(后续无更多 DD 报文)。
    • RTB 收到后,M 标记根据自身情况判断:若还有更多摘要,M=1;此处因已同步,M 最终会置 0。
    • RTA 进入 Exchange→Loading 过渡状态(准备请求缺失 LSA);RTB 进入 Exchange→Full 状态(摘要同步完成)。

第三阶段(Loading、Full):同步LSDB

解释:

1. Loading 状态(步骤 ① :请求缺失 LSA)

  • 触发条件:Exchange 阶段交换完 LSDB 摘要后,RTA 发现自身 LSDB 缺少 RTB 有的 LSA(通过对比摘要发现差异 )。
  • 动作:RTA 进入 Loading 状态,向 RTB 发送 LS Request 报文,明确请求缺失的 LSA(仅列 LSA 头部,如类型、ID、通告者 )。

2. LS Update 响应(步骤 ② :发送完整 LSA)

  • RTB 状态:RTB 已完成 LSDB 摘要同步,处于 Full 状态(无需再交换摘要 )。
  • 动作:RTB 收到 LS Request 后,用 LS Update 报文 回复,包含 RTA 请求的完整 LSA 内容(如网络掩码、度量值等 )。

3. LS Ack 确认(步骤 ③ :确认接收完成)

  • RTA 状态:RTA 收到 LS Update 后,验证 LSA 完整性,进入 Loading→Full 过渡状态。 动作:RTA 发送 LS Ack 报文,确认已接收并同步 LSA;RTB 收到 Ack 后,维持 Full 状态。

4. Full 状态(邻接关系稳定)

当双方 LSDB 完全一致,RTA 和 RTB 均进入 Full 状态,表示:

  • 链路状态数据库同步完成。
  • 邻接关系稳定,可基于 LSDB 运行 SPF 算法计算路由。

邻居关系无法建立原因总结

4. OSPF的基本工作原理(4张表+5个报文+6类LSA+7个状态)

OSPF的四张表

邻居表:

  • 定义:记录了与本地路由器建立了邻接关系的邻居路由器信息。
  • 内容:包含邻居路由器的 Router ID、接口 IP 地址、邻居状态(如 Full、Init 等)、Hello 间隔、Dead 间隔等。
  • 作用:用于维护邻居关系,确保与相邻路由器之间的通信正常。通过定期发送和接收 Hello 报文来发现和维护邻居关系,当邻居状态变为 Full 时,表示双方已经成功建立邻接关系,可以进行链路状态信息的交换。
  • 生成过程:本地路由器启动 OSPF 协议后,会通过启用 OSPF 的接口向外发送 Hello 报文,收到相邻路由器回应的 Hello 报文且满足条件(如区域 ID 匹配、认证匹配等)后,就会将邻居信息添加到邻居表中。

LSDB(链路状态数据库):

  • 定义:存储了本区域内所有路由器的链路状态信息,是对整个区域网络拓扑的完整描述。
  • 内容:包含各种类型的链路状态通告(LSA,Link State Advertisement),如 Router LSA(描述路由器自身接口信息)、Network LSA(描述广播型网络信息)等。每条 LSA 都包含了链路的状态、开销、连接的邻居等详细信息。
  • 作用:为 SPF(最短路径优先)算法提供计算依据。路由器根据 LSDB 中的信息,以自身为根节点,通过 SPF 算法计算出到其他所有节点的最短路径树,进而生成 OSPF 路由表。
  • 生成过程:在邻居关系建立后,路由器通过链路状态更新报文(LSU,Link State Update)向邻居发送自己的 LSA,同时接收邻居发送的 LSA,将这些 LSA 存储到 LSDB 中,并通过链路状态确认报文(LSAck,Link State Acknowledgment)进行确认,最终确保所有路由器的 LSDB 保持一致。

OSPF路由表:

  • 定义:是根据 LSDB 通过 SPF 算法计算得出的,包含了通过 OSPF 协议学习到的路由信息。
  • 内容:目标网络地址、子网掩码、下一跳地址、出接口、度量值(Cost)等。
  • 作用:指导路由器转发目的地址属于 OSPF 路由表中目标网络的数据包。路由器根据 OSPF 路由表中的信息,选择最优的路径将数据包转发出去。
  • 生成过程:路由器在 LSDB 构建完成后,运行 SPF 算法,计算出到各个目标网络的最短路径,将这些路径信息添加到 OSPF 路由表中。

全局路由表:

  • 定义:也叫主路由表,是路由器中用于指导数据包转发的最终路由表,包含了路由器通过各种路由协议(如 OSPF、RIP、BGP 等)以及静态路由配置学习到的所有路由信息。
  • 内容:目标网络地址、子网掩码、下一跳地址、出接口、管理距离(Administrative Distance,用于比较不同路由协议的优先级)、度量值等。
  • 作用:当数据包到达路由器时,路由器会根据全局路由表中的信息,选择最佳的路径将数据包转发到目的网络。如果有多条路由协议学习到相同的目标网络,路由器会根据管理距离和度量值来选择最优的路由。
  • 生成过程:路由器将通过不同路由协议(如 OSPF 计算出的 OSPF 路由表、RIP 计算出的 RIP 路由表等)和静态配置获取的路由信息进行整合,根据管理距离和度量值进行优选后,将最优的路由信息添加到全局路由表中。

        邻居表用于维护邻居关系,LSDB 用于存储网络拓扑信息,OSPF 路由表是基于 LSDB 计算出的 OSPF 路由信息,全局路由表则是综合了所有路由来源的最终转发依据,四张表在 OSPF 协议运行和数据包转发过程中各自承担着不同的重要角色。

5. LSA报文头部

1. LS age(链路状态年龄,2 字节)

  • 作用:记录 LSA 从产生到当前的时间(秒),范围 0 - 3600(1 小时 )。
  • 机制: 初始为 0(新生成 LSA ),每经过 1 秒加 1; 若 LSA 老化到 3600 秒,会被标记为 “过期” 并删除,触发网络重新同步。

2. Options(选项,1 字节)

  • 作用:标记 LSA 支持的 OSPF 功能(如是否支持 NSSA、IPv6 等 )。
  • 常见标记: E(External):表示是否传播外部路由(ASBR 相关 ); N/P(NSSA):与非完全 Stub 区域(NSSA)功能相关。

3. LS type(链路状态类型,1 字节)

作用:区分 LSA 的类型,决定其内容和传播范围,常见类型:

  • Type 1(路由器 LSA):由路由器生成,描述自身直连链路;
  • Type 2(网络 LSA):由 DR 生成,描述广播型网络(如以太网)的链路;
  • Type 3(网络汇总 LSA):由 ABR 生成,描述区域间路由;
  • Type 4(ASBR汇总 LSA):由 ABR 生成,告知其他区域如何到达 ASBR,辅助跨区域找外部路由引入点。
  • Type 5(外部 LSA):由 ASBR 生成,描述 AS 外部路由(如引入静态路由 )。
  • Type 7  (NSSA外部 LSA):由 NSSA(非完全末梢区域)区域内的 ASBR 产生,描述本区域引入的外部路由,ABR 会转成 Type 5 向外传播。

4. Link State ID(链路状态 ID,4 字节)

  • 作用:唯一标识 LSA 的 “主题”,含义随 LS type 变化。

5. Advertising Router(通告路由器,4 字节)

  • 作用:记录生成并发布该 LSA 的路由器的 Router ID(标识 LSA 来源 )。
  • 意义:用于判断 LSA 可靠性(如防环、优先选择高优先级通告者 )。

6. LS sequence number(链路状态序列号,4 字节)

  • 作用:保证 LSA 更新的有序性和唯一性,范围 0x80000001 - 0x7FFFFFFF(避免 0x80000000,因代表 “空” )。
  • 机制: 新 LSA 序列号比旧的大(如从 0x80000001 递增到 0x80000002 ); 若收到同序列号 LSA,忽略;若收到更小序列号,拒绝并回复最新 LSA。

7. LS checksum(链路状态校验和,2 字节)

  • 作用:对 LSA 内容做 CRC 校验,检测传输过程中的数据损坏。
  • 机制:每更新一次 LSA(内容或序列号变化 ),校验和重新计算。

8. Length(长度,2 字节)

  • 作用:记录 LSA 头部 + 数据部分的总字节数(方便接收方解析 )。

6. 泛洪新LSA

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

       泛洪新的LSA时,只需要使用LS Update报文LS Ack报文
1. RTA有新的LSA要泛洪时,RTARTB发送一个LS Update报文,在这个报文里包含这条LSA
2. 收到新的LSA以后,RTBRTA泛洪一个LS Ack报文进行确认。
       当在两个处于完全邻接状态(邻居状态为Full)的路由器之间泛洪新的LSA时,邻居状态不受影响

7. 广播网络中LSDB更新

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

8. OSPF LSA 洪泛与老化

9. OSPF 协议分区域管理及路由器角色(骨干区域[区域0]和其他区域)

       其他非骨干区域只能接骨干区域(区域0)。

       路由信息的传递只能在骨干区域和其他区域内传递。

       运行了同一个路由协议的路由信息和,就叫一个自治系统。

1、区域内部路由器:所有接口属于同一个区域。

2、骨干路由器:至少有一个接口接到了区域0。

3、区域边界路由器ABR:至少一个接口接在了骨干区域,同时又有其他接口接了其他区域。

4、自治系统边界路由器ASBR:至少一个接口接在当前OSPF的任意区域,另外至少有一个接口接在了其他的自治系统。

10. OSPF 区域号

  • OSPF路由域:运行OSPF路由协议的网络。
  • OSPF区域:OSPF是一种支持划分多区域的协议。
  • Area ID:32位,用数字或IP地址表示。

11、OSPF协议区域LSA发布

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

相关文章:

  • 解决 SQL 错误 [1055]:深入理解 only_full_group_by 模式下的查询规范
  • ddos 放在多个云主机,同时运行
  • 计算机网络知识点总结 (1)
  • Web前端:JavaScript indexOf()方法
  • 腾势N9再进化:智能加buff,豪华更对味
  • 无线通信资源分配相关算法
  • ESP32-S3学习笔记<6>:ADC的应用
  • AI助力 三步实现电子发票发票号码的提取
  • 小架构step系列24:功能模块
  • 【ResizeObserver】【页面布局】监听一个 div 元素的动态高度变化并同步设置另一个元素的高度
  • Windows环境下 Go项目迁移至Ubuntu(WSL) 以部署filebeat为例
  • 【数组的定义与使用】
  • 保障工业核心命脉:深度解读工业交换机QoS的“智能流量治理”之道
  • CMake ARGV变量使用指南
  • Python桌面版数独(五版)-优化选择模式触发新棋盘生成
  • OSPF 实验
  • RuoYi-Vue 项目 Docker 全流程部署实战教程
  • 中国、美国、欧盟、日本、英国临床试验API数据接口
  • Ⅹ—6.计算机二级综合题7---10套
  • Mac系统机能连接操控别的平台设备吗?能被远程操作吗?
  • Nginx快速入门及案例
  • 【安卓笔记】解决livedata粘性事件
  • 《Java语言程序设计》第2章复习题(2)
  • RePlugin 坑位使用原理与指南
  • 多源信息融合智能投资【“图神经网络+强化学习“的融合架构】【低配显卡正常运行】
  • 模拟退火算法 (Simulated Annealing, SA)简介
  • JavaWeb学习打卡14(JSP内置对象及作用域)
  • ARM汇编常见伪指令及其用法示例
  • IntelliJ IDEA中管理多版本Git子模块的完整指南
  • 智慧工厂网络升级:新型 SD-WAN 技术架构与应用解析