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-WayTwo-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。在状态期间,路由器继续从邻居那里请求并接收完整的链路状态信息。
LoadingExchangeLoading
- 在状态下,路由器已通过状态交换了LSA摘要,如果路由器发现链路状态数据库中缺少某些LSA,它将请求邻居发送这些缺失的LSA。在状态期间,路由器继续从邻居那里请求并接收完整的链路状态信息。
-
Full(完全状态)
- 当路由器的链路状态数据库已经完全同步时,它们进入状态。此时,邻接关系建立完毕,路由器之间的路由信息已完全一致。状态表示OSPF邻接关系已经建立并且数据交换正常。
FullFull
- 当路由器的链路状态数据库已经完全同步时,它们进入状态。此时,邻接关系建立完毕,路由器之间的路由信息已完全一致。状态表示OSPF邻接关系已经建立并且数据交换正常。
状态机的详细流程
-
Hello报文交换:
- 路由器首先通过发送Hello报文进行邻居发现。Hello报文是OSPF协议中建立邻接关系的基础。
-
初始化与确认邻居:
- 路由器通过Hello报文的交换,发现对方是否为有效邻居,并进入状态。接收到对方Hello报文后,路由器进入状态,确认双方能够通信。
InitTwo-Way
- 路由器通过Hello报文的交换,发现对方是否为有效邻居,并进入状态。接收到对方Hello报文后,路由器进入状态,确认双方能够通信。
-
交换链路状态摘要:
- 在和状态中,路由器开始交换链路状态摘要,确认链路状态数据库中的信息是否一致。
ExStartExchange
- 在和状态中,路由器开始交换链路状态摘要,确认链路状态数据库中的信息是否一致。
-
加载缺失的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…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...
JS设计模式(4):观察者模式
JS设计模式(4):观察者模式 一、引入 在开发中,我们经常会遇到这样的场景:一个对象的状态变化需要自动通知其他对象,比如: 电商平台中,商品库存变化时需要通知所有订阅该商品的用户;新闻网站中࿰…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
