OSPF开放最短路径优先(Open Shortest Path First)协议
OSPF开放最短路径优先(Open Shortest Path First)协议
- 为克服RIP的缺点(限制网络规模,坏消息传得慢)在1989年开发出来的
- 原理很简单,但实现很复杂
- 使用了Dijkstra提出的最短路径算法SPF(Shortest Path First)
- 采用分布式的链路状态协议(link state protocol)
- 现在使用OSPFv2
- OSPF是网络层协议,它不使用TCP或UDP,而直接用IP数据报传送(其IP数据报首部的协议字段为89)
- 重要优点:OSPF更新过程收敛速度快,没有坏消息传的慢的问题
链路状态(Link State)路由算法
概述
- 每个结点具有完整的网络拓扑结构信息。它们执行两项任务:第一,主动测试相邻结点状态。第二,定期的将所直连的链路状态传播给所有其他结点
- 每当链路状态报文到达时,路由结点便使用这些状态信息去更新自己的网络拓扑图,一旦网络拓扑图有变化,结点就用Dijkstra最短路径算法重新计算路由(从单一源点出发到达所有目的结点的最短路径),以更新自己的路由表(虽然用Dijkstra算法能计算出完整的最优路径,但路由表中不会存储完整路径,而只存储下一跳,只有到了下一跳路由器,才能知道再下一跳该怎么走)
链路状态算法有三个核心特性
- 采用洪泛法(flooding),向本自治系统中所有路由器发送信息
- 发送的信息是与本路由器相邻的所有路由器的链路状态(这只是路由器掌握的部分信息。链路状态:本路由器都和哪些路由器相邻,以及该链路的度量 (metric),度量是个抽象的概念,对于OSPF协议,度量主要指费用、距离、时延、带宽等)
- 当链路状态发生变化或每隔一段时间(如30分钟),路由器才用洪泛法向所有路由器发送此信息(在OSPF协议中,这种信息叫链路状态更新分组,除此之外,结点还定期发送Hello消息和链路状态数据库(LSDB)描述符消息。Hello消息用于发现和维护链路上的邻居关系;LSDB描述符消息则包含了发送节点的整个链路状态数据库的概要信息,以便邻居节点可以比较各自的LSDB并决定是否需要交换更详细的LSA(链路状态通告)信息。这些定期发送的消息有助于保持邻居关系,并在网络拓扑结构发生变化时快速进行响应
与距离向量(Distance Vector)路由算法的比较
- 在距离向量路由算法中,每个结点仅与它的直接邻居交谈,它为它的邻居提供它知道的全部信息(自己到网络中所有其他结点的最小距离估计)
- 在链路状态算法中,每个结点与所有结点交谈,但它仅提供与它直接相连的链路状态(自己到所有邻居结点的最小距离估计)
OSPF算法
OSPF算法是最典型的链路状态算法,它除了具有链路状态算法通有的特点外,还具有以下特点
- OSPF对不同的链路可根据IP分组的不同服务类型(TOS)而设置成不同的代价。因此,OSPF对于不同的业务可计算出不同的路由,十分灵活
- 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量进行多路径间的负载均衡
- 所有在OSPF路由器之间交换的分组都具有鉴别功能,因而保证了仅在可信赖的路由器之间交换链路状态信息
- 每个链路状态都带上一个32位的序号,序号越大,链路状态越新
在OSPF中,全网的拓扑结构图叫做链路状态数据库
OSPF算法的主要优点
- 每个路由结点都使用同样的原始状态数据独立地计算路径,而不依赖中间结点的计算
- 链路状态报文不加改变的传播,易于定位故障
- 链路状态报文仅包含单个结点所直连的链路状态信息,其大小与网络规模(结点个数)无关
OSPF的区域划分
为使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干更小的范围,称为区域。划分区域的好处是,将利用洪泛法交换链路状态信息的范围局限于每个区域而非整个自治系统,减少了整个网络上的通信量。在一个区域内部的路由器只知道本区域的完整网络拓扑而不知道其他区域的网络拓扑情况。这些区域也有层次之分。处在上层的域称为主干区域,负责连通其他下层的区域,并且还连接其他自治系统

- 主干区域的标识符规定为0.0.0.0
- R3、R4、R7是区域边界路由器ABR(area border router)
- R3、R4、R5、R6、R7是主干路由器BR(backbone router)
- R6是自治系统边界路由器ASBR(AS border router)
OSPF的五种分组类型即分组格式
- 问候(Hello)分组
- 数据库描述(Database Description)分组,即“摘要信息”
- 链路状态请求(Link State Request)分组
- 链路状态更新(Link State Update)分组
- 链路状态确认(Link State Acknowledgment)分组

OSPF协议的工作过程





指定的路由器DR(designated router)

相关文章:
OSPF开放最短路径优先(Open Shortest Path First)协议
OSPF开放最短路径优先(Open Shortest Path First)协议 为克服RIP的缺点(限制网络规模,坏消息传得慢)在1989年开发出来的原理很简单,但实现很复杂使用了Dijkstra提出的最短路径算法SPF(Shortest Path First)采用分布式的链路状态协议(link state protoco…...
数据结构(c语言版本) 字符串操作
作业要求 创建字符串插入、字符串、字符定位、求字串、删除某个字符、替换某个字符串、合并两个字符串 代码实现 #include <stdio.h> #include <string.h> #define MAXSIZE 100//定义结构体 struct SeqString{char data[MAXSIZE];int charlen; };//初始化 void …...
【Pyqt5】windows和linux安装Pyqt5+designer
原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。 文章目录 一、windows安装二、linux安裝linux 安装pyqt5 designer 一、windows安装 PyCharm安装PyQt5及其工具(Qt Designer、PyUIC、PyRcc…...
【FPGA】Verilog:升降计数器 | 波纹计数器 | 约翰逊计数器 | 实现 4-bit 升降计数器的 UP/DOWN
目录 Ⅰ. 理论部分 0x00 升降计数器(UP DOWN Counter) 0x01 波纹计数器(Ripple Counter) 0x02 约翰逊计数器(Johnson Counter) Ⅱ. 实践部分 0x00 实现:升降计数器(4-bit&…...
使用uniapp写小程序,真机调试的时候不显示log
项目场景: 当小程序文件太大的情况下使用真机调试,但是真机调试的调试器没有任何反应 问题描述 使用uniapp写小程序,真机调试的时候不显示log 原因分析: 提示:因为真机调试的时候没有压缩文件,所以调试的…...
hive数据库delete删除部分数据/删除分区内的数据
Hive delete 删除部分数据 一、hive删除数据1.1、删除整个表1.2、删除表中的特定行1.3、删除表中的特定分区1.4、删除分区内的部分数据1.5、清空表中的所有数据 二、扩展2.1、dynamic partition on Crud si not disabled, please set hive.crud.dynamic.partitiontrue to enabl…...
C/C++条件编译:#ifdef、#else、#endif等
文章目录 #undef指令从C预处理器角度看已定义条件编译1.#ifdef、#else和#endif指令 #ifndef指令#ifndef指令通常用于防止多次包含一个文件程序使用#ifndef避免文件被重复包含 #if和#elif指令条件编译还有一个用途是让程序更容易移植 参考 程序员可能要为不同的工作环境准备C程序…...
基于51单片机步进电机节拍步数正反转LCD1602显示( proteus仿真+程序+原理图+设计报告+讲解视频)
基于51单片机步进电机节拍步数正反转LCD1602显示 📑1. 主要功能:📑2. 讲解视频:📑3. 仿真📑4. 程序代码📑5. 设计报告📑6. 设计资料内容清单&&下载链接📑[资料下…...
Vim 从何而来?
Vim 编辑器的创造者、维护者和终身领导者 Bram Moolenaar 为了纪念这位杰出的荷兰程序员,我们今天来聊一聊 Vim 的历史。 Vim 无处不在。它被很多人使用。同时 Vim 可能是世界上 “最难用的软件之一” ,但是又多次被程序员们评价为 最受欢迎的 代码编辑…...
Auto.js 清除指定应用缓存
本文所有教程及源码、软件仅为技术研究。不涉及计算机信息系统功能的删除、修改、增加、干扰,更不会影响计算机信息系统的正常运行。不得将代码用于非法用途,如侵立删!Auto.js 清除指定应用缓存 环境 win10Pixel4Android13var packageName = ""; // 包名 var resu…...
[EFI]Surface Pro 4电脑 Hackintosh 黑苹果引导文件
硬件型号驱动情况主板Surface Pro 4处理器Intel Core i5-6300U 2.5GHz已驱动内存16GB DDR4 2400Mhz已驱动硬盘Samsung SSD 860 EVO 250G Media (Install on SSD External)已驱动显卡Intel HD Graphics 520 2GBmacOS 13以上自行添加显卡补丁声卡Realtek ALC3269(id 3…...
【Java 进阶篇】深入浅出:JQuery 事件绑定的奇妙世界
在前端的世界里,事件是不可或缺的一部分。用户的点击、输入、滚动等行为都触发着各种事件,而如何在代码中捕捉并处理这些事件是每位前端开发者必须掌握的技能之一。本文将带你深入浅出,探索 JQuery 中的事件绑定,为你揭开这个奇妙…...
Pair用法示例:
这里用到了 org.apache.commons.lang3.tuple.Pair 来封装数据(就是不想自己再写一个 DO 或者 VO 或者 MO) 在Java中,Pair是一种简单的数据结构,用于存储两个相关联的值。它没有特定的内置类,但可以通过自定义实现或使…...
rpc依赖安装
依赖: 0、boost:用于实现多线程等; 1、protobuf:用于实现数据的序列化、反序列化,也用于定义和生成rpc数据及接口; 2、libevent:用于实现基于IO多路复用机制的网络事件循环。 其实可以直接用包…...
文件存储服务 实时通信服务 HTTP通信协议
目录 文件存储服务实时通信服务HTTP通信协议 👍 点赞,你的认可是我创作的动力! ⭐️ 收藏,你的青睐是我努力的方向! ✏️ 评论,你的意见是我进步的财富! 文件存储服务 文件存储服务是一种用于…...
Redis - 订阅发布替换 Etcd 解决方案
为了减轻项目的中间件臃肿,由于我们项目本身就应用了 Redis,正好 Redis 的也具备订阅发布监听的特性,正好应对 Etcd 的功能,所以本次给大家讲解如何使用 Redis 消息订阅发布来替代 Etcd 的解决方案。接下来,我们先看 R…...
Hessian协议详解
前言 Hessian协议是一种基于二进制的轻量级远程调用协议,用于在分布式系统中进行跨语言的通信。它使用简单的二进制格式来序列化和反序列化数据,并支持多种编程语言,如Java、C#、Python等。Hessian协议相对于其他协议的优势在于其简单性和高…...
【AI视野·今日Sound 声学论文速览 第三十六期】Mon, 30 Oct 2023
AI视野今日CS.Sound 声学论文速览 Mon, 30 Oct 2023 Totally 7 papers 👉上期速览✈更多精彩请移步主页 Daily Sound Papers Style Description based Text-to-Speech with Conditional Prosodic Layer Normalization based Diffusion GAN Authors Neeraj Kumar, A…...
Android Jetpack的组件介绍,常见组件解析
jetpack组件有哪些 Android Jetpack是一个集成Android应用程序组件的一站式解决方案。它使开发人员能够专注于他们的应用程序的真正创新部分,而不会受到Android平台特定的限制。Jetpack组件可分为四个类别: 架构组件(Architecture Componen…...
ImportError: cannot import name ‘url_quote‘ from...
👨🏻💻 热爱摄影的程序员 👨🏻🎨 喜欢编码的设计师 🧕🏻 擅长设计的剪辑师 🧑🏻🏫 一位高冷无情的编码爱好者 大家好,我是全栈工…...
4 种可靠的 OPPO 手机联系人备份到电脑的方法
OPPO 手机的全球出货量常年位居前五,足以见得它已经获得了越来越多用户的认可。对于年轻群体而言,入手一款高性价比的 OPPO Reno4 SE 这类机型是非常不错的选择。但日常使用中,误操作、进水等意外都可能导致数据丢失,为了避免这类…...
嵌入式通信协议SPI/I2C/UART原理与应用
嵌入式通信协议原理图解与技术解析1. 串行通信协议基础1.1 SPI通信协议SPI(Serial Peripheral Interface)是一种全双工、同步串行通信协议,采用主从架构设计。其核心特点包括:四线制结构:SCLK(时钟)、MOSI(主出从入)、MISO(主入从出)、SS(片选…...
springboot框架健康饮食营养管理信息系统
目录需求分析与系统设计技术栈选型与环境搭建核心功能实现数据可视化与报告生成测试与部署项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作需求分析与系统设计 明确健康饮食营养管理系统的核心需求,包括用户注册登录…...
SEO_为什么你的网站需要SEO?关键原因解析
<h3 id"seoseo">SEO:为什么你的网站需要SEO?关键原因解析</h3> <p>在当今数字化时代,拥有一个网站是企业或个人展示品牌、产品和服务的重要途径。仅仅拥有一个网站并不足以吸引足够的访问量和客户。这时,SEO&…...
零基础玩转VideoFusion:高效视频批量处理全攻略
零基础玩转VideoFusion:高效视频批量处理全攻略 【免费下载链接】VideoFusion 一站式短视频拼接软件 无依赖,点击即用,自动去黑边,自动帧同步,自动调整分辨率,批量变更视频为横屏/竖屏 项目地址: https://gitcode.com/gh_mirrors/vi/VideoFusion 在数字内容创…...
别再手动敲代码了!用Tesseract-OCR在Linux上批量处理图片转文字(附Python脚本)
从图片到结构化数据:基于Tesseract-OCR的Linux批量文本提取实战 在数字化办公和自动化流程中,我们经常需要处理大量图片中的文字信息——可能是扫描的合同文档、会议白板照片或是PDF中的非可编辑页面。传统的手动录入不仅效率低下,还容易出错…...
Ubuntu16.04下MINIGUI 3.2.0环境搭建避坑指南:从依赖安装到HelloWorld运行
Ubuntu 16.04下MINIGUI 3.2.0环境搭建全流程与深度优化指南 为什么选择MINIGUI与Ubuntu 16.04的组合 MINIGUI作为国内自主研发的轻量级GUI系统,在嵌入式领域已有二十余年的技术沉淀。3.2.0版本在保持轻量级特性的同时,增强了对现代嵌入式设备的支持。而U…...
开源视觉模型推荐:GLM-4v-9B,高分辨率输入,中文OCR领先
开源视觉模型推荐:GLM-4v-9B,高分辨率输入,中文OCR领先 1. 引言 在当今多模态AI快速发展的时代,视觉-语言模型正成为技术前沿的热点。GLM-4v-9B作为智谱AI最新开源的90亿参数视觉-语言多模态模型,凭借其11201120高分…...
OneMore插件:提升OneNote效率的160+实用功能全解析
OneMore插件:提升OneNote效率的160实用功能全解析 【免费下载链接】OneMore A OneNote add-in with simple, yet powerful and useful features 项目地址: https://gitcode.com/gh_mirrors/on/OneMore 作为一名科研工作者,李明每天需要处理数十页…...
终极指南:如何让2007年旧Mac运行最新macOS系统
终极指南:如何让2007年旧Mac运行最新macOS系统 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还在为那台陪伴多年的老Mac无法升级最新系统而烦恼吗࿱…...
