IP-----动态路由OSPF

这只是IP的其中一块内容,IP还有更多内容可以查看IP专栏,前一章内容为GRE和MGRE

,可通过以下路径查看IP-------GRE和MGRE-CSDN博客,欢迎指正

注意!!!本部分内容较多所以分成了两部分在下一章

5.动态路由OSPF

1.OSPF的优势

1.OSPF

开放式最短路径优先协议

2.选路

因为OSPF是链路状态型协议,他是收集拓扑信息之后将图形结构通过SPF算法转换成为树形结构,这样的好处是计算出来的路径不会有环路,并且,其是以带宽作为开销的评判标准。所以OSPF此项优于RIP

3.收敛

OSPF的计时器时间也短于RIP,所以收敛速度优于RIP

4.占用资源

从单个的数据包角度来说,因为RIP传递的是路由信息,所以,其资源占用并不大,而OSPF需要传递拓扑信息,则单个数据包资源占用大于RIP。但是,OSPF并没有像RIP一样高频的周期更新,并且,设计者设计了很多针对资源占用的优化机制,所以从整体的角度看,OSPF资源占用略优于RIP。

2.RIPV2,OSPFV2对比

1.版本

RIP --- RIPV1,RIPV2 ---- IP RIPNG ---- IPV6

OSPF ---- OSPFV1(实验室阶段夭折),OSPFV2 ---- IPV4 OSPFV3 ---- IPV6

2.相同点(缺)

1,OSPFV2和RIPV2一样,都是无类别的路由协议,都支持VLSM和CIDR

2,OSPFV2和RIPV2一样,都是使用组播发送信息。 ---- 224.0.0.5和224.0.0.6 -------两个组播地址

224.0.0.5----以组播224.0.0.5的形式发送hello包------OSPF进行监听----所以路由设备都会接收hello包;224.0.0.6------监听DR和BDR设备

的组播地址--------只有建立邻接关系的路由设备才会接收。

3,OSPFV2和RIPV2一样,都支持等开销负载均衡

3.不同点

RIP协议只能应用在中小型网络环境中,而OSPF可以应用在中大型网络环境中

4.区域

区域划分: OSPF为了适应中大型网络的环境,需要进行结构化部署

如果只存在一个区域,这样子的OSPF网络我们称为单区域OSPF网络。

如果存在多个区域,这样的OSPF网络我们称为多区域OSPF网络。

区域划分的目的:区域内部传递拓扑信息,区域之间传递路由信息 --- 链路状态型协议的距离矢量特征。

区域边界设备 : ABR ----其中一个必须宣告在区域0, 同时属于多个区域,一个接口属于一个区域。

区域之间可以存在多个ABR设备,一个ABR设备也可以属于多个区域

区域划分的要求 :1,区域之间必须存在ABR设备。2,区域划分必须按照星型拓扑结构划分。 ---- 中间的区域称为骨干区域,其余非骨干,area 0(骨干区域的编号)==area 0.0.0.0 area 255 =area 0.0.0.255

区域需要围绕中间骨干区域进行划分,如果没有围绕中间区域,则这个区域便没有连接上处于隔离状态。

区域ID:为了方便对区域进行管理,我们给每一个区域设计了一个区域ID来进行标识 --- 由32位二进制构成 ---- 该参数可以使用两种格式

来进行表示,十进制格式和点分十进制格式。 --- 骨干区域的区域ID被定义为0。

3.OSPF的数据包类型

helllo包-------- 用周期性的发现,建立以及保活邻居关系(确认该信息没有失效)

hello时间 --- 10S

Dead time --- 4倍的hello时间 --- 40s-------死亡时间-------即判定是否是失效信息

RID(路由IP) --- 区分和标识OSPF网络中不同的路由器

1,全网唯一;2,格式统一 --- 采用IP地址的格式 --- 32位二进制构成,以点分十进制来进行表示

1,手工配置:只需要满足以上两个条件即可

2,自动获取:首先,如果设备上配置有环回接口,则选择其中最大的IP地址作为自己的RID。如果没有环回接口,则在自己

的物理接口中选择最大的IP地址作为自己的RID。最大的IP地址是将IP从前往后进行比较,选择大的IP-----192.168.1.1和 192.168.2.1选择2.1的IP

DBD包--------数据库描述报文 --- 链路状态数据库收集LSA(链路状态通告) --- 数据库描述报文=链路状态数据库中LSA的目录-----“菜单”

隐性确认-----

LSR包----------链路状态请求报文 --- 基于DBD包,请求未知的LSA信息---------“点菜”

LSU包----------链路状态更新报文 --- 真正携带LSA的数据包------------“上菜”

LSACK包-------链路状态确认报文 --- 确认包----------“确认菜是否上对”

显性确认-------

OSPF存在每30MIN一次的周期更新

4.OSPF的状态机

Down状态 --- 发送hello包之后,然后就会进入到下一个状态------Init(初始化)状态

Init(初始化)状态 --- 在收到hello包中存在自己本地的RID则,进入到下一个状态-----Two-way(双向通信)状态

Two-way(双向通信)状态 --- 标志着邻居关系的建立。(条件匹配----筛选是否符合)失败,则停留在邻居状态,仅使用Hello包进行周期保活。匹配成功,则进入到下一个状态------Exstart(预启动)状态
 

联想截图_20250227154340

Exstart(预启动)状态 --- 通过使用未携带数据的DBD包来进行主从关系的选举,比较RID,RID大的为主,为主的可以优先

获取LSA。主从关系选举目的是为了错开LSA的交换过程,减少同一时间的资源占用。

Exchange(启动进行交换)状态 --- 通过使用携带数据的DBD包来交换LSDB的摘要信息

DBD包------数据库描述报文 --- 链路状态数据库收集LSA(链路状态通告) --- 数据库描述报文=链路状态数据库中LSA的目录

联想截图_20250227154347

Loading(加载)状态 --- 通过使用LSR,LSU,LSACK包来获取未知的LSA信息

LSR包----------链路状态请求报文 --- 基于DBD包,请求未知的LSA信息---------“点菜”

LSU包----------链路状态更新报文 --- 真正携带LSA的数据包------------“上菜”

LSACK包-------链路状态确认报文 --- 确认包----------“确认菜是否上对”

FULL(转发)状态 --- 标志着邻接关系的建立。只有邻接状态,才会交换LSA信息,而邻居状态仅收发hello包进行周期的保活。

5.OSPF的工作过程

1.顺利的过程

1.启动配置完成后,OSPF向本地所有运行协议的接口以组播224.0.0.5的形式发送hello包。hello包中需要携带本地已知邻居的RID,之后,建立邻居关系。我们会将所有的邻居关系收集到本地的一张表中 --- 邻居表。

2.邻居表建立完成之后进行条件匹配(OSPF拓展),失败则停留在邻居关系,仅使用hello包保活。成功则开始建立邻接关系。

3.首先使用未携带数据的DBD包进行主从关系选举。之后,使用携带数据的DBD包共享数据库目录信息,使用LSR/LSU/LSACK来获取未知的LSA信息,完成数据库的建立 --- LSDB --- 数据库表(主路由器会优先进入下一个状态,会优先发送摘要进行比对,比对之后,会请求自己本地没有的lsa信息。对端会发送真正携带lsa信息的LSU包,会利用LSACK进行确认。本地的链路状态数据库建立完成,生成本地链路数据库表。)。

4.最后,基于本地的链路状态数据库生成有向图,使用SPF算法计算最短路径树,计算出到达未知网段的路由信息,加载路由表中。

5.收敛完成后,依然每10s使用hello包进行保活。每30min进行一次周期更新。

2.不顺利过程

结构突变

1,突然新增一个网段 --- 触发更新,第一时间将变更信息通过LSU包发布出去,需要ACK确认

2,突然断开一个网段 --- 触发更新,第一时间将变更信息通过LSU包发布出去,需要ACK确认

3,无法通信 ---- dead time

6.OSPF基本配置命令

1.启动OSPF进程

启动前路由网关IP该配置还是要配置,不能省。

[r1】ospf 1 router-id 1.1.1.1               // 手工配置RID,RID没有过多要求,随便配置
[r1-ospf-1]
2.创建区域
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]
3.宣告

宣告的作用:1,激活接口;2,发布路由

中间的是需要宣告的IP网段

反掩码(最后的是掩码) --- 由连续的0和连续1组成。0对应为不可变位,1对应可变位-------对宣告网段进行精准变大变小

0.0.0.0代表精准宣告,不可变,可精准宣告一个接口IP(RIP的宣告是只能是一个网段)

[r1-ospf-1-area-0.0.0.0]network 1.1.1.0   0.0.0.255 --- 0对应为不可变位,1对应可变位
[r1-ospf-1-area-0.0.0.0]network 12.0.0.1   0.0.0.0-----0.0.0.0代表精准宣告,不可变,可精准宣告一个接口IP
4.查看邻居表
[r1]display ospf peer
5.查看邻居表简表
[r2]display ospf peer brief
6.查看数据库表

存储着LSA数据的数据库=地图

[r1]display ospf lsdb
7. 展开一条LSA

某条LSA信息相当于地图里的某一条路径的信息

[r1]display ospf lsdb router 2.2.2.2  //router 2.2.2.2这两个数据分别数据库表中的前两竖的信息,用来锁定是哪一条LSA信息
8.查看路由表
[r2]display  ip routing-table 
9.优先级

(优先级)pre: OSPF在华为体系中默认的优先级为10--------------静态路由默认优先级为60------------优先级数值越大优先级越小

Pre --- 优先级 --- 如果到达同一个目标网段存在多条路由时,则将比较他们的优先级,仅加载优先级最大的到路由表中 --- 优先级数值越大,优先级越低 --- 0 - 255 ---- 静态路由的默认优先级:60

10.更改带宽

带宽作为开销的评判标准

COST = 参考带宽 / 真实带宽 ---- 华为体系内,参考带宽的默认值为100Mbps

有两条路线,上面的路线3跳但是是1000M速度,下面两跳但是是100M,如果计算出来是一个小于1的数(上面是1000Mbps,则计算的值为100/1000=0.1<1),则直接为1,如果是一个大于1的小数,则直接取整数部分,此时明明上面路线更快,但是计算出来上面路线值却为3,下面路线却为2,最终选择了下面没有这么快的类路线;所以为了可以更合理的选取,就可以通过更改默认值实现。

[r1-ospf-1]bandwidth-reference 1000				//(1000不是固定值,而是更改的默认值)

更改后上面路线的值为3,下面的为20,最终实现了选择最有效的路线

7.OSPF的条件匹配

1.条件匹配

邻居表建立完成之后进行条件匹配,失败则停留在邻居关系,仅使用hello包保活。成功则开始建立邻接关系。

在一个广播域中,若所有的设备均建立邻接关系,将会出现大量的重复更新,所以需要进行DR/BDR选举,所有DROther之间仅维持邻居

关系即可。(为了防止设备之间过多邻接而导致造成信息过多重复,浪费资源的结果)

2.指定路由器

DR(接口)--------在一个广播域内,DR与其余所以设备建立邻接关系。在这一个广播域内其他设备之间不再建立邻接关系。

3.备份指定路由器

BDR(备份;也是接口)-------在一个广播域内,DR与其余所以设备建立邻接关系。作为DR的备份,在DR不工作错误时,进行替代。

这个图中r3是DR设备

4.DR,BDR的选举

1.先比较优先级,选择优先级大的作为DR设备。选择完DR之后,剩余设备继续比较,选择优先级最大的作为BDR设备,优先级默认情况

下都为1。如果将一个接口的优先级改为0,则代表该接口放弃DR和BDR选举

2.如果优先级相同,则比较RID,RID大的设备所对应的接口为DR。选择完DR之后,剩余设备继续比较,RID大的设备所对应的接口BDR

3.DR/BDR的选举是非抢占模式的。即一旦选举成功,则不会因为后来加入设备而重新选举。选举时间为死亡时间。

4.优先级默认情况下都为1。如果将一个接口的优先级改为0,则代表该接口放弃DR和BDR选举

5.然后所有设备重启在40s内重新选举生效,是重启后40s(最大时间,可能1s,2s)内重新进行选举

5.修改优先级

优先级默认情况下都为1。如果将一个接口的优先级改为0,则代表该接口放弃DR和BDR选举

要想没有BDR设备,就需要将所有路由器修改优先级为0;因为将将要成为DR设备更改优先级为更大后,该设备是会成为DR设备,但是依旧不会停止选举BDR设备,因为那些剩余路由器在优先级相同情况下会比较IP大小来选举BDR,只有将区域内所有除DR设备的设备优先级改为0,放弃选举才不会有BDR设备

[r1-GigabitEthernet0/0/0]ospf dr-priority ?INTEGER<0-255> Router priority value            //0-255是优先级范围选取
[r1-GigabitEthernet0/0/0]ospf dr-priority 10
6.重启OSPF进程

然后所有设备重启后最大时间40s内重新选举生效

<r1>reset ospf 1 process
7.是否邻接关系建立
<r4>
Oct 19 2023 22:23:51-08:00 r4 %%01OSPF/4/NBR_CHANGE_E(l)[0]:Neighbor changes eve
nt: neighbor status changed. (ProcessId=256, NeighborAddress=130.1.168.192, Neig
hborEvent=HelloReceived, NeighborPreviousState=Down, NeighborCurrentState=Init) 
​
<r4>
Oct 19 2023 22:23:51-08:00 r4 %%01OSPF/4/NBR_CHANGE_E(l)[1]:Neighbor changes eve
nt: neighbor status changed. (ProcessId=256, NeighborAddress=130.1.168.192, Neig
hborEvent=2WayReceived, NeighborPreviousState=Init, NeighborCurrentState=2Way) 
<r4>
Oct 19 2023 22:23:51-08:00 r4 %%01OSPF/4/NBR_CHANGE_E(l)[2]:Neighbor changes eve
nt: neighbor status changed. (ProcessId=256, NeighborAddress=130.1.168.192, Neig
hborEvent=AdjOk?, NeighborPreviousState=2Way, NeighborCurrentState=ExStart) 
<r4>
Oct 19 2023 22:23:52-08:00 r4 %%01OSPF/4/NBR_CHANGE_E(l)[3]:Neighbor changes eve
nt: neighbor status changed. (ProcessId=256, NeighborAddress=130.1.168.192, Neig
hborEvent=NegotiationDone, NeighborPreviousState=ExStart, NeighborCurrentState=E
xchange) 
<r4>
Oct 19 2023 22:23:52-08:00 r4 %%01OSPF/4/NBR_CHANGE_E(l)[4]:Neighbor changes eve
nt: neighbor status changed. (ProcessId=256, NeighborAddress=130.1.168.192, Neig
hborEvent=ExchangeDone, NeighborPreviousState=Exchange, NeighborCurrentState=Loa
ding) 
<r4>
Oct 19 2023 22:23:52-08:00 r4 %%01OSPF/4/NBR_CHANGE_E(l)[5]:Neighbor changes eve
nt: neighbor status changed. (ProcessId=256, NeighborAddress=130.1.168.192, Neig
hborEvent=LoadingDone, NeighborPreviousState=Loading, NeighborCurrentState=Full)

NeighborCurrentState=Full--------建立成功-----建立成功会出现上面一段话

一般建立成功都会出现上面一段话

这只是IP的其中一块内容,IP还有更多内容可以查看IP专栏,H后一章内容为OSPF续章,可通过以下路径查看IP-----动态路由OSPF(2)-CSDN博客,欢迎指正

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

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

相关文章

数字内容体验未来趋势:交互升级与用户深耕

智能技术重塑内容交互 随着数字内容体验进入深度智能化阶段&#xff0c;AI驱动的内容生成与智能推荐算法正在重构用户与信息的交互范式。基于自然语言处理技术的内容创作工具&#xff0c;已实现从文本自动生成到多模态内容适配的跨越&#xff0c;企业能够以分钟级速度产出符合…

2025年2月21日优雅草内测分发站全新升级-测试运营-优雅草内测分发站新用户提供免费100下载点-2月28日正式运营并且提供私有化部署版本

2025年2月21日优雅草内测分发站全新升级-测试运营-优雅草内测分发站新用户提供免费100下载点-2月28日正式运营并且提供私有化部署版本 说明 优雅草内测分发站新用户提供免费100下载点&#xff0c;优雅草分运营站和demo测试站 运营站&#xff1a;www.youyacao.cn 提供免费100…

动态内存池设计与环形缓冲区实现详解

一、动态内存池设计 在嵌入式系统中&#xff0c;频繁使用 malloc 和 free 会导致内存碎片和性能问题。动态内存池通过预分配固定大小的内存块&#xff0c;并统一管理分配与释放&#xff0c;显著提高内存使用效率和实时性。 1. 核心设计思路 预分配内存&#xff1a;将内存划分…

015--基于STM32F103ZET6的智能风扇设计

1.实物视频演示 智能风扇演示视频 2.程序代码讲解 STM32F103ZET6智能风扇_哔哩哔哩_bilibili 3源代码获取 https://download.csdn.net/download/weixin_41011452/90440545

【洛谷贪心算法】P1106删数问题

这道题可以使用贪心算法来解决&#xff0c;核心思路是尽量让高位的数字尽可能小。当我们逐步删除数字时&#xff0c;会优先删除高位中相对较大的数字。具体做法是从左到右遍历数字序列&#xff0c;当发现当前数字比它后面的数字大时&#xff0c;就删除当前数字&#xff0c;直到…

开源PDF解析工具olmOCR

olmOCR 是由 Allen Institute for Artificial Intelligence (AI2) 的 AllenNLP 团队开发的一款开源工具&#xff0c;旨在将PDF文件和其他文档高效地转换为纯文本&#xff0c;同时保留自然的阅读顺序。它支持表格、公式、手写内容等。 olmOCR 经过学术论文、技术文档和其他文档…

基因型—环境两向表数据分析——品种生态区划分

参考资料&#xff1a;农作物品种试验数据管理与分析 用于品种生态区划分的GGE双标图有两种功能图&#xff1a;试点向量功能图和“谁赢在哪里”功能图。双标图的具体模型基于SD定标和h加权和试点中心化的数据。本例中籽粒产量的GGE双标图仅解释了G和GE总变异的53.6%&#xff0c;…

HTTP~文件 MIME 类型

MIME&#xff08;Multipurpose Internet Mail Extensions&#xff09;类型&#xff0c;即多用途互联网邮件扩展类型&#xff0c;是一种标准&#xff0c;用来表示文档、文件或字节流的性质和格式。最初是为了在电子邮件系统中支持非 ASCII 字符文本、二进制文件附件等而设计的&a…

降维攻击!PCA与随机投影优化高维KNN

引言&#xff1a;高维数据的“冰山困境” 假设你正在处理一个电商平台的商品图片分类任务&#xff1a;每张图片被提取为1000维的特征向量&#xff0c;100万条数据的距离计算让KNN模型陷入“维度地狱”——计算耗时长达数小时&#xff0c;且内存占用超过10GB。 破局关键&#…

Rust 是什么

Rust 是什么 Rust 是一种由 Mozilla 开发的系统级编程语言,它于 2010 年首次亮相,在 2015 年发布 1.0 版本,此后迅速发展并受到广泛关注。 内存安全:Rust 最大的亮点之一是它在编译阶段就能够避免常见的内存错误,如空指针引用、数据竞争和内存泄漏等。它通过所有权(Owne…

网络变压器的主要电性参数与测试方法(2)

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;网络变压器的主要电性参数与测试方法&#xff08;2&#xff09;.. 今天我们继续来看看网络变压器的2个主要电性参数与它的测试方法&#xff1a; 1. 线圈间分布电容Cp:线圈间杂散静电容 测试条件:100KHz/0.1…

UniApp 中封装 HTTP 请求与 Token 管理(附Demo)

目录 1. 基本知识2. Demo3. 拓展 1. 基本知识 从实战代码中学习&#xff0c;上述实战代码来源&#xff1a;芋道源码/yudao-mall-uniapp 该代码中&#xff0c;通过自定义 request 函数对 HTTP 请求进行了统一管理&#xff0c;并且结合了 Token 认证机制 请求封装原理&#xff…

初阶数据结构习题【3】(1时间和空间复杂度)——203移除链表元素

1. 题目描述 力扣在线OJ——移除链表元素 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3…

互联网+房产中介+装修设计+物料市场+智能家居一体化平台需求书

一、项目概述 1.1 项目背景 随着互联网技术的飞速发展以及人们生活品质的显著提升&#xff0c;传统房产交易、装修设计、家居购物等领域暴露出诸多问题。信息不对称使得用户难以获取全面准确的信息&#xff0c;在房产交易中可能高价买入或低价卖出&#xff0c;装修时可能遭遇…

15.13 AdaLoRA自适应权重矩阵微调:动态秩调整的智能革命

AdaLoRA自适应权重矩阵微调:动态秩调整的智能革命 一、技术架构解析 #mermaid-svg-u3TfE3YrkeWSjem2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-u3TfE3YrkeWSjem2 .error-icon{fill:#552222;}#mermaid-svg-u3…

P9231 [蓝桥杯 2023 省 A] 平方差

P9231 [蓝桥杯 2023 省 A] 平方差 - 洛谷 题目描述 给定 L,R&#xff0c;问 L≤x≤R 中有多少个数 x 满足存在整数 y,z 使得 xy2−z2。 输入格式 输入一行包含两个整数 L,R&#xff0c;用一个空格分隔。 输出格式 输出一行包含一个整数满足题目给定条件的 x 的数量。 输…

【GenBI优化】提升text2sql准确率:建议使用推理大模型,增加重试

引言 Text-to-SQL&#xff08;文本转 SQL&#xff09;是自然语言处理&#xff08;NLP&#xff09;领域的一项重要任务&#xff0c;旨在将自然语言问题自动转换为可在数据库上执行的 SQL 查询语句。这项技术在智能助手、数据分析工具、商业智能&#xff08;BI&#xff09;平台等…

<el-cascader时只取最后一级数据

在用cascader时只取最后一级数据传给后端 组件的属性emitPath: false就可以做到&#xff0c;取值就是最后一级传给后端。并且后端放回的id 也直接可以做回显 <el-cascaderv-model"Type":options"Options":props"{ value: id, label: label, chil…

`maturin`是什么:matu rus in python

maturin是什么 maturin 是一个用于构建和发布 Rust 编写的 Python 绑定库的工具。它简化了将 Rust 代码集成到 Python 项目中的过程,支持创建不同类型的 Python 包,如纯 Python 包、包含 **Rust (系统编程语言)**扩展模块的包等。以下为你详细介绍 maturin 的相关信息并举例…

流媒体网络协议全解析:从实时传输到自适应流,如何选择最优方案?

一、历史发展与协议提出者 流媒体协议的发展与互联网技术迭代紧密相关,主要分为三个阶段: 早期专有协议(1990s-2000s) RTSP/RTP 提出者:RealNetworks(RTSP初始推动者),后由IETF标准化(RFC 2326)。背景:1996年推出,用于视频监控和点播系统,基于UDP传输媒体流,支持…