matter中的Fabric(网络结构)

什么是Fabric?

Fabric可以被理解为一组相互信任的设备和控制器,它们共享一个共同的信任域。这意味着在同一个Fabric中的设备和控制器之间可以进行安全的通信,而无需额外的身份验证或安全检查。每个Fabric有一个唯一的标识,确保Fabric之间是隔离的,防止权限混乱。一个Matter Fabric就是一个Matter网络,一个Matter Fabric中的所有节点共享同一个根证书,所以他们可以相互通信,每个Matter Fabric会分配一个64bit的ID进行标识。一般来说,一个Matter生态就是一个Matter fabric,比如苹果的Home就是一个fabric,谷歌的home又是另一个fabric。

Fabric的组成:

一个Fabric主要由以下几个部分组成:

控制器(Controller)

控制器负责管理Fabric内的设备,执行设备的配置、管理和操作指令。

一个Fabric通常有一个或多个控制器。例如,智能手机、智能音箱、家用中枢设备都可以充当控制器角色。

设备(Node)

设备是由控制器管理的实际智能硬件,比如灯泡、温控器、摄像头等。

Fabric中的每个设备都有一个唯一的身份标识符(Node ID),并与控制器共享信任关系,以确保通信的安全性。

Matter Bridge(网桥)可能有

含义:Matter网桥是连接Matter设备和其他不支持Matter协议的智能设备或协议的桥梁,允许不同网络协议之间的设备互操作。

功能

  • 协议转换:Matter网桥可以将不同协议的设备(如Zigbee、Z-Wave、蓝牙等)映射为Matter设备,使它们能够与Matter生态系统中的设备通信。
  • 互操作性:通过网桥,家庭中的老旧设备或非Matter设备也可以被集成到Matter网络中,扩大了设备的兼容性和使用范围。 应用:典型应用是将Zigbee、Z-Wave等设备连接到Matter网络中,网桥充当协议转换的媒介。

Fabric Identifier(Fabric标识符)

每个Fabric都有一个唯一的标识符,确保不同的Fabric之间不会产生混淆。即便是同一家庭的不同设备也可以加入不同的Fabric,而不会相互影响。

操作凭证(Operational Credentials)

这些是控制器和设备之间进行身份认证和加密通信的凭证。它们确保Fabric中的所有通信都是加密和受信任的。

Fabric的特性:

信任域

在Matter协议中,Fabric表示的是一个受信任的网络结构,Fabric内的所有设备和控制器共享相同的信任域。这意味着Fabric中的所有设备可以相互通信和控制,而无需额外的信任验证。控制器可以轻松地向Fabric中的设备发送命令或读取设备状态。

安全通信

Fabric中的通信通过强大的加密机制保护,确保设备和控制器之间的消息在传输过程中不会被截获或篡改。

每个Fabric都有独立的加密密钥,保证Fabric间的隔离性。即便设备加入了多个Fabric(见Multi-Fabric),它在每个Fabric中的通信依然是独立加密的。

Fabric的唯一性与隔离性

每个Fabric有一个唯一的标识符,保证了Fabric之间的隔离。不同的Fabric代表不同的信任域和安全通信通道,即使一个设备加入了多个Fabric,不同Fabric的控制器之间仍不会共享设备的权限或控制。

Fabric的使用场景

单一家庭网络(Single-Fabric Scenario)

在典型的智能家居环境中,一个家庭可以有一个Fabric,所有的Matter设备和控制器都属于这个Fabric。用户可以通过智能手机、智能音箱等控制器管理和控制家中的所有设备。

例如,用户可以通过智能手机App控制灯光、门锁和恒温器,而这些设备都在同一个Fabric中,并且它们之间可以相互通信和协作。

多家庭网络或共享设备(Multi-Fabric Scenario)

Fabric允许多个Fabric并存,这意味着一个设备可以同时属于多个不同的Fabric。比如,一个设备可以既属于家庭的Fabric,又属于工作场所的Fabric,或者同时属于云服务提供商的Fabric。

这种设计使得设备可以在多个不同的控制环境中运行,而不会在控制权限上产生冲突。例如,你可以在家中通过本地控制器控制家中的设备,但在不同时,你的云服务提供商的控制器也可以对设备进行远程监控和操作。

隔离的控制权限

Fabric之间的隔离意味着即便一个设备加入了多个Fabric,每个Fabric的控制器之间也不会共享控制权限。例如,如果你有一个工作Fabric和家庭Fabric,工作Fabric中的控制器无法控制家庭Fabric中的设备,反之亦然。

Fabric的管理

  • Commissioning(设备加入Fabric)

    • 当一个设备被添加到一个Fabric中时,它需要通过一个称为“commissioning”的过程进行设备加入。控制器负责将设备纳入Fabric并生成相应的操作凭证,使设备和控制器可以相互验证身份并安全通信。
  • 设备的移除和重置

    • 如果设备需要退出一个Fabric,它可以被安全移除。设备被移除后,它将失去与该Fabric中的控制器的信任关系。为了重新加入另一个Fabric或控制器,设备需要经过重新commissioning的过程。

多个Fabric之间的相互通信:

设备跨多个Fabric加入(Multi-Fabric Scenario)

虽然不同的Fabric彼此隔离,但设备本身可以同时加入多个Fabric。这种场景下,设备本质上在多个不同的信任域中工作,但它在每个Fabric中的通信是独立的。这是通过以下方式实现的:

  • 独立的信任关系:设备在每个Fabric中都有独立的凭证和加密密钥,因此即使设备属于多个Fabric,不同Fabric之间的数据流也不会互相影响或泄露。
  • 不同的控制器控制:在Multi-Fabric模式下,设备可以被多个控制器(属于不同的Fabric)控制。例如,设备可以被家里的本地控制器控制(家庭Fabric),同时也可以通过云端的控制器管理(云服务Fabric),但这两者互不影响。

示例场景

  • 一盏智能灯可以同时属于家庭的Fabric和办公室的Fabric。你可以通过家庭的控制器(比如智能手机)在家里控制它,但当你在办公室时,办公室的控制器也可以控制这盏灯。

Multi-Fabric模式下,一个设备会拥有多个凭证和加密密钥

设备加入多个Fabric的过程:

加入第一个Fabric

当设备首次加入一个Fabric时(如家庭Fabric),控制器会与设备进行通信,并通过设备配对的过程生成操作凭证和加密密钥。设备与控制器之间建立起安全通信的信任关系。

加入第二个Fabric

当设备加入第二个Fabric时(如办公室Fabric),它将与该Fabric的控制器重新进行认证,生成新的操作凭证加密密钥。这些凭证和密钥与之前在家庭Fabric中生成的凭证和密钥是完全独立的。

多Fabric同时存在

当设备同时属于多个Fabric时,它可以根据不同的需求在不同Fabric中进行操作。例如,当家庭控制器向设备发送指令时,设备使用家庭Fabric中的凭证和密钥进行通信;当办公室控制器发送指令时,它使用办公室Fabric的凭证和密钥进行通信。

节点在Fabric中的通信机制:

节点ID(Node ID)

    1. 每个设备在加入Fabric时,会获得一个唯一的节点ID(Node ID),这个ID在Fabric内是唯一的。节点ID用于标识Fabric中的每个设备。
    2. 当一个控制器或设备要与另一个设备通信时,它会使用目标设备的节点ID来定位它,而不是直接使用IP地址。这是Matter协议通信的基础寻址方式。

Fabric ID

    1. 每个Fabric有一个Fabric ID,标识该Fabric中的所有节点。Fabric ID加上节点ID可以唯一标识某个Fabric中的特定设备。
    2. 当设备或控制器在多Fabric环境下工作时,Fabric ID确保了设备知道自己要操作的目标是在哪个Fabric中,以避免混淆。

组播(Multicast)

    1. Matter协议支持使用组播来高效地向多个设备发送控制指令,尤其是在多设备同时响应某个命令的场景(例如群组控制灯光)。控制器可以向一组设备发送单一的组播消息,而不需要逐个设备发送。
    2. 设备通过其节点ID或组ID(Group ID)接收消息,然后决定是否对消息进行响应。组ID用于将多个设备分组,方便在相同类型设备之间进行批量操作。

服务发现(Service Discovery)

    1. Matter使用**mDNS(多播DNS)**来进行设备和服务的发现。通过mDNS,设备可以在网络中广播自己的存在,并提供它们的节点ID等信息。
    2. 当控制器想要找到特定的设备时,它可以通过mDNS来查找相应的节点ID。设备会在其网络范围内进行公告,使控制器知道哪些设备可以被控制。

路径计算和消息路由

    1. Matter协议基于IP网络(通常是IPv6),因此底层网络层仍然使用传统的IP地址来进行通信。设备和控制器之间的消息在传输时会被封装在IP层消息中,设备的IP地址在这个阶段仍然发挥作用。
    2. 尽管在传输过程中可能使用IP地址,但Matter协议主要通过节点ID进行设备间的寻址和控制,而不是直接使用IP地址作为逻辑目标。

目录服务(Directory Service)

    1. 在一些场景中,Matter可以使用目录服务来维持设备的注册信息。这种服务可以帮助控制器快速找到某个特定节点的设备和其关联的服务。这种服务通常用于较大规模的Matter网络中,帮助优化设备和服务发现。

寻址过程举例:

点对点控制
    1. 当一个控制器要控制特定设备时,它会根据设备的节点ID(以及可能的Fabric ID)发送指令。
    2. 控制器首先通过mDNS发现设备,并得到其节点ID和相关信息,然后通过设备的节点ID定位它。
    3. 消息通过Matter协议封装,并在底层网络中传输时使用设备的IP地址。目标设备接收消息后,解封并通过节点ID确认是否是自己的控制消息。
组控制
    1. 如果控制器想要控制多个设备(如一组灯光),则它可以使用组播,向拥有相同组ID的设备发送命令。所有设备都会接收到该命令,但只有与该组ID匹配的设备才会响应。
    2. 这大大提高了群组控制的效率,不需要每次都对每个设备单独发送消息。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android调整第三方库PickerView宽高--回忆录

一、效果 // 时间选择implementation com.contrarywind:Android-PickerView:4.1.9 多年前,使用到事件选择器,但是PickerView默认宽度使满屏的,不太符合业务需求,当时为此花了许多时间,最终找到了解决方案,…

使用 Milvus 和 Streamlit 搭建多模态产品推荐系统

我们可以使用 Milvus 搭建多模态 RAG 应用,用于产品推荐系统。用户只需简单上传一张图片并输入文字描述,Google 的 MagicLens 多模态 Embedding 模型就会将图像和文本编码成一个多模态向量。然后,使用这个向量从 Milvus 向量数据库中找到最相…

JVM——Java虚拟机内存初识(面经篇之JVM内存)

网上说的太详细了,真不利于我的初识和记忆, 例如:堆区的young, old,讲了一大堆,结果,我连这些区域是干什么的都不知道,存储什么的都不知道, 害得是我自己总结: 堆&#x…

JavaWeb【day08】--(MySQL-Mybatis入门)

数据库开发-MySQL 1. 多表查询 1.1 概述 1.1.1 数据准备 SQL脚本: #建议:创建新的数据库 create database db04; use db04; ​ -- 部门表 create table tb_dept (id int unsigned primary key auto_increment comment 主键ID,name v…

各类AI工具编程能力测试对比

各类AI工具编程能力对比 现在各类AI工具火爆,擅长各类问题解决,闲来无事,验证下各类AI工具的编程能力如何。问题:c 实现杨辉三角,并main函数测试 kimi 对话窗口输入问题,得到了c的完整程序: …

通过redis-operator 来部署 Redis Cluster 集群

安装 Redis Operator 首先,需要安装 redis-operator。可以通过 Helm 或直接应用 YAML 文件来安装。 使用 Helm 安装: helm repo add ot-helm https://ot-container-kit.github.io/helm-charts/ helm install redis-operator ot-helm/redis-operator --…

B树和B+树

B树和B树是两种用于数据库和文件系统中的自平衡树数据结构,它们可以保持数据有序,同时支持快速的查找、插入和删除操作。下面是它们的基本介绍: B树(B-Tree) 定义:B树是一种平衡的多路搜索树,…

数据分析新星,DuckDB与Pandas处理大数据速度对比

大家好,Pandas库众所周知,适合数据分析新手入门,但在大数据面前却显得处理缓慢。相比之下,开源的DuckDB以其卓越的列式存储性能,在大数据处理上速度惊人,速度远超Pandas。而且,DuckDB配备了Pyth…

JS设计模式之“语言之魂” - 原型模式

前言 当我们学习JavaScript的时候,经常会听到原型(prototype)、原型链(prototype chain)和原型模式(prototype pattern)这些概念,它们之间有什么关联呢?怎么样才能使用好原型模式呢…

基于yolov8的西红柿检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的西红柿检测系统是一种利用深度学习技术的创新应用,旨在通过自动化和智能化手段提高西红柿成熟度检测的准确性和效率。该系统采用YOLOv8算法,该算法是深度学习领域中的先进目标检测模型,具备实时检测和多目标识别的…

OpenGL Texture C++ 预览Camera视频

OpenGL是一个图形API,并不是一个独立的平台。包含了一系列可以操作图形、图像的函数。基于Texture纹理强大的功能,本篇文章实现Android OpenGL Texture C 预览Camera视频流的功能。 项目github地址:https://github.com/wangyongyao1989/WyFFm…

第T10周:数据增强

>- **🍨 本文为[🔗365天深度学习训练营](https://mp.weixin.qq.com/s/0dvHCaOoFnW8SCp3JpzKxg) 中的学习记录博客** >- **🍖 原作者:[K同学啊](https://mtyjkh.blog.csdn.net/)** 在本教程中,你将学会如何进行数…

iOS——APP启动流程

APP启动 APP启动主要分为两个阶段:pre-main和main之后,而APP的启动优化也主要是在这两个阶段进行的。 main之后的优化:1. 减少不必要的任务,2.必要的任务延迟执行,例如放在控制器界面等等。 APP启动的大致过程&#…

云原生技术:‌引领数字化转型的新浪潮

云原生技术:‌引领数字化转型的新浪潮 在数字化转型的时代背景下,‌企业面临着前所未有的挑战与机遇。‌随着云计算技术的飞速发展,‌云原生技术作为一种新型的应用程序开发和部署方式,‌正逐步成为构建高可用、‌可扩展应用程序…

景联文科技:专业视频标注服务助力计算机视觉应用升级

视频标注是指对视频内容进行分析,并在视频中的特定对象、行为或事件上添加标签的过程。 视频标注包括: 1. 对象检测与跟踪 •对象检测:在每一帧中识别并定位特定的对象,如人、车、动物等。 •对象跟踪:跟踪这些对象…

使用html+css+layui实现动态表格组件

1、概述 需求,表格第一列指标可配置通过后端api传进来,表格显示数据以及鼠标触摸后气泡弹出层提示信息都是从后端传过来,实现动态表格的组件!!实现效果如下: 接口标准数据格式如下: {"da…

Unity TMP (TextMeshPro) 更新中文字符集

TMP更新中文字符集 1 字符集缺失说明2 字体的字符表2.1 字符表更新模式:动态2.2 字符表更新模式:静态 3 更新字符集步骤3.1 打开纹理更新面板3.1 导入文本文件3.3 关于警告处理 4 修改TMP默认字体设置 1 字符集缺失说明 使用TMP显示中文需要用到中文字体…

SprinBoot+Vue问卷调查微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平…

uniapp / uniapp x UI 组件库推荐大全

在 uniapp 开发中,我们大多数都会使用到第三方UI 组件库,提起 uniapp 的UI组件库,我们最常使用的应该就是uview了吧,但是随着日益增长的需求,uview 在某些情况下已经不在满足于我们的一些开发需求,尽管它目…

单例模式的总结

常规模式:有属性/构造方法/普通方法,也可以在类中执行主方法,也可以在test类中执行主方法 单例模式是什么? 单例模式:类只有1个对象;保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式是在内…