学习笔记——动态路由——OSPF(OSPF协议的工作原理)

八、OSPF协议的工作原理

1、原理概要

(1)相邻路由器之间周期性发送HELLO报文,以便建立和维护邻居关系

(2)建立邻居关系后,给邻居路由器发送数据库描述报文(DBD),也就是将自己链路状态数据库中的所有链路状态项目的摘要信息发送给邻居路由器

(3)收到数据库描述报文后,若发现自己缺少其中某些链路状态项目,则会发送链路状态请求报文(LSR)。

(4)对方收到链路状态请求报文后,则会将其所缺少的链路状态项目的详细信息封装在链路状态更新报文(LSU)中发送回去

(5)收到链路状态更新报文后,将这些信息添加到自己的链路状态数据库中,随后发回链路状态确认报文(LSACK)

(1)HELLO协议

1)发现邻居并监测与邻居链路的状态

OSPF路由器定期向所有邻居路由器发送HELLO报文。报文中包含了最近一段时间内发送过HELLO报文的邻居路由器。

发送周期为10秒,40秒未收到来自邻居路由器的 HELLO 报文,则认为该邻居路由器不可达

如果路由器在邻居发送的HELLO报文中发现了自己的标识符,就表明这两个邻居路由器之间建立了双向通信链路。每个路由器都会建立一张邻居表。

HELLO协议在不同类型网络上的工作过程不同:

点到点网络、虚拟链路:路由器向对方发送 HELLO 报文;

点到多点网络:路由器仅向能直接通信的邻居发送 HELLO 报文;

广播网络:每台路由器定期组播发送 HELLO 报文;

NBMA网络:需要配置后 HELLO 协议才能正常工作。

2)DR/BDR 的选举

广播网络或 NBMA 网络上每台路由器都清楚网络的链路状态。

若每台路由器都发送网络的链路状态,会有很多重复发送。OSPF 协议规定:

在广播网络或NBMA网络上选举一个指定路由器(DR)和一个备份指定路由器(BDR);

只有DR能代表该网络发送网络的链路状态;

DR发生故障后,BDR就变成DR。

当路由器连接到广播网络或NBMA网络上的接口启动时:(下左图)

检查该网络上是否已存在DR和BDR:存在就接受;否则,比较自己和其他路由器的优先级:

- 优先级最高的路由器成为DR;优先级次高的路由器成为BDR。优先级:0-255,默认值是1

- 若两个路由器的优先级相同,标识符(ID)更大的胜出。

DR和BDR一旦选定,即使OSPF区域内新增优先级更高的路由器,DR和BDR也不重新选举。(下右图)

(2)链路状态数据库同步

OSPF邻接路由器之间的链路状态数据库同步大体上可分为三步:

双方交换各自的链路状态数据库摘要

向对方请求链路状态并更新自己的数据库

若有链路的状态发生变化,更新自己的数据库,并通知对方

1)交换摘要

OSPF路由器定期与邻接路由器交换链路状态数据库摘要:

数据库摘要用一组数据库描述报文描述;

每个数据库描述报文包含一组链路状态通告(LSA)的首部;

LSA首部有其唯一标识及新旧标记。

2)同步信息

发送和接收数据库描述报文的过程称为“数据库交换过程”,其中:

若路由器发现邻接路由器某些链路的状态更新,或自己没有,就向对方发送链路状态请求报文;

邻接路由器发送链路状态更新报文进行响应。

两个邻接路由器的链路状态数据库达同步后,称它们之间建立了完全邻接关系(fully adjacent)。

3)新情况下的同步

路由器监测其所有链路,若有链路的状态发生改变:

更新自己的链路状态数据库;

向邻接路由器发送链路状态更新报文,通知变化的链路状态。

4)洪泛机制

OSPF协议定义了一种可靠的洪泛(reliable flooding)机制,用于在 OSPF 路由域中快速扩散链路状态的变化。

可靠是指收到链路状态更新报文后要发送确认,收到重复的更新报文无需再次转发,但要发送一次确认。

路由器接收到链路状态更新报文后,逐个检查其中的 LSA:

若LSA的状态更新,或本地不存在,就用LSA更新自己的数据库;

同时,在某些接口上继续发送该LSA,称为“洪泛” 。

注意:路由器并不是直接发送接收的链路状态更新报文,而是发送根据自己的数据库生成的链路状态更新报文。

通过各路由器洪泛法发送封装有自己LSA的LSU报文,各路由器的LSDB最终达到一致。

使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各种到达其他各路由器的最短路径,即构建各自的路由表。


整个华为数通学习笔记系列中,本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记,某些笔记段落中可能有部分文字或图片与网络中有雷同,并非抄袭。完处于学习态度,觉得这段文字更通俗易懂,融入了自己的学习笔记中。如有相关文字涉及到某个人的版权利益,可以直接联系我,我会把相关文字删除。【VX:czlingyun    暗号:CSDN】

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

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

相关文章

【Python自动化测试】如何才能让用例自动运行完之后,生成一张直观可看易懂的测试报告呢?

小编使用的是unittest的一个扩展HTMLTestRunner 环境准备 使用之前,我们需要下载HTMLTestRunner.py文件 点击HTMLTestRunner后进入的是一个写满代码的网页,小编推荐操作:右键 --> 另存为,文件名称千万不要改 python3使用上述…

【MySQL】(基础篇十八) —— 触发器

触发器 本文学习什么是触发器,为什么要使用触发器以及如何使用触发器,还介绍创建和使用触发器的语法。 MySQL语句在需要时被执行,存储过程也是如此。但是,如果你想要某条语句(或某些语句)在事件发生自动执…

如何断点调试opencv源码

分几个步骤: 1、下载opencv-4.10.0-windows.exe https://opencv.org/releases/ 2、想要调试opencv的源码,只需要将这两个文件拷贝到我们自己项目的可执行文件的同级目录内即可。 完成拷贝后,直接在vs工程中打断点F11进行单步调试&#xff…

【漏洞复现】FastAdmin——任意文件读取漏洞

声明:本文档或演示材料仅供教育和教学目的使用,任何个人或组织使用本文档中的信息进行非法活动,均与本文档的作者或发布者无关。 文章目录 漏洞描述漏洞复现测试工具 漏洞描述 FastAdmin是一个免费开源的后台管理框架,其lang存在…

前端初学日记 (四) VUE指令

VUE 概述 Vue是一套用于构建用户界面的渐进式框架 Vue.js 是前端的主流框架之一 优点 1、体积小 压缩后 33K 2、更高的运行效率 3、双向数据绑定,简化 Dom 操作 基本指令 v-bind <!DOCTYPE html> <html><head><meta charset"utf-8">…

linux yum和apt指令

目录 yum apt yum和apt的区别 优缺点 总结 yum yum&#xff08;Yellowdog Updater, Modified&#xff09;是一个在Fedora、RedHat以及CentOS等基于RPM的Linux发行版中的Shell前端软件包管理器。它的主要功能包括&#xff1a; 软件包管理&#xff1a;从指定的服务器自动下…

计算机网络 —— 网络字节序

网络字节序 1、网络字节序 (Network Byte Order)和本机转换 1、大端、小端字节序 “大端” 和” 小端” 表示多字节值的哪一端存储在该值的起始地址处&#xff1b;小端存储在起始地址处&#xff0c;即是小端字节序&#xff1b;大端存储在起始地址处&#xff0c;即是大端字节…

以创新赋能引领鸿蒙应用开发,凡泰极客亮相华为HDC2024

6月21日至23日&#xff0c;华为开发者大会2024在松山湖举行。大会现场&#xff0c;华为发布了HarmonyOS、盘古大模型等方面最新进展。国内外众多企业齐聚一堂&#xff0c;共迎新商机、共创新技术、共享新体验。 凡泰极客作为鸿蒙生态的重要战略合作伙伴&#xff0c;同时也是鸿…

AUTOSAR NvM模块(二)

NvMMaxNumOfReadRetries 定义了最大读取重试次数。当前版本的NvM不支持此功能&#xff0c;因此此参数始终需要设置为0。 NvMMaxNumOfWriteRetries 定义了最大写入重试次数。当前版本的NvM不支持此功能&#xff0c;因此这个参数总是需要设置为0。 NvMNvBlockLength 定义了N…

Winform中控件与模型MVC

在Windows Forms (WinForms) 应用程序开发中&#xff0c;用户控件(UserControl)与模型(Model)的结合使用是一种常见的MVC&#xff08;Model-View-Controller&#xff09;模式的体现&#xff0c;能够有效地分离界面表示层与业务逻辑层&#xff0c;从而提高代码的可维护性和复用性…

【vue3|第14期】深入Vue3自定义Hooks:掌握组件逻辑复用的核心

日期&#xff1a;2024年6月26日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

动力环境监控系统内部绝密报价!动环监控系统全套价格一览

作为一个综合性的监控系统&#xff0c;动力环境监控系统包含动力系统、环境系统、安防系统等&#xff0c;是整个机房的控制中枢&#xff0c;无论哪里出现问题都可以实时监测到&#xff0c;并在第一时间通知管理人员。当然&#xff0c;根据机房大小和监测需求不同&#xff0c;动…

Windows系统开启python虚拟环境

.\env4socre\Scripts\activate : 无法加载文件 E:\SocreMan\env4socre\Scripts\Activate.ps1&#xff0c;因为在此系统上禁止运行脚本。 环境&#xff1a;windows 11、vscode 1、用管理员权限打开powershell 输入set-executionpolicy remotesigned&#xff0c;选择Y 2、返回v…

初识ECMAScript 6 (ES6)

ECMAScript 6 (ES6)&#xff0c;也称为 ECMAScript 2015&#xff0c;是 JavaScript 的一个主要更新&#xff0c;增加了许多新的特性和改进&#xff0c;使得编写 JavaScript 更加简洁、高效和易于维护。以下是 ES6 中的一些重要特性及其详细阐述&#xff1a; 1. 块级作用域 (Bl…

稀疏迭代最近点算法(Sparse ICP)

2013年&#xff0c;2013年Sofien Bouaziz等提出了一种新的ICP改进算法&#xff0c;稀疏迭代最近点(Sparse Iterative Closest Point, Sparse ICP)算法。更多扩展资料可参看随书附赠资源中的说明文档。 Sparse ICP算法的设计的灵感、应用范围、优缺点和泛化能力 两个几何数据集…

oninput和onchange事件有什么区别?

onchange事件&#xff1a;触发条件&#xff1a;在域内容更改时触发&#xff0c;也可用于单选框和复选框改变后触发&#xff1b;作用 对象&#xff1a;select、input、textarea。 oninput事件&#xff1a;触发事件&#xff1a;在域内容更改时触发&#xff08;严格说是用户输入时…

NAS—网络附加存储

关键词&#xff1a;私有化存储、Nas、云盘、群晖、Tailscale、 前言 身处于互联网时代的我们&#xff0c;几乎每时每刻都在与计算机打交道&#xff0c;而软件则作为我们和计算机之间沟通的桥梁&#xff0c;因此可以认为软件的作用是&#xff1a;将计算机能力进行包装&#xf…

【React】如何监听LocalStorage的变化

在代码中遇到了需要在react中监听localStorage的数据&#xff0c;下意识想到的是按照useEffect监听useState变化那一套&#xff0c;但是未生效。 代码如下&#xff1a; useEffect(()>{console.log("变化了") },[localStorage.getItem(data)])需要使用监听器 us…

Java基础入门day72

day72 mybatis mybatis的实现方式 三种实现方式&#xff1a; 纯xml方式&#xff0c;namespace随便写&#xff0c;id随便写&#xff0c;只要保证整个项目namespaceid唯一即可 xml接口的方式&#xff0c;namespace必须是接口的全路径&#xff0c;id必须是接口的方法名&#xf…

瓦罗兰特新赛季更新资讯 瓦罗兰特新赛季免费加速器

瓦罗兰特新赛季来喽&#xff0c;这是一款由拳头开发的免费第一人称射击游戏&#xff0c;游戏凭借其独特的玩法和丰富的英雄选择吸引了大量玩家。 我们可以在游戏中选择自己喜欢的角色出场与敌人进行对战&#xff0c;而且每一个角色都有自己独特的道具以及技能&#xff0c;使用好…