OSPF协议整理
OSPF(Open Shortest Path First)即开放式最短路径优先协议,是一种广泛应用于大型网络中的链路状态路由协议。
OSPF 的基本概念
- OSPF 是基于链路状态算法的内部网关协议(IGP),用于在一个自治系统(AS)内动态地交换路由信息,计算出到达各个目标网络的最短路径,并将这些路由信息存储在路由表中,以便路由器能够高效地转发数据报。它通过路由器之间交换链路状态通告(LSA)来构建网络拓扑图,每个路由器根据收集到的 LSA 信息计算出以自己为根的最短路径树,从而确定到达其他网络的最佳路径。
OSPF 的工作原理
- 建立邻居关系:运行 OSPF 的路由器会通过发送 Hello 报文来发现和建立邻居关系。Hello 报文中包含了路由器的 ID、区域 ID、Hello 间隔、死亡间隔等信息。当两台路由器在同一网段上,且 Hello 报文中的相关参数匹配时,它们就会建立起邻居关系,进入邻居状态的初始化阶段。
- 交换链路状态信息:邻居关系建立后,路由器会向邻居发送链路状态更新(LSU)报文,其中包含了各种类型的 LSA。常见的 LSA 类型有路由器 LSA、网络 LSA、汇总 LSA 等,这些 LSA 描述了路由器的链路状态信息,如接口的 IP 地址、子网掩码、链路的开销等。路由器收到 LSU 报文后,会将其中的 LSA 存储到自己的链路状态数据库(LSDB)中,并向其他邻居转发,从而实现链路状态信息在整个网络中的扩散。
- 计算最短路径树:每个路由器根据自己的 LSDB 中的 LSA 信息,使用 Dijkstra 算法计算出以自己为根的最短路径树。最短路径树确定了从路由器到网络中其他各个节点的最短路径,路由器根据最短路径树生成路由表,将到达每个目标网络的最佳路径及下一跳信息等存储到路由表中,用于指导数据报的转发。
OSPF 的区域划分
- 区域的概念:为了提高 OSPF 协议的可扩展性和性能,OSPF 引入了区域的概念,将一个大型的自治系统划分为多个较小的区域。每个区域都有一个唯一的区域 ID,区域内的路由器只需要维护本区域的链路状态信息,大大减少了路由器的内存和 CPU 资源消耗。区域之间通过区域边界路由器(ABR)进行连接,ABR 负责在不同区域之间交换路由信息。
- 骨干区域:在 OSPF 网络中,有一个特殊的区域称为骨干区域,其区域 ID 通常为 0。骨干区域是整个 OSPF 网络的核心,所有其他区域都必须与骨干区域相连,区域间的路由信息都要通过骨干区域进行传递。这种层次化的区域结构使得 OSPF 能够更好地适应大规模网络的需求。
OSPF 的路由器类型
- 内部路由器:所有接口都属于同一个 OSPF 区域的路由器称为内部路由器。内部路由器只需要维护本区域的链路状态信息,根据本区域的拓扑结构计算最短路径树和路由表。
- 区域边界路由器:连接多个不同 OSPF 区域的路由器称为区域边界路由器。ABR 同时属于多个区域,它一方面要维护所连接的各个区域的链路状态信息,另一方面要将本区域的路由信息汇总后传播到其他区域,实现区域间的路由互通。
- 自治系统边界路由器:位于自治系统边界,与其他自治系统中的路由器交换路由信息的路由器称为自治系统边界路由器。ASBR 负责将本自治系统的路由信息引入到 OSPF 网络中,或者将 OSPF 网络的路由信息传播到其他自治系统,实现不同自治系统之间的路由可达性。
OSPF 的度量值
- OSPF 使用链路开销作为度量值来计算最短路径。链路开销是根据链路的带宽等因素计算得出的,带宽越大,链路开销越小。默认情况下,OSPF 使用公式 “开销 = 100Mbps / 链路带宽” 来计算链路开销,但网络管理员也可以根据实际情况手动修改链路开销的值。在计算最短路径时,路由器会选择总链路开销最小的路径作为到达目标网络的最佳路径。
OSPF 的优点
- 快速收敛:OSPF 基于链路状态算法,能够快速检测到网络拓扑的变化,并在短时间内重新计算最短路径树,实现路由的快速收敛。相比距离矢量路由协议,如 RIP,OSPF 的收敛速度更快,能够大大减少网络中断时间,提高网络的可用性和可靠性。
- 支持大规模网络:通过区域划分和层次化的网络结构,OSPF 能够有效地管理大规模网络中的路由信息,减少路由器的资源消耗,提高网络的可扩展性。在大型企业网络、校园网络和城域网等复杂网络环境中,OSPF 能够很好地适应网络规模的不断扩大和网络拓扑的频繁变化。
- 灵活的路由策略:OSPF 提供了丰富的路由策略配置选项,网络管理员可以根据网络的需求和业务要求,灵活地设置路由过滤、路由汇总、路径选择等策略,实现对网络流量的优化和控制,提高网络的性能和安全性。
OSPF 的缺点
- 配置复杂:相比一些简单的路由协议,如 RIP,OSPF 的配置相对复杂,需要网络管理员对 OSPF 的原理、区域划分、路由器类型、LSA 类型等有深入的了解和掌握,才能正确地进行配置和部署。特别是在大型网络中,OSPF 的配置和管理需要一定的专业知识和经验。
- 对路由器资源要求较高:由于 OSPF 需要维护链路状态数据库,并进行复杂的最短路径计算,因此对路由器的内存和 CPU 资源有一定的要求。在网络规模较大、拓扑结构复杂的情况下,路由器可能需要较大的内存来存储 LSDB,同时也需要较强的 CPU 处理能力来及时计算和更新路由信息,这可能会增加网络建设和运营的成本。
OSPF 的应用场景
- 企业网络:在企业网络中,OSPF 常用于构建园区网络的内部路由架构。企业通常有多个部门和分支机构,网络规模较大且拓扑结构复杂。OSPF 能够通过区域划分将不同部门或分支机构的网络划分为不同的区域,实现网络的层次化管理和路由优化,提高网络的可靠性和性能,满足企业内部各种业务应用对网络的需求。
- 校园网络:校园网络覆盖范围广,包括教学楼、办公楼、图书馆、宿舍等多个区域,网络中的设备和用户数量众多。OSPF 可以根据校园网络的物理布局和功能划分,将不同区域的网络划分为不同的 OSPF 区域,实现网络资源的合理分配和流量的有效控制,保障教学、科研、办公等各种业务的正常开展。
- 城域网:城域网连接了城市中的多个不同园区网络和企业网络,网络规模大且拓扑结构复杂。OSPF 通过区域划分和层次化的网络结构,能够有效地管理城域网中的路由信息,实现不同区域之间的路由互通和流量优化,提高城域网的可扩展性和可靠性,为城市中的各种网络应用和服务提供高效的网络支持。
OSPF 作为一种重要的链路状态路由协议,以其快速收敛、支持大规模网络和灵活的路由策略等优点,在各种大型网络环境中得到了广泛的应用,为网络的高效运行和可靠通信提供了有力的保障。
相关文章:
OSPF协议整理
OSPF(Open Shortest Path First)即开放式最短路径优先协议,是一种广泛应用于大型网络中的链路状态路由协议。 OSPF 的基本概念 OSPF 是基于链路状态算法的内部网关协议(IGP),用于在一个自治系统ÿ…...
Java中的多线程
文章目录 Java中的多线程一、引言二、多线程的创建和启动1、继承Thread类2、实现Runnable接口 三、线程的常用方法1、currentThread()和getName()2、sleep()和yield()3、join() 四、线程优先级五、使用示例六、总结 Java中的多线程 一、引言 在Java中,多线程编程是…...
什么是聚簇索引、非聚簇索引、回表查询
其实聚集索引也叫聚簇索引,二级索引也叫非聚簇索引,大家不要认为这是不同的两个知识点。 定义 先看一下数据库的索引介绍。 聚簇索引 1. 如果存在主键(一般都存在),主键索引就是聚簇索引。 2. 如果不存在,…...
探索 Spring 框架核心组件:构建强大 Java 应用的基石
Spring框架作为Java企业级开发的首选框架之一,其强大的功能和灵活的架构深受开发者喜爱。Spring框架的核心组件共同构建了一个高效、可扩展的应用程序开发平台。本文将深入探讨Spring框架的核心组件,揭示它们如何在Spring框架中发挥关键作用。 一、Bean…...
Android 13 Aosp 默认允许应用动态权限
图库 frameworks/base/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java 修改 public void grantDefaultPermissions(int userId) {DelayingPackageManagerCache pm new DelayingPackageManagerCache();grantPermissionsToSysCompon…...
【C++知识总结1】c++第一篇,简单了解一下命名空间是什么
一、C的由来 C语言是一种结构化和模块化的编程语言,它对于处理较小规模的程序非常适用。然而,当面临需要高度抽象和建模的复杂问题,以及规模较大的程序时,C语言就显得不那么合适了。为了应对这种挑战,并在解决软件危机…...
从0开始深度学习(32)——循环神经网络的从零开始实现
本章将从零开始,基于循环神经网络实现字符级语言模型(不是单词级) 首先我们把从0开始深度学习(30)——语言模型和数据集中的load_corpus_time_machine()函数进行引用,用于导入数据: train_iter…...
GitLab使用操作v1.0
1.前置条件 Gitlab 项目地址:http://******/req Gitlab账户信息:例如 001/******自己的分支名称:例如 001-master(注:master只有项目创建者有权限更新,我们只能更新自己分支,然后创建合并请求&…...
cuda conda yolov11 环境搭建
优雅的 yolo v11 标注工具 AutoLabel Conda环境直接识别训练 nvidia-smi 检查CUDA版本 下载nvidia cudnn对应的版本 将cuDNN压缩包内对应的文件复制到本地bin、include、lib的文件夹中 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.6 miniConda快速开始-安装 执行…...
解决SpringBoot连接Websocket报:请求路径 404 No static resource websocket.
问题发现 最近在工作中用到了WebSocket进行前后端的消息通信,后端代码编写完后,测试一下是否连接成功,发现报No static resource websocket.,看这个错貌似将接口变成了静态资源来访问了,第一时间觉得是端点没有注册成…...
element-plus的组件数据配置化封装 - table
目录 一、封装的table、table-column组件以及相关ts类型的定义 1、ATable组件的封装 - index.ts 2、ATableColumn组件的封装 - ATableColumn.ts 3、ATable、ATableColumn类型 - interface.ts 二、ATable、ATableColumn组件的使用 三、相关属性、方法的使用以及相关说明 1. C…...
【二维动态规划:交错字符串】
介绍 编程语言:Java 本篇介绍一道比较经典的二维动态规划题。 交错字符串 主要说明几点: 为什么双指针解不了?为什么是二维动态规划?根据题意分析处转移方程。严格位置依赖和空间压缩优化。 题目介绍 题意有点抽象,…...
goframe开发一个企业网站 MongoDB 完整工具包18
1. MongoDB 工具包完整实现 (mongodb.go) package mongodbimport ("context""fmt""time""github.com/gogf/gf/v2/frame/g""go.mongodb.org/mongo-driver/mongo""go.mongodb.org/mongo-driver/mongo/options" )va…...
在vue中,根据后端接口返回的文件流实现word文件弹窗预览
需求 弹窗预览word文件,因浏览器无法直接根据blob路径直接预览word文件,所以需要利用插件实现。 解决方案 利用docx-preview实现word文件弹窗预览,以node版本16.21.3和docx-preview版本0.1.8为例 具体实现步骤 1、安装docx-preview插件 …...
动态规划之背包问题
0/1背包问题 1.二维数组解法 题目描述:有一个容量为m的背包,还有n个物品,他们的重量分别为w1、w2、w3.....wn,他们的价值分别为v1、v2、v3......vn。每个物品只能使用一次,求可以放进背包物品的最大价值。 输入样例…...
【Python】 深入理解Python的单元测试:用unittest和pytest进行测试驱动开发
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 单元测试是现代软件开发中的重要组成部分,通过验证代码的功能性、准确性和稳定性,提升代码质量和开发效率。本文章深入介绍Python中两种主流单元测试框架:unittest和pytest,并结合测试驱动开发(TDD)…...
Java集合1.0
1.什么是集合? 集合就是一个存放数据的容器,准确的说是放数据对象引用的容器。 集合和数组的区别 数组是固定长度,集合是可变长度。数组可以存储基本数据类型,也可以存储引用数据类型,集合只能存储引用数据类型&…...
Leetcode 336 回文对
示例 1: 输入:words ["abcd","dcba","lls","s","sssll"] 输出:[[0,1],[1,0],[3,2],[2,4]] 解释:可拼接成的回文串为 ["dcbaabcd","abcddcba","sl…...
实现一个可配置的TCP设备模拟器,支持交互和解析配置
前言 诸位在做IOT开发的时候是否有遇到一个问题,那就是模拟一个设备来联调测试,虽然说现在的物联网通信主要是用mqtt通信,但还是有很多设备使用TCP这种协议交互,例如充电桩,还有一些工业设备,TCP这类报文交…...
算法的空间复杂度
空间复杂度 空间复杂度主要是衡量一个算法运行所需要的额外空间,在计算机发展早期,计算机的储存容量很小,所以空间复杂度是很重要的。但是经过计算机行业的迅速发展,计算机的容量已经不再是问题了,所以如今已经不再需…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...
练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
