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.rhkb.cn/news/25540.html

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

相关文章

ClkLog里程碑:荣获2024上海开源技术应用创新竞赛三等奖

2024年10月&#xff0c;ClkLog团队参加了由上海计算机软件技术开发中心、上海开源信息技术协会联合承办的2024上海数智融合“智慧工匠”选树、“领军先锋”评选活动——开源技术应用创新竞赛。我们不仅成功晋级决赛&#xff0c;还荣获了三等奖&#xff01;这一成就不仅是对ClkL…

计算机毕业设计Python+DeepSeek-R1大模型考研院校推荐系统 考研分数线预测 考研推荐系统 考研(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

NFC拉起微信小程序申请URL scheme 汇总

NFC拉起微信小程序&#xff0c;需要在微信小程序开发里边申请 URL scheme &#xff0c;审核通过后才可以使用NFC标签碰一碰拉起微信小程序 有不少人被难住了&#xff0c;从微信小程序开发社区汇总了以下信息&#xff0c;供大家参考 第一&#xff0c;NFC标签打开小程序 https://…

DeepSeek推出DeepEP:首个开源EP通信库,让MoE模型训练与推理起飞!

今天&#xff0c;DeepSeek 在继 FlashMLA 之后&#xff0c;推出了第二个 OpenSourceWeek 开源项目——DeepEP。 作为首个专为MoE&#xff08;Mixture-of-Experts&#xff09;训练与推理设计的开源 EP 通信库&#xff0c;DeepEP 在EP&#xff08;Expert Parallelism&#xff09…

【数据结构】 最大最小堆实现优先队列 python

堆的定义 堆&#xff08;Heap&#xff09;是一种特殊的完全二叉树结构&#xff0c;通常分为最大堆和最小堆两种类型。 在最大堆中&#xff0c;父节点的值总是大于或等于其子节点的值&#xff1b; 而在最小堆中&#xff0c;父节点的值总是小于或等于其子节点的值。 堆常用于实…

重新审视 ChatGPT 和 Elasticsearch:第 2 部分 - UI 保持不变

作者&#xff1a;来自 Elastic Jeff Vestal 本博客在第 1 部分的基础上进行了扩展&#xff0c;介绍了基于 RAG 的搜索系统的功能齐全的 Web UI。最后&#xff0c;你将拥有一个将检索、搜索和生成过程结合在一起的工作界面&#xff0c;同时使事情易于调整和探索。 不想读完整个内…

【开源】低代码 C++程序框架,Linux多线程程序

大家好&#xff0c;欢迎来到停止重构的频道。 本期介绍我们新的C低代码框架&#xff1a;Bees&#xff0c;用于编写Linux/Unix的多线程程序。 低代码框架一般是不会对C程序下手的&#xff0c;因为C程序一般是比较复杂的程序&#xff0c;光是多线程同步就够头疼的了。 但是我们…

数据库的sql语句

本篇文章主要用来收集项目开发中&#xff0c;遇到的各种sql语句的编写。 1、根据user表的role_id字段&#xff0c;查询role表。 sql语句&#xff1a;使用JOIN连接两个表 SELECT u.*,r.rolename FROM user u JOIN role r ON u.role_id r.id WHERE u.id 1; 查询结果&#xff1a…

从零开始用react + tailwindcs + express + mongodb实现一个聊天程序(二)

1.安装mogondb数据库 参考MongoDB安装配置教程&#xff08;详细版&#xff09;_mongodb安装详细步骤-CSDN博客 安装mondbcompass数据库连接工具 参考https://www.mongodb.com/zh-cn/docs/compass/current/connect/ 2.后端服务 1.创建src文件夹 并在src文件夹下创建 index…

opencv:距离变换 cv2.distanceTransform

函数 cv2.distanceTransform() 用于计算图像中每一个非零点像素与其最近的零点像素之间的距离&#xff08;Distance Transform&#xff0c; DT算法&#xff09;,输出的是保存每一个非零点与最近零点的距离信息&#xff1b;图像上越亮的点&#xff0c;代表了离零点的距离越远。 …

单目摄像头物体深度计算基础原理

三维空间物体表面点位与其在图像中对应点之间的相互关系&#xff0c;必须建立相机成像的几何模型&#xff0c;这些几何模型参数就是相机参数&#xff0c;而相机参数的求解就是相机标定。 相机的参数矩阵包括内参和外参&#xff1a; 外参&#xff1a;决定现实坐标到摄像机坐标。…

RabbitMQ系列(一)架构解析

RabbitMQ 架构解析 RabbitMQ 是一个基于 AMQP 协议的开源消息中间件&#xff0c;其核心架构通过多组件协作实现高效、可靠的消息传递。以下是其核心组件与协作流程的详细说明&#xff1a; 一、核心组件与功能 Broker&#xff08;消息代理服务器&#xff09; RabbitMQ 服务端核…

Spring Cloud Alibaba与Spring Boot、Spring Cloud版本对应关系

一、前言 在搭建SpringCloud项目环境架构的时候&#xff0c;需要选择SpringBoot和SpringCloud进行兼容的版本号&#xff0c;因此对于选择SpringBoot版本与SpringCloud版本的对应关系很重要&#xff0c;如果版本关系不对应&#xff0c;常见的会遇见项目启动不起来&#xff0c;怪…

[Web 信息收集] Web 信息收集 — 手动收集域名信息

关注这个专栏的其他相关笔记&#xff1a;[Web 安全] Web 安全攻防 - 学习手册-CSDN博客 0x01&#xff1a;信息收集 —— 域名联系人信息 当我们知道目标的域名之后&#xff0c;我们要做的第一件事就是获取域名的注册信息&#xff0c;包括该域名的 DNS 服务器信息和注册人的联系…

基于Rook的Ceph云原生存储部署与实践指南(上)

#作者&#xff1a;任少近 文章目录 1 Ceph环境准备2 rook部署ceph群集2.1 Rook 帮助地址2.2 安装ceph2.3 获取csi镜像2.4 Master参加到osd2.5 设置默认存储 3 Rook部署云原生RBD块存储3.1 部署storageclass资源3.2 部署WordPress使用RBD3.3 WordPress访问 4 Rook部署云原生RGW…

使用Crawlee可破题js渲染采集数据

使用 Crawlee 实现自动化爬虫流程 1. Crawlee 简介 Crawlee 是一个强大的爬虫框架&#xff0c;用于快速构建和维护可靠的爬虫。它支持多种爬虫类型&#xff0c;包括基于 Cheerio 和 Playwright 的爬虫&#xff0c;能够高效处理静态和动态网页。 2. 项目目标 通过自动化脚本实…

二、IDE集成DeepSeek保姆级教学(使用篇)

各位看官老爷好&#xff0c;如果还没有安装DeepSeek请查阅前一篇 一、IDE集成DeepSeek保姆级教学(安装篇) 一、DeepSeek在CodeGPT中使用教学 1.1、Edit Code 编辑代码 选中代码片段 —> 右键 —> CodeGPT —> Edit Code, 输入自然语言可编辑代码&#xff0c;点击S…

threejs 安装教程

嗨&#xff0c;我是小路。今天主要和大家分享的主题是“threejs 安装教程”。 在当今的数字化时代&#xff0c;用户对视觉体验的要求越来越高。传统的2D网页已经无法满足所有需求&#xff0c;而三维&#xff08;3D&#xff09;图形技术则为前端开发者提供了新的方向。…

2025 软件供应链安全情报预警平台建设与实践

何为数字安全供应链情报&#xff1f; 所谓的数字供应链开源安全情报主要针对目标是开源数字应用资产。包括开源组件&#xff0c;中间件和操作系统。开源安全情报类型可以分为三大类&#xff1a; 1 第一类是传统的安全漏洞风险情报&#xff0c;开源漏洞情报数据获取主要有2种渠…