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

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.rhkb.cn/news/502786.html

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

相关文章

《数据结构》期末考试测试题【中】

《数据结构》期末考试测试题【中】 21.循环队列队空的判断条件为&#xff1f;22. 单链表的存储密度比1&#xff1f;23.单链表的那些操作的效率受链表长度的影响&#xff1f;24.顺序表中某元素的地址为&#xff1f;25.m叉树第K层的结点数为&#xff1f;26. 在双向循环链表某节点…

华为数通考试模拟真题(附带答案解析)题库领取

【多选题】 管理员想要更新华为路由器的VRP版本&#xff0c;则正确的方法有? A管理员把路由器配置为FTP服务器&#xff0c;通过FTP来传输VRP软件 B:管理员把路由器置为FTP客户端&#xff0c;通过FTP来传输VRP软件 C:管理员把路由器配置为TFTP客户端&#xff0c;通过TFTP来传…

Linux:操作系统不朽的传说

操作系统是计算机的灵魂&#xff0c;它掌控着计算机的硬件和软件资源&#xff0c;为用户和应用程序提供了一个稳定、高效、安全的运行环境。 在众多操作系统中&#xff0c;Linux 的地位举足轻重。它被广泛应用于服务器、云计算、物联网、嵌入式设备等领域。Linux 的成功离不开…

前端(API)学习笔记(CLASS 4):进阶

1、日期对象 日期对象&#xff1a;用来表示事件的对象 作用&#xff1a;可以得到当前系统时间 1、实例化 在代码中发现了new关键字&#xff0c;一般将这个操作称为实例化 创建一个时间对象并获取时间 获得当前时间 const datenew Date() 使用日志查看&#xff0c;得到的…

【USRP】教程:在Macos M1(Apple芯片)上安装UHD驱动(最正确的安装方法)

Apple芯片 前言安装Homebrew安装uhd安装gnuradio使用b200mini安装好的路径下载固件后续启动频谱仪功能启动 gnu radio关于博主 前言 请参考本文进行安装&#xff0c;好多人买了Apple芯片的电脑&#xff0c;这种情况下&#xff0c;可以使用UHD吗&#xff1f;答案是肯定的&#…

SAP 01-初识AMDP(ABAP-Managed Database Procedure)

1. 什么是AMDP(ABAP-Managed Database Procedure) 1.&#xff09;AMDP - ABAP管理数据库程序&#xff0c;是一种程序&#xff0c;我们可以使用SQLSCRIPT在AMDP内部编写代码&#xff0c;SQLSCRIPT是一种与SQL脚本相同的数据库语言&#xff0c;这种语言易于理解和编码。 将AM…

智能客户服务:科技如何重塑客户服务体验

在数字化时代&#xff0c;客户对于服务的需求和期望在不断演变。传统的客户服务模式已经难以满足现代消费者对于即时性、个性化和高效性的追求。随着人工智能、大数据、云计算等先进技术的蓬勃发展&#xff0c;智能客户服务应运而生&#xff0c;不仅重塑了客户服务的体验&#…

[论文笔记]Representation Learning with Contrastive Predictive Coding

引言 今天带来论文 Representation Learning with Contrastive Predictive Coding的笔记。 提出了一种通用的无监督学习方法从高维数据中提取有用表示&#xff0c;称为对比预测编码(Contrastive Predictive Coding,CPC)。使用了一种概率对比损失&#xff0c; 通过使用负采样使…

Kafka 消费者专题

目录 消费者消费者组消费方式消费规则独立消费主题代码示例&#xff08;极简&#xff09;代码示例&#xff08;独立消费分区&#xff09; offset自动提交代码示例&#xff08;自动提交&#xff09;手动提交代码示例&#xff08;同步&#xff09;代码示例&#xff08;异步&#…

【踩坑指南2.0 2025最新】Scala中如何在命令行传入参数以运行主函数

这个地方基本没有任何文档记录&#xff0c;在学习的过程中屡屡碰壁&#xff0c;因此记录一下这部分的内容&#xff0c;懒得看可以直接跳到总结看结论。 踩坑步骤 首先来看看书上让我们怎么写&#xff1a; //main.scala object Start {def main(args:Array[String]) {try {v…

数据分析思维(七):分析方法——群组分析方法

数据分析并非只是简单的数据分析工具三板斧——Excel、SQL、Python&#xff0c;更重要的是数据分析思维。没有数据分析思维和业务知识&#xff0c;就算拿到一堆数据&#xff0c;也不知道如何下手。 推荐书本《数据分析思维——分析方法和业务知识》&#xff0c;本文内容就是提取…

CSS 之 position 定位属性详解

CSS系列文章目录 CSS 之 display 布局属性详解 CSS 之 position 定位属性详解一文搞懂flex布局 【弹性盒布局】 文章目录 CSS系列文章目录一、前言二、静态定位&#xff1a;position:static&#xff1b;二、相对定位&#xff1a;position:relative三、绝对定位&#xff1a;pos…

麒麟信安云在长沙某银行的应用入选“云建设与应用领航计划(2024)”,打造湖湘金融云化升级优质范本

12月26日&#xff0c;2024云计算产业和标准应用大会在北京成功召开。大会汇集政产学研用各方专家学者&#xff0c;共同探讨云计算产业发展方向和未来机遇&#xff0c;展示云计算标准化工作重要成果。 会上&#xff0c;云建设与应用领航计划&#xff08;2024&#xff09;建云用…

微信小程序Uniapp

使用命令行创建项目&#xff08;vuets&#xff09; npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project然后用HBX打开项目 再安装依赖 npm i 再运行开发版本&#xff0c;生成dist目录 pnpm dev:mp-weixin 注意要设置APPid 再用微信小程序打开

汇编环境搭建

学习视频 将MASM所在目录 指定为C盘

计算机网络--路由表的更新

一、方法 【计算机网络习题-RIP路由表更新-哔哩哔哩】 二、举个例子 例1 例2

热备份路由HSRP及配置案例

✍作者&#xff1a;柒烨带你飞 &#x1f4aa;格言&#xff1a;生活的情况越艰难&#xff0c;我越感到自己更坚强&#xff1b;我这个人走得很慢&#xff0c;但我从不后退。 &#x1f4dc;系列专栏&#xff1a;网路安全入门系列 目录 一&#xff0c;HSRP的相关概念二&#xff0c;…

今日头条ip属地根据什么显示?不准确怎么办

在今日头条这样的社交媒体平台上&#xff0c;用户的IP属地信息对于维护网络环境的健康与秩序至关重要。然而&#xff0c;不少用户发现自己的IP属地显示与实际位置不符&#xff0c;这引发了广泛的关注和讨论。本文将深入探讨今日头条IP属地的显示依据&#xff0c;并提供解决IP属…

倍思氮化镓充电器分享:Super GaN伸缩线快充35W

快节奏的时代,在旅游、办公等场景下,一款高效、便捷的充电器可以让我们的生活更便捷、高效。今天就给大家推荐一款倍思氮化镓充电器——Super GaN伸缩线快充35W。它具备多重亮点,可以满足我们在许多场景下的充电需求,成为我们的得力助手。 倍思氮化镓Super GaN伸缩线快充35W的亮…

云架构Web端的工业MES系统设计之区分工业过程

云架构Web端的工业MES系统设计之区分工业过程 在当今数字化浪潮席卷全球的背景下,制造业作为国家经济发展的重要支柱产业,正面临着前所未有的机遇与挑战。市场需求的快速变化、客户个性化定制要求的日益提高以及全球竞争的愈发激烈,都促使制造企业必须寻求更加高效、智能的生产…