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时间 |
---|---|---|
Broadcast | 10 | 40 |
P2P(点到点) | 10 | 40 |
NBMA(非广播多路泛洪) | 30 | 120 |
P2MP(点到多点) | 30 | 120 |
Virtual link (基于实际接口) | 基于实际接口 | 基于实际接口 |
6、LSA结构
OSPF内部路由指的就是所有的一个OSPF进程下的网络,那么也就是说,不管有多少区域,都在这个进程下讨论,不管是区域内还是区域间,都算内部,这个内部单独指OSPF进程的内部,不同进程的叫做外部。不同路由协议也算外部
LSA结构:
1、一类/二类LSA(Router-LSA/Network-LSA)
每种不同类型的LSA包含的内容都是不同的
type | 名称 | 描述 |
---|---|---|
1 | Router-LSA | 每一个路由器都会生成。描述某区域内路由器端口链路状态的集合。只在所描述的区域内泛洪。 |
2 | Nework-LSA | 由DR生成。描述多路访问网络上所连接路由器的列表。只在该网络所属的区域内泛洪。 |
Router-LSA
Network-LSA
更新完善中…
相关文章:
OSPF协议全面学习笔记
作者:BSXY_19计科_陈永跃 BSXY_信息学院 注:未经允许禁止转发任何内容 OSPF协议全面学习笔记 1、OSPF基础2、DR与BDR3、OSPF多区域4、虚链路Vlink5、OSPF报文6、LSA结构1、一类/二类LSA(Router-LSA/Network-LSA) 更新完善中... 1、…...
acwing算法提高之搜索--剪枝
目录 1 介绍2 训练 1 介绍 本专题用来记录使用dfs剪枝技巧求解的题目。 剪枝有以下思路: 优化搜索顺序。可行性剪枝。最优性剪枝。唯一性剪枝,也叫去除冗余。记忆化搜索,也叫dp。 2 训练 题目1:165小猫爬山 C代码如下&#…...
鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Web)上篇
提供具有网页显示能力的Web组件,ohos.web.webview提供web控制能力。 说明: 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。示例效果请以真机运行为准,当前IDE预览器不支持。 需要权…...
TPU浅谈
前言 大家好,我是jiantaoyab,上篇文章讲了FPGA和ASIC,讲解了 FPGA 如何实现通过“软件”来控制“硬件”,以及我们可以进一步把 FPGA 设计出来的电路变成一块 ASIC 芯片。今天我们来看看TPU。大家可以点击这篇文章TPU深入了解TPU。…...
华为OD机试 - 求字符串中所有整数的最小和(Java JS Python C C++)
题目描述 输入字符串s,输出s中包含所有整数的最小和。 说明: 字符串s,只包含 a-z A-Z 合法的整数包括 1)正整数:一个或者多个0-9组成,如 0 2 3 002 102 2)负整数:负号 – 开头,数字部分由一个或者多个0-9组成,如 -0 -012 -23 -00023 输入描述 包含数字的字符…...
goland设置保存文件时不将4个空格转为TAB
goland设置保存文件时不将4个空格转为TAB 版本:GoLand 2022.3 设置路径: Settings -> Editor -> Code Style -> Go -> Run gofmt图示:...
基于Linux内核的socket编程(TCP)的C语言示例
原文地址:https://www.geeksforgeeks.org/socket-programming-cc/ 服务端: #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/socket.h> #include <unistd.h>#…...
【WEEK3】 【DAY4】JSON交互处理第三部分【中文版】
2024.3.14 Thursday 接上文【WEEK3】 【DAY3】JSON交互处理第二部分【中文版】 目录 6.7.编写抽象类6.7.1.原因6.7.2.新建JsonUtils.java6.7.3.在UserController添加一个方法json6验证抽象类可调用6.7.4.在UserController添加一个方法json7验证该抽象类可复用6.7.5.运行 6.8.…...
下载chromedrive,使用自动化
1、先看一下自己浏览器的版本 2、访问 https://googlechromelabs.github.io/chrome-for-testing/...
D-Star 寻路算法
D-Star 寻路算法 下面简写 D-Star 为 D* D算法:D 算法”的名称源自 Dynamic A Star,最初由Anthony Stentz于“Optimal and Efficient Path Planning for Partially-Known Environments”中介绍。它是一种启发式的路径搜索算法, 适合面对周围环境未知或者…...
mysql5.7编译安装
MySQL 5.7在不同操作系统上的编译安装过程略有不同,以下是在Linux系统上编译安装MySQL 5.7的一般步骤: 1. 安装编译所需的依赖包 sudo yum install gcc-c cmake ncurses-devel bison openssl-devel 2. 下载MySQL源码包和Boost库并解压 wget https://dev.mysql.com/get/Dow…...
Java项目实战记录:雷达数据渲染
目录 Java项目实战记录:雷达数据渲染业务背景代码逻辑数据结构颜色渲染MapContent加载数据并输出截图 完整代码GenerateMapImage地图渲染工具测试代码 渲染效果 Java项目实战记录:雷达数据渲染 业务背景 我之前已经成功使用Java语言解析了C处理的雷达数…...
进程的概念 | PCB | Linux下的task_struct | 父子进程和子进程
在讲进程之前首先就是需要去回顾一下我们之前学的操作系统是干嘛的,首先操作系统是一个软件,它是对上提供一个良好高效,稳定的环境的,这是相对于用户来说的,对下是为了进行更好的软硬件管理的,所以操作系统…...
【GPT-SOVITS-03】SOVITS 模块-生成模型解析
说明:该系列文章从本人知乎账号迁入,主要原因是知乎图片附件过于模糊。 知乎专栏地址: 语音生成专栏 系列文章地址: 【GPT-SOVITS-01】源码梳理 【GPT-SOVITS-02】GPT模块解析 【GPT-SOVITS-03】SOVITS 模块-生成模型解析 【G…...
2024HVV行动-进军蓝中研判(log4j2、fastjson、Struts2、Shiro)
1、log4j2 特征: 恶意请求中包含 JNDI 协议地址,如"ldap://"、"rmi://"等,被 log4j2 解析为 JNDI 查找。 原理: 在日志输出中,未对字符进行严格的过滤,执行了 JNDI 协议加载的远程恶…...
亮点抢先看!4月16-17日,百度Create大会开设“AI公开课”,大咖带你打造赚钱工具
3月16日,2024百度Create AI开发者大会正式开放售票,嘉宾套票定价399元。据悉,本次大会以“创造未来(Create the Future)”为主题,设有20深度论坛、超30节AI公开课、3000平AI互动体验区和AI音乐节等精彩环节…...
【笔记本清灰/实用经验】荣耀Magicbook14-2020款-R5-4500U-清灰实战
清灰有风险,动手需谨慎,本文只分享本人的清灰过程,对使用它所产生的任何后果不任何负责任 文章目录 背景信息准备阶段工具准备信息收集 正式清灰初始化清灰流程放掉身体的静电(重要)拆笔记本后盖断开电源(重…...
如何写好Stable Diffusion的prompt
Stable Diffusion是一种强大的文本到图像生成模型,其效果在很大程度上取决于输入的提示词(Prompt)。以下是一些关于如何编写有效的Stable Diffusion Prompt的秘诀: 明确描述:尽量清晰地描述你想要的图像内容。使用具体…...
计算机毕业设计 | SpringBoot+vue 移动端社区物业管理系统(附源码+论文)
1, 概述 课题背景 近几年来,随着物业相关的各种信息越来越多,比如报修维修、缴费、车位、访客等信息,对物业管理方面的需求越来越高,我们在工作中越来越多方面需要利用网页端管理系统来进行管理,我们所需…...
玩转C语言——数组初探
一、前言 通过前面的学习,我们已了解C语言的结构变量、分支结构和循环结构。今天,我们一起来认识C语言的另一知识点——数组。先赞后看,养成习惯。 二、数组概念 学习数组,我们要明白数组是什么。在我看来:数组是⼀组…...
Nginx指令配置大全
基本命令 nginx -t 检查配置文件是否有语法错误 nginx -s reload 热加载,重新加载配置文件 nginx -s stop 快速关闭 nginx -s quit 等待工作进程处理完成后关闭配置块介绍 全局块 全局块是默认配置文件从开始到events块之间的…...
富格林:安全出金关注可信操作
富格林悉知,现货黄金投资凭借着诸多优势,成为了热门的投资产品之一,也获得了投资者的追捧。在投资中想要安全盈利出金,投资者一定要沉下心来学习专业知识和技术,这样才能在以后的投资操作中避免亏损,顺畅盈…...
DELETE、TRUNCATE 和 DROP 在MySQL中的区别及使用示例
在MySQL数据库中,DELETE、TRUNCATE TABLE 和 DROP 这三个命令分别适用于不同的数据删除需求,它们在工作原理、应用场景以及特性上有所区别。接下来,我们通过实例演示来明确这三者的不同之处。 DELETE 命令 功能与示例:DELETE 语…...
程序员应该如何选择职业赛道?
程序员选择职业赛道是一个涉及个人兴趣、技能匹配、市场需求和长远发展规划的综合决策过程。以下是一些关键步骤和考虑因素: 自我评估: 技能与专长:分析自己在编程语言、算法、数据结构等方面的现有技能,并思考这些技能更适合前端…...
深入浅出Hive性能优化策略
我们将从基础的HiveQL优化讲起,涵盖数据存储格式选择、数据模型设计、查询执行计划优化等多个方面。会的直接滑到最后看代码和语法。 目录 引言 Hive架构概览 示例1:创建表并加载数据 示例2:优化查询 Hive查询优化 1. 选择适当的文件格…...
利用卷积神经网络进行人脸识别
利用卷积神经网络(Convolutional Neural Networks, CNNs)进行人脸识别是计算机视觉领域的一个热门话题。下面是一个简化的指南,涵盖了从理论基础到实际应用的各个方面,可以作为你博文的基础内容。 理论基础 卷积神经网络简介&am…...
固态硬盘有坏道怎么恢复数据 固态硬盘坏道怎么修复
固态硬盘是一种高速、低噪音、低功耗的存储设备,但是它也有一个致命的问题——坏道。坏道是指存储芯片中的某些存储单元出现了故障,导致数据无法正常读取或写入。如果你的固态硬盘出现了坏道,那么你的数据就有可能会丢失,带来了很大的困扰。那么,固态硬盘有坏道怎么恢复数…...
adobe animate 时间轴找不到编辑多个帧按钮
如题,找了半天,在时间轴上找不到编辑多个帧按钮,导致无法批量处理帧 然后搜索发现原来是有些版本被隐藏了,需要再设置一下 勾选上就好了...
5 亿欧元巨额奖励!法国国防部启动量子初创公司项目
内容来源:量子前哨(ID:Qforepost) 编辑丨王珩 编译/排版丨沛贤 深度好文:800字丨6分钟阅读 据C4ISNET报道,法国国防部采购机构宣布向五家法国量子计算研究初创公司授予合同,用于开发量子计算技…...
Linux:系统初始化,内核优化,性能优化(2)
优化ssh协议 Linux:ssh配置_ssh配置文件-CSDN博客https://blog.csdn.net/w14768855/article/details/131520745?ops_request_misc%257B%2522request%255Fid%2522%253A%2522171068202516800197044705%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fb…...
html5 购物网站/seo网站关键词快速排名
用jmap把进程内存使用情况dump到文件中,再用jhat分析查看。jmap进行dump命令格式如下:jmap -dump:formatb,file/tmp/dump.dat 21711 ——–>进程idjhat -port 10099 /tmp/dump.dat运行在10099端口然后浏览器加端口号浏览器访问将线程信息Jstack -l PI…...
校园网站建设资金来源有/全国人大常委会副委员长
虽然经常会使用pip,但你知道它是如何选择不同的发行版么?在这篇文章中,作者介绍了Python中的发行包的一些基本概念,并讨论了为什么发行Python包会这么难。 选自pydist,作者:Alex Becker,机器之心…...
网站建设 语言/磁力宝
是的,如果你已经登录了 QQ 空间,那么可以通过编写代码来获取你已经添加的群聊信息。 但是,需要注意的是,在编写获取群聊信息的代码时,需要使用到 QQ 空间的 API。QQ 空间的 API 是由腾讯提供的,你需要先在腾讯的开发者平台上申请应用,并获得对应的 API Key 和 Secret Ke…...
崇明建设机械网站/引擎搜索
之前装了KDE桌面,却不知道如何启动,今天在群里咨询才知道是从登录窗口的会话中选择。选择了KDE之后,发现这个桌面真是很象windows可惜是英文的,在设置里面选择了语言依然没有用,后来发现区域设置里只有英语,…...
国外 网站 源码/如何进行网络推广营销
SQL JOIN SQL join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。 Join 和 Key 有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。 数据库中的表可通过键将彼此联系起来。主键(Primary Ke…...
天津网站推广/镇江百度关键词优化
文章目录1. DSL查询文档1.1 DSL查询分类1.2 全文检索查询1.2.1.使用场景1.2.2 基本语法1.2.3 总结1.3 精准查询1.3.1 term查询1.3.2 range查询1.3.3 总结1.4 地理坐标查询1.4.1 矩形范围查询1.4.2 附近查询2. DSL查询文档:复合查询2.1 算分函数查询(fuct…...