(考研湖科大教书匠计算机网络)第四章网络层-第六节3:开放最短路径优先OSPF的基本工作原理

news2024/11/15 19:25:31
  • 获取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(n1),其中 n n n为路由器数量,这样每个路由器要向其他 n − 1 n-1 n1个路由器发送问候分组和链路状态更新分组

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-在这里插入图片描述

为了减少所发送分组的数量,OSPF采用选举指定路由器DR备用指定路由器BDR的方法,所有的非DR/BDR都只与DR/BDR建立邻居关系,非DR/BDR之间必须通过DR/BDR交换信息。若DR出现问题则由BDR顶替,

例如下图,假设已经选举好了DR和BDR,由于所有的非DR/BDR都只与DR/BDR建立邻居关系,因此之前的邻居关系数量降低为 2 ( n − 2 ) + 1 2(n-2)+1 2(n2)+1

在这里插入图片描述

(2)区域

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

例如下图是一个规模很大的网络,将其划分为一个自治系统。在该自治系统内,所有路由器都使用OSPF协议

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

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

相关文章

如何保证集合是线程安全的 ConcurrentHashMap如何实现高效地线程安全?

第10讲 | 如何保证集合是线程安全的? ConcurrentHashMap如何实现高效地线程安全? 我在之前两讲介绍了 Java 集合框架的典型容器类,它们绝大部分都不是线程安全的,仅有的线程安全实现,比如 Vector、Stack,在性能方面也…

智能家居项目(一)之基础概念引入

目录 一、智能家居功能整体流程 二、设计模式 三、C语言中结构体的新玩法,承接上一步 四、工厂模式概念引入 一、智能家居功能整体流程 1.控制区语音识别模块socket客户端 2.外设区继电器组控制灯,远程终端子系统,窗帘等,火灾…

数据分析面试---假设检验知识点

文章目录一、假设检验是干啥的二、假设检验基本原理/思想三、假设检验步骤显著性检验(significance test)统计显著性和置信度补充:第一类错误和第二类错误p值是啥链接1数理统计中的统计推断问题主要有两大类:参数估计问题和假设检验问题参数估计问题 所指…

[datawhale202302]CS224W图机器学习:图的基本表示及特征工程

结论速递 本章涉及了图基本表示及传统的特征工程。 图由节点和连接组成,节点和连接上都可以有不同的属性。根据属性的特点,分为几类不同的图,其中异质图和二分图是比较重要的特殊图。 图可以用邻接矩阵进行结构化表示,如果图过于…

单元测试的优势

单元测试提供了许多好处,包括及早发现软件错误、促进变化、简化集成、提供文档来源以及许多其他优点,接下来将对其进行详细介绍。 1、使流程更灵活 单元测试的主要好处之一是它使编码过程更加灵活,更遵循敏捷开发方法论。 当向软件中添加越来…

如何加入new bing候补名单

如何加入new bing候补名单 我们都知道现在最新版edges中已经提示我们可以加入new bing候补名单,但国内环境下无法正常加入new bing候补名单,这篇文章讲告诉你如何绕过限制加入new bing候补名单 下载配置 HeaderEditor 插件 下载地址microsoftedge.mic…

XDSpy APT组织近期针对俄罗斯国防部的攻击活动分析

一 概述 XDSpy是ESET于2020年首次披露的APT组织,该组织最早活跃于2011年,主要针对东欧和塞尔维亚地区的政府、军队、外交部及私人公司进行窃密活动。2020年9月,该组织在攻击活动中使用Covid-19主题诱饵下发恶意Windows脚本文件(W…

高通平台开发系列讲解(Sensor篇)IAM20680驱动程序的使用

文章目录 一、相关编译宏二、设备树配置三、打开iio自动挂载脚本四、模块加载验证沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇文章将介绍 IAM20680 驱动程序。 一、相关编译宏 目录:arch/arm/configs CONFIG_IIO_BUFFER=y CONFIG_IIO_KFIFO_BUF=y CONFIG_II…

Highcharts.Chart

Highcharts 是一个使用javascript 脚本来生成图表的工具,和jfreechart 作用类似,都用来生成各种图表,并支持图片的导出和打印。 从官网 www.highcharts.com 上下载的压缩表中的example中有各种图表的例子。 要编写生成图表的例子建议从 文…

生成小分子力场TOP

生成小分子力场TOP ATB网站 生成基于Amber力场适配gromacs格式TOP文件, 对于使用GaussView 计算resp电荷可以参考: https://blog.csdn.net/weixin_42486623/article/details/129055384 下面我们使用上面是生成的mol2文件来生成基于Amber的力场&#x…

Linux网络编程 | 彻底搞懂零拷贝(zero-copy)技术

传统文件传输的问题 在网络编程中,如果我们想要提供文件传输的功能,最简单的方法就是用read将数据从磁盘上的文件中读取出来,再将其用write写入到socket中,通过网络协议发送给客户端。 ssize_t read(int fd, void *buf, size_t …

JVM05 方法区

Person:存放在元空间,也可以说方法区 person:存放在Java栈的局部变量表中 new Person():存放在Java堆中 1.方法区的理解 方法区主要存放的是 Class,而堆中主要存放的是 实例化的对象 方法区(Method Area…

ubuntu清理挖矿病毒

0 序言 我之前搭建的hadoop用于测试,直接使用了8088和9870端口,没有放入docker,从而没有端口映射。于是,就被不法之徒盯上了,hadoop被提交了很多job,使得系统被感染了挖矿病毒,在前几天阿里云站…

企业实施了IM移动平台后,可以在上面做什么?

企业实施了IM移动平台后,可以有很多服务场景,其中员工服务平台是一个很好的场景组合。企业固然是以赢利为目的的组织,然而,在一个企业中同样需要有人文关怀的氛围。这种人文关怀,说到底,就是一种以员工为本…

阿里巴巴主流数据库连接池Druid入门

一.数据库连接池的必要性 (一).传统数据库连接模式的的步骤 1.在主程序中创建连接 2.进行sql操作 3.关闭数据库连接 (二).传统数据库连接模式存在的问题 1.浪费时间:每次连接时都要验证登录和将conn加载到内存, 2.不能大规…

使用ThreadLocal实现当前登录信息的存取

有志者,事竟成 文章持续更新,可以关注【小奇JAVA面试】第一时间阅读,回复【资料】获取福利,回复【项目】获取项目源码,回复【简历模板】获取简历模板,回复【学习路线图】获取学习路线图。 文章目录一、使用…

【多线程与高并发】- 线程基础与状态

线程基础与状态 😄生命不息,写作不止 🔥 继续踏上学习之路,学之分享笔记 👊 总有一天我也能像各位大佬一样 🏆 一个有梦有戏的人 怒放吧德德 🌝分享学习心得,欢迎指正,大…

漏洞深度分析|CVE-2023-25141 sling-org-apache-sling-jcr-base存在JNDI注入漏洞

项目介绍 Apache Sling提供对可插入资源提供程序的支持。虽然这允许将自定义数据提供程序非常灵活和高效地集成到Sling中,但这种集成是在Sling的资源 API 级别上完成的。可能依赖于能够将资源适配到JCR节点并继续使用JCR API的遗留代码将不适用于此类资源提供者。 …

微信小程序自动化测试最佳实践(附 Python 源码)

目录:导读 小程序运行环境 微信小程序技术架构 使用 Chrome 调试小程序 小程序的性能测试 微信小程序的自动化测试​编辑 源码-微信小程序自动化测试 Python 版代码示例 小程序自动化测试需要跨过的几个坎 写在最后 随着微信小程序的功能和生态日益完善&…

“一号文件”聚焦三农,VR全景助农发展数字化

一号文件为何如此聚焦三农?因为三农是拼经济的基础,也是筑牢底盘的基本保证。现如今,农业基础还不稳固,而且城乡区域发展和居民收入差距依旧较大,为了解决城乡发展不平衡、农村发展不充分等矛盾,发展数字化…