OSPF协议全面学习笔记

作者:BSXY_19计科_陈永跃
BSXY_信息学院
注:未经允许禁止转发任何内容

OSPF协议全面学习笔记

    • 1、OSPF基础
    • 2、DR与BDR
    • 3、OSPF多区域
    • 4、虚链路Vlink
    • 5、OSPF报文
    • 6、LSA结构
      • 1、一类/二类LSA(Router-LSA/Network-LSA)
    • 更新完善中...

1、OSPF基础

RIP是基于距离矢量算法的路由协议,应用在大型网络中存在收敛速度慢、度量值
不科学、可扩展性差等问题。
IETF提出了基于SPF算法的链路状态路由协议OSPF (Open Shortest Path First).
通过在大型网络中部署OSPF协议,弥补了RIP协议的诸多不足。那么OSPF协议是
如何实现的呢?面对网络扩展的需求,又该如何应对呢?

  • IGP(内部网关协议)分为距离矢量和链路状态两种。
  • RIP是基于距离矢量算法的路由协议,应用下大型网络中存在收敛速度慢,度量值不科学,扩展性差等问题。最多15跳,16跳为不可达,cost基于跳数。
  • IETF提出了基于SPF(最短路径优先)算法的链路状态路由协议OSPF,弥补了距离矢量路由的诸多不足。

技术背景:
在这里插入图片描述


大型网络下的需求:

  • 网络规模扩大
  • 网络可靠性要求提高(设备可靠性和链路可靠性)(OSPF可以在复杂的链路中进行最优选路)
  • 网络异构化趋势加剧(设备可能不一致)(尽可能使用开放性技术)

链路状态对应距离矢量的改进:
在这里插入图片描述

如何解决RIP的问题?

RIP的问题优化或解决的方式
收敛慢,故障恢复时间长“收到更新>计算路由>发送更新"改为"收到更新>发送更新>计算路由”
缺少对全局网络的了解路由器基于拓扑信息,独立计算路由
最多有效跳数为15不限制跳数
存在选择次优路由的风险将路由带宽作为选路参考值

在这里插入图片描述


OSPF工作流程: 建立邻居-同步链路状态-SPF-放置路由表。通过lsdb掌握全网的拓扑结构

  • 总结来说就是建立邻居,互相交互lsa,建立lsdb数据库,这样子每个设备都能拿到完整路由拓扑,最后以自己为中心,计算到各个路由之间的最佳路径,置于路由表。(存在路由器的路由即最优 )
    在这里插入图片描述
  • 邻居交互完成后,了解了拓扑结构(lsa交互完成),拿到了lsa也就构建了lsdb数据库(同一个区域里的路由lsdb就应该一致)。最后使用SPF算法计算最优路由(生成带权有向图 )
  • 带权有向图:(有向代表双向,也就是设备与设备之间是互相知道的)
    在这里插入图片描述
  • 流程图
    在这里插入图片描述

OSPF的基本工作原理:
OSPF Rrouter-id:用于自治系统中唯一标识一台运行OSPF的设备,每台运行OSPF的设备只有一个Router-id
在这里插入图片描述
建立邻居:OSPF设备之间在交换链路状态信息之前,首先需要彼此建立邻居关系,通过Hello报文实现邻居交互
在这里插入图片描述


链路状态信息:

  • 链路的类型:多路访问,非多路访问,点到点,帧中继

  • 接口IP地址及掩码

  • 链路上所连接的邻居路由器

  • 链路的带宽(开销)…

在这里插入图片描述


LSDB同步:

  • Exstart 状态会根据DD数据报文选举主仆关系Master和Slave(只根据Router ID 大的为主),选举完成后,Slave接下来会听Master的指挥

  • DD数据报文包含了lsa的摘要信息(全部)

  • Lsr请求的是某个lsa头部信息,lsu回复包含了完整的lsa信息

  • lsack就是对lsu的确认(如果没有确认,lsu会周期性重传,多次没有回应会down)
    在这里插入图片描述


状态机制:

  • Full,down,2-way,属于稳定状态剩下是过渡状态,不可能永久停留,停留表示有问题
    在这里插入图片描述

OSPF数据作用类型:

数据类型作用
Hello建立邻居和后期维护邻居关系,hello包间隔时间,10秒钟发送一个hello包,如果40秒内收不到邻居路由hello,会判定邻居路由挂掉,会清除目标邻居路由的全部信息
Data base description (DBD)LSDB的摘要(仅包含LSA头部)简略的链路数据库列表,用于对比。邻居建立过程才有DBD数据包,建立完成后则没有了。
通过第二阶段数据包来进行比较,各自设备有哪些路由,然后在进行信息交互(LSA泛洪)
DBD的数据包有两个阶段,开头设备各自发一个,不包含实际内容。DBD第二个阶段,包含了一个LSA-type,这个LSA的数据并不完整,只包含(类型,id ,宣告者)
Link state Request (LSR)请求LSR(某个lsa头部信息),邻居建立完成后就没有LSR数据包,触发有机制触发
Link state update (LSU)发送LSA,(根据邻居路由请求LSA给予回复)
触发式更新:有增删改会发送更新。
注:LSU数据包里面就包含了LSA。
Link state acknowledgment (LSAck)对LSU进行确认。(通过目标设备发送的序列号,再次发送回去进行确认)
给邻居路由发送一个请求,需要邻居路由给予回应,否则会进行重传, 重传到一定次数,还没有回应,会进行down

OSPF参考度量值:

  • 接口开销=参考带宽/实际带宽。参考带宽默认=100Mbps

  • 更改开销的两种方式:在接口直接配置; 修改参考带宽值(所有设备需要一致,否则选路不一致)

  • 到目标所有的出站接口的Cost值累加(数据方向)(一般都是数据方向,也就是看出口计算)

  • 到本路由器沿途所有入站接口的Cost值累加(路由方向)

  • 注:从邻居学到一条路由。路由分为数据方向和路由方向

路由方向:当邻居路由发送一条路由给我时,会累计接收时端口的开销。

数据方向:当学到邻居的路由时,我要去往这条路由时,会计算我发出时的接口开销。

  • 注:不管是数据方向还是路由方向,他其实说的就是我们去往邻居路由时的一个计算方式。而不是说要去计算我们本身存在的路由

  • 总结:邻居发一条路由给你时,你接收时端口的开销是多少,那么去这台路由时发出的端口开销就是多少
    在这里插入图片描述
    在这里插入图片描述


网络类型:

MA网络中问题:

2、DR与BDR

减少领接关系
降低OSPF协议流量
具有非抢占性。(除非设备挂了或者重启)
DR出现故障BDR顶替,再重新选举新的BDR。(只有先成为BDR才有机会成为DR)
OSPF的DR,BDR选举制度是无法改变的,是为了稳定性。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 邻接状态,一定是邻居。但是邻居状态不一定是邻接
  • DR和BDR,Drouter 之间都保持领接关系(full)
  • Drouter 之间保持邻居关系(2-way)

3、OSPF多区域

随着网络规模的不断扩大,结构也越来越复杂,路由器完成路由计算所消耗的资源也就越多。

而且,网络发生故障的可能性也随之增加,(区域内网络越复杂,越容易出问题)。如果区域内某处发生故障,整个区域内的路由都要重新计算,这也会大大增加路由器的负载,降低网络运行的稳定性。

OSPF单区域过大可能带来的问题:

解决方案:

区域划分: 将一个大网络划分为多个相互连接的小网络。每个区域内的设备只需要同步所在区域内的sdb,一定程度上降低路由器内存及CPU资源的消耗

  • 一个接口(网络地址)只能在一个区域内进行宣告,不能冲突

在这里插入图片描述


域间路由防环: (区域内依靠SPF算法,不会有环路,而区域间可能会存在环路)


三类LSA传递规则

4、虚链路Vlink

由于网络设计,规划,升级,合并,改造,或者不可抗拒等因素,造成不规范区域架构,最终导致路由学习不完整:

在这里插入图片描述

解决的办法是虚连接:

在这里插入图片描述

  • 通过虚连接,虚连接配置后,两个ABR之间会建立一个单播的邻居,两台ABR路由器之间直接传递OSPF报文信息(不会传递到区域内),两者之间的OSPF设备只是起到一个转发报文的作用

虚链路配置:

  • 虚连接的另外一个作用提供冗余的备份链路。当骨干区域因链路故障将被分隔时,通过虚连接仍然可以保证骨干区域在逻辑上的连通性
  • 虚连接可以看成扩展的骨干区域,在逻辑上生效。

在这里插入图片描述

5、OSPF报文

OSPF报文结构:

OSPF报文类型:

Hello保定时器:

网络类型Hello间隔Dead时间
Broadcast1040
P2P(点到点)1040
NBMA(非广播多路泛洪)30120
P2MP(点到多点)30120
Virtual link (基于实际接口)基于实际接口基于实际接口

6、LSA结构

OSPF内部路由指的就是所有的一个OSPF进程下的网络,那么也就是说,不管有多少区域,都在这个进程下讨论,不管是区域内还是区域间,都算内部,这个内部单独指OSPF进程的内部,不同进程的叫做外部。不同路由协议也算外部

LSA结构:

1、一类/二类LSA(Router-LSA/Network-LSA)

每种不同类型的LSA包含的内容都是不同的

type名称描述
1Router-LSA每一个路由器都会生成。描述某区域内路由器端口链路状态的集合。只在所描述的区域内泛洪。
2Nework-LSA由DR生成。描述多路访问网络上所连接路由器的列表。只在该网络所属的区域内泛洪。

Router-LSA

Network-LSA

更新完善中…

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32的USART能否支持9位数据格式话题

1、问题描述 STM32L051 这款单片机。平常的 USART 串口传输是 8 位数据,但是他的项目需要用串口传输 9 位数据。当设置为 8 位数据时,串口响应中断正常。但是,当设置为 9 位数据时,串口就不产生中断了。USART2 的 ISR 寄存器 RXN…

Monorepo 解决方案 — 基于 Bazel 的 Xcode 性能优化实践

背景介绍 书接上回《Monorepo 解决方案 — Bazel 在头条 iOS 的实践》,在头条工程切换至 Bazel 构建系统后,为了支持用户使用 Xcode 开发的习惯,我们使用了开源项目 Tulsi 作为生成工具,用于将 Bazel 工程转换为 Xcode 工程。但是…

【PyTorch】基础学习:一文详细介绍 torch.load() 的用法和应用

【PyTorch】基础学习:一文详细介绍 torch.load() 的用法和应用 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程&#x1f44…

CMAKE_CUDA_ARCHITECTURES set to ‘native’多版本与版本号矛盾问题,报错

CMAKE_CUDA_ARCHITECTURES set to ‘native’多版本与版本号矛盾问题,报错 1. 报错提醒如下图2. 原因本地安装多个cuda版本导致native寻找到多个版本,导致报错3. 具体配置需要根据你的显卡型号来确认 1. 报错提醒如下图 2. 原因本地安装多个cuda版本导致…

sqllab第二十七关通关笔记

知识点&#xff1a; union select 关键字过滤 通过<> /**/进行截断处理 un<>ion sel<>ect 没效果uni/**/on sel/**/ect 被过滤了双写绕过 这关对select进行了多重过滤&#xff0c;无法进行双写绕过 大小写绕过 UNion SElect (这关可以用&am…

如何实现图片上传至服务器

在绝大多数的项目中都会涉及到文件上传等&#xff0c;下面我们来说一下技术派中是如何实现原生图片上传的&#xff0c;这个功能说起来简单&#xff0c;但其实对于技术还是有考验的。图片的上传涉及到IO读写&#xff0c;一个文件上传的功能&#xff0c;就可以把IO流涉及到的知识…

4500万英镑!英国深化发展量子计算背后“内有乾坤”

内容来源&#xff1a;量子前哨&#xff08;ID&#xff1a;Qforepost&#xff09; 编辑丨慕一 编译/排版丨沛贤 深度好文&#xff1a;2200字丨15分钟阅读 近期&#xff0c;英国国家量子计算中心&#xff08;NQCC&#xff09;宣布量子计算实验台竞赛的结果&#xff0c;七家量子…

【SpringBoot】请求与响应参数 IoC与DI 总结

文章目录 ① —— 请求 ——一、简单参数 RequestParam1.1 参数与形参 命名相同1.2 参数与形参 命名不同 二、实体参数2.1 简单实体对象2.2 复杂实体对象 三、数组集合参数3.1 数组3.2 集合 RequestParam 四、日期参数 DateTimeFormat五、JSON参数 RequestBody六、路径参数 Pat…

202006A卷青少年软件编程(Scratch)等级考试试卷(三级)

第1题:【 单选题】 执行以下脚本后舞台上的角色将 ?( ) A:先克隆自身,克隆体出现后被删除 B:先克隆自身,克隆体出现后删除本体 C:克隆出自身后本体与克隆体同时被删除 D:克隆出自身后本体与克隆体被不会被删除 【正确答案】: A 【试题解析】 : 第2题:【 单选题】…

linux——进程(1)

目录 一、概念 1.1、认识进程 1.2、进程描述符&#xff08;PCB&#xff09; 1.3、进程的结构体&#xff08;task_struct&#xff09; 二、查看进程 三、获取进程的Pid和PPid 3.1、通过系统调用获取进程的PID和PPID 四、创建进程 4.1、fork() 4.2、用if进行分流 五、…

【鸿蒙HarmonyOS开发笔记】状态管理入门

状态管理 为了方便开发者管理组件状态&#xff0c;ArkTS 提供了一系列状态相关的装饰器&#xff0c;例如State&#xff0c;Prop&#xff0c;Link&#xff0c;Provide和Consume等等。 State State用于装饰当前组件的状态变量&#xff0c;State装饰的变量发生变化时会驱动当前组…

Java数据结构二叉树练习

1.检查两棵二叉树是否都是相同的练习 我要求时间复杂度为1&#xff0c;所以我们不用前序中序后序是否都一样来进行判断 如何判断二叉树是否都是相同的子问题方式 先判断根节点是否相同 再判断左子树和右子树是否都是相同的 先用代码判断不相同的情况&#xff0c;都相同的化…

安装使用sqlite

在SQLite 下载页面中下载Windows的预编译的二进制文件 下载sqlite-tools-win32-*.zip和sqlite-dll-win32-*.zip压缩文件 解压下载的两个压缩文件&#xff0c;创建一个sqlite文件夹&#xff0c;把解压的文件放到sqlite的文件夹中&#xff0c;把创建的sqlite文件夹添加到环境变量…

J.砍树【蓝桥杯】树上差分+LCA

树上差分 多次对树上的一些路径做加法操作&#xff0c;然后询问某个点或某条边经过操作后的值&#xff0c;就要考虑树上差分了。 点差分 模拟这个过程 对x到y路径上的点权值均1&#xff0c;可以等价成对x和y的权值加1&#xff0c;对lca的权值-1&#xff0c;对fa[lca]的权值-…

odoo17开发教程(6):用户界面UI的交互-创建Action

前面的文章中我们已经创建了新模型及其相应的访问权限&#xff0c;是时候与用户界面进行交互了。 数据文件&#xff08;XML&#xff09; 在上一篇文章中&#xff0c;我们通过 CSV 文件添加数据。当要加载的数据格式简单时&#xff0c;CSV 格式很方便。当格式比较复杂时&#x…

【前端Vue】Vue3+Pinia小兔鲜电商项目第1篇:认识Vue3,1. Vue3组合式API体验【附代码文档】

全套笔记资料代码移步&#xff1a; 前往gitee仓库查看 感兴趣的小伙伴可以自取哦&#xff0c;欢迎大家点赞转发~ 全套教程部分目录&#xff1a; 部分文件图片&#xff1a; 认识Vue3 1. Vue3组合式API体验 通过 Counter 案例 体验Vue3新引入的组合式API vue <script> ex…

【MySQL】DQL

文章目录 一、基本语法二、基本查询&#xff08;不带任何条件&#xff09;2.1 查询多个字段2.2 字段设置别名 AS2.3 去除重复记录 DISTINCT2.4 案例 三、条件查询&#xff08;WHERE&#xff09;3.1 语法3.2 条件3.3 案例 四、聚合函数&#xff08;count、max、min、avg、sum&am…

Linux——开发工具yum与vim

Linux——开发工具yum与vim 文章目录 Linux——开发工具yum与vim一、Linux 软件包管理器-yum1.1 什么是软件包1.2 yum的使用 二、linux下的编辑器-vim2.1 vim的基本概念2.2 vim的基本操作插入模式下的基本命令底行模式下的基本指令 2.3 vim的配置 一、Linux 软件包管理器-yum …

[数据集][目标检测]铝片表面工业缺陷检测数据集VOC+YOLO格式400张4类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;400 标注数量(xml文件个数)&#xff1a;400 标注数量(txt文件个数)&#xff1a;400 标注类别…

SqlServer2008(R2)(二)SqlServer2008(R2)安装和卸载注意事项整理

二、注意事项 1、 安装数据中心版 说明&#xff1a;此激活版仅用于测试和学习使用。 这是官方的下载页面&#xff08;需要付费订阅&#xff09;&#xff1a; http://msdn.microsoft.com/zh-cn/subscriptions/downloads/default.aspx 数据中心版&#xff1a; PTTFM-X467G-P7RH…