(考研湖科大教书匠计算机网络)第四章网络层-第六节3:开放最短路径优先OSPF的基本工作原理
- 获取pdf:密码7281
- 专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航
文章目录
- 一:OSPF概述
- (1)概述
- (2)细节阐述
- A:链路状态和代价
- B:问候分组和邻居表
- C:链路状态通告LSA
- D:链路状态数据库LSDB
- E:最短路径优先SPF
- (3)五种分组类型
- 二:OSPF基本工作过程
- 三:其他问题
- (1)多点接入网络中存在的大量多播分组
- (2)区域
本节对应视频如下
- 【计算机网络微课堂(有字幕无背景音乐版)】:开放最短路径优先OSPF的基本工作原理
一:OSPF概述
(1)概述
开放最短路径优先OSPF:是为了克服RIP的缺点在1989年提出来的协议
- 开放: :是指OSPF协议不受某一家厂商控制,而是公开发表的
- 最短路径优先: 是指使用了Dijkstra所提出的最短路径算法SPF
具体特点如下
- OSPF是基于链路状态的,而不像RIP那样是基于距离向量的-
- OSPF采用SPF算法计算路由,从算法.上保证了不会产生路由环路
- OSPF不限制网络规模,更新效率高,收敛速度快
(2)细节阐述
A:链路状态和代价
链路状态是指本路由器都和哪些路由器相邻,以及相应链路的“代价”(cost)
- "代价”用来表示费用、距离、时延、带宽,等等。这些都由网络管理人员来决定
例如下图,思科路由器中OSPF计算代价的方法是:用100Mbps除以链路带宽
- 如果计算结果小于1则仍然记为1
- 如果计算结果大于1则舍去小数,只保留整数部分

B:问候分组和邻居表
OSPF相邻路由器之间通过交互问候(Hello) 分组,建立和维护邻居关系。因此,每个路由器都会建立一张邻居表。问候分组需要封装在IP数据报中发送,发往组播地址224.0.0.5
-
IP数据报中协议号字段取值应该为89,表明IP数据报的数据载荷为OSPF分组

-
问候分组的发送周期为10s,若40s还未收到来自邻居路由器的Hello分组,则认为该邻居分组不可达
例如下图
- R2是R1的一个邻居路由器,于是在R1的邻居表中“邻居ID”就记为R2,“接口”记为1,“死亡倒计时”目前还剩36s,若在“死亡倒计时”到达0之前再次收到了R2的问候分组,则重新启动针对该邻居条目的40s“死亡倒计时”;否则,当“死亡倒计时 ”为0时判定该R2不可达
- R4是R1的一个邻居路由器,于是在R1的邻居表中“邻居ID”就记为R4,“接口”记为0,“死亡倒计时”目前还剩18s,若在“死亡倒计时”到达0之前再次收到了R4的问候分组,则重新启动针对该邻居条目的40s“死亡倒计时”;否则,当“死亡倒计时 ”为0时判定该R4不可达

C:链路状态通告LSA
使用OSPF的每个路由器都会产生链路状态通告LSA。LSA中包含以下内容
- 直连网络的链路状态信息
- 邻居路由器的链路状态信息
例如下图,N1是路由器R4的直连网络,则R4的LSA应包含R4与该直连网络的链路状态信息,还应该包含其邻居路由器R1的链路状态信息和邻居路由器R3的链路状态信息

LSA被封装在链路状态更新分组LSU中,采用洪泛法发送。收到LSU的路由器,将从自己其他所有接口转发该分组,也就是进行洪泛转发
例如下图

D:链路状态数据库LSDB
使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA。通过各路由器洪泛发送封装有自己LSA的LSU分组,各路由器的LSDB最终将达到一致
例如下图,R2的LSDB中记录有各路由器的LSA

E:最短路径优先SPF
使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表
例如下图的网络拓扑,各链路旁的数字表示代价,通过各路由器洪泛法发送封装有自己LSA的LSU:各路由器最终会得到相同的LSDB,由LSDB可以得出带权有向图,对该图进行基于Dijkstra的最短路径优先算法就可以得出以路由器为根的最短路径

(3)五种分组类型
OSPF的五种分组类型:
- 问候(Hello) 分组: 用来发现和维护邻居路由器的可达性
- 数据库描述(Database Description)分组: 向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息
- 链路状态请求(Link State Request)分组: 向邻居路由器请求发送某些链路状态项目的详细信息
- 链路状态更新(Link State Update)分组: 使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态
- 链路状态确认(Link State Acknowledgment)分组: 是对链路状态更新分组的确认分组
二:OSPF基本工作过程
如下图,相邻路由器之间周期性发送问候分组,以便建立和维护邻居关系建立邻居关系后,给邻居路由器发送数据库描述分组,也就是将自己的链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器。例如
- R1收到R2的数据库描述分组后,发现自己缺少其中的某些链路状态项目,于是就给R2发送链路状态请求分组
- R2收到后,将R1所缺少的链路状态项目的详细信息封装在链路状态更新分组中发送给R1
- R1收到后,将这些所缺少的链路状态项目的详细信息添加到自己的链路状态数据库中,并给R2发送链路状态确认分组
- 最终,R1和R2的链路状态数据库将达到一致,也就是链路状态数据库达到同步
每30min或链路状态发生变化时,路由器都会发送链路状态更新分组,收到该分组的其他路由器将洪泛转发该分组,并给该路由器返回链路状态确认分组。这称之为新情况下链路状态数据库同步

三:其他问题
(1)多点接入网络中存在的大量多播分组
当OSPF路由器在多点接入网络中建立邻居关系时,如果不采用其他机制,将会产生大量的多播分组
例如下图,5台路由器连接在同一个多点接入网络中,它们周期性地发送问候分组以建立和维护邻居关系。这些路由器中的任意两个路由器都互为邻居关系,邻居关系的数量为n(n−1)2\frac{n(n-1)}{2}2n(n−1),其中nnn为路由器数量,这样每个路由器要向其他n−1n-1n−1个路由器发送问候分组和链路状态更新分组
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-
为了减少所发送分组的数量,OSPF采用选举指定路由器DR和备用指定路由器BDR的方法,所有的非DR/BDR都只与DR/BDR建立邻居关系,非DR/BDR之间必须通过DR/BDR交换信息。若DR出现问题则由BDR顶替,
例如下图,假设已经选举好了DR和BDR,由于所有的非DR/BDR都只与DR/BDR建立邻居关系,因此之前的邻居关系数量降低为2(n−2)+12(n-2)+12(n−2)+1

(2)区域
为了使OSPF能够用于规模很大的网络,OSPF把一个自治系统再划分为若干个更小的范围,叫做区域(Area)。划分区域的好处就是把利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个自治系统,这样就减少了整个网络上的通信量
例如下图是一个规模很大的网络,将其划分为一个自治系统。在该自治系统内,所有路由器都使用OSPF协议

OSPF将该自治系统再划分为4个更小的区域,每个区域都有一个32比特区域标识符,可以用点分十进制表示。例如主干区域标识符必须为0,也即0.0.0.0,主干区域用于连通其他区域,其他区域标识符不能为0且互补相同。每个区域的规模不应该太大,一般所包含的路由器不应超过200个

如果路由器的所有接口都在同一个区域内,则该路由器称其为区域内路由器。为了本区域可以和自治系统内的其他区域连通,每个区域会设置一个区域边界路由器(R3,R4,R7),其一个接口用于连接自身所在区域,另一个接口用于连接主干区域。主干区域内的路由器称之为主干路由器

相关文章:
(考研湖科大教书匠计算机网络)第四章网络层-第六节3:开放最短路径优先OSPF的基本工作原理
获取pdf:密码7281专栏目录首页:【专栏必读】考研湖科大教书匠计算机网络笔记导航 文章目录一:OSPF概述(1)概述(2)细节阐述A:链路状态和代价B:问候分组和邻居表Cÿ…...
积水在线监测仪——积水点、易涝点水位监测设备
一、设备概述 积水在线监测仪是一款用于城市积水点、易涝点等场景的水位监测设备,设备采用电池供电,无需另外供电,安装方便,使用简单。可以时监测水点、易涝点水位情况,当水位数据超过阈值后触发告警上传,…...
DCMM认证机构
一、什么是DCMM DCMM认证,又称为数据管理能力成熟度评估,依据 都是GB/T -《数据管理能力成熟度评估模型》,这是我国首个数据管理领域的国家标准,由国家质量监督检验检疫总局、国家标准化管理委员会于年3月15日正式发布。DCMM认证…...
Golang基于文件魔数判断文件类型
本文介绍基于魔数判断文件类型,涉及文件查找读取内容、文件魔数、字节比较,最后还介绍函数参数的知识。 查找位置 File.Seek()函数可以设置偏移位置,为下一次读或写确定偏移量,具体起点有whence确定:0标识相对文件开始…...
MySQL——索引视图练习题
学生表:Student (Sno, Sname, Ssex , Sage, Sdept) 学号,姓名,性别,年龄,所在系 Sno为主键 课程表:Course (Cno, Cname,) 课程号,课程名 Cno为主键 学生选课表:SC (Sno, Cno, Score)…...
哈希表题目:矩阵置零
文章目录题目标题和出处难度题目描述要求示例数据范围进阶解法一思路和算法代码复杂度分析解法二思路和算法代码复杂度分析解法三思路和算法代码复杂度分析题目 标题和出处 标题:矩阵置零 出处:73. 矩阵置零 难度 3 级 题目描述 要求 给定一个 m…...
HTTP API自动化测试从手工到平台的演变
不管是 Web 系统,还是移动 APP,前后端逻辑的分离设计已经是常态化,相互之间通过 API 调用进行数据交互。在基于 API 约定的开发模式下,如何加速请求 / 响应的 API 测试,让研发人员及早参与到调试中来呢?既然…...
【从零开始学C语言】知识总结一:C语言的基本知识汇总
C语言期末知识点总结 C语言期末试题(附答案)选择题编程题 2022C语言知识点大全【详细、必备】 C语言期末大作业-学生成绩管理系统(完整源码设计报告) C语言期末作业(15个)-货物管理系统、歌曲信息管理系…...
CAD二次开发 添加按钮Ribbon
这篇文章是教大家怎样子创建自己的Ribbon按钮界面(如下图),以下示例代码在CAD2020中运行实现。 背景 创建一个属于自己的Ribbon按钮(如下图) 理解Ribbon、Panel、Tab的关系(如下图)ÿ…...
[RK3568 Android12] 添加自定义启动脚本
1:定义添加的脚本 比如为displayn2k.sh #!/system/bin/sh log "displayn2k.sh begin running" sleep 5 log "displayn2k.sh sleep 8" sleep 5 log "================sleep finished==========================" #remount /system/bin/mount -o …...
API 体系构建
前言 API 是模块或者子系统之间交互的接口定义。好的系统架构离不开好的 API 设计,而一个设计不够完善的 API 则注定会导致系统的后续发展和维护非常困难。在关键环节制定明确的 API 规范有助于 Service 对内提高产品间互通的效率,对外提供一致的使用体…...
RMPE: Regional Multi-Person Pose Estimation (AlphaPose)阅读笔记
区域多人姿态估计 ICCV 2017 论文链接 代码链接 摘要: 野外多人姿态估计具有挑战性。sota人体检测器不可避免存在定位和识别误差,这些误差可能导致依赖人体检测器的单人姿态估计器(SPPE)的失败。本文提出了一种新的区域多人姿态估…...
2月16日昆明面试经历部分考题
2月16日昆明面试部分考题 1.说说em和rem的区别?rpx呢? rem是相对于根元素(HTML)进行计算,而em是相对于当前元素或父元素的字体大小,如果当前文本的字体尺寸没有设置,则相对于浏览器的默认字体…...
ARC140D One to One
ARC140D One to One 题目大意 对于一个长度为nnn的整数序列X(x1,x2,…xn)X(x_1,x_2,\dots x_n)X(x1,x2,…xn),每个元素都在111到nnn之间,令f(X)f(X)f(X)表示以下问题的答案: 有一个nnn个顶点nnn条边的无向图(可能有重边和…...
联合身份验证与Cognito
Hello大家好,我们接下来讨论AWS联合身份验证的内容。 AWS联合身份验证 对于考试,联合身份验证部分是一块非常重要的内容。那什么是联合身份验证,它是做什么用的呢? 联合身份验证,是用来允许AWS外部用户,如…...
day18_常用API之String类丶Object类
String概述 java.lang.String 类代表字符串,String类定义的变量可以用于指向字符串对象,同时String类提供了很多操作字符串的功能,我们可以直接使用。Java 程序中的所有字符串文字(例如“abc”)都为此类的对象 特点:St…...
OSG三维渲染引擎编程学习之五十五:“第五章:OSG场景渲染” 之 “5.13 一维纹理”
目录 第五章 OSG场景渲染 5.13 一维纹理 5.13.1 一维纹理介绍 5.13.2 一维纹理示例 第五章 OSG场景渲染 OSG存在场景树和渲染树,“场景数”的构建在第三章“OSG场景组织”已详细阐明,本章开始...
RTOS随笔之FreeRTOS启动与同步方法
RTOS启动与同步机制RTOS启动任务切换场景任务同步机制队列信号量事件组任务通知任务延时RTOS启动 FreeRTOS在任务创建完成后调用函数vTaskStartScheduler()启动任务调度器。 vTaskStartScheduler()任务启动函数详解 void vTaskStartScheduler( void ) {BaseType_t xReturn;xR…...
【AI/NLP】InstructGPT数据标注问题
文章目录1 背景介绍2 标记员筛选2.1 标记员筛选标准3 数据集及其标注3.1 预训练3.2 微调3.2.1 SFT-demonstration data3.2.2 RM-comparison data3.3 数据集大小4 模型实现1 背景介绍 ChatGPT的训练过程与InstructGPT相近,大致分为三步: SFT:…...
三次握手和四次挥手
文章目录TCP三次握手为什么要三次握手三次握手可以携带数据吗?三次握手失败,服务端会如何处理?ISN代表什么,意义,何要动态随机什么是半连接队列第2次握手传回了ACK,为什么还要传回SYN?为什么要四次挥手TCP…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
day36-多路IO复用
一、基本概念 (服务器多客户端模型) 定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力 作用:应用程序通常需要处理来自多条事件流中的事件,比如我现在用的电脑,需要同时处理键盘鼠标…...
数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
算法—栈系列
一:删除字符串中的所有相邻重复项 class Solution { public:string removeDuplicates(string s) {stack<char> st;for(int i 0; i < s.size(); i){char target s[i];if(!st.empty() && target st.top())st.pop();elsest.push(s[i]);}string ret…...
简单介绍C++中 string与wstring
在C中,string和wstring是两种用于处理不同字符编码的字符串类型,分别基于char和wchar_t字符类型。以下是它们的详细说明和对比: 1. 基础定义 string 类型:std::string 字符类型:char(通常为8位)…...
