zoukankan      html  css  js  c++  java
  • Mesh Profile (2.1,2.2)层次结构和操作概览

    (本文翻译自《mesh profile v1.0》2.1 Layered architecture和2.2  Overview of mesh operation)

    层次结构

    Mesh协议定义了如下的层次结构。

    模型层

    模型层定义了用于标准化用户典型场景的操作或者其他更高层次的特性。例如对于灯和传感器的模型的更高层次的特性。

    基础模型层

    基础模型层定义了状态,消息,需要配置的模型和管理一个mesh网络。

    访问层

    访问层定义了更高层次的应用如何使用高传输层数据。该层定义了应用数据的格式;定义并且控制应用数据在高传输层的加密和解密行为(即加解密行为定义于访问层,执行与高传输层);并且该层检查进入的应用数据在传递到更高层前是否已经被用正确的网络和应用秘钥接收

    高传输层

    高传输层对应用数据完成加密,解密和认证的工作。并且被设计对访问层消息提供机密性。该层也定义了用于管理不同节点间高传输层消息(包括朋友特性)的传输控制消息

    低传输层

    低传输层定义了当分发大的高传输层的消息给其他节点时,如何被分片和重组为多个低传输层PDU。该层也定义了一个单独控制消息用于管理分片和重组。

    网络层

    网络层定义了传输层消息如何寻址到一个或者多个元素上。改成定义了允许传输层PDU通过承载层传输的网络消息格式。网络层决定了是否中继一个消息,是否接受一个消息用于后续处理。该层也定义了一个网络消息如何被加密和认证

    承载层

    承载层定义了一个网络消息如何在节点之间传输。该层定义了两种承载方式,一种是广播承载层,一种是GATT承载层。其他的承载层可能会在将来定义。

    mesh操作概览

    mesh网络的操作行为如下定义:

    • 使一条消息可以由一个元素发送到另一个或者多个元素上
    • 可以通过节点中继的方式扩大一条消息的通信距离
    • 保证消息安全可以抵御已知的安全攻击,包括窃听攻击(eavesdropping attack),中间人攻击(man-in-the-middle attack),重放攻击(replay attack),垃圾桶攻击(transh-can attack),强力攻击(brute-force key??)和其他可能的安全攻击。
    • 在市场上目前已经从在的设备上工作。
    • 及时的分发消息
    • 当网络中一个或者多个设备移除或者停止工作时,整个网络可以继续工作。
    • 对于将来的规范定义向上兼容。

    该规范定义了一个可以被管理的泛洪网络,使用广播通道传递消息。因此其他节点可以接收消息和中继这些消息,继而扩大了原消息的通信范围。只要有足够的可以监听和中继消息的设备密度,该网络中的任何设备都可以在任何时间发送一条消息。路由功能和基于路由的网络可能会在将来的规范的版本中定义。

    有一些方法用来限制在可控的泛洪网络中无限的中继消息。主要的两个方法是使用网络消息缓存(cache)方法和存活时间方法。

    网络消息缓存被设计为保护设备中继之前接收过的消息,通过将全部消息加入缓存列表的方式实现。当一个消息被接收,该消息将被和缓存消息链表中的消息做比较,如果已经在列表中,该消息将被忽略。如果从没有被接收过,该消息将被加入缓存。同时为了保证该缓存列表不至于过长,缓存消息的的个数将被功能实现者定义。

    每一条消息都包含一个存活时间(TTL),该值限制了一条消息可以被中继的次数。每一次被一个设备接收并且中继(最大126次),TTL值都会被减1。

    网络和子网

     一个由节点组成的mesh网络共享下面四个公共资源:

    • 用于分别一条消息的源和目的地址的网络地址
    • 用于在网络层加密和认证消息的网络秘钥
    • 用于在访问层加密和认证消息的应用秘钥
    • 用于扩展网络生命周期的初始化向量索引(IV index)

    一个网络可以拥有一个或者多个子网用于隔离“区域”(例如隔离一个旅店中网络中的不同房间)。一个组网是一组可以在网络层相互通信的节点,他们共享相同的网络秘钥。通过得知一个或者多个网络秘钥,一个节点可以属于一个或者多个子网。在启动配置时,一个设备被配置到一个子网,然后可以通过配置模型将该设备添加到更多的子网中。

    初级子网是一个特殊的子网,该子网基于初级网络秘钥。初级子网中的节点参与IV更新过程并且传播IV更新给其他的子网,而其他子网的节点只传播IV index的更新在这些子网中(?)。

    网络资源被实现了配置客户端模型的节点管理,被称作配置客户端(典型的配置客户端是智能手机或者其他掌上移动设备)。在使用配置服务模型实现配置的过程是,配置客户端被被分配给其他节点。特别地,一个启动配置者管理地址的分配,以保证没有重复的单播地址。反之,一个配置客户端生成并且分发网络和应用秘钥,以确保需要彼此通信的设备在网络层和接入层都共享正确的秘钥。配置客户端同时知道设备秘钥。设备秘钥用于加密每个单独节点的通信,包括更新网络和应用秘钥。

    设备和节点

     一个不是mesh网络中成员的设备被称作未配置设备。一个mesh网络成员的设备被称为一个节点。一个启动配置者用于管理未配置设备向节点的变换。

    一个未配置设备不能发送和接收mesh消息,然而,它可以向启动配置者广播它的存在。一个启动配置者会在鉴权后邀请一个未配置设备加入一个网络,从而将一个未配置设备变为一个节点。

    一个节点可以发送和接收mesh消息,并且被配置客户端管理(可能和启动配置客户端是同一个设备)。配置客户端可以从网络中移除一个节点,将其恢复回未配置设备。

    一个设备可能支持一个节点的多个实例,通过被配置加入另外的网络。每一个mesh网络的实例通过地址和设备在启动配置阶段获得设备秘钥决定(区别)。(这句话是说一个设备可以在多个网络中)

    向一个网络中增加一个设备

     设备通过启动配置者被增加到一个mesh网络中,然后该设备成为一个节点。启动配置的过程不同于典型蓝牙中的点对点绑定和配对的过程。设备的启动配置可以使用一个简单的广播承载,也可以通过点对点的GATT承载。这两种承载方式下,都使用同一个启动配置协议。通过广播承载的启动配置被全部设备都实现,通过GATT的启动配置使得传动的电话(不支持广播方式承载)可以成为一个启动配置者。

     为了帮助启动配置多个设备,一个设备有一个关注定时器(attention timer),由一个启动配置者设置。当设置为非0值时,设备自己以任意它可以进行的方式做出标识。例如,设备可以闪烁等,发出声音或者震动。当关注定时器超时,设备停止自己发出标识。这允许了一个启动配置者发送一条消息给一个发出自我标识的设备,并且设备可以在一段时间后自动的停止自我标识。

    两种承载方式下运行的 协议派生于蓝牙4.2的核心规范中的安全管理协议。安全管理协议需要一个可靠的承载层,在通过广播作为承载层时,有些事情无法被保证,因此协议被设计为使能独立于承载方式的可靠消息分发。与安全管理协议的相似性对实现了相关功能的设备的代码复用有意义。

    通信支持

     目前许多设备在不更新条件下不能够广播和理解mesh消息的含义。为了这些设备在不需要操作系统更新或者类似的软硬件更新的情况下可以和mesh网络中的节点通信,规范允许了对已存在的设备通过GATT连接。

    低功耗支持

    规范允许网络中存在许多电池供电或者能量收集方式供电的设备。这些设备在作为mesh中一部分时的功能会受到限制(例如,某些设备在交互时只能发送数据)。mesh规范并不需要设备协同传输,连接或者在每次连接中都重启安全特性。因此促进了低功耗操作。需要低功耗支持的设备可以和一个常在线的设备建立关联,这个常在线设备可以保存和中继消息。这种概念被称为朋友关系。然而,中继消息的设备将收到消息,同时大部分时候也需要转发消息。相较于一个小电池或者电容能够提供的能耗,这类设备需要更大的能耗。

    疑问:

    在各个秘钥的用法部分存在疑问。

  • 相关阅读:
    解决英文版Windows中软件乱码问题
    退出程序时进行确认提醒
    Dreamweaver插件,FireFox插件名称集合
    网页炸弹根本就不算技术
    虚拟格式化硬盘
    当前上下文中不存在名称“Server”的原因
    ASP脚本在Webshell下的安全解决方案
    ASP.NET关于http/1.1 500 Server Error 的解决办法
    在网页文件中插入QQ强制聊天
    删除visual studio最近打开的项目列表
  • 原文地址:https://www.cnblogs.com/minnowbin/p/9780434.html
Copyright © 2011-2022 走看看