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

OSPF(开放路径最短优先)

ospf优先级:内部优先级默认为10,外部优先级默认为150

1.ospf的三张表
(1)邻居表 <记录邻居状态和关系>
(2)拓扑表 <链路状态数据库>
(3)路由表 <对链路状态数据库进行SPF计算得出的OSPF路由表>
2.ospf路由器的类型
(1)IR,interior router区域内部路由器 <所有接口都在同一区域>
(2)BR,backbone router骨干路由器 <有接口在骨干区域>
(3)ABR,area border router区域边界路由器 <连接骨干区域和非骨干区域>
(4)ASBR,autonomous system boundary router自治系统边界路由器 <连接外部自治系统,并引入外部路由>
3.Router ID
Router-ID 是非抢占的,若出现一个更大的IP,仍保持原来的router-id。只有手动配置或router-id对应的接口IP地址消失,重启ospf进程后router-id发生改变。
4.ospf的网络类型
(1)广播多路访问型:
以太网默认的网络类型、需要选举DR/BDR、hello-time为10秒、dead-time为40秒、组播发送协议报文。
(2)非广播多路访问型
帧中继接口的默认网络类型、需要选举DR/BDR、hello-time为30秒,dead-time为120秒、单播发送协议报文需要手动指定邻居。
(3)点到点网络
ppp默认的网络类型、不选举DR/BDR、hello-time为10秒、dead-time为40秒、组播发送协议报文。
(4)点到多点网络
由其他网络类型修改、不选举DR/BDR、hello-time为30秒、dead-time为120秒、模拟组播发送协议报文,可以自动发现邻居。

在设置网络类型,要注意以下几个方面:
P2MP类型必须是由其他的网络类型强制更改
一般情况下,链路两端ospf接口的网络类型必须一致,否则不可用建立邻居关系

5.ospf五种报文
Hello:建立和维护ospf邻居关系。
DBD:链路状态数据库描述。OSPF 路由器通过交换 DBD 报文,来统计自己缺少的 LSA 并向对端发送 LSR 报文进行请求。
LSR:链路状态请求报文。用于向邻居请求自己 LSDB 中没有的 LSA。
LSU:将邻居需要的LSA打包成LSU发给邻居,只有 LSU 报文中会包含完整的 LSA。
LSAck:LSAck 用于向邻居确认收到的 LSU,如果没收到 LSAck 的话,邻居会不断的重传LSU。

6.ospf的邻居状态机
(1)Down:表明没有在邻居失效时间间隔内收到来自邻居路由器的Hello数据包。
(2)Attempt:该状态仅发生在NBMA网络中,表明对端在邻居失效时间间隔超时前仍然没有回复Hello报文。此时路由器依然每发送轮询Hello报文的时间间隔向对端发送Hello报文。
(3) Init:本状态表示已经收到了邻居的HELLO报文,但对方并没有收到我发的HELLO报文。
(4)2-way:收到的Hello报文中包含有自己的Router ID,则状态为2-way;如果不需要形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态。
(5)ExStart:路由器和它的邻居之间通过互相交换DD报文来决定发送时的主/从关系。
(6) Exchange:路由器将本地的LSDB用DD报文来描述,并发给邻居。
(7) Loading:路由器发送LSR报文向邻居请求对方的DD报文。
(8)Full:在此状态下,邻居路由器的LSDB中所有的LSA本路由器全都有了。即,本路由器和邻居建立了 邻接 状态。

7.LSA类型
(1)LSA type1(Router LSA)
传播范围:仅在区域内传播
产生者:每台路由器都会产生
(2)LSA type2(network LSA)
传播范围:仅在区域内传播
产生者:由DR产生
(3)LSA type3(Network Summriy-LSA)
传播范围:传递至除Totally stub和Totally NSSA区域之外的所有区域
产生者:由ABR产生
(4)LSA type4(ASBR summary-LSA)
传播范围:在除ASBR本区域之外的其他普通区域传递
产生者:由ABR产生
(5)LSA type5(External-LSA)
传播范围:传递至除特殊区域外的所有其他普通区域
产生者:由ASBR产生
(7)LSA type7(NSSA-LSA)
传播范围:只在NSSA本区域传递
产生者:由NSSA区域ASBR产生

8.特殊区域
(1)stub区域:不接收4 5类LSA,由ABR自动产生一条缺省路由的Type3 LSA下发至该区域,骨干区域不能被配置为特殊区域,如果要将一个区域配置成Stub区域,则该区域中的所有路由器必须都要配置成Stub路由器,Stub区域内不能存在ASBR,虚连接不能穿越Stub区域建立。
(2)totally stub区域:不接收3 4 5类LSA,由ABR自动产生一条缺省路由的Type3 LSA下发至该区域,骨干区域不允许设置为特殊区域,Stub区域不允许存在ASBR。
(3)nssa区域:不接收4 5类LSA,但本区域存在ASBR;本区域引入的外部路由以Type7 LSA传递,当该外部路由传递至其他普通区域时,由Router-id最大的ABR进行7转5;手动配置ABR下发一条Tyep7的缺省路由LSA。
(4)totally nssa区域:不接收3 4 5类LSA,但本区域存在ASBR;本区域引入的外部路由以Type7 LSA传递,当该外部路由传递至其他普通区域时,由Router-id最大的ABR进行7转5;由ABR自动产生一条缺省路由的Type3 LSA下发至该区域

NSSA区域和Stub区域的区别:
两者的差别在于,NSSA区域能够将自治域外部路由引入并传播到整个OSPF自治域中,同时又不会学习来自OSPF网络其它区域的外部路由

9.OSPF选路原则:
1.区域内路由>区域间路由>1类外部路由>2类外部路由
2.类型一致,对比Cost

10.虚连接
通过在一个中间区域的2个ABR上配置虚连接来使两端的区域实现逻辑上的连接,解决非骨干区域不能和骨干区域相连。

11.ospf路由聚合
(1)ABR聚合:把一个区域的LSA聚合后发布到相邻区域;只能对Type 3类的LSA进行聚合;ABR的聚合不会影响本机的路由,只会影响下游路由器的路由;ABR聚合后会在ABR本机上产生一条该聚合路由的黑洞路由来防止环路出现。
(2)ASBR聚合:只能对Type 5、7类Lsa进行聚合;ASBR的聚合不会影响本机的路由,只会影响OSPF内部其他路由器的路由;ASBR聚合后会在ABR本机上产生一条该聚合路由的黑洞路由来防止环路出现。

12.ospf安全验证
(1)接口验证:链路两端的接口必须配置一致的密码才能建立邻居关系
(2)区域验证:在区域下配置一致的密码才能加入同一个区域
注意:接口验证高于区域验证,只要接口验证通过,哪怕区域验证挂了也能通过

13.2-way的前提
(1)Router-id无冲突 <修改Router-id需要重置OSPF进程使生效>
(2)区域id一致
(3)掩码长度一致
(4)验证密码一致
(5)hello-time一致
(6)dead-time一致

14.ospf的优点

(1)仅传播对端设备不具备的路由信息,避免网络资源浪费
(2)网络收敛速度快
(3)扩展性好
(4)支持认证(安全性好)

15.影响OSPF邻居关系的因素:
(1)双方Router-id冲突
(2)双方Area-id不一致
(3)广播网络中掩码不一致
(4)网络类型不一致(如果一端是NBMA,另一端不是,则无法建立邻居;其他的情况都是邻接关系可以FULL,但是无法计算路由)
(5)双方接口的MTU不一致(导致邻接状态卡在Exstart或Exchange)
(6)验证未通过
(7)特殊区域类型不一致
(8)Hello-time和Dead-time不一致

DR,BDR选举规则总结:
1.看接口优先级,优先级越大越优先,被选DR,优先级第二,被选BDR.
2.如果优先级一样,选route-id,越大优先.
3.如果路由器没有设置route-id,那么选接口的ip地址,越大越优先。

邻居和邻接:
1.在OSPF中路由器与路由器之间有两种关系分别是邻居和邻接。
2.收到hello报文的路由器检查报文中的参数,如果双方一致就形成邻居关系。
3.当双方成功交换DD报文,交换LSA达到LSDB同步后,建立邻接关系。

邻居与邻接详解(了解)
OSPF 邻居关系,分为邻接和邻居两种。LSA 只在邻接关系的邻居之间同步,普通邻居关系之间不同步 LSA 信息。
邻居关系:路由器之间仅通过 Hello 报文,知道目前处于同一区域。
邻接关系:在邻居关系的基础上,DR 和 BDR 之间互相发送 LSA。
我们知道,在运行着多台 OSPF 的路由器中,为了让对方能够发现自己,需要互相发送 HELLO 消息,建立邻居关系。接着发送在路由器之间传送 LSA 碎片。但这就有一个问题,由于每台路由都需要知道完整的拓扑信息,所以所有路由器都需要广播和接受 LSA 的碎片,假设有 n 个路由器之间连接邻接关系,那么将需要建立 n(n-1)/2 个邻接关系。这无疑是对网络资源的很大损耗。
为了解决这个问题就提出了一个 DR 和 BDR 的概念,将路由器的角色分为三种:
DR: 选举成功的指定路由器 - 理解成班长
BDR:作为backup的指定路由器 - 理解成副班长,时刻监听班长状态,班长一死,副班长直接转正。
DROther:未选举成功的其他路由器。
接着在一个多路访问链路上,所有的路由器都需要与 DR 路由器建立邻接关系,同时也要与 BDR 路由器建立邻接关系,DR Other 之间,只建立邻居关系,不会同步数据库信息。换句话说,区域中的普通路由器只和老大和老二建立关系。进而依靠这种方式降低 OSPF 进程对路由器资源占用的。

相关文章:

OSPF(开放路径最短优先)

ospf优先级&#xff1a;内部优先级默认为10&#xff0c;外部优先级默认为150 1.ospf的三张表 &#xff08;1&#xff09;邻居表 <记录邻居状态和关系> &#xff08;2&#xff09;拓扑表 <链路状态数据库> &#xff08;3&#xff09;路由表 <对链路状态数据库进…...

请谈谈 Vue 中的响应式原理,如何实现?

一、Vue2响应式原理&#xff1a;Object.defineProperty的利与弊 实现原理&#xff1a; // 数据劫持核心实现 function defineReactive(obj, key, val) {const dep new Dep(); // 依赖收集容器Object.defineProperty(obj, key, {get() {if (Dep.target) { // 当前Watcher实例…...

亲测可用,IDEA中使用满血版DeepSeek R1!支持深度思考!免费!免配置!

作者&#xff1a;程序员 Hollis 之前介绍过在IDEA中使用DeepSeek的方案&#xff0c;但是很多人表示还是用的不够爽&#xff0c;比如用CodeChat的方案&#xff0c;只支持V3版本&#xff0c;不支持带推理的R1。想要配置R1的话有特别的麻烦。 那么&#xff0c;今天&#xff0c;给…...

jvm中各个参数的理解

MEMORY - MANAGERS 定义 MEMORY - MANAGERS即内存管理器&#xff0c;它是操作系统或软件系统中负责管理计算机内存资源的组件。从本质上来说&#xff0c;它是一种软件机制&#xff0c;旨在协调计算机系统中内存的分配、使用和回收等操作&#xff0c;确保系统能够高效、稳定地…...

【队列】循环队列(Circular Queue)详解

文章目录 一、循环队列简介二、循环队列的判空和判满三、循环队列的实现leetcode 622. 设计循环队列 一、循环队列简介 在实际开发中&#xff0c;队列是一种常用的数据结构&#xff0c;而循环队列&#xff08;Circular Queue&#xff09;则一般是一种基于数组实现的队列&#x…...

Deepseek快速做PPT

背景: DeepSeek大纲生成 → Kimi结构化排版 → 数据审查,细节调整 DeepSeek 拥有深度思考能力,擅长逻辑构建与内容生成,它会根据我们的问题进行思考,其深度思考能力当前测试下来,不愧为国内No.1,而且还会把中间的思考过程展示出来,大多时候会给出很多我们意想不到的思…...

DeepSeek掀起推理服务器新风暴,AI应用迎来变革转折点?

AI 浪潮下&#xff0c;推理服务器崭露头角 在科技飞速发展的当下&#xff0c;AI 是耀眼明星&#xff0c;席卷各行业&#xff0c;深刻改变生活与工作模式&#xff0c;从语音助手到医疗诊断、金融风险预测&#xff0c;AI 无处不在。其发展分数据收集整理、模型训练、推理应用三个…...

离线部署大模型:ollama+deepseek+open-webui

ollama 是一个开源的本地大语言模型运行框架&#xff0c;它提供了非常简单便捷的使用形式&#xff0c;让用户可以十分方便的在本地机器上部署和运行大型语言模型&#xff0c;从而实现免费离线的方式使用 LLM 能力&#xff0c;并确保私有数据的隐私和安全性。 1 ollama 安装 o…...

深入解析浏览器渲染全流程:从URL输入到页面渲染的底层原理与性能优化(附实战代码)

本文以https://example.com为例&#xff0c;逐层剖析浏览器从输入URL到页面渲染的完整链路&#xff0c;涵盖DNS解析、TCP/TLS握手、HTTP请求、DOM/CSSOM构建等核心阶段&#xff0c;结合代码示例与性能调优技巧&#xff0c;助你掌握浏览器底层运行机制。 一、导航阶段&#xff1…...

现代游戏UI架构深度解析——以UIController为核心的模块化界面管理系统

一、架构全景与设计哲学 本文将以重构后的UIController为核心&#xff0c;深入探讨Unity引擎下的高效UI管理方案。该体系采用"分层-分治"设计理念&#xff0c;通过界面生命周期管理、动态适配策略、资源优化机制三个维度的协同工作&#xff0c;构建了适应复杂交互需…...

Vue 项目中逐步引入 TypeScript 的类型检查

在现有的 Vue 项目中逐步引入 TypeScript 的类型检查 本文源于一道面试题&#xff1a;注&#xff1a;两种问法一个意思哈&#xff01;&#xff01; 问题一&#xff1a;“ 老项目Js写的&#xff0c;如何轻量方式享受 ts 类型&#xff1f;” 问题二&#xff1a;“如何 在现有的 …...

Git企业开发

Git&#xff08;版本控制器&#xff09; 在我们对于文档进行操作的时候&#xff0c;很多时候可能会出现多个文档&#xff0c;对这些文档进行多个版本的保存和记录就变成必要的。通俗的讲&#xff0c;就是记录每次的修改和记录版本迭代的管理系统。目前最主流的版本控制器就是G…...

DeepSeek预测25考研分数线

25考研分数马上要出了。 目前&#xff0c;多所大学已经陆续给出了分数查分时间&#xff0c;综合往年情况来看&#xff0c;每年的查分时间一般集中在2月底。 等待出成绩的日子&#xff0c;学子们的心情是万分焦急&#xff0c;小编用最近爆火的“活人感”十足的DeepSeek帮大家预…...

备战蓝桥杯 -牛客

习题-[NOIP2006]明明的随机数 1046-习题-[NOIP2006]明明的随机数_2021秋季算法入门班第一章习题&#xff1a;模拟、枚举、贪心 思路&#xff1a;这道题用stl的set&#xff0c;今天写这道题复习了一下set的用法&#xff1a; s.find(a) s.end()的意思是判断元素a是否存在于集…...

基于springboot校园健康系统的设计与实现(源码+文档)

大家好我是风歌&#xff0c;今天要和大家聊的是一款基于springboot的园健康系统的设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 基于springboot校园健康系统的设计与实现的主要使用者管理员具有最高的权限&#xff0c;通…...

出现 [ app.json 文件内容错误] app.json: 在项目根目录未找到 app.json (env: Windows,mp 解决方法

目录 1. 问题所示2. 原理分析3. 解决方法1. 问题所示 hbuilder X 执行代码的时候出现如下所示 [ app.json 文件内容错误] app.json: 在项目根目录未找到 app.json (env: Windows,mp,1.06.2412050; lib:...

设计模式教程:责任链模式(Chain of Responsibility Pattern)

责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种常用的设计模式&#xff0c;它属于行为型模式&#xff0c;主要解决的是多个对象处理一个请求时&#xff0c;如何解耦请求的发送者和接收者&#xff0c;以及如何将请求的处理职责分配给不同的对象。 1…...

【YOLOv8】损失函数

学习视频&#xff1a; yolov8 | 损失函数 之 5、类别损失_哔哩哔哩_bilibili yolov8 | 损失函数 之 6、定位损失 CIoU DFL_哔哩哔哩_bilibili 2.13、yolov8损失函数_哔哩哔哩_bilibili YOLOv8 的损失函数由类别损失和定位损失构成 类别损失&#xff1a;BCE Loss 定位损失…...

ollama修改监听ip: 0.0.0.0

确认Ollama绑定IP地址 默认情况下&#xff0c;Ollama可能仅监听本地回环地址&#xff08;127.0.0.1&#xff09;。要允许外部访问&#xff0c;需将其配置为监听所有IP&#xff08;0.0.0.0&#xff09;或指定IP&#xff08;如10…19&#xff09;。 修改启动命令&#xff08;推荐…...

【Linux】【网络】Libevent 内部实现简略版

【Linux】【网络】Libevent 内部实现简略版 1 event_base结构–>相当于Reactor 在使用libevent之前&#xff0c;就必须先创建这个结构。 以epoll为例&#xff1a; 1.1evbase void* evbase-->epollop结构体&#xff08;以epoll为例&#xff09; libevent通过一个void…...

计算机网络抄手 运输层

一、运输层协议概述 1. 进程之间的通信 从通信和信息处理的角度看&#xff0c;运输层向它上面的应用层提供通信服务&#xff0c;它属于面向通信部分的最高层&#xff0c;同时也是用户功能中的最低层。当网络边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时&…...

MATLAB图像处理:图像分割方法

图像分割将图像划分为具有特定意义的子区域&#xff0c;是目标检测、医学影像分析、自动驾驶等领域的核心预处理步骤。本文讲解阈值分割、边缘检测、区域生长、聚类分割、基于图的方法等经典与前沿技术&#xff0c;提供MATLAB代码实现。 目录 1. 图像分割基础 2. 经典分割方…...

【机器学习】线性回归 多元线性回归

多元线性回归 V1.1多元线性回归一元线性回归与多元线性回归多元线性回归模型的误差衡量多元线性回归的最优解多元线性回归的解析解&#xff08;标准数学解法&#xff09;多元线性回归的解析解公式分析 多元线性回归的搜索解法 V1.1 加入链接会影响文章推荐权重&#xff0c;阅读…...

【VSCode】MicroPython环境配置

【VSCode】MicroPython环境配置 RT-Thread MicroPython 插件安装MicroPython 库文件配置结束语 RT-Thread MicroPython 插件安装 在 VSCode 拓展中搜索 “RT-Thread MicroPython” 并安装&#xff0c;详细配置步骤&#xff08;修改 VSCode 默认终端、MicroPython 代码补全&…...

【python】网页批量转PDF

安装wkhtmltopdf 网站&#xff1a;wkhtmltopdf wkhtmltopdf http://www.baidu.com/ D:website1.pdf 安装pdfkit库 pip install pdfkit 批量转换代码 import os import pdfkit path_wkthmltopdf rE:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe config pdfkit.configu…...

基于Flask的租房信息可视化系统的设计与实现

【Flask】基于Flask的租房信息可视化系统的设计与实现&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 随着互联网的快速发展&#xff0c;租房市场日益繁荣&#xff0c;信息量急剧增加&#xff…...

Scrapy安装,创建Scrapy项目,启动Scrapy爬虫

Scrapy安装&#xff0c;创建Scrapy项目&#xff0c;启动Scrapy爬虫 1. 安装 Python2. 安装 Scrapy3. 验证安装4. 创建 Scrapy 项目5. 启动爬虫5.1 示例 总结 Scrapy 的安装方式比较简单&#xff0c;下面是基于 Python 环境的安装流程&#xff1a; 1. 安装 Python 首先&#x…...

C++项目:高并发内存池_上

目录 1. 项目介绍 2. 内存池概念 2.1 池化技术 2.2 内存池和内存碎片 2.3 细看malloc 3. 定长内存池的实现 ObjectPool.hpp 4. 高并发内存池框架 5. thread cache测试 5.1 thread cache框架 5.2 ConcurrentAlloc.hpp 6. central cache测试 6.1 central cache框架 …...

人工智能驱动的自动驾驶:技术解析与发展趋势

&#x1f30d; 人工智能&#xff08;AI&#xff09;正在彻底变革自动驾驶技术。 从感知到决策&#xff0c;从定位到控制&#xff0c;AI 的发展让汽车越来越接近真正的无人驾驶。本文将详细解析 AI 在自动驾驶中的核心应用&#xff0c;深入探讨各个关键技术&#xff0c;并展望未…...

手机控制电脑远程关机

远程看看软件兼容iOS和Android设备&#xff0c;该软件除了能通过电脑远程关闭另一台电脑外&#xff0c;您还可以通过它在手机上远程关闭公司的电脑。您可以按照以下步骤进行操作以实现电脑远程关机&#xff1a; 步骤1.在手机应用商店搜索“远程看看”进行软件安装&#xff0c;…...