ospf 的 状态机详解
OSPF(开放最短路径优先,Open Shortest Path First)协议的状态机是其核心部分之一,用于确保路由器之间的邻接关系(neighbor relationship)建立和路由信息的交换。OSPF的状态机模型由多个状态组成,每个状态代表了不同的邻接关系阶段。下面是OSPF的状态机的详细解释:
OSPF邻接状态机的主要状态:
-
Down(初始状态)
- 这是邻接状态的起始状态。当两个路由器开始建立邻接关系时,它们首先处于状态。在此状态下,路由器尚未发送任何Hello报文,邻接关系未建立。
Down
- 这是邻接状态的起始状态。当两个路由器开始建立邻接关系时,它们首先处于状态。在此状态下,路由器尚未发送任何Hello报文,邻接关系未建立。
-
Attempt(尝试状态)
- 该状态只适用于点到点链路(Point-to-Point Link),并且仅在一些特定条件下出现。路由器发送Hello报文,但没有收到任何Hello报文,表示它正在尝试与邻居建立连接。
-
init(初始化状态)
- 在状态下,路由器已经发送Hello报文并等待对方的响应。如果路由器收到邻居的Hello报文,但该报文中没有包含它自己的Router ID,表示该路由器已经启动了初步的邻接建立过程。
Init
- 在状态下,路由器已经发送Hello报文并等待对方的响应。如果路由器收到邻居的Hello报文,但该报文中没有包含它自己的Router ID,表示该路由器已经启动了初步的邻接建立过程。
-
Two-Way(双向状态)
- 当两个路由器彼此交换Hello报文并确认彼此都能看到对方时,它们进入状态。在此状态下,邻居路由器之间确认可以进行后续的LSR(Link-State Request)交换,但并未交换详细的链路状态信息。状态是OSPF邻接状态的一种确认状态,它表示两路由器能够相互识别对方。
Two-Way
Two-Way
- 当两个路由器彼此交换Hello报文并确认彼此都能看到对方时,它们进入状态。在此状态下,邻居路由器之间确认可以进行后续的LSR(Link-State Request)交换,但并未交换详细的链路状态信息。状态是OSPF邻接状态的一种确认状态,它表示两路由器能够相互识别对方。
-
ExStart(交换开始状态)
- 在状态下,路由器开始交换LSDB(Link-State Database)。此状态下,路由器决定谁将作为主路由器(Master)和从路由器(Slave)。主路由器会先发送序列号较小的LSA(Link-State Advertisement),而从路由器则响应这些LSA。这一阶段的目的是为了初始化数据库交换过程。
ExStart
- 在状态下,路由器开始交换LSDB(Link-State Database)。此状态下,路由器决定谁将作为主路由器(Master)和从路由器(Slave)。主路由器会先发送序列号较小的LSA(Link-State Advertisement),而从路由器则响应这些LSA。这一阶段的目的是为了初始化数据库交换过程。
-
Exchange(交换状态)
- 进入状态后,路由器开始交换链路状态信息(LSA)。此时路由器会发送和接收包含链路状态摘要的LSA报文。这些报文包含了网络中的所有链路信息,但不包含完整的链路状态。路由器会根据这些LSA的摘要更新自己的链路状态数据库。
Exchange
- 进入状态后,路由器开始交换链路状态信息(LSA)。此时路由器会发送和接收包含链路状态摘要的LSA报文。这些报文包含了网络中的所有链路信息,但不包含完整的链路状态。路由器会根据这些LSA的摘要更新自己的链路状态数据库。
-
Loading(加载状态)
- 在状态下,路由器已通过状态交换了LSA摘要,如果路由器发现链路状态数据库中缺少某些LSA,它将请求邻居发送这些缺失的LSA。在状态期间,路由器继续从邻居那里请求并接收完整的链路状态信息。
Loading
Exchange
Loading
- 在状态下,路由器已通过状态交换了LSA摘要,如果路由器发现链路状态数据库中缺少某些LSA,它将请求邻居发送这些缺失的LSA。在状态期间,路由器继续从邻居那里请求并接收完整的链路状态信息。
-
Full(完全状态)
- 当路由器的链路状态数据库已经完全同步时,它们进入状态。此时,邻接关系建立完毕,路由器之间的路由信息已完全一致。状态表示OSPF邻接关系已经建立并且数据交换正常。
Full
Full
- 当路由器的链路状态数据库已经完全同步时,它们进入状态。此时,邻接关系建立完毕,路由器之间的路由信息已完全一致。状态表示OSPF邻接关系已经建立并且数据交换正常。
状态机的详细流程
-
Hello报文交换:
- 路由器首先通过发送Hello报文进行邻居发现。Hello报文是OSPF协议中建立邻接关系的基础。
-
初始化与确认邻居:
- 路由器通过Hello报文的交换,发现对方是否为有效邻居,并进入状态。接收到对方Hello报文后,路由器进入状态,确认双方能够通信。
Init
Two-Way
- 路由器通过Hello报文的交换,发现对方是否为有效邻居,并进入状态。接收到对方Hello报文后,路由器进入状态,确认双方能够通信。
-
交换链路状态摘要:
- 在和状态中,路由器开始交换链路状态摘要,确认链路状态数据库中的信息是否一致。
ExStart
Exchange
- 在和状态中,路由器开始交换链路状态摘要,确认链路状态数据库中的信息是否一致。
-
加载缺失的LSA:
- 如果在交换过程中发现链路状态数据库中缺少某些LSA,路由器会进入状态,请求并加载缺失的链路状态信息。
Loading
- 如果在交换过程中发现链路状态数据库中缺少某些LSA,路由器会进入状态,请求并加载缺失的链路状态信息。
-
建立完全同步:
- 一旦链路状态数据库完全一致,邻接关系就进入状态,OSPF邻接关系正式建立。
Full
- 一旦链路状态数据库完全一致,邻接关系就进入状态,OSPF邻接关系正式建立。
总结
OSPF的状态机有8个主要状态,通过这些状态的转换,OSPF确保了路由器之间能够建立稳定的邻接关系并同步链路状态信息。每个状态代表了邻接关系的不同阶段,从初始的“Down”状态到完全同步的“Full”状态,每个状态都有其明确的功能和目的。OSPF的状态机设计确保了网络拓扑信息的一致性,并帮助路由器进行快速、可靠的路由计算。
相关文章:
ospf 的 状态机详解
OSPF(开放最短路径优先,Open Shortest Path First)协议的状态机是其核心部分之一,用于确保路由器之间的邻接关系(neighbor relationship)建立和路由信息的交换。OSPF的状态机模型由多个状态组成,…...

TP5 动态渲染多个Layui表格并批量打印所有表格
记录: TP5 动态渲染多个Layui表格每个表格设置有2行表头,并且第一行表头在页面完成后动态渲染显示内容每个表格下面显示统计信息可点击字段排序一次打印页面上的所有表格打印页面上多个table时,让每个table单独一页 后端代码示例: /*** Nod…...

spring专题笔记(六):bean的自动装配(自动化注入)-根据名字进行自动装配、根据类型进行自动装配。代码演示,通俗易懂。
目录 一、根据名字进行自动装配--byName 二、根据类型进行自动装配 byType 本文章主要是介绍spring的自动装配机制, 用代码演示spring如何根据名字进行自动装配、如何根据类型进行自动装配。代码演示,通俗易懂。 一、根据名字进行自动装配--byName Us…...

监听器listener
文章目录 监听器( listener)对Application内置对象监听的语法和配置对session内置对象监听的语法和配置 监听器( listener) 对象与对象的关系: 继承关联 tomcat一启动创建的顺序:监听器,config,application(全局初始化参数)&am…...

重温设计模式--10、单例模式
文章目录 单例模式(Singleton Pattern)概述单例模式的实现方式及代码示例1. 饿汉式单例(在程序启动时就创建实例)2. 懒汉式单例(在第一次使用时才创建实例) 单例模式的注意事项应用场景 C代码懒汉模式-经典…...
Flutter动画学习二
如何在 Flutter 中使用自定义动画和剪裁(clipping)实现一个简单的动画效果。 前置知识点学习 AnimationController AnimationController 是 Flutter 动画框架中的一个核心类,用于控制动画的生命周期和状态。它提供了一种灵活的方式来定义动…...
讯飞语音听写WebApi(流式)【React Native版】
假设已有 Base64 编码的音频文件(16kHz, s16le, pcm) 1、获取websocket url import * as CryptoJS from crypto-js;/*** 获取websocket url*/ const getWebSocketUrl () > {const config {// 请求地址hostUrl: "wss://iat-api.xfyun.cn/v2/iat",host: "i…...
【Linux编程】一个基于 C++ 的 TCP 客户端异步(epoll)框架(一))
TcpClient 类的设计与实现:一个基于 C 的 TCP 客户端框架 在现代网络编程中,TCP(传输控制协议)客户端是实现网络通信的基础组件之一。本文将详细介绍一个基于 C 的 TcpClient 类的设计与实现,该类提供了创建 TCP 连接…...
PG备份恢复--pg_dump
pg_dump pg_dump 是一个逻辑备份工具。使用 pg_dump 可以在数据库处于使用状态下进行一致 性的备份,它不会阻塞其他用户对数据库的访问 。 一致性备份是 pg_dump 开始运行时,给数据库打了一个快照,且在 pg_dump 运行过程 中发生的更新将不会被备份。 …...

pikachu靶场搭建详细步骤
一、靶场下载 点我去下载 二、靶场安装 需要的环境: mysqlApaches(直接使用小皮面板Phpstudy:https://www.xp.cn/),启动他们 设置网站,把靶场的路径对应过来 对应数据库的信息 由于没有核对数据库的信…...
HarmonyOS NEXT开发进阶(五):装饰器讲解
一、Provide Consume 父组件与子组件的子组件(官方叫法:后代组件)双向同步数据(即,父组件与后代组件可以相互操作 Provide 修饰的数据) 注意:Provide 与 Consume声明的变量名必须一致。 import {TestChild } from .…...

【编译原理】往年题汇总(山东大学软件学院用)
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀编译原理_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 前言 2. …...
【漏洞复现】F5 BIG-IP Next Central Manager SQL注入漏洞(CVE-2024-26026)
免责声明 请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测,如有侵权请联系删除。本次测试仅供学习使用,如若非法他用,与平台和本文作…...
设计模式-创建型-单例模式
1. 单例模式简介 单例模式(Singleton Pattern)是一种常见的创建型设计模式,它确保一个类只有一个实例,并提供全局访问点。在很多情况下,我们只希望某个类在整个应用程序中有一个唯一的实例,且该实例需要在…...

VBA技术资料MF243:利用第三方软件复制PDF数据到EXCEL
我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…...

【2024最新】基于Python+Mysql+django的水果销售系统Lw+PPT
作者:计算机搬砖家 开发技术:SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。 专栏推荐:SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:Java精选实战项…...

一种寻路的应用
应用背景 利用长途车进行货物转运的寻路计算。例如从深圳到大连。可以走有很多条长途车的路线。需要根据需求计算出最合适路线。不同的路线的总里程数、总价、需要的时间不一样。客户根据需求进行选择。主要有一些细节: 全国的长途车车站的数据的更新: …...

编译openssl遇到错误Parse errors: No plan found in TAP output的解决方法
在编译openssl时 tar -zxvf openssl-1.1.1p.tar.gz cd openssl-1.1.1p ./config --prefix/usr --openssldir/etc/ssl --shared zlib make make test 遇到错误 Parse errors: No plan found in TAP output 解决方法: yum install perl-Test-Simple...
一文大白话讲清楚防抖和节流,设计封装防抖和节流,以及防抖和节流的应用场景
文章目录 一文大白话讲清楚防抖和节流,设计封装防抖和节流,以及防抖和节流的应用场景1. 防抖和节流的背景2. 节流3. 节流的应用场景4. 防抖5. 防抖应用场景 一文大白话讲清楚防抖和节流,设计封装防抖和节流,以及防抖和节流的应用场…...

Windows开启IIS后依然出现http error 503.the service is unavailable
问题背景 已启用IIS服务,配置步骤可以参考Windows10 IIS Web服务器安装配置 问题描述 在这一步浏览网站时,并没有出现默认首页,而是 http error 503 the service is unavailable 问题解决 参考 成功解决http error 503.the service is un…...

【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...

基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机
这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...

如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向
在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...

数据结构:泰勒展开式:霍纳法则(Horner‘s Rule)
目录 🔍 若用递归计算每一项,会发生什么? Horners Rule(霍纳法则) 第一步:我们从最原始的泰勒公式出发 第二步:从形式上重新观察展开式 🌟 第三步:引出霍纳法则&…...
字符串哈希+KMP
P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...