第二章:Mesh系统架构详解
蓝牙Mesh网络的设计核心是一个分层架构,这类似于我们熟悉的网络通信模型(如TCP/IP)。每一层都有明确的职责,下层为上层提供服务,共同协作完成从用户指令到无线信号传输的整个过程。
为了让您更好地理解,我们可以将Mesh网络想象成一个高效的邮局系统:
您(用户) 是寄信人,想发送一个指令(如"打开客厅的灯")。
Mesh网络就是遍布城市的邮局和邮递员网络。
分层架构规定了这封信从书写、装袋、分拣、运输到最终投递的每一道工序。
下面,我们结合这个比喻,逐层解析Mesh架构。
2.1 分层架构:从应用到底层的七层分工
蓝牙Mesh规范定义了七层结构,如图2.1所示。我们从最贴近用户的"应用层"开始,自上而下地理解:
- 模型层 & 基础模型层:定义"能做什么"
通俗理解:这相当于产品说明书和公司管理章程。
模型层:定义了设备的具体功能。例如,"灯泡模型"说明书里写明:这个设备能接收"开"、"关"、"调亮度"这几条指令。另一个设备如果是"温度传感器",它的说明书里就是"报告当前温度"指令。
基础模型层:定义了管理整个Mesh网络所需的"管理章程",比如如何给新设备分配地址、如何设置网络密钥等。这主要由配置服务器模型和配置客户端模型来实现。
举例:您买了一个智能灯泡,它内部就实现了"灯泡模型"。当您用手机App(配置客户端)给它配网时,用的就是"基础模型层"定义的管理流程。
- 访问层:校验"信件"的合法性
通俗理解:邮局安检和分拣员。他检查信件是否属于本邮局系统(网络),以及是寄往哪个部门的(应用)。
具体职责:负责定义应用数据的格式,并验证收到的数据是否使用了正确的网络密钥和应用密钥。它确保"打开灯"的指令不会被一个"门锁"设备错误地执行。
关键概念:应用密钥。不同的应用(如照明、安防)可以使用不同的应用密钥,实现安全隔离。照明指令无法解锁安防门锁。
- 上层传输层:为"信件"内容加密
通俗理解:信件内容加密员。他用只有收信人知道的密码(应用密钥)给信纸内容加密,确保传输途中无人能窥探或篡改内容。
具体职责:对访问层下来的"应用数据"进行加密、解密和认证,保证消息的机密性和完整性。
- 下层传输层:处理"大包裹"
通俗理解:包裹打包/拆包员。如果信件内容太长(超过11字节),一个"信封"装不下,他就负责把一封信分割成多个小包裹发送;接收方则负责把多个小包裹重新组装成完整的信。
具体职责:管理消息的分段与重组,以传输较大的上层传输层消息。
- 网络层:决定"往哪送"和"是否中转"
通俗理解:邮局路由分拣中心。他查看信封上的目的地地址,决定这封信是留在本地投递,还是需要转发到下一个邮局(中继)。同时,他为整个信封套上一个大的"邮袋",并用邮局系统的通用密码(网络密钥)给这个邮袋加密。
具体职责:
寻址:使用16位的地址(单播、组播、虚拟地址)来标识一个或多个设备。
中继决策:根据TTL值等,决定是否转发消息。
网络加密:使用网络密钥对整个网络PDU进行加密和认证。
关键概念:
TTL:生存时间。每经过一个中继节点,TTL值减1,减到0就不再转发,防止消息在网络中无限循环。
消息缓存:每个节点会缓存最近收到的消息,如果收到重复消息就直接丢弃,避免"广播风暴"。
- 承载层:选择"运输工具"
通俗理解:选择用卡车还是轮船运输。这是最底层,负责把数据包变成无线电波发出去。
具体职责:定义了网络消息如何在节点间传输。主要有两种"交通工具":
广播承载器:利用BLE的广播信道发送数据。这是Mesh设备间主要的通信方式,无需建立连接,适合一对多、低延迟的通信。
GATT承载器:通过蓝牙连接(GATT)来传输Mesh数据。这主要为了让不支持Mesh协议的传统手机或设备(如只支持BLE 4.0的手机)能够通过一个代理节点接入Mesh网络。
- Bluetooth Low Energy Core Specification(蓝牙低功耗核心规范)
通俗理解:公路、铁路等基础设施标准。Mesh协议建立在标准的BLE物理层和链路层之上,它使用了BLE的广播信道(37, 38, 39)进行通信。
2.2 Mesh操作概述:网络如何运转
Mesh网络的设计目标包括:支持消息中继以扩大范围、确保安全、兼容现有设备、支持低功耗设备等。其核心是一种受管理的泛洪网络。
泛洪通信:消息像水波一样扩散出去。源设备广播消息,所有在无线范围内且开启了中继功能的设备都会接收并重新广播它,直到达到TTL限制。
优点:无需复杂的路由发现和维护,路径天然冗余,可靠性高。
挑战:可能引起网络拥塞。
解决方案:通过 TTL 和 消息缓存 两大机制来管理泛洪,抑制不必要的重复广播。
2.3 核心概念详解(结合实例)
- 设备 vs. 节点
未配置设备:一个全新的、未加入任何Mesh网络的智能灯泡。它只能广播"我在这里,求加入"。
节点:被配网器(如手机App)成功配置并加入Mesh网络后的设备。它拥有了网络地址和密钥,可以收发Mesh消息。
- 元素
通俗理解:一个物理设备内部的逻辑功能单元。一个设备至少有一个主元素,还可以有多个次元素。
举例:一个双键智能开关可能包含两个元素:元素1对应左键,元素2对应右键。每个元素都有自己唯一的单播地址。这样,网络就可以单独控制左键或右键。
- 地址
单播地址:唯一标识一个元素。就像每个人的唯一身份证号。网络中共有32767个可用单播地址。
组播地址:标识一组元素。就像一个部门的群组邮箱。发送到组播地址的消息,所有订阅了该地址的元素都会收到。例如,可以将"客厅所有灯"订阅到组播地址"客厅灯组",一条指令就能控制所有灯。
虚拟地址:一种更灵活的组播地址,基于一个128位的UUID标签生成。它像是一个"话题标签",任何元素都可以订阅这个标签。
- 发布与订阅
这是Mesh网络的核心通信模式,非常灵活。
发布:一个节点(如开关)向某个地址(单播/组播/虚拟)发送消息。
订阅:一个或多个节点(如灯泡)监听(订阅)一个或多个地址。
举例:开关A发布"开"指令到组播地址"厨房"。灯泡1、2、3都订阅了"厨房"地址,因此同时亮起。而开关B发布指令到"餐厅",只有订阅了"餐厅"的灯泡3会响应。这样,灯泡3可以被两个不同的开关控制。
- 特性与节点角色
节点可以根据其支持的特性扮演不同角色,增强网络能力:
中继节点:接收并转发消息,扩大网络覆盖范围。是网络扩展的关键。
代理节点:在GATT承载和广播承载之间转换消息,让传统手机能接入Mesh网络。
低功耗节点:通常是电池供电的设备(如传感器)。它不能一直监听网络,为了省电。
朋友节点:与LPN结对,为LPN缓存消息。LPN可以长时间睡眠,偶尔醒来向它的Friend节点"取快递"(轮询消息),从而极大节省能耗。
总结:蓝牙Mesh通过清晰的分层架构和发布-订阅模型,构建了一个去中心化、可自组网、高可靠、且支持低功耗设备的无线网络。理解"元素"、"地址"、"发布/订阅"以及"中继/Friend"这些核心概念,是掌握Mesh如何工作的关键。