IP-----动态路由OSPF

embedded/2025/2/28 17:16:09/

这只是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.ppmy.cn/embedded/168839.html

相关文章

【02】Cocos游戏开发引擎从0开发一款游戏-cocos项目目录结构熟悉-调试运行项目-最重要的assets资源文件认识-场景sense了解-优雅草卓伊凡

【02】Cocos游戏开发引擎从0开发一款游戏-cocos项目目录结构熟悉-调试运行项目-最重要的assets资源文件认识-场景sense了解-优雅草卓伊凡 开发背景 接下来我们直接打开我们的项目开始进一步操作&#xff0c; 实战开发 导入项目 我把得到的项目解压到本地&#xff0c;我们开…

高效与高并发API开发:使用FastAPI与Redis实现请求限制与速率控制

高效与高并发API开发&#xff1a;使用FastAPI与Redis实现请求限制与速率控制 &#x1f4da; 目录 API速率限制的基本概念Redis实现分布式速率限制防止DDoS攻击的常见策略基于IP或用户身份的访问频率控制 1. API速率限制的基本概念 API速率限制&#xff08;Rate Limiting&…

C#上位机--二级运算符

序言 在 C# 编程领域&#xff0c;尤其是针对上位机开发时&#xff0c;二元运算符是构建复杂逻辑和高效代码的基础工具之一。它们通过对两个操作数进行运算&#xff0c;为开发者提供了丰富的数据处理手段。接下来&#xff0c;我们将深入探讨 C# 上位机中的二元运算符&#xff0…

MySQL 性能优化

一、慢 SQL 定位与分析 生产环境的数据库通常承载着高并发、大数据量的业务请求&#xff0c;因此在定位慢 SQL 时需要特别注意对系统性能的影响&#xff0c;避免因监控和分析操作导致数据库性能进一步下降。 1.1 生产环境 1.1.1 慢查询日志&#xff08;Slow Query Log&#…

Linux中子线程会继承父线程对相关变量的可见性

在 Linux 的 POSIX 线程模型中,当父线程修改全局变量后创建子线程,子线程一定会看到修改后的最新值。这是由线程的内存共享机制和线程创建时序保证的,具体原理如下: 关键机制解析 内存共享本质: 所有线程共享相同的全局数据段修改操作直接作用于物理内存,无副本存在cint …

【原创工具】同文件夹PDF文件合并 By怜渠客

【原创工具】同文件夹PDF文件合并 By怜渠客 原贴&#xff1a;可批量合并多个文件夹内的pdf工具 - 吾爱破解 - 52pojie.cn 他这个存在一些问题&#xff0c;并非是软件内自主实现的PDF合并&#xff0c;而是调用的pdftk这一工具&#xff0c;但楼主并没有提供pdftk&#xff0c;而…

Visual Studio C++中MT、MTd、MD、MDd都是什么

在 Visual Studio 的 C/C 运行时库配置中&#xff0c;MT、MTd、MD、MDd 是控制程序如何链接 C/C 标准库和运行时库的关键选项。它们的区别如下&#xff1a; 1. 基本分类 选项含义MT多线程静态链接 Release 版运行时库 (Multithreaded, Static Link)MTd多线程静态链接 Debug 版…

将宇宙不同温度下的能量表现形式 类比为量子计算机的波函数解码过程

以下是基于您提出的核心观点&#xff08;将宇宙不同温度下的能量表现形式类比为量子计算机的波函数解码过程&#xff09;撰写的论文框架设计&#xff0c;包含创新性理论与跨学科研究方法&#xff1a; --- **标题** 《量子信息视角下的宇宙热力学&#xff1a;从普朗克温度到…