OSPFv2基础02_工作原理

news2024/9/23 5:29:58

目录

1.OSPF接口状态

2.OSPF邻居状态

2.1 OSPF邻居状态类型

2.2 广播网络OSPF邻接关系建立

3.Router ID(路由器ID)选举

4.DR和BDR选举

4.1 为什么引入DR和BDR?

 4.2 DR和BDR的作用

4.3 DR和BDR选举过程

4.4 DR和BDR选举原则

5.OSPF路由计算原理


1.OSPF接口状态

OSPF接口总共有7种状态:

Down(接口关闭):接口被管理员关闭或者检测到故障。

Loopback(环回):接口配置为环回接口,用于本地测试或管理目的。

Waiting(等待):接口正在等待与邻居建立邻居关系。

Point-to-Point(点对点):接口与单个邻居之间建立了邻居关系。

DR(Designated Router):接口被选举为DR,用于在多点连接上减少链路状态广播的数量。

Backup(备份):接口被选举为备份DR,作为DR故障时的替代。

DR Other(DR其他):接口不是DR或备份DR,但在多点连接中仍然具有邻居关系。

DR Waiting(DR等待):接口正在等待与DR建立邻居关系。

2.OSPF邻居状态

2.1 OSPF邻居状态类型

Down(关断):表示邻居关系处于关闭状态,没有建立连接。

Attempt(尝试):表示路由器正在尝试与邻居建立连接。

Init(初始化):表示邻居关系正在初始化过程中,还未完成。

2-Way(双向):表示邻居路由器已经收到了对方的Hello报文,表明双方的邻居关系已经建立。

Exstart(启动):表示邻居路由器正在进行Master/Slave角色的选举过程。

Exchange(交换):表示邻居路由器正在交换链路状态数据库(LSDB)信息。

Loading(加载):表示邻居路由器正在加载链路状态信息,并更新自己的路由表。

Full(完全):表示邻接关系已经完全建立,路由器之间的信息同步完成。

邻居关系和邻接关系有什么区别?

邻居关系指的是2-Way状态,处于邻居关系的OSPF接口不能进行LSA信息交换,DR Other接口之间只能形成邻居关系。

邻接关系指的是Full状态,完成了LSA交换的OSPF路由器将建立邻接关系,DR,BDR和其他OSPF接口形成的是邻接关系。

2.2 广播网络OSPF邻接关系建立

在讨论邻居关系的时候,我们一定得分场景(OSPF网络类型)去讨论,不同的场景邻接状态会有一定的差异,我们以广播网络来进行分析和讨论。

 图 2-1 广播网络OSPF邻接关系建立

3.Router ID(路由器ID)选举

当一个路由器运行OSPF协议时,它需要选择一个唯一的路由器ID(Router ID)来标识自己。

路由器ID在OSPF网络中非常重要,它用于识别路由器、区分LSA(链路状态广告)和确定OSPF路由的计算。

OSPF路由器ID选举的过程如下:

  • 手动配置:管理员可以手动配置路由器ID,手动配置的路由器ID优先级最高,如果手动配置了ID,则将使用该ID。
  • Loopback接口IP:如果没有手动配置的路由器ID,那么路由器将从其所有接口的IP地址中选择一个最高的IP地址作为路由器ID。通常情况下,Loopback接口的IP地址具有最高优先级,因为它们是稳定且通常不会更改的。
  • 物理接口IP:如果没有Loopback接口或没有可用的Loopback接口,那么将选择具有最高优先级的物理接口的IP地址作为路由器ID。接口优先级可以通过配置进行调整。
  • 最高MAC地址:如果以上选项都不可用,则将使用具有最高MAC地址的物理接口作为路由器ID。

需要注意的是,一旦路由器ID被选定,它将在OSPF进程的整个生命周期内保持不变,除非手动更改或重新启动OSPF进程。

 图 3-1 Router ID选举优先级

4.DR和BDR选举

4.1 为什么引入DR和BDR?

OSPF引入了DR(Designated Router)和BDR(Backup Designated Router)的概念,为了减少链路状态广告(LSA)的洪泛以及减轻网络负载。

如图 4-1,未选举DR和BDR的广播网络,路由器之间的邻接关系数量为n*(n-1)/2,图种6个OSPF路由器的邻接关系数量为6*(6-1)/2 = 15,路由器越多邻接关系越复杂。

选举DR和BDR的广播网络,路由器只需和DR和BDR建立邻接关系即可,这样邻接关系数量会大大的减少。

图 4-1 引入DR和BDR的好处

 4.2 DR和BDR的作用

DR是网络中被选举为主要路由器的路由器,它负责收集并分发LSA,其他路由器只需将LSA发送给DR即可。

BDR是备份的DR,它接收LSA并保存备份数据,以便在DR失效时接替其角色。

4.3 DR和BDR选举过程

DR和BDR选举是在OSPF邻居关系建立阶段进行的。当一个路由器与其他路由器建立邻居关系时,它们会交换Hello报文。 在Hello报文中,路由器会宣告自己的优先级(Priority)。默认情况下,所有路由器的优先级都是1。

当一个路由器收到Hello报文时,它会比较对方的优先级和自己的优先级。如果对方的优先级大于自己的优先级,那么它会接受对方作为DR,并将自己作为BDR。 如果对方的优先级与自己的优先级相同,那么会比较对方的路由器ID(Router ID)。路由器ID是由路由器在OSPF进程中唯一标识自己的32位数字。 如果对方的路由器ID较大,那么它会接受对方作为DR,并将自己作为BDR。

如果路由器没有被选举为DR或BDR,则它将是普通的OSPF路由器,只需要将LSA发送给DR和BDR。

需要注意的是,DR和BDR选举是相对于一个OSPF区域(OSPF Area)而言的。在不同的区域中,会进行独立的DR和BDR选举。

通过DR和BDR的选举,OSPF能够减少LSA洪泛,提高网络效率,并减轻网络负载。同时,如果DR失效,BDR将接替其角色,保证网络的稳定性和可靠性。

 图 4-2 广播网络DR和BDR选举过程

4.4 DR和BDR选举原则

(1)选举制

DR和BDR不能通过人工配置,只能通过选举产生。

(2)终生制

DR和BDR一旦被选举出来将不会改变,路由器无法抢占成为DR或者BDR。

(3)继承制

如果DR发生故障,BDR将被选举位DR,其他路由器竞选BDR。

5.OSPF路由计算原理

OSPF使用SPF(Shortest Path First)算法来计算最短路径,并选择最佳的路由。

SPF算法的原理如下:

  1. 构建拓扑图:每个OSPF路由器根据收到的链路状态信息(LSA)构建一个拓扑图,其中包含网络、链路和路由器节点。

  2. 计算最短路径树:每个OSPF路由器使用Dijkstra算法计算从自己到其他所有节点的最短路径。该算法通过比较各个路径的总代价(通常是链路成本之和)来确定最短路径。

  3. 构建转发表:每个OSPF路由器根据最短路径树构建转发表,将每个目标网络映射到下一跳路由器。

  4. 更新链路状态数据库:当网络中发生链路状态变化时,每个OSPF路由器将更新自己的链路状态数据库,并重新计算最短路径树。

通过这样的方式,OSPF能够动态地适应网络中的变化,并选择最佳的路径来转发数据包。这种基于SPF算法的计算方式使得OSPF成为了一种高效可靠的路由协议。

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

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

相关文章

基于单片机指纹考勤系统的设计与实现

功能介绍 以51单片机作为主控系统;利用指纹采集模块存储打卡信息;12864显示当前考勤信息,时间 ;如果迟到 语音播报 您已迟到;按键进行注册指纹、删除指纹、设置当前时间和签到时间、查询打卡等;具有掉电保存…

【YOLOv7调整detect.py】1.调整检测框粗细,2.设定标签颜色,3.只显示与标签数目相同的检测结果

目录 1. 调整检测框粗细2. 设定标签颜色3. 只显示与标签数目相同的检测结果 1. 调整检测框粗细 在detect.py中按住CtrlF检索line_thickness定位过去,在129行左右,更改line_thickness的大小即可,例如改为line_thickness3 2. 设定标签颜色 在…

Spring核心 and 创建使用

Spring核心 and 创建使用 文章目录 Spring核心 and 创建使用一、Spring的定义1.1什么是IoC1.1.1 理解控制反转(IoC)1.1.2 控制反转式程序开发 1.2 使用Spring IoC核心功能2.1 DI的概念说明 二、Spring的创建和使用2.1 创建一个Maven项目2.2 添加Spring框…

解决在jupyter notebook中找不到pip安装后的库

解决在jupyter notebook中找不到已安装的库

Todo-List案例版本二

(160条消息) Todo-List案例版本一_bubbleJessica的博客-CSDN博客 引入了localStorage&#xff0c;让案例更加完善 src/App.vue <template><div id"root"><div class"todo-container"><div class"todo-wrap"><MyHe…

pycharm 打开终端,安装第三方程序

鼠标移动到左下角 弹出列表&#xff0c;选择终端&#xff0c;当然也可以用快捷键唤出&#xff0c; 可以输入命令进行第三方库的安装

Redis实战案例14-分布式锁的基本原理、不同实现方法对比以及基于Redis进行实现思路

1. 分布式锁基本原理 基于数据库的分布式锁&#xff1a;这种方式使用数据库的特性来实现分布式锁。具体流程如下&#xff1a; 获取锁&#xff1a;当一个节点需要获得锁时&#xff0c;它尝试在数据库中插入一个特定的唯一键值&#xff08;如唯一约束的主键&#xff09;&#xff…

vue 进阶---动态组件 插槽 自定义指令

目录 动态组件 如何实现动态组件渲染 使用 keep-alive 保持状态 keep-alive 对应的生命周期函数 keep-alive 的 include 属性和exclude属性 插槽 插槽的基础用法 具名插槽 作用域插槽 自定义指令 自定义指令的分类 私有自定义指令 全局自定义指令 了解 eslint 插件…

mysql 单表查询练习

mysql 单表查询练习 创建数据表代码 CREATE TABLE emp (empno int(4) NOT NULL,ename varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,job varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,mgr int(4) NULL DEFAU…

附件上传报java.lang.RuntimeException: java.nio.file.NoSuchFileException的问题

1、报错信息 java.lang.RuntimeException: java.lang.RuntimeException: java.nio.file.NoSuchFileException: /tmp/undertow.5113172416389412561.31101/undertow1781128540461109448upload 2、原因 Java项目以java -jar命令启动后&#xff0c;进行文件上传的操作&#xff0c…

android 测试google pay

1、到GooglePlay后台创建商品&#xff0c;需要注意的是要创建商品必须先发布一个带有Billing库的aab到GooglePlay&#xff08;测试渠道即可&#xff09; 2、获取并配置好商品id之后&#xff0c;将测试用的aab发布到内部测试&#xff0c;并添加测试人员的邮箱。 3、通过连接分享…

获取系统时间日期相关接口梳理

时间&日期 ##MyTime.hpp #pragma once #include <iostream> #include <ctime> #include <string>using namespace std;class MyTime { public:MyTime() {};~MyTime() {};time_t timeSec(void);uint64_t timeMs(void);string timeDate(void); };##MyTim…

端口监控:HHD Device Monitoring Studio Crack

设备监控工作室 监控、记录和分析流经 PC 端口和连接的数据 设备监控工作室 Device Monitoring Studio 是一款高性能非侵入式软件解决方案&#xff0c;用于监控、记录和分析通过 PC 端口和连接传入的数据。 在其开发过程中&#xff0c;我们特别注重所有数据拦截和处理算法的优化…

qt实现信息管理系统(学生信息管理系统)功能更完善

一、代码地址 信息系统代码地址&#xff1a;https://gitee.com/dxl96/StdMsgSystem 二、基本说明 本学生信息管理系统同升级改造的幅度较大&#xff0c;涉及到的东西对于初学者来说&#xff0c;可能稍显复杂&#xff0c;可以先移步到 https://blog.csdn.net/IT_CREATE/artic…

SWAT模型十八个案例教程

详情点击链接&#xff1a;SWAT模型十八个案例教程案例一&#xff1a;基于网络资源的SWAT模型快速建模 案例二&#xff1a;基于遥感产品的SWAT模型率定与验证 案例三&#xff1a;基于水文响应单元&#xff08;HRU&#xff09;的水资源时空分布特征 案例四&#xff1a;基于自定义…

【代码随想录day4】链表相交

题目 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0c;函数返回结果后&a…

基于Java网络安全宣传网站设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

硬件性能 - CPU瓶颈分析

简介 本文章通过CPU各个指标项来简单分析是否出现CPU硬件性能瓶颈。其他硬件分析如下&#xff1a; 1. 硬件性能 - 掌握内存知识 2. 硬件性能 - 磁盘瓶颈分析 3. 硬件性能 - 网络瓶颈分析 目录 1. 系统负载 2. CPU利用率 3. 中断占用 4. 上下文切换 1. 系统负载 系统负载是…

【Windows】Redis单机部署

下载redis 下载地址&#xff1a;Releases microsoftarchive/redis GitHub 1、下载后解压&#xff0c;在文件根目录下创建两个文件夹dbcache、logs 修改配置文件redis.windows.conf &#xff08;1&#xff09;配置redis地址&#xff1a; bind 127.0.0.1 &#xff08;2&am…

M62429L音量控制IC驱动

前言 最近项目开发中&#xff0c;要控制AV端的音量&#xff0c;由于主控端的AV音量控制gpio被复用为其它功能口了&#xff0c;不得已增加一个ic去控制音量的输出&#xff0c;这里使用的是M62429L音量控制IC。 1.M62429音量ic概述 M62429L是一款串行数据控制的双声道电子音量控…