【网络协议】开放式最短路径优先协议OSPF详解(一)

news2025/1/5 19:24:13

OSPF 是为取代 RIP 而开发的一种无类别的链路状态路由协议,它通过使用区域划分以实现更好的可扩展性。

文章目录

    • 链路状态路由协议
    • OSPF 的工作原理
      • OSPF 数据包类型
      • Dijkstra算法、管理距离与度量值
      • OSPF的管理距离
      • OSPF的度量值
    • 链路状态路由协议的优势
    • 拓扑结构
      • 路由器OSPF命令
        • **关于Process-ID**
      • 网络命令
      • Wildcard Mask(通配符掩码)
      • 回到配置
      • OSPF路由器ID(Router-ID)
      • 配置路由器ID
      • 配置回环接口
    • 验证OSPF操作
      • show ip ospf neighbor
      • show ip route
      • show ip ospf interface
      • show ip protocols
      • show ip ospf
      • show ip ospf database
    • 验证连接性
      • 第1部分结束

链路状态路由协议

内部路由协议分为两类:距离向量路由协议和链路状态路由协议。OSPF 属于链路状态路由协议类别。

链路状态协议通过计算从源网络到目标网络路径的“代价”来工作,并使用 Edsger Dijkstra 开发的 SPF(Shortest Path First)算法。以下是链路状态路由协议(如 OSPF)的工作步骤:

1、所有配置了链路状态路由协议的路由器会学习其直接连接的网络。
2、共享链路的路由器会识别出相邻路由器,并建立关系。
3、建立关系后,路由器会与彼此共享其直接连接的路由。这是通过发送包含路由信息的数据包实现的。
4、接收到这些信息的邻居会将其传播给其他邻居。
5、当所有邻居都掌握了所有路由信息后,每个路由器会利用这些信息创建一张通往所有网络目标的“地图”。
6、在这张地图生成后,会运行 SPF(Shortest Path First)算法,以确定到特定远程网络的最佳路径。

这是链路状态路由协议(如 OSPF 和 IS-IS)的基本工作原理。我们将在 OSPF 学习中更详细地探讨这些步骤。

OSPF 的工作原理

在 OSPF 中,上述过程被遵循,但使用了不同的术语,以下是 OSPF 的关键概念。

OSPF 数据包类型

OSPF 有 5 种不同类型的数据包需要理解:

1.Hello 数据包

这些是配置了 OSPF 的路由器发送的第一类消息,使用专门为 OSPF 保留的多播 IP 地址 224.0.0.5。Hello 数据包用于发现邻居并维护与邻居的关系(邻接关系)。

注意:Hello 数据包在多播和点对点网络中每 10 秒发送一次,而在非广播多路访问(NBMA)网络中每 30 秒发送一次。我们稍后会进一步探讨。

在 OSPF 中,Hello 数据包主要有以下三个任务:

  • 发现和建立邻居邻接关系。
  • 广播建立邻居关系所需的 OSPF 参数。
  • 在多访问网络中选举 DR(指定路由器)和 BDR(备份指定路由器)。

2.DBD(数据库描述)数据包

这是一份包含特定路由器在路由域中学习到的路由摘要的列表。接收此数据包的路由器会将其与自身的链路状态数据库进行比较,以发现缺失的路由。

3.LSR(链路状态请求)数据包

当路由器发现自己缺少某些路由信息时,会根据收到的 DBD 数据包发送此数据包,向通知其缺失信息的路由器请求更详细的信息,以更新自身的链路状态数据库。

4.LSU(链路状态更新)数据包

包含特定路由的详细信息,包括下一跳信息和到达该路由的代价。收到 LSR 的路由器会通过此数据包回复详细信息。

5.LSAck(链路状态确认)数据包

用于确认路由器已收到 LSU 数据包。

目前我们不需要完全理解这些概念,我们将在本章后续内容中更深入地探讨它们。

Dijkstra算法、管理距离与度量值

如前所述,OSPF使用SPF(Shortest Path First)算法。路由器的OSPF链路状态数据库中包含的信息就像一张“地图”,用于计算到远程网络的最佳路径。然而,OSPF不会为路由保留备用路径。如果某条通往网络的路径失效,SPF算法会重新运行以确定备用或替代路径。

OSPF的管理距离

OSPF的管理距离为110。这意味着它比RIP等其他路由协议更优先,但其可信度不如EIGRP、静态路由或直接连接的路由。

OSPF的度量值

OSPF使用的度量值是成本(Cost)。成本可以根据链路上的带宽或管理员通过 ip ospf cost 命令配置的成本值来确定。更多细节将在后续讨论。

链路状态路由协议的优势

使用链路状态路由协议有以下几个主要优势:

1.拓扑图
如前所述,链路状态数据库中存储了一张包含整个域中所有路由的拓扑图。这是一个显著优势,因为找到冗余路径非常简单。路由器只需查阅“地图”中的备用路径,并使用SPF算法计算到达的成本。

2.快速收敛
与距离矢量路由协议不同,后者需要在将路由信息传递给其他路由器之前先计算路由信息,而链路状态路由协议会将接收到的路由信息泛洪到除接收接口以外的所有其他接口。域中的每台路由器都可以自行决定这些信息是否相关。

3.事件驱动的更新
与EIGRP类似,OSPF中的路由器不会定期向其他路由器发送更新,而是当网络发生变化时才发送更新。而且,发送的信息仅与该变化相关。

4.分层设计
使用区域(Area)是链路状态路由协议的一个巨大优势。区域的使用使得可以创建分层的IP地址格式。然而,这也意味着只能在区域边界上进行路由汇总。

现在我们已经了解了一些OSPF的基础概念,可以开始进行配置了。

拓扑结构

以下展示了本节OSPF配置的实验拓扑结构。

在这里插入图片描述

该网络由4台路由器组成,分别标记为R1至R4。此外,还有3个局域网(LAN)段分别连接到R1、R3和R4。使用的IP子网显示在拓扑图中,具体的IP地址方案如下所示。DCE接口的时钟速率设置为64,000。

在这里插入图片描述

在开始OSPFv2配置之前,设计上方的网络并完成以下配置:

  1. 为所有设备配置适当的主机名
  2. 为控制台线路和Telnet线路配置适当的密码
  3. 设置横幅信息
  4. 禁用IP域名查找功能
  5. 为接口分配IP地址、子网掩码、默认网关,并在需要的接口上设置时钟速率
  6. 启用设备并确保直接连接的网络之间的连通性
  7. 完成基本的OSPF配置

读者应自行完成基础配置,我们不会过多地停留在此部分,而是直接进入OSPF的基础配置。

路由器OSPF命令

要在路由器上启用OSPF,需要在全局配置模式下使用以下命令:

router ospf <process-ID>
关于Process-ID

1、Process-ID是一个逻辑上的标识号,范围为1到65535。
2、这个号码仅在本地路由器上有意义,用于标识路由器上运行的OSPF进程。
3、OSPF的邻居路由器无需此号码匹配即可形成邻接关系。

为了保持一致性,建议在拓扑中所有路由器上使用相同的Process-ID。在本拓扑中,我们将所有路由器的Process-ID设为10

例如,在R1上执行以下命令:

R1(config)#router ospf 10

该命令使我们进入OSPF特定配置模式,在此模式中可以配置OSPF的大多数选项。

网络命令

OSPF使用network命令来公布路由,但格式略有不同:

router(config-router)#network <network_address> <wildcard_mask> area <area_ID>

Wildcard Mask为通配符掩码、Area ID为区域ID。

  • OSPF使用区域将网络划分。区域内的所有路由器共享相同的拓扑映射。
  • 在本章中,我们只涉及骨干区域area 0,这意味着所有路由器都将处于area 0
  • 随着网络规模的增长,为了减少拓扑映射的规模,可以引入多区域的使用,这将在后续章节中讨论。

注意:必须在所有网络声明和路由器上将区域配置为area 0

Wildcard Mask(通配符掩码)

通配符掩码(或反码)是一种特殊的IP地址,用于OSPF判断要公布的特定子网。

计算方法

  1. 写下全1子网掩码:255.255.255.255(广播地址)
  2. 写下子网的掩码,例如255.255.255.224
  3. 相减得到通配符掩码:255.255.255.255 - 255.255.255.224 = 0.0.0.31

对于网络192.168.1.0/27,我们将进行如下配置:

  • 子网掩码:255.255.255.224
  • 通配符掩码:0.0.0.31

在OSPF配置模式下执行:

router ospf 10
network 192.168.1.0 0.0.0.31 area 0

对于所有路由器,类似地替换对应的网络地址和通配符掩码完成配置。

在这里插入图片描述

因此,网络 192.168.1.0/27 的反掩码(或通配符掩码)为 0.0.0.31

当路由器决定要公布的网络时,通配符掩码中的“0”表示需要匹配的部分,而任何高于0的值将被忽略。因此,在上述例子中,当在OSPF中公布网络 192.168.1.0/27 时,前三个八位组将被匹配,而第四个八位组只会部分匹配。

这意味着,当公布路由 192.168.1.0/27 时,路由器仅公布前三个八位组匹配的路由,而忽略第四个八位组。

注意:在OSPF中可以使用的最具体的通配符掩码是 0.0.0.0,这表示路由器只会公布特定的IP地址,而不是一个网络地址。

在OSPF中,我们需要公布希望参与OSPF的直接连接网络。

例如,要在OSPF中公布网络 192.168.1.0/28,我们需要在R1上输入以下命令:

R1(config-router)#network 192.168.1.0 0.0.0.15 area 0

回到配置

在本拓扑中,我们将在每个路由器上使用下表中的命令,公布所有直接连接的网络。

在这里插入图片描述

注意:在进行这些配置时,请确保计算所有的通配符掩码,以便清楚地理解这一概念。

在所有路由器上完成这些配置后,应该能够看到如下输出:

在这里插入图片描述

这表明OSPF正在正常工作,所有路由都已学习到。请注意,这一过程发生得非常快,这正是OSPF收敛的速度之快。

OSPF路由器ID(Router-ID)

在OSPF中,路由器ID是用于命名路由域中每个路由器的一种方式。它本质上是一个特殊选择的IP地址,用于标识OSPF中的路由器。在CISCO路由器中,路由器ID的选择基于以下标准:

1.使用OSPF配置模式下的命令 router-ID <IP_ADDRESS> 配置的IP地址。
2.如果未配置,则使用任何配置的回环接口(loopback interface)中最高的IP地址。
3.如果没有回环接口,则路由器使用任何活动物理接口中最高的IP地址。

注意:最高的活动物理接口是指能够转发数据包的接口。

关于路由器ID的用途及重要性将在后续讨论中进行介绍。

配置路由器ID

路由器ID在OSPF配置模式中配置,其提示符如下所示:

Router(config-router)#

用于配置路由器ID的命令如下:

router(config-router)#router-id <unique_ip_address>

例如,在R1上,我们将使用IP地址1.1.1.1作为路由器ID,配置命令如下所示:

R1(config-router)#router-id 1.1.1.1

执行上述命令后,路由器将设置一个手动配置的路由器ID为1.1.1.1

对于四个路由器,我们将使用如下表格中的IP地址作为路由器ID:

在这里插入图片描述

配置回环接口

正如我们之前提到的,回环接口可以用作路由器ID。

回环接口是一个虚拟接口——这意味着它仅存在于路由器中,并未连接到网络中的任何其他物理设备。一旦配置,回环接口会自动转为UP状态。配置回环接口所需的命令是:

Router(config)#interface <loopback> <Loopback_interface_number>

执行此命令后,我们将进入接口配置模式,在这里我们可以配置其他选项,例如IP地址。

要在R1上配置一个IP地址为172.16.1.1/24的回环接口,可以输入以下命令:

在这里插入图片描述

注意:执行这些命令后,新的接口将在“show ip interface brief”命令的输出中显示。回环接口始终处于UP状态,并像物理接口一样工作。

在配置OSPF并保存后,使用中的路由器ID仍然是我们使用的最高活动物理接口,而使用router-id命令配置的路由器ID仍然不会生效,如下所示的输出所示。

在这里插入图片描述

我们需要通过重新启动OSPF进程来使路由器ID生效,为此,我们必须在特权exec模式下输入命令“clear ip ospf process”,如下所示。

执行此命令后,系统会提示我们确认此命令,我们应该回答“YES”。

在这里插入图片描述

执行此命令后,所有路由器的新路由器ID将生效。

验证OSPF操作

配置完OSPF后,我们需要验证所有路由器上的配置是否正常工作。要验证OSPF,我们将使用以下命令:

  • Show ip ospf neighbor
  • Show ip ospf database
  • Show ip route
  • Show ip ospf interface
  • Show ip protocols
  • Show ip ospf
  • Debug ip ospf adj
  • Debug ip ospf hello
  • Show ip ospf neighbor

show ip ospf neighbor

“show ip ospf neighbor”是验证和排除OSPF邻居关系故障时最常用的命令之一。使用该命令显示的一些信息如下所示:

  • 邻居的路由器ID
  • Pri – OSPF优先级
  • State – LSA类型
  • Dead time – 这表示OSPF等待的时间,直到它认为邻居因为缺失hello包而被认为是死亡。
  • Address – 邻居的IP地址(共享链路的地址)
  • Interface – 路由器与邻居连接的物理接口

在OSPF中,要形成邻接关系,邻居路由器必须满足以下条件:

  • 链路上的子网掩码必须相同,即链路必须处于同一子网
  • OSPF hello和dead定时器必须匹配
  • OSPF网络类型必须匹配
  • 网络声明必须正确

在我们的场景中,执行“show ip ospf neighbor”命令后的输出将在所有路由器上显示如下:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

show ip route

在配置了OSPF的路由器上,show ip route命令将显示路由器已学习到的所有路由、下一跳、行政距离、度量值以及路由的年龄。在R1上执行此命令的输出将如下所示。

注意:通过OSPF学习到的路由在前面会标记为“O”。

在这里插入图片描述

show ip ospf interface

此命令用于验证参与OSPF的接口,以及hello和dead定时器的间隔。通过指定接口的名称和编号,还可以显示特定接口的统计信息。在R2上执行此命令的输出如下所示。

在这里插入图片描述

OSPF的hello和dead定时器在上面输出中的红色框中突出显示。此外,网络类型显示为点对点,成本为64。

show ip protocols

“show ip protocols”命令可用于验证正在使用的路由协议。在本实例中,它将显示OSPF的进程ID、路由器ID、广告的网络、邻居、区域和区域类型,以及OSPF的管理距离。

此命令在R3上的输出如下所示。

在这里插入图片描述

show ip ospf

“show ip ospf”命令也是验证进程ID、路由器ID、区域、SPF统计信息以及其他在故障排除OSPF时有用信息的好方法。

此命令在R1上的输出如下所示,部分输出被省略。

在这里插入图片描述

show ip ospf database

此命令将显示在OSPF中所有具有相同OSPF数据库或“映射”的路由器。

此命令在R1上的输出如下所示。

在这里插入图片描述

其他可以用来验证和排除OSPF故障的命令是调试命令。这些命令将显示OSPF发生时的统计信息,因此可能会消耗大量的处理能力。

如Debug ip ospf adj、Debug ip ospf hello。

验证连接性

在我们配置了所有四台路由器的OSPF并验证所有路由器已收敛并获取到所有路由后,需要通过ping命令验证连接性:

  • 从PC_A到PC_B的ping
  • 从PC_B到PC_C的ping
  • 从PC_A到PC_C的ping

如果所有的ping都成功,说明我们已成功配置OSPF;如果没有成功,请按照上述步骤排查并解决问题。

第1部分结束

至此,我们完成了OSPF的第一部分。我们学习了链路状态路由协议的概念,特别是OSPF,了解了OSPF的工作原理及其优点。我们还配置并验证了OSPF的基本操作。在下一部分,我们将学习更多OSPF的概念并进行更多配置。

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

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

相关文章

vim 的基础使用

目录 一&#xff1a;vim 介绍二&#xff1a;vim 特点三&#xff1a;vim 配置四&#xff1a;vim 使用1、vim 语法格式2、vim 普通模式&#xff08;1&#xff09;保存退出&#xff08;2&#xff09;光标跳转&#xff08;3&#xff09;文本删除&#xff08;4&#xff09;文本查找&…

为什么深度学习和神经网络要使用 GPU?

为什么深度学习和神经网络要使用 GPU&#xff1f; 本篇文章的目标是帮助初学者了解 CUDA 是什么&#xff0c;以及它如何与 PyTorch 配合使用&#xff0c;更重要的是&#xff0c;我们为何在神经网络编程中使用 GPU。 图形处理单元 (GPU) 要了解 CUDA&#xff0c;我们需要对图…

工厂模式与抽象工厂模式在Unity中的实际应用案例

一、实验目的 实践工厂模式和抽象工厂模式的实际应用。 创建一个小型的游戏场景&#xff0c;通过应用这些设计模式提升游戏的趣味性和可扩展性。 掌握在复杂场景中管理和使用不同类型的对象。 比较在实际游戏开发中不同设计模式的实际效果和应用场景。 学习如何进行简单的性…

jrc水体分类对水体二值掩码修正

使用deepwatermap生成的水体二值掩码中有部分区域由于被云挡住无法识别&#xff0c;造成水体不连续是使用jrc离线数据进行修正&#xff0c;jrc数据下载连接如下&#xff1a;https://global-surface-water.appspot.com/download 选择指定区域的数据集合下载如图&#xff1a; 使…

计算机网络 (20)高速以太网

一、发展背景 随着计算机技术和网络应用的不断发展&#xff0c;传统的以太网速率已逐渐无法满足日益增长的带宽需求。因此&#xff0c;高速以太网应运而生&#xff0c;它以提高数据传输速率为主要目标&#xff0c;不断推动着以太网技术的发展。 二、技术特点 高速传输&#xff…

基于SpringBoot的校园二手交易平台的设计与实现(源码+SQL+LW+部署讲解)

文章目录 摘 要1. 第1章 选题背景及研究意义1.1 选题背景1.2 研究意义1.3 论文结构安排 2. 第2章 相关开发技术2.1 前端技术2.2 后端技术2.3 数据库技术 3. 第3章 可行性及需求分析3.1 可行性分析3.2 系统需求分析 4. 第4章 系统概要设计4.1 系统功能模块设计4.2 数据库设计 5.…

2024年中国新能源汽车用车发展怎么样 PaperGPT(二)

用车趋势深入分析 接上文&#xff0c;2024年中国新能源汽车用车发展怎么样 PaperGPT&#xff08;一&#xff09;-CSDN博客本文将继续深入探讨新能源汽车的用车强度、充电行为以及充电设施的现状。 用车强度 月均行驶里程&#xff1a;2024年纯电车辆月均行驶超过1500公里&…

antd-vue - - - - - a-date-picker限制选择范围

antd-vue - - - - - a-date-picker限制选择范围 1. 效果展示2. 代码展示 1. 效果展示 如图&#xff1a;限制选择范围为 今年 & 去年 的 月份. 2. 代码展示 <template><a-date-picker:disabledDate"disabledDate"picker"month"/> &l…

滑动窗口、流量控制和拥塞控制

1. 确认应答机制 确认应答机制是计算机网络中&#xff0c;用于确保数据可靠传输的一种方法。 它通过发送 ACK 数据段来通知对方&#xff0c;每一个 ACK 数据段都有一个确认序号&#xff0c;表明&#xff1a; 确认序号之前的所有数据都已被接收&#xff0c;接下来从确认序号开…

TCP粘/拆包----自定义消息协议

今天是2024年12月31日&#xff0c;今年的最后一天&#xff0c;希望所有的努力在新的一年会有回报。❀ 无路可退&#xff0c;放弃很难&#xff0c;坚持很酷 TCP传输 是一种面向二进制的&#xff0c;流的传输。在传输过程中最大的问题是消息之间的边界不明确。而在服务端主要的…

前端,npm install安装依赖卡在sill idealTree buildDeps(设置淘宝依赖)

输入npm i后&#xff0c;一直卡在sill idealTree buildDeps&#xff0c;一动不动 cnpm可以安装成功&#xff0c;但使用cnpm不会生成package-lock.json文件 设置淘宝依赖&#xff0c;依然卡住&#xff0c;挂梯子也不行 解决方法&#xff1a; // 取消ssl验证 set strict-ssl …

【有作图代码】Highway Network与ResNet:skip connection如何解决深层网络欠拟合问题

【有作图代码】Highway Network与ResNet&#xff1a;skip connection如何解决深层网络欠拟合问题 关键词&#xff1a; #Highway Network #ResNet #skip connection #深层网络 #欠拟合问题 具体实例与推演 假设我们有一个深层神经网络&#xff0c;其层数为L&#xff0c;每一…

目标检测入门指南:从原理到实践

目录 1. 数据准备与预处理 2. 模型架构设计 2.1 特征提取网络原理 2.2 区域提议网络(RPN)原理 2.3 特征金字塔网络(FPN)原理 2.4 边界框回归原理 2.5 非极大值抑制(NMS)原理 2.6 多尺度训练与测试原理 2.7 损失函数设计原理 3. 损失函数设计 4. 训练策略优化 5. 后…

搭建开源版Ceph分布式存储

系统&#xff1a;Rocky8.6 三台2H4G 三块10G的硬盘的虚拟机 node1 192.168.2.101 node2 192.168.2.102 node3 192.168.2.103 三台虚拟机环境准备 1、配置主机名和IP的映射关系 2、关闭selinux和firewalld防火墙 3、配置时间同步且所有节点chronyd服务开机自启 1、配置主机名和…

租用服务器还是服务器托管:哪种方案更适合您?

随着企业对网络服务质量要求的不断提高&#xff0c;租用服务器和服务器托管是两种常见的选择&#xff0c;各自具备独特的优势和适用场景。这篇文章将从多个维度对这两种方案进行详细分析&#xff0c;帮助大家进行对比选择。 租用服务器的优劣势分析 优点 无需大额初始投入 租用…

LDD3学习6--Scull的变种

1 整体介绍 之前在LDD3学习1里面就提过scull的变种&#xff0c;LDD学习1--启程-CSDN博客&#xff0c;大概的变种有这些&#xff1a; 名称全名说明对应章节scullSimple Character Utility for Loading Localities基础版本3scullcScull with Slab cache使用基于slab高速缓存8.2.…

设计模式の状态策略责任链模式

文章目录 前言一、状态模式二、策略模式三、责任链模式 前言 本篇是关于设计模式中的状态模式、策略模式、以及责任链模式的学习笔记。 一、状态模式 状态模式是一种行为设计模式&#xff0c;核心思想在于&#xff0c;使某个对象在其内部状态改变时&#xff0c;改变该对象的行为…

【网络协议】路由信息协议 (RIP)

未经许可&#xff0c;不得转载。 路由信息协议&#xff08;Routing Information Protocol&#xff0c;简称 RIP&#xff09;是一种使用跳数&#xff08;hop count&#xff09;作为路由度量标准的路由协议&#xff0c;用于确定源网络和目标网络之间的最佳路径。 文章目录 什么是…

linux下安装达梦数据库v8详解

目录 操作系统、数据库 1、下载达梦数据库 2、安装前准备 2.1、建立数据库用户和组 2.2、修改文件打开最大数 2.3、挂载镜像 2.4、新建安装目录 3、数据库安装 4、配置环境变量 5、初始化数据库实例 6、注册服务 7、使用数据库 8、卸载数据库 9、多实例管理 10、…

小程序租赁系统的优势与应用探索

内容概要 小程序租赁系统&#xff0c;听起来很高大上&#xff0c;但实际上它比你想象的要实用得多&#xff01;设想一下&#xff0c;几乎所有的租赁需求都能通过手机轻松解决。这种系统的便捷性体现在让用户随时随地都能发起租赁请求&#xff0c;而不再受制于传统繁琐的手续。…