OSPF开放式最短路径优先协议

news2025/5/14 20:03:41

目录标题

      • OSPF协议
      • OSPF的数据包---5种
      • OSPF的状态机
      • OSPF的工作过程
      • OSPF的基本配置
      • 关于ospf协议从邻居建立成为邻接的条件
      • ospf的接口网络类型

OSPF协议

是是无类别链路状态型IGP协议;由于其基于拓扑进行更新收敛,故更新量会随着拓扑的变大而呈指数上升;故ospf协议为了能在大、中型网络中运行,需要结构化的部署----合理的区域划分、良好的地址规划。
支持正常等开销负载均衡;
跨层封装协议,协议号是89;
组播更新 224.0.0.5 224.0.0.6 触发更新+周期更新(30min)

周期更新的目的是为了什么?
保活

路由协议工作原理分类如下:

距离矢量链路状态LS
RIPOSPF
EIGRPISIS
距离矢量:邻居间共享路由条目;传闻性协议
链路状态:邻居间传递的是拓扑;本地计算路由
链路状态协议为什么这么干?把自己搞的那么复杂是为了什么?
避免出环
链路状态工作的缺点是什么?
资源耗费大

三个方面判断路由协议好不好:

  1. 收敛速度
  2. 选择路径佳(前提防环)
  3. 占用资源少

OSPF的数据包—5种

在这里插入图片描述
hello包 — 组播收发,用于邻居、邻接关系的发现、建立、周期保活
DBD — 数据库描述包,本地LSDB(链路状态数据库)目录
LSR — 链路状态请求,用于询问对端本地未知的LSA信息
LSU — 链路状态更新,用于共享具体的每一条LSA
LSack — 链路状态确认,确认包
LSA — 链路状态通告,具体的一条一条路由或者拓扑信息,不是一种数据包,所欲的LSA是使用LSU这种包来转发的;

OSPF的数据包是跨层封装与3层报头后方,协议号89
在这里插入图片描述

OSPF的状态机

两台OSPF路由器间不同关系的阶段
Down 一旦接收到对端的hello包进入一个状态;
Init初始化 若接收到的hello包中存在本地的RID,那么进入下一个状态机;
2way双向通讯 邻居关系建立的标志;
条件:点到点网络直接进入下一个状态机;MA网络进行DR/BDR选举,非DR/DBR之间不能进入下一个状态机;
Exstart预启动 使用不携带数据库目录信息的DBD包,进行主从关系的选举,RID数值大为主,优先进入下一个状态机;
exchange准交换 使用携带数据库目录信息的DBD包,进行目录共享,需要ACK确认;
loading加载 接收到其他邻接目录信息后,和本地进行比对,若本地存在未知的LSA信息,将使用LSR询问对端,对端使用LSU来更新这些LSA信息,直到双方数据库一致;LSU需要ACK确认;
full转发 标志着邻接关系已经建立;

OSPF的工作过程

路由器上启动OSPF协议后,直连的邻居间开始组播收发hello包,hello包中将存储本地已知邻居的RID,在双方RID均已知的情况下,建立邻居关系,生成邻居表
邻居关系建立后,邻居间将进行条件匹配,匹配失败将停留为邻居关系,仅hello包存活即可;匹配成功将进行邻接关系的建立;
邻接关系间的路由器,将使用DBD/LSR/LSU/LSack来获取本地未知的所有LSA信息;使得同一区域内所有路由器的数据库完全一致;----数据库表
当本地数据库完成同步后,将数据库—>有向图—>树形结构图—>将本地到达所有未知网段的最短路径加载在本地路由表中;
收敛完成,仅hello包周期保活即可;正常30min,邻接关系再进行一次DBD的对比,若一致及正常;若不一致将马上进行同步;
结构突变:触发更新

  • 断开网段
    直连断开网段的设备,直接使用LSU告知邻接,需确认
  • 新增网段
    直连新增网段的设备,直接使用LSU告知邻接,需确认
  • 无法沟通
    hello time对应的dead time;dead time 到时时,断开邻居关系,去除基于该邻接共享的LSA计算所得路由;

OSPF的基本配置

[r1]ospf 1 router-id 1.1.1.1		启动时,定义进程号,仅具有本地意义;建议配置RID
RID格式为IPV4地址,且需要全网唯一;
优先级:手工配置--->环回接口上去最大值的ip地址---物理接口上最大ip地址的数值
宣告:1、区域划分	2、接口激活协议	3、传递接口信息
[r1-ospf-1]area 0
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0
[r1-ospf-1-area-0.0.0.0]network 12.1.1.0 0.0.0.255

区域划分规则:
1、星型结构—区域0为骨干,大于0为非骨干区域,非骨干区域必须直连骨干区域
2、ABR—区域边界路由器 两个区域间必须依靠ABR连接

启动配置完成后,邻居间使用hello包创建邻居关系,生成邻居表
hello包----组播收发 周期发送—hello time 10s或30s dead time为hello time 4倍;
在这里插入图片描述
邻居间hello包中有一些参数必须完成一致,否则无法间例邻居关系;
hello和dead time、区域ID、认证参数、末梢区域标记;另外在华为的设备中OSPF要求邻居间接口上配置的ip地址、掩码长度必须一致;

[r1]display ospf peer		查看邻居表
[r1]display ospf peer brief		查看邻居关系简表

当邻居关系建立后,邻居间进行条件匹配,匹配失败,将保持邻居关系;匹配成功,将建立邻接关系,邻接关系间将使用DBD/LSR/LSU/LSack来获取本地未知的所有LSA信息,同步生成数据库表—LSDB链路状态数据库

[r1]display ospf lsdb	查看数据库表

数据库表同步完成后,邻居间的互动完成,仅hello包保活;之后本地基于本地的数据库表转换为有向图,在转换为树型结构,最终将本地到达所有未知网段的最短路径加载于本地的路由表中;

<r1>display ip router-table protocol ospf		查看ospf路由

默认ospf协议在华为设备中,优先级为10;度量为cost值;
cost值=开销值=参考宽带/接口宽带 默认参考宽带为100M;
ospf协议将cost值之和最小定义为最佳路径,加载于本地路由表中;
若接口带宽大于参考带宽,cost值为1,将可能导致选路不佳;可以修改默认的参考带宽;

[r1]ospf 1
[r1-ospf-1]bandwidth-reference ?
	INTEGER<1-2147483648>	  The reference bandwidth(Mbits/s)
[r1-ospf-1]bandwidth-reference 1000
修改默认带宽

切记:一旦修改,整个网络所有ospf路由需要一致;

关于ospf的MTU问题:
在ospf协议的DBD包中将携带本地接口的MTU值,若两端一致可以正常建立邻居关系;若不一致将无法建立邻接关系;
默认华为设备不携带MTU;

[r1-ospf-1]int g0/0/1
[r1-GigabitEthernet0/0/1]ospf mtu-enable
两端设备均需开启

关于ospf协议从邻居建立成为邻接的条件

根据网络类型决定
在点到点网络中,所有的邻居关系必然成为邻接关系
在MA网络中从邻居到邻接前将利用一个周期dead time;进行DR/BDR选举;先比较这些参选接口的优先级,默认1,取值范围0-255;越大越好,0表示不参选;
DR优先级最大,BDR次大;选举非抢占,故若希望干涉选举,需要重启ospf进程,或者将非DR/BDR修改为0;

[r2]int g0/0/1
[r2-GigabitEthernet0/0/1]ospf dr-priority 3	修改dr优先级
<r2>reset ospf process
Warning:The OSPF process will be reset.Continue?[Y/N]:y
重启进程

非DR/BDR间为邻居关系;

ospf的接口网络类型

ospf协议在不同的网络类型中工作方式也不同

[r1]display ospf interface GigabitEthernet 0/0/1
网络类型ospf接口网络类型工作方式
LoopBackP2P(LoopBack)无hello 环回使用32位主机
点到点(PPP/HDLC/GRE)P2P 10s hello time 不选DR/BDR
BMA(以太网)Broadcast 10s hello time 选DR/BDR
NBMA(MGRE)P2P
在Tunnel接口上,ospf的默认工作方式为P2P,这种工作方式,只能建立一个邻居,故在MGRE环境中将无法正常工作;
修改接口默认工作方式:
[r1]interface Tunnel0/0/0
[r1-Tunnel0/0/0]ospf network-type ?
	broadcast	Specify OSPF broadcast network
	nbma		Specify OSPF NBMA network
	p2mp		Specify OSPF point-to-multipoint network
	p2p			Specify OSPF point-to-ponit network
切记:一个网段中所有接口的ospf工作方式必须一致;否则将无法建立邻居关系,或因为不同工作方式的hello time一样,错误建邻,无法收敛;

MGRE可以构建不同的拓扑结构:
当MGER环境中,使用OSPF,切所有tunnel接口修改为broadcast工作方式后,必须基于拓扑接口考虑DR位置问题;

1.星型–中心到站点–轴辐状 中心站点为DR,取消BDR
2.全连网状----不需要在关注DR
3.部分网状—基于能够全网段内正常共享LSA来考虑最佳DR位置

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

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

相关文章

处理CSV(python)

处理CSV&#xff08;python&#xff09;简介1. CSV和Python简介2. 文章内容简介一、用csv模块读取和写入CSV文件1. CSV模块2. 示例二、用pandas库读取和写入CSV文件1. pandas2. 示例三、处理CSV文件中的特殊情况1. 特殊情况及处理方法2. 示例简介 1. CSV和Python简介 CSV是一…

动态内存管理--从动态内存分配函数开始和你一起了解

目录前言1.为什么存在动态内存分配2.动态内存函数的介绍2.1malloc函数和free函数2.2calloc函数2.3realloc函数3.常见的动态内存错误3.1对NULL指针的解引用操作3.2对动态开辟空间的越界访问3.3对非动态内存开辟的内存使用free释放3.4使用free释放一块动态内存的一部分3.5对同一块…

【致敬未来的攻城狮计划】— 连续打卡第三天:欲速则不达,今天是对RA2E1 基础知识的补充学习。

系列文章目录 1.连续打卡第一天&#xff1a;提前对CPK_RA2E1是瑞萨RA系列开发板的初体验&#xff0c;了解一下 2.开发环境的选择和调试&#xff08;从零开始&#xff0c;加油&#xff09; 文章目录 目录 系列文章目录 文章目录 前言 一、RA是什么&#xff1f; 二、RA特点…

RHCE——shell脚本练习

一.实验要求 1、判断web服务是否运行&#xff08;1、查看进程的方式判断该程序是否运行&#xff0c;2、通过查看端口的方式判断该程序是否运行&#xff09;&#xff0c;如果没有运行&#xff0c;则启动该服务并配置防火墙规则。 ​2、使用curl命令访问第二题的web服务&#xff…

Kafka的历史版本对应SpringBoot版本

截至目前&#xff08;2023年&#xff09;&#xff0c;Kafka的最新版本是2.9.0&#xff0c;发布于2022年11月30日。Kafka的历史版本可以在Kafka官方网站的下载页面中找到。Kafka从0.8版本开始发布&#xff0c;经历了多个版本的迭代和升级。以下是一些比较重要的Kafka版本及其发布…

Python实现哈里斯鹰优化算法(HHO)优化Catboost回归模型(CatBoostRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 2019年Heidari等人提出哈里斯鹰优化算法(Harris Hawk Optimization, HHO)&#xff0c;该算法有较强的全…

【LeetCode】剑指 Offer 52. 两个链表的第一个公共节点 p253 -- Java Version

题目链接&#xff1a;https://leetcode.cn/problems/liang-ge-lian-biao-de-di-yi-ge-gong-gong-jie-dian-lcof/ 1. 题目介绍&#xff08;52. 两个链表的第一个公共节点&#xff09; 输入两个链表&#xff0c;找出它们的第一个公共节点。 如下面的两个链表&#xff1a; 在节点…

基于微信小程序开发的“校园帮”系统

基于微信小程序开发的“校园帮”系统【毕业论文&#xff0c;源码】 本系统使用了java和mysql结合的结构开发了微信小程序应用&#xff0c;系统中所有和数据库有关系的操作都通过一个通用类来实现&#xff0c;大大提高了代码的耦合性&#xff0c;当数据库类型等信息变化后直接修…

【剑指offer|6.寻找峰值】

0.寻找峰值 关键点: 返回任意一个峰值的下标即可nums[-1]nums[n]负无穷 输入&#xff1a;nums [1,2,3,1] 输出&#xff1a;2 解释&#xff1a;3 是峰值元素&#xff0c;你的函数应该返回其索引 2 1.傻瓜编程(纯属玩乐) class Solution { public:int findPeakElement(vector&l…

普通人在家就能用ChatGPT轻松月赚$5000美金的方法

太震撼了&#xff0c;这简直就是下个世纪才应该出现的产品&#xff0c;突然之间我感觉就像人类&#xff0c;刚刚发明了电灯一样&#xff0c;一切都要变了&#xff0c;而且变的速度太快&#xff0c;让我都觉得有点茫然了&#xff0c;绝对就是技术大爆炸。今天这篇文章我想通过ch…

React 的源码与原理解读(六):reconcileChildren 与 DIFF 算法

写在专栏开头&#xff08;叠甲&#xff09; 作者并不是前端技术专家&#xff0c;也只是一名喜欢学习新东西的前端技术小白&#xff0c;想要学习源码只是为了应付急转直下的前端行情和找工作的需要&#xff0c;这篇专栏是作者学习的过程中自己的思考和体会&#xff0c;也有很多参…

常年不卷,按时下班,工作能力强,同事求助知无不言,不扯皮,不拉帮结派,这样的职场清流竟然被裁掉了!...

在职场上&#xff0c;你永远想不到什么样的员工会被优化&#xff0c;比如下面这位&#xff1a;常年不卷&#xff0c;按时下班&#xff0c;工作很专业&#xff0c;同事问什么都回答&#xff0c;不扯皮&#xff0c;不拉帮结派&#xff0c;简直是职场清流。在上个月竟然被优化了&a…

一分钟腾讯云轻量应用服务器性能评测(慎入坑)

腾讯云轻量应用服务器性能评测&#xff0c;轻量服务器CPU主频、处理器型号、公网带宽、月流量、Ping值测速、磁盘IO读写及使用限制&#xff0c;轻量应用服务器CPU内存性能和标准型云服务器CVM处于同一水准&#xff0c;所以大家不要担心轻量应用服务器的性能&#xff0c;腾讯云百…

JavaEE企业级应用开发教程——第十章 初识Spring MVC框架(黑马程序员第二版)(SSM)

第十章 初识Spring MVC框架 JSP Model2架构模型是一种将页面显示、流程控制和业务逻辑分离的Web应用程序架构模型&#xff0c;采用JSP、Servlet和JavaBean技术实现。但是&#xff0c;它将通用逻辑以硬编码的方式实现&#xff0c;每次开发新的Web应用程序时都需要重新编写Servl…

MyBatis注解开发---实现增删查改和动态SQL

目录 1. 环境搭建 &#xff08;1&#xff09;创建持久层接口&#xff0c;并在接口方法上定义Sql语句 &#xff08;2&#xff09;测试方法 &#xff08;3&#xff09;运行结果 2. 注解实现增删查改 &#xff08;1&#xff09;增加用户 &#xff08;2&#xff09;删除用…

【4.17】贪心算法入门

什么是贪心&#xff1f; 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 刷题或者面试的时候&#xff0c;手动模拟一下感觉可以局部最优推出整体最优&#xff0c;而且想不到反例&#xff0c;那么就试一试贪心。 贪心的解题步骤&#xff1f; 贪心算法一…

《人体地图》笔记

《人体地图》 坂井建雄 著 孙浩 译 腹部通向大腿的隧道 腹部与大腿的分界点是大腿根部&#xff0c;即是腹股沟。 腹壁肌肉连结在腹股沟韧带上&#xff0c;腹壁肌肉包括三层&#xff0c;分别为腹外斜肌、腹内斜肌和腹横肌&#xff0c;每块肌肉都有一个张开的小孔&#xff0c;…

【靶场设计和渗透】

目录 一、前言 二、靶场设计 1、局域网 2、说明 三、渗透测试 1、信息收集 2、漏洞利用 四、后渗透利用 1、提权 2、权限维持 一、前言 为了深入贯彻学习网络安全法律法规&#xff0c;深入学习渗透测试知识&#xff0c;强化实战技能............ 编不出来了&#xff…

The Sandbox 的 OliveX Fitness 之城来啦!

4 月 11 日至 17 日&#xff0c;亲自来体验一下吧&#xff01; 这种独特的体验将有趣和故事驱动的游戏与健身以及奖励结合起来。玩家可以探索隐藏的角落&#xff0c;逃出迷宫&#xff0c;爬上梯子&#xff0c;清除障碍&#xff0c;完成相互关联的任务&#xff0c;所以战略规划是…

Avue dynamic表单实现form单选,修改及新增项

Avue dynamic表单实现form单选&#xff0c;修改及新增项 AvueDialogFormTableViewOption.js /** Description:银行账号* Version: 1.0* Autor: Tj* Date: 2023-03-21 11:02:42*/ export const BankAccountOption (vueObj, formData) > {return {labelWidth: 100, //整体列…