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

前言

在本章的第一部分和第二部分中,我们探讨了OSPF的基本配置,并进一步学习了更多OSPF的概念,例如静态路由的重分发及其度量值。在第三部分中,我们讨论了多区域OSPF。在第四部分中,我们将关注OSPF与多访问网络,最后会通过一个更复杂的OSPF实验来结束。

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

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

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

多访问网络

多访问网络是由两个以上的设备共享相同介质的网络。在下图所示的例子中,三台路由器和三台PC通过拓扑中心的两台交换机互连。这意味着路由器上连接到交换机的接口以及PC的接口都在同一个子网中。

在这里插入图片描述

另一方面,在点对点网络(Point-to-point networks)中,一个子网中只有两个设备。下图所示的两台路由器通过广域网链接(WAN link)互连,这就是点对点网络的一个例子。

在这里插入图片描述

在OSPF中,我们可以划分出以下五种网络类型:

  1. 点对点网络(Point-to-point)
  2. 点到多点网络(Point-to-multipoint)
  3. 广播多访问网络(Broadcast Multiaccess)
  4. 虚拟链路(Virtual links)
  5. 非广播多访问网络(Nonbroadcast Multiaccess, NBMA)

OSPF广播多访问网络中的问题

在广播多访问网络中,OSPF环境面临以下两个主要问题:

  1. 多重邻接关系(Multiple Adjacencies)
  2. LSA泛洪(Flooding of LSAs)

多重邻接关系

如前所述,在OSPF中,相邻的路由器通常会彼此建立邻接关系。在广播多访问网络中,这会成为一个主要问题。

举个例子:
在点对点网络中,邻居通常是直接相连的路由器。但在广播多访问网络中,例如下图所示,四台路由器通过同一子网直接相连。

这意味着,在此场景中,路由器将彼此泛洪LSA并相互建立邻接关系。

可以使用以下公式计算邻接关系数量:

n*(n-1)/2,其中n表示路由器的数量。

示例:
在下图中,有 4 台路由器。根据公式:
n*(n-1)/2 = 4*(4-1)/2 = 6 ,结果为6,蓝色箭头表示这些邻接关系。

在这里插入图片描述

在这个场景中,邻接关系的数量相对较少。但如果网络规模扩大,比如有100台路由器,可以想象会出现什么情况。这种情况会成为一个严重的问题,并对路由器的资源造成巨大负担。

LSA的泛洪(Flooding of LSAs)

如我们之前所学,OSPF使用触发更新(Triggered Updates),并将这些更新泛洪到所有相关路由器。

以上述场景为例,如果R1丢失了与其LAN接口的路由信息,该信息将被广播到R2、R3和R4。这些路由器又会将该信息泛洪到网络中的每一台路由器,除了信息的来源路由器(R1),以避免引发路由循环(Routing Loop)。

下图展示了这一过程。

在这里插入图片描述

绿色箭头表示R1上失效的网络。可以看到,这一信息被多次传播到R2、R3和R4。这种重复传播可能导致路由循环(Routing Loop)。

解决OSPF广播多访问问题的方案

在OSPF中,通过选举指定路由器(Designated Router, DR)和备份指定路由器(Backup Designated Router, BDR)来解决这些问题。

在这里插入图片描述

在第一次实例中,我们看到当R1上的一个网络故障时,所有路由器都会接收到关于丢失路由的更新。然而,通过选举指定路由器(DR),如上所示,R1只会通知DR路由器——R2,告知R2关于丢失的路由。然后,DR会更新多访问网络中的其他路由器。

注意: 在我们上面的场景中,我们没有包括备份指定路由器(BDR),然而BDR也会收到丢失路由的通知,但它不会更新其他路由器,除非DR出现故障,在这种情况下,BDR会被提升为DR角色。

在OSPF中,DR和BDR的选举是一个非常重要的因素,它解决了我们看到的问题。当DR和BDR被选举出来后,网络中的所有其他路由器将成为DROther,这意味着它们既不是DR也不是BDR。DROther路由器永远不会更新网络中的其他路由器。

DR和BDR的选举

DR和BDR是如何选举出来的?以下是适用的标准:

  1. 首先,选举具有最高OSPF优先级的路由器为DR。
  2. 其次,选举具有第二高OSPF优先级的路由器为BDR。
  3. 如果优先级相同,则根据最高路由器ID选举DR。

在上一节中,我们讨论了路由器ID的选取标准:

  • 使用router-id命令配置的路由器ID
  • 最高的回环接口
  • OSPF域中最高的活动接口

根据上述信息,我们可以确定以下拓扑中的DR和BDR。

在这里插入图片描述

根据上述拓扑,R2和R3是DR的候选路由器,因为它们在网络中具有最高的路由器优先级。然而,由于R2的路由器ID更高,因此它将成为DR,R3将成为BDR,仅在R2失败时才会使用R3。

提升BDR为DR

DR通常不会改变,除非发生以下情况之一:

  • DR故障。
  • 连接到多访问网络的DR接口故障。
  • DR上的OSPF进程故障。

如果发生其中之一,BDR路由器会自动被提升为DR角色。然后,路由器会进行选举来确定新的BDR。如果之前失败的DR重新上线,它不会恢复为DR角色,而是会变为DROther角色。

路由器优先级

在大多数情况下,我们希望通过优先级选择DR路由器。在这种情况下,仅依赖路由器ID可能不足够。OSPF中的路由器优先级用于确定哪个路由器成为以太网段中的DR和BDR,如前所述。

更改路由器的OSPF优先级是确保选择正确路由器作为DR的关键。

要配置路由器的优先级,我们在参与OSPF的路由器接口上使用命令“ip ospf priority <0-255>”。

注意: 优先级为0意味着该路由器永远不会成为DR。

现在我们已经了解了OSPF和多访问网络中的概念,接下来我们将进行一个实验,看看这些概念是如何工作的。

OSPF拓扑

下图显示了我们将要配置的拓扑。正如我们所看到的,我们有6个路由器,它们都连接到1个交换机,并且都位于192.168.1.0/24网络中的一个以太网段。

该拓扑中的每个路由器使用的IP地址与其路由器编号相对应。

在这里插入图片描述

在这个场景中,我们需要在所有路由器上配置OSPF,并且我们应该确定哪些路由器将被选举为DR和BDR。

R1、R3、R4和R6都具有回环接口,IP地址如图所示。

注意: 配置连接到交换机的快速以太网接口后,保持它们处于关闭状态(shutdown)。

以下表格显示了正在使用的路由器ID和OSPF优先级。

在这里插入图片描述

在我们的场景中,路由器的基本配置已经完成;我们的任务是配置OSPF并确定谁将被选举为DR和BDR。

配置OSPF

在这个场景中,我们需要做的第一件事是配置所有路由器上的OSPF。这意味着要使用network命令。

在我们的例子中,我们使用的OSPF进程ID为1,并且使用区域0。

以下表格显示了6台路由器上OSPF配置的命令。

在这里插入图片描述

如上所示,所有网络命令已配置,但由于连接路由器和交换机的接口处于关闭模式,因此不会广告任何路由。

配置OSPF优先级

下一步是配置OSPF优先级,这需要在连接到多访问设备的特定接口上进行配置,使用以下命令:

在这里插入图片描述

在我们的场景中,所有路由器都有连接到交换机的相同接口,即FastEthernet 0/0。

因此,在这些接口上,我们将配置OSPF优先级,如上所示:

下面显示的是R1和R4的配置。

在这里插入图片描述

在所有路由器上配置完OSPF优先级后,使用“no shutdown”命令启用连接到交换机的接口,这将使OSPF能够学习到网络中的路由。

下面显示的是在R1上执行“show ip route”命令的输出。

在这里插入图片描述

如上图,R1已经从邻居路由器学习到所有的路由。

为了确认哪个路由器充当DR角色,我们在每个路由器上使用“show ip ospf neighbor”命令。下面显示的是在R4上执行该命令的输出。

在这里插入图片描述

从输出中可以看到,R4已经与网络中的所有路由器建立了完整的邻居关系。此外,由于邻居1.1.1.1被标记为BDR,所有其他路由器被标记为DROTHER,因此路由器R4是该网络的DR。

在R3上执行“show ip ospf neighbor”命令的输出应该显示谁是DR路由器。

在这里插入图片描述

注意:邻居4.4.4.4的状态为“FULL/DR”,邻居1.1.1.1的状态为“FULL/BDR”,其他路由器的状态为“2WAY/DROTHER”。

在像我们这样的多访问网络中,路由器只有在与DR和BDR建立完全邻居关系(FULL邻居关系)时,才能进行完整的通信。DROTHER路由器只会与其他路由器建立2WAY关系。

DR重新选举

现在,我们将尝试看看如果DR和BDR路由器下线并且无法正常工作,会发生什么情况。

1、DR宕机

如前所述,如果DR宕机,BDR会自动成为新的DR。我们可以通过关闭R4的FastEthernet0/0接口来测试这一点,因为R4是当前的DR。

在这里插入图片描述

正如我们从R6上运行的“show ip ospf neighbor”命令的输出中看到的(上图),邻居1.1.1.1成为新的DR,而它之前是网络中的BDR。

BDR的选举在邻居3.3.3.3和邻居5.5.5.5之间进行,这两个路由器的OSPF优先级相同。邻居5.5.5.5被选为新的BDR,因为它的路由器ID更高。

2、如果DR重新上线,会发生什么?

当我们通过在FastEthernet0/0接口上输入“no shutdown”命令启用R4的接口时,它会恢复作为DR的责任吗?R6上运行的“show ip ospf neighbor”命令的输出如下。

在这里插入图片描述

正如我们从上述输出中看到的,R1仍然会保持作为DR,而R4即使具有更高的优先级,仍将保持作为BDR。这是一个保护功能,以防路由器再次失败。

注意:当DR失败时,它只能在新的DR和新的BDR失败的情况下恢复其作为DR的角色,即使它具有最高优先级。

注意:在多访问网络中,优先级为0的路由器将永远不会成为DR或BDR。

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

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

相关文章

上门按摩系统架构与功能分析

一、系统架构 服务端&#xff1a;Java&#xff08;最低JDK1.8&#xff0c;支持JDK11以及JDK17&#xff09;数据库&#xff1a;MySQL数据库&#xff08;标配5.7版本&#xff0c;支持MySQL8&#xff09;ORM框架&#xff1a;Mybatis&#xff08;集成通用tk-mapper&#xff0c;支持…

攻防世界 ics-07

点击之后发现有个项目管理能进&#xff0c;点进去&#xff0c;点击看到源码&#xff0c;如下三段 <?php session_start(); if (!isset($_GET[page])) { show_source(__FILE__); die(); } if (isset($_GET[page]) && $_GET[page] ! index.php) { include(flag.php);…

Spring Boot教程之四十九:Spring Boot – MongoRepository 示例

Spring Boot – MongoRepository 示例 Spring Boot 建立在 Spring 之上&#xff0c;包含 Spring 的所有功能。由于其快速的生产就绪环境&#xff0c;使开发人员能够直接专注于逻辑&#xff0c;而不必费力配置和设置&#xff0c;因此如今它正成为开发人员的最爱。Spring Boot 是…

测试ip端口-telnet开启与使用

前言 开发过程中我们总会要去测试ip通不通&#xff0c;或者ip下某个端口是否可以联通&#xff0c;为此我们可以使用telnet 命令来实现。 一、telnet 开启 可能有些人使用telnet报错&#xff0c;不是内部命令&#xff0c;可以如下开启&#xff1a; 1、打开控制面板&#xff…

SpringBoot3动态切换数据源

背景 随着公司业务战略的发展&#xff0c;相关的软件服务也逐步的向多元化转变&#xff0c;之前是单纯的拿项目&#xff0c;赚人工钱&#xff0c;现在开始向产品化\服务化转变。最近雷袭又接到一项新的挑战&#xff1a;了解SAAS模型&#xff0c;考虑怎么将公司的产品转换成多租…

爬虫学习记录

1.概念 通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程 通用爬虫:抓取的是一整张页面数据聚焦爬虫:抓取的是页面中的特定局部内容增量式爬虫:监测网站中数据更新的情况,只会抓取网站中最新更新出来的数据 robots.txt协议: 君子协议,网站后面添加robotx.txt…

通过 route 或 ip route 管理Linux主机路由

目录 一&#xff1a;route 使用说明1、查看路由信息2、删除指定路由3、增加指定路由 二&#xff1a;ip route 使用说明1、查看主机路由2、新增主机路由3、删除主机路由 通过route 或者ip route修改Linux主机路由后属于临时生效&#xff0c;系统重启后就恢复默认值了&#xff0c…

el-table表格合并某一列

需求&#xff1a;按照下图完成单元格合并&#xff0c;数据展示 可以看到科室列是需要合并的 并加背景色展示&#xff1b;具体代码如下&#xff1a; <el-tableref"tableA":data"tableDataList":header-cell-style"{ backgroundColor: #f2dcdb, col…

CSS Grid 布局全攻略:从基础到进阶

文章目录 一.Grid 是什么二.示例代码1. 基础使用 - 固定宽高2.百分百宽高3.重复设置-repeat4.单位-fr5.自适应6.间距定义其他 一.Grid 是什么 CSS 中 Grid 是一种强大的布局方式&#xff0c;它可以同时处理行和列 Grid 和Flex有一些类似&#xff0c;都是由父元素包裹子元素使用…

数据结构:包装类和泛型

目录 一、包装类 1、基本数据类型和对应的包装类 2、装箱和拆箱 3、自动装箱和自动拆箱 二、泛型 1、什么是泛型 2、泛型语法 3、泛型类 4、擦除机制 5、泛型的上界 6、泛型方法 三、通配符 1、什么是通配符 2、通配符上界 3、通配符下界 &#x1f4da…

备考蓝桥杯:顺序表相关算法题

目录 询问学号 寄包柜 移动0 颜色分类 合并两个有序数组 物品移动 询问学号 我们的思路&#xff1a;创建一个顺序表存储从1开始依次存放进入教室的学生学号&#xff0c;然后查询 #include <iostream> #include <vector> using namespace std; const int N 2…

Python入门教程 —— 网络编程

1.网络通信概念 简单来说,网络是用物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的。 使用网络的目的,就是为了联通多方然后进行通信,即把数据从一方传递给另外一方。 前面的学习编写的程序都是单机的,即不能和其他电脑上的程…

C#异步多线程——ThreadPool线程池

C#实现异步多线程的方式有多种&#xff0c;以下总结的是ThreadPool的用法。 线程池的特点 线程池受CLR管理&#xff0c;线程的生命周期&#xff0c;任务调度等细节都不需要我们操心了&#xff0c;我们只需要专注于任务实现&#xff0c;使用ThreadPool提供的静态方法把我们的任…

68.基于SpringBoot + Vue实现的前后端分离-心灵治愈交流平台系统(项目 + 论文PPT)

项目介绍 本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述心灵治愈交流平台的当前背景以及系统开发的目的&#xff0c;后续章节将严格按照软件开发流程&#xff0c;对系统进…

Linux(上):基本知识篇

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、Linux初识1 Linux简介2 Linux学习环境配置(1)安装Linux(2)FinalShell远程连接Linux服务器二、Linux基础命令1 Linux目录结构,根目录 /2 Linux命令基础(1)什么是命令、命令行?(2)…

Python中的可变对象与不可变对象;Python中的六大标准数据类型哪些属于可变对象,哪些属于不可变对象

Python中的可变对象与不可变对象&#xff1b;Python中的六大标准数据类型哪些属于可变对象&#xff0c;哪些属于不可变对象 Python中的可变对象与不可变对象一、Python的六大标准数据类型1. 数字类型 (Number)2. 字符串 (String)3. 列表 (List)4. 元组 (Tuple)5. 集合 (Set)6. …

VSCode Live Server 插件安装和使用

VSCode Live Server是一个由Ritwick Dey开发的Visual Studio Code扩展插件&#xff0c;它提供了一个带有实时重载功能的本地开发服务器。在VSCode中安装和使用Live Server插件进行实时预览和调试Web应用程序。这将大大提高前端开发效率&#xff0c;使网页设计和开发变得更为流畅…

Personal APP

1、Matlab 2023b https://www.bilibili.com/opus/887246540317392920 https://blog.csdn.net/qq_25719943/article/details/138096918 https://www.jokerdown.com/22886.html 2、Jlink使用技巧 J-Scope虚拟示波器功能 Jlink使用技巧之J-Scope虚拟示波器功能 - 知乎 (zhihu.…

【马来西亚理工大学主办,ACM出版】2025年大数据、通信技术与计算机应用国际学术会议(BDCTA 2025)

2025年大数据、通信技术与计算机应用国际学术会议&#xff08;BDCTA 2025) 2025 International Conference on Big Data, Communication Technology and Computer Applications 2025年2月14-16日 | 马来西亚-吉隆坡 大会官网&#xff1a;更多详情【论文投稿】 主办单位&…

Sprint Boot教程之五十:Spring Boot JpaRepository 示例

Spring Boot JpaRepository 示例 Spring Boot建立在 Spring 之上&#xff0c;包含 Spring 的所有功能。由于其快速的生产就绪环境&#xff0c;使开发人员能够直接专注于逻辑&#xff0c;而不必费力配置和设置&#xff0c;因此如今它正成为开发人员的最爱。Spring Boot 是一个基…