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

更新完善中…

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

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

相关文章

ChatGPT :确定性AI源自于确定性数据

ChatGPT 幻觉 大模型实际应用落地过程中,会遇到幻觉(Hallucination)问题。对于语言模型而言,当生成的文本语法正确流畅,但不遵循原文(Faithfulness),或不符合事实(Factua…

C++——string

一学习string的原因 1.从个人理解角度上: 在刚开始学习之前,我只知道学习完string在以后的刷题中能提高做题效率,在对字符串的处理string库中也许有对应的接口去实现需求,不用自己去写函数的实现。 但在学string中改变了之前的…

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

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

Flask中的Blueprints:模块化和组织大型Web应用【第142篇—Web应用】

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Flask中的Blueprints:模块化和组织大型Web应用 在构建大型Web应用时&#xff0…

最后的挣扎 - Qt For Android on HuaWei Mate 60Pro (v4.0.0)

简介 为什么叫最后的挣扎, 其实都知道即将到来的 HarmonyOS NEXT 将抛弃Android支持,纯血HarmonyOS 将上线, 此时再说Qt for android支持Huawei HarmonyOS的设备其实并没有多少意思, 但恐怕在大多数基础软件完成兼容前, 很多人还是…

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

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

UCORE 清华大学os实验 lab0 环境配置

打卡 lab 0 : 环境配置 : 首先在ubt 上的环境,可以用虚拟机或者直接在windows 上面配置 然后需要很多工具 如 qemu gdb cmake git 就是中间犯了错误,误以为下载的安装包,一直解压不掉,结果用gpt 检查 结…

LeetCode 189.轮转数组

题目:给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 思路: 代码: class Solution {public void rotate(int[] nums, int k) {int n nums.length;k k % n;reverse(nums, 0, n);revers…

sqlite 常见命令 表结构

在 SQLite 中,将表结构保存为 SQL 具有一定的便捷性和重要性,原因如下 便捷性: 备份和恢复:将表结构保存为 SQL 可以方便地进行备份。如果需要还原或迁移数据库,只需执行保存的 SQL 脚本,就可以重新创建表…

vulhub中GitLab 任意文件读取漏洞复现(CVE-2016-9086)

GitLab是一款Ruby开发的Git项目管理平台。在8.9版本后添加的“导出、导入项目”功能,因为没有处理好压缩包中的软连接,已登录用户可以利用这个功能读取服务器上的任意文件。 环境运行后,访问http://your-ip:8080即可查看GitLab主页&#xff0…

Linux进程管理:(六)SMP负载均衡

文章说明: Linux内核版本:5.0 架构:ARM64 参考资料及图片来源:《奔跑吧Linux内核》 Linux 5.0内核源码注释仓库地址: zhangzihengya/LinuxSourceCode_v5.0_study (github.com) 1. 前置知识 1.1 CPU管理位图 内核…

深度强化学习01

Random variable Probability Density Function 期望 Random Sampling 学习视频 这绝对是我看过最好的深度强化学习!从入门到实战,7小时内干货不断!_哔哩哔哩_bilibili

智慧城市新篇章:数字孪生的力量与未来

随着信息技术的迅猛发展和数字化浪潮的推进,智慧城市作为现代城市发展的新模式,正在逐步改变我们的生活方式和社会结构。在智慧城市的构建中,数字孪生技术以其独特的优势,为城市的规划、管理、服务等方面带来了革命性的变革。本文…

Mybatis-xml映射文件与动态SQL

xml映射文件 动态SQL <where><if test"name!null">name like concat(%,#{name},%)</if><if test"username!null">and username#{username}</if></where> <!-- collection&#xff1a;遍历的集合--> <!-- …

百科源码生活资讯百科门户类网站百科知识,生活常识

百科源码生活资讯百科门户类网站百科知识,生活常识 百科源码安装环境 支持php5.6&#xff0c;数据库mysql即可&#xff0c;需要有子目录权限&#xff0c;没有权限的话无法安装 百科源码可以创建百科内容&#xff0c;创建活动内容。 包含用户注册&#xff0c;词条创建&#xff…

Flask学习(四):路由转换器

默认的路由转换器&#xff1a; string &#xff08;缺省值&#xff09; 接受任何不包含斜杠的文本int接受正整数float接受正浮点数 path类似 string&#xff0c;但可以包含斜杠uuid接受 UUID 字符串 代码示例&#xff1a; app.route(/user/<username>) def show_u…

使用Python进行自然语言处理(NLP):NLTK与Spacy的比较【第133篇—NLTK与Spacy】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 使用Python进行自然语言处理&#xff08;NLP&#xff09;&#xff1a;NLTK与Spacy的比较 自…

用尾插的思想实现移除链表中的元素

目录 一、介绍尾插 1.链表为空 2.链表不为空 二、题目介绍 三、思路 四、代码 五、代码解析 1. 2. 3. 4. 5. 6. 六、注意点 1. 2. 一、介绍尾插 整体思路为 1.链表为空 void SLPushBack(SLTNode** pphead, SLTDataType x) {SLTNode* newnode BuyLTNode(x); …

蓝桥杯并查集|路径压缩|合并优化|按秩合并|合根植物(C++)

并查集 并查集是大量的树&#xff08;单个节点也算是树&#xff09;经过合并生成一系列家族森林的过程。 可以合并可以查询的集合的一种算法 可以查询哪个元素属于哪个集合 每个集合也就是每棵树都是由根节点确定&#xff0c;也可以理解为每个家族的族长就是根节点。 元素集合…

【开源鸿蒙】模拟运行OpenHarmony轻量系统QEMU RISC-V版

文章目录 一、准备工作1.1 编译输出目录简介 二、QEMU安装2.1 安装依赖2.2 获取源码2.3 编译安装2.4 问题解决 三、用QEMU运行OpenHarmony轻量系统3.1 qemu-run脚本简介3.2 qemu-run脚本参数3.3 qemu-run运行效果3.4 退出QEMU交互模式 四、问题解决五、参考链接 开源鸿蒙坚果派…