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

笔记整理六----OSPF协议

                                                              OSPF

动态路由的分类:

1.基于网络范围进行划分--将网络本身划分为一个个AS(自治系统---方便管理和维护)

        内部网关协议---负责AS内部用户之间互相访问使用的协议 IGP--RIP EIGRP ISIS OSPF

        外部网关协议--负责AS之间(整个互联网)的数据通讯 EGP--BGP EGP(淘汰)

2.基于协议本身的工作(基于协议使用的算法)

        DV----距离矢量路由协议:RIP EIGRP

        LS----链路状态路由协议:ISIS OSPF

3.基于传递数据包是否携带子网掩码

        有类别的动态路由协议---RIPV1

        无类别的动态路由协议---其他所有协议

如何判断一款动态路由协议的好坏?

1.选路

RIP协议(应用层协议,组播方式224.0.0.9),根据跳数(到达目标网段经过的路由器的数量)进行选路,参数为COST

RIP协议传递cost值得方法:本地路由表中cost值加1

OSPF协议(组播数据包 224.0.0.5/6),使用SPF最短路径优先算法

OSPF设备收集拓扑信息,基于这些信息生成有向图,然后将有向图转化为最短路径树,最后基于拓扑信息生成路由表

2.收敛速度

收敛:网络中所有设备获取到整个网络所有需要获取的路由信息的过

首次收敛---所有协议时间相差不大

重新收敛--RIP计时器 30S周期计时器 180S失效计时器 120S垃圾回收计时器;OSPF计时器 hello时间 10或30S   dead时间 4倍hello时间

3.资源占用

RIP协议有30S周期更新时间,资源占用大

OSPF资源占用也比较大,但OSPF协议有相关的优化措施

为了减少拓扑信息的更新数量,采用了结构化部署的思想(设计理念)

区域划分:

ABR--区域边界路由器:同时属于两个区域的设备

如果网络规模本身不是很大,那么实际上也可以不进行区域划分,这

样的OSPF网络称为单区域OSPF网络

如果网络规模本身很大,那么一般需要进行区域划分,减少拓扑信息的传递数量,这样的OSPF网络称为多区域OSPF网络

为了区分和标识不同的区域,OSPF设计了区域ID,实质是32位二进制

区域划分的原则(如果部署OSPF网络):

1.必须存在ABR设备

2.必须按照星形拓扑结构进行区域划分(防止出现环路)

OSPF的工作过程:

要了解工作过程,首先先让我们认识一下OSPF的数据包

hello包 ---周期性的发现建立和保活邻居关系
        Router-id (RID)路由器ID---用来标识和区分不同的运行OSPF协议的设备身份
        (必须保证OSPF RID 在整个 OSPF 网络中必须不能重复)
        RID的生成规则:(实际是32 位二进制,按照 IP 地址格式配置即可)
        1.手工配置
        2.设备自动生成:首先检测自身是否存在环回,选择数值最大的作为自
        身的RID ,没有环回检测接口IP地址,选择数值最大的作为自身的 RID
        如果接口没有配置IP 地址协议无法工作
        hello时间,默认10S/30S
        dead时间,默认是hello时间的4倍
DBD包- --链路状态数据库描述包,携带本地链路状态数据库的摘要信息---为了减少可能的重复更新
        本地链路状态数据库--LSDB数据库
        链路状态信息---LSA(所谓的拓扑信息)
LSR包 --链路状态请求包:请求自身设备比对摘要信息之后,自身没有
的LSA信息
LSU包 --真正携带LSA信息的数据包(对端设备请求那些LSA,就发送
那些LSA)
LSACK包- --用来保证数据传输可靠性
认识完数据包后,接下来的是 OSPF的状态机
1.需要建立邻居关系---hello报文(协商参数)

        从Down状态到2-Way状态的条件:

        1.参数协商成功

        2.必须收到对端的hello包中携带自身的RID 

2.建立邻居之后,需要进行条件匹配,如果条件匹配成功进行后续状态,如果条件匹配失败则停留邻居状态,仅保活

3.条件匹配成功,则开始进行主从关系选举
DBD --本身标志状态进入到邻接关系的建立

 

工作过程:

1. 建立邻居:启动配置之后, ospf 将向本地所有的运行了 ospf 协议的
端口发送 hello 包( 224.0.0.5 ), hello 包中携带自己的 RID 用来区分
不同路由器的身份(不携带路由信息)用来发现网络中运行 OSPF 协议
的设备,同时携带自己已知的邻居 RID ,之后会将这些 RID 存储在自己
邻居表 中,当收到hello报文中携带自身的RID那么设备会进入two
way状态完成邻居关系的建立。
2. 条件匹配:邻居关系建立完成之后,会进行条件匹配,如匹配成功
则开始进入下一个状态,如果匹配失败则会停留在邻居关系。 --- 之后
hello 包进行保活。
3. 如果匹配成功,则开始建立邻接关系 - 之后会使用未携带数据 DBD
并没有携带LSDB的摘要信息 )进行主从关系的选举。从设备会优先
主动发送 DBD 报文的摘要信息,主设备收到摘要信息之后会比对本地链
路状态数据库,从而请求本地没有的 LSA 信息。对端设备会发送真正携
lsa 信息的 LSU 包,自身会利用 LSACK 进行确认。本地的链路状态数据
库建立完成,生成 本地链路数据库表 。---Full---邻接状态

 4.完成收敛----基于本地的链路状态数据库收集的lsa,根据自己的 spf算法计算得出最短路径树。生成路由表

5.收敛完成后,会使用hello包每10s发送一次,用来保活邻居关

系。 ospf会每30min进行一次周期更新
OSPF的基本配置:
基础配置:

 

 

扩展配置:

 

查看邻居详细信息:

 

查看邻居简表---主要查看状态

 

查看数据库:

 

 

 

 

OSPF的触发更新:

1.设备无法沟通:其它设备等待死亡时间,然后会清空该设备的所有拓扑信息

2.新增网段

3.断开网段

 

条件匹配:

为了解决在一个广播域中有多台运行了 OSPF协议的设备, 从而导致重复更新的问题,浪费资源(同时还可以减少邻接关系的数量,降低网络复杂度),在two-way状态下完成,使用hello报文进行条件匹配存在最大选举时间一般等于死亡时间 --条件匹配是非抢占的(为了网络稳定性考虑)

实际是选举角色---需要选举DRBDR其他设备为DR-other

首先比较设备优先级,范围0-255,默认为1,越大越优

当优先级一致比较设备R-ID选举,R-ID最大的作为DR,次大的作为BDR

[Huawei-GigabitEthernet0/0/0]ospf dr-priority 0-- 一旦优先级配置为 0
视为放弃选举
224.0.0.6 DR BDR 设备之间同步数据库使用的组播地址

 

相关文章:

笔记整理六----OSPF协议

OSPF 动态路由的分类: 1.基于网络范围进行划分--将网络本身划分为一个个AS(自治系统---方便管理和维护) 内部网关协议---负责AS内部用户之间互相访问使用的协议 IGP--RIP EIGRP ISIS OSPF 外部网关协议--负责AS之间(整个互联网&…...

USB Type-C是不是全方位优于其他USB接口?

首先,USB TypeC接口内部引脚呈中心对称分布,正插、反插都能用,所以可以肓插,使用起来非常方便顺手。 其次,USB TypeC接口体积很小,特别是很薄,几乎适用于所有设备。而USB TypeA就是因为不方便应…...

信息系统监理师第二版教材模拟题第一组(含解析)

信息系统监理基础 信息系统监理的核心目标是( ) A. 降低项目成本 B. 确保项目按合同要求完成 C. 提高开发人员技术水平 D. 缩短项目周期答案:B 解析:信息系统监理的核心目标是确保信息系统工程项目按照合同要求、技术标准和规范完成,保障项目质量、进度和投资控制。 下列哪…...

NPP库中libnppist模块介绍

1. libnppist 模块简介 libnppist 是 NPP 库中专注于 图像统计分析与直方图计算 的模块,提供 GPU 加速的统计操作,适用于计算机视觉和图像处理中的特征提取与分析。 核心功能包括: 直方图计算(支持单通道/多通道) 统…...

k230摄像头初始化配置函数解析

通过 csi id 和图像传感器类型构建 Sensor 对象。 在图像处理应用中,用户通常需要首先创建一个 Sensor 对象。CanMV K230 软件可以自动检测内置的图像传感器,无需用户手动指定具体型号,只需设置传感器的最大输出分辨率和帧率。有关支持的图像…...

Spring的循环依赖问题

文章目录 一、什么是循环依赖?二、Spring 是如何解决循环依赖的?1.三级缓存2.解决循环依赖的流程 三、三级缓存机制可以解决所有的循环依赖问题吗?1. 为什么三级缓存在这里无效?2. 如何解决构造器循环依赖? 四、循环依…...

华为鸿蒙PC:开启国产操作系统自主化新纪元

——全栈自研、生态重构与未来挑战 2025年5月,一个值得中国科技界铭记的时间点。华为正式推出首款搭载鸿蒙操作系统(HarmonyOS)的PC产品。乍一听这像是又一款新电脑的发布,但它背后的意义远比表面更深远——这是中国首次推出从操…...

【LeetCode Hot100】动态规划篇

前言 本文用于整理LeetCode Hot100中题目解答,因题目比较简单且更多是为了面试快速写出正确思路,只做简单题意解读和一句话题解方便记忆。但代码会全部给出,方便大家整理代码思路。 70. 爬楼梯 一句话题意 每次爬1or2,问爬到n的路…...

【Java JUnit单元测试框架-60】深入理解JUnit:Java单元测试的艺术与实践

在当今快节奏的软件开发环境中,保证代码质量的同时又要快速交付成为了开发者面临的主要挑战。单元测试作为软件测试金字塔的基石,为我们提供了一种高效的解决方案。而在Java生态系统中,JUnit无疑是单元测试框架的代名词。本文将全面探讨JUnit…...

Java运算符学习笔记

运算符 -运算符介绍 ​ 运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。 算数运算符赋值运算符关系运算符[比较运算符]逻辑运算符位运算符[需要二进制基础]三元运算符 -算数运算符 介绍 算数运算符是对数值类型的变量进行运算的,在Java程…...

shell编程补充内容(Linux课程实验3)

一、求前五个偶数的和 1.这里先介绍要用到的expr 1. 整数计算 # 加法(注意运算符两侧空格) $ expr 10 20 30# 带括号的运算(需要转义) $ expr \( 10 20 \) \* 2 60# 取模运算 $ expr 15 % 4 注意:仅支持整数&…...

iview table组件 自定义表头

在实际项目开发中,我们经常会用到各种各样的表格,比如在表格表头中填加按钮,下拉菜单,图标等等,在网上搜了一段时间发现比较少,所以写好之后就想着分享出来给有需要的人参考参考,例如下面这种表…...

二叉搜索树实现删除功能 Java

在开始编写删除功能之前,先要编写好searchParent()(寻找父节点)和min()(查找树中最小值)两个函数,后期会在删除功能中使用到。 searchParent()的编写 /*** * param value* return Node*/public Node searchParent(int value){if(rootnull) return null;…...

Android Framework学习三:zygote剖析

文章目录 Zygote工作内容起始点初始化步骤启动 ZygoteInitZygoteInit.main () 函数内部操作 Zygote如何启动SystemServer参与的类和文件流程步骤进程创建完成后的处理 Framework学习之系列文章 在 Android 系统中,Zygote 是一个非常关键的进程,有 “App …...

LLM-Based Agent及其框架学习的学习(三)

文章目录 摘要Abstract1. 引言2. 推理与规划2.1 推理2.2 规划2.2.1 计划指定2.2.2 计划反思 3. 迁移与泛化3.1 未知任务的泛化3.2 情景学习3.3 持续学习 4. 学习Crewai和LangGraph4.1 Crewai4.2 LangGraph 参考总结 摘要 本文系统阐述了基于大语言模型的智能体在认知架构中的核…...

修复笔记:获取 torch._dynamo 的详细日志信息

一、问题描述 在运行项目时,遇到与 torch._dynamo 相关的报错,并且希望获取更详细的日志信息以便于进一步诊断问题。 二、相关环境变量设置 通过设置环境变量,可以获得更详细的日志信息: set TORCH_LOGSdynamo set TORCHDYNAM…...

阿里云服务器全栈技术指导手册(2025版)

阿里云服务器全栈技术指导手册(2025版) 一、基础配置与核心架构设计 1. 精准实例选型策略 • 通用计算场景:选择ECS通用型(如ecs.g7)实例,搭载第三代Intel Xeon处理器,适合Web应用、中小型数…...

llfc项目笔记客户端TCP

一、整体架构流程图(简洁版) 复制代码 【客户端启动】 |--- 初始化TcpMgr(单例)|--- 连接信号初始化:连接成功、断开、错误、发数据| 【用户操作:登录成功】|--- 触发发起跳转:发起连接(sig_connect_tcp)| 【TcpMgr收到连接请求】|--- 连接到服务器(connectToHost)…...

基于python的task--时间片轮询

目录 前言 utf-8 chinese GB2312 utf-8 排除task.c chinese GB2312 排除task.c 运行结果 前言 建议是把能正常工作的单个功能函数放到一起(就和放while函数里的程序一样),程序会按顺序自动配置。 不同的格式已经对应给出。 utf-8 impo…...

《前端秘籍:SCSS阴影效果全兼容指南》

在前端开发的旅程中,为网页元素添上阴影效果,就像为一幅画作点缀光影,能让页面瞬间生动起来,赋予元素层次感与立体感。可当我们满心欢喜地在SCSS中写下阴影代码,满心期待着在各种浏览器中都呈现出完美效果时&#xff0…...

强化学习机器人模拟器——RobotApp:一个交互式强化学习模拟器

RobotApp 是一个基于 Python 和 Tkinter 的交互式强化学习(Reinforcement Learning, RL)模拟器,集成了 GridWorld 环境和 QAgent 智能体,支持 Q-learning、SARSA 和 SARSA(λ) 算法。本博客将详细解析 robot_app.py 的功能、架构和使用方法,展示其如何通过直观的 GUI 界面…...

2025-04-26-利用奇异值重构矩阵-美团

2025-04-26-利用奇异值重构矩阵-美团 题目内容 在一家致力于图像处理的科技公司,你被分配到一个新项目,目标是开发一种图像压缩算法,以减少存储空间并加速传输。团队决定使用奇异值分解( S V D SVD SVD)对图像进行降…...

《解锁SCSS算术运算:构建灵动样式的奥秘》

SCSS作为CSS预处理器,算术运算功能犹如一颗璀璨明珠,赋予我们动态计算样式属性值的强大能力,让网页样式不再是一成不变的刻板呈现,而是能够根据各种条件和需求灵动变化。 在SCSS的世界里,算术运算绝非孤立的存在&…...

STM32Cube-FreeRTOS任务管理工具函数-笔记

STM32Cube-FreeRTOS任务管理工具函数-笔记 一、获取任务句柄的函数1. 创建任务并获取句柄2. 获取当前任务句柄3. 获取空闲任务句柄4. 根据任务名称获取句柄 二、单个任务操作相关函数1. 程序在运行时可以获取或改变一个任务的优先级3. 获取任务信息4. 获取任务信息5. 获取任务名…...

【第三十四周】多模态大模型调研

多模态大模型调研 摘要Abstract引言多模态技术的主要方向视觉-语言大模型(Vision-Language Large Models, VLLMs)语音-语言大模型(Speech-Language Large Models, SLLMs)音乐 - 语言大模型(Music-Language Large Model…...

【2025最新】Baichuan-M1-instruct部署教程

首先机器至少要A100、4090、3090 这里选AutoDL的4090D,运行至少要20G显存。这里镜像选基础镜像11.8【更新!!!!!!!!!24G带不动!显存不够】 有时候…...

Unity与Unreal Engine(UE)的深度解析及高级用法

以下是Unity与Unreal Engine(UE)的深度解析及高级用法对比,结合技术特性、行业应用与未来发展进行综合阐述: 一、核心差异与适用场景对比 1. 技术架构与编程模式 Unity 语言与脚本:主要使用C#,语法简洁且易于学习,适合快速原型开发和中小型项目。支持可视化脚本工具(如…...

网络:TCP三次握手、四次挥手

目录 深刻理解三次握手 深刻理解四次挥手 深刻理解三次握手 三次握手时,如果最后一个ACK包,服务器没有收到,此时: 客户端:认为已经建立链接 服务器:认为没有建立链接,还在超时等待。 而此时…...

spdlog自定义formatter

用了之后发现,spdlog的默认日志记录格式为: [2014-10-31 23:46:59.678] [my_loggername] [info] Some message 但是这个格式不是我想要的,怎么办,这个也简单,上面的内容也就是几个标签的组合而已,spdlog自定…...

Spring AI 实战:第四章、Spring AI多模态之看图说话

引言:从"码农"到"多媒体魔术师" “曾经,我们的代码核心擅长处理文本,就像餐厅里只会做炒饭的厨师。现在有了Spring AI多模态支持,我们突然拥有满汉全席的烹饪技巧!” 作为一名常年与String打交道的开发者,当第一次看到Spring AI可以同时处理图片、音…...

ES6入门---第二单元 模块五:模块化

js不支持模块化 注意: 需要放到服务器环境 1、如何定义模块? export 东西 例:1.js文件中 console.log(1模块加载了);//显示是否加载了 export const a 12; export const b 5; export let c 101; const a12; const b5; const c101;ex…...

Python 函数装饰器和闭包(变量作用域规则)

本章内容: Python 如何计算装饰器句法 Python 如何判断变量是不是局部的 闭包存在的原因和工作原理 nonlocal 能解决什么问题 掌握这些基础知识后,我们可以进一步探讨装饰器: 实现行为良好的装饰器 标准库中有用的装饰器 实现一个参数化装饰器…...

什么是constexpr?

什么是constexpr? 简单来说,constexpr就是告诉编译器:“我这个变量或函数的值可以在编译时算出来,请帮我提前算好,运行时直接用结果,不用再算了。” • **传统const**只表示变量不可修改,但不…...

如何在 PowerEdge 服务器上设置 NIC 分组

以下文章提供了有关 Windows、VMware 和 Linux 中的 NIC 分组的信息。 什么是网络适配器分组?设置 NIC 分组 Windows设置 NIC 分组 VMware设置 NIC 分组 Linux 什么是网络适配器分组(绑定)? 网络适配器分组是一个术语&#xff0…...

ES6入门---第三单元 模块四:Set和WeakSet

set数据结构: 类似数组,但是里面不能有重复值,如果有,只显示一个 set用法: let setArr new Set([a,b]); setArr.add(a); 往setArr里面添加一项 let setArr new Set().add(a).add(b).add(c); setArr.delete(b); 删除一项 setArr.ha…...

架构进阶:75页架构规划方法课件 【附全文阅读】

本文概述了一个关于架构规划方法的目录及其目的,重点介绍了基于联邦企业架构(FEAF)的架构建模方法,并提及了不同层面的架构建模方法以及培训的目的。以下是对该内容的简洁总结: **架构规划方法目录及其目的** 本文旨在…...

前端面经-VUE3篇(三)--vue Router(二)导航守卫、路由元信息、路由懒加载、动态路由

一、导航守卫 vue Router 中的 导航守卫(Navigation Guards) 是一个非常重要的功能,用于在路由切换过程中,拦截、控制、检查或延迟页面跳转。 你可以理解为: 🔐 “进门前的保安”,控制哪些页面…...

RTX-3090 Qwen3-8B Dify RAG环境搭建

RTX-3090 Qwen3-8B Dify RAG环境搭建 一、环境配置二、操作步骤1、创建容器2、下载`Qwen3-8B`和embedding模型3、安装`transformers`4、安装`vllm`5、安装`flash-attention`6、启动兼容OpenAI API的服务1、方案一:启动`vllm`服务【不支持多任务】2、方案二:Flask和PyTorch实现的…...

Circular Plot系列(三):【视频教程】复现NCS图表之高大上的单细胞UMAP环形图

高端复杂的UMAP复现: 这又是一个高大上且炫酷的单细胞UMAP图,展示的信息很多,有大类细胞和亚群,以及marker基因和cell count信息,还可以增加其他的分组信息等等。没错,看这个图就是circlize一层层画的。我们…...

MCP智能体多Agent协作系统设计(Multi-Agent Cooperation)

目录 🚀 MCP智能体多Agent协作系统设计(Multi-Agent Cooperation) 🌟 为什么需要多Agent协作? 🧠 多Agent协作系统架构设计 🛠️ 1. 构建基础智能体基类(Agent Base)…...

栈Stack

一 栈:先进后出 一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。 Stack<Integer> sta…...

HTML01:HTML基本结构

HTML基本结构 <html> <head><meta charset"UTF-8"><title>我的第一个网页</title> </head> <body>我的第一个网页 </body> </html><body、</body等成对的标签&#xff0c;分别叫开发标签和闭合标签单独…...

QT聊天项目DAY07

1.Win配置和使用GRPC 1.1 克隆GRPC库 克隆GRPC git clone -b v1.34.0 https://gitee.com/mirrors/grpc-framework.git 查看Git有没有安装 没有安装 1.1.1 安装Git https://git-scm.com/ 一路next 添加Git的路径到系统环境变量下 我这次没用管理员权限&#xff0c;并且也没…...

2025年PMP 学习三

4.2制定项目管理计划 4. 项目管理计划 - 内容&#xff08;输出&#xff09; 项目目标的制定原因&#xff1a; 3个基准&#xff08;范围基准、进度基准、成本基准&#xff09; 子管理计划&#xff1a;范围、需求、进度、成本、质量、资源、沟通、风险、采购等管理计划&#xf…...

软考-软件设计师中级备考 10、文件管理、设备管理

一、 文件管理 1、文件目录 文件控制块&#xff08;FCB&#xff09;&#xff1a;是操作系统为管理文件而设置的数据结构&#xff0c;包含了文件的基本信息&#xff08;如文件名、文件大小、文件类型等&#xff09;、存取控制信息&#xff08;如文件所有者的权限、其他用户的权…...

Linux环境下的进程创建-fork函数的使用, 进程退出exit和_exit的区别,以及进程等待waitpid和status数据的提取方法

目录 一、进程创建 1.fork函数 1&#xff09;进程调用fork函数是如何创建子进程的 2&#xff09;代码示范 2.写时拷贝 二、进程退出 1.退出码 1&#xff09;什么是退出码&#xff1f; 2&#xff09;为什么要有退出码&#xff1f; 3&#xff09;退出码是怎么做到的&#xff1f; …...

【数据结构与算法】常见排序算法详解(C++实现)

目录 一、排序的基本概念 二、插入排序 2.1 直接插入排序 2.2 折半插入排序 2.3 希尔排序 三、交换排序 3.1 冒泡排序 3.2 快速排序 四、选择排序 4.1 简单选择排序 4.2 堆排序 五、归并排序 六、基数排序 七、计数排序 结语 一、排序的基本概念 排序 就是重新…...

STM32GPIO输入实战-按键key模板及移植

STM32GPIO输入实战-按键key模板及移植 一&#xff0c;按键模板展示二&#xff0c;按键模板逻辑1&#xff0c;准备工作&#xff1a;头文件与全局变量2&#xff0c;读取硬件状态&#xff1a;key_read_raw()3,核心处理&#xff1a;key_process_simple() 的四行代码 三&#xff0c;…...

LeetCode 1128.等价多米诺骨牌对的数量:计数

【LetMeFly】1128.等价多米诺骨牌对的数量&#xff1a;计数 力扣题目链接&#xff1a;https://leetcode.cn/problems/number-of-equivalent-domino-pairs/ 给你一组多米诺骨牌 dominoes 。 形式上&#xff0c;dominoes[i] [a, b] 与 dominoes[j] [c, d] 等价 当且仅当 (a …...

Spring MVC设计与实现

DispatcherServlet的初始化与请求处理流程 初始化阶段 Servlet 生命周期触发&#xff1a;当 Web 容器&#xff08;如 Tomcat&#xff09;启动时&#xff0c;根据注解/配置&#xff0c;DispatcherServlet 的 init() 方法被调用。 初始化 WebApplicationContext 根 WebApplicat…...