




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、毕健,iHealth中国研发中心蓝牙高级工程师,邮箱:bi_,译文版本:V1.0 完成时间:2017.11.11 备 注 :,1,蓝牙mesh基础,致开发者: 2017夏,蓝牙低功耗技术引入了一种新的网络拓扑类型 - Mesh。mesh 的引入使得蓝牙在低功耗无线通信技术领域更具优势,在许多新兴领域 如智能家居,工业物联网,楼宇自动化等势必会得到更好的应用。,蓝牙,Bluetooth Mesh Networking / An Introduction for Developers,Contributors,Martin Woolley Author Sarah Schmidt Graphic
2、Designer,目录, 2017 Bluetooth SIG Proprietary.,2,1.0 介绍 . . 4 2.0 执掌生活 . . 6 2.1智能建筑获得真正的智能7 3.0 蓝牙mesh基础 . . . . 8,Bluetooth Mesh Networking / An Introduction for Developers,3.0 蓝牙mesh基础 (续) 中继节点 低功耗节点与友节点 代理节点 节点配置, 2017 Bluetooth SIG Proprietary.,3,15 15 15 16,4.0 Mesh系统架构. . . . . . . 17 4.1概述18,5
3、.0 安全性. . 20,Mesh 网络安全特性具有强制性 Mesh 网络安全性基本原则 关注点分离与mesh安全密钥 节点移除,密钥刷新及垃圾桶攻击 隐私 重放攻击,21 21 21 22 22 23,6.0 蓝牙mesh在行动. . . 24,消息发布与传递 多路径传递 管理型网络泛洪 协议栈中消息的传递,25 25 25 25,7.0 蓝牙Mesh 正待勇士开拓的疆场 . 27 7.1参考资料28,back to contents,Bluetooth Mesh Networking / An Introduction for Developers,1.0 介绍, 2017 Bluetoo
4、th SIG Proprietary.,4,back to contents,Bluetooth Mesh Networking / An Introduction for Developers,1.0 介绍,2000年,蓝牙技术面世,用以替代线缆进行无线通 信。此后的十几年间,蓝牙得到了快速的发展,很快在无 线音频及计算机周边产品如无线鼠标,键盘等领域占据了 统治地位。 2010年,蓝牙低功耗技术(BLE)面世,推动蓝牙技 术向前迈进了重要一步 。其影响深远,主要体现在智能 手机,平板,以及医疗健康,智能家居,可穿戴产品等领 域。,基于网状拓扑类型的无线通信系统可以覆盖更大的范 围,使得通信
5、距离变长,同时系统的鲁棒性得到加强。但 是他们仍然是一种小众技术,主要是因为与现有的大多数 计算机,智能手机等设备不兼容,因而没有得到大范围的 推广和应用。,为了将mesh技术应用到蓝牙中,120个蓝牙SIG成员公 司先后参与到这项工作中。与以往情况不同,此次规模之 大,涉及范围之广,充分表明了业界对蓝牙mesh技术标准 制定的迫切需求。,蓝牙mesh技术的添加代表了一种技术类型的变化,这 种变化如此巨大,我们甚至可以认为这对蓝牙技术标准来 说是一次整体模式的转变。,(译者注:蓝牙特别兴趣小组 The Bluetooth Special Interest Group (SIG),是一个非盈利性
6、组织,致力于蓝牙 技术标准的开发,和蓝牙技术应用及商标的授权。公司成 立于1998年,总部位于美国华盛顿。), 2017 Bluetooth SIG Proprietary.,5,back to contents,Bluetooth Mesh Networking / An Introduction for Developers,2.0 执掌生活, 2017 Bluetooth SIG Proprietary.,6,back to contents,Bluetooth Mesh Networking / An Introduction for Developers,2.0 执掌生活,智能建筑将
7、获得真正的智能 想象一下,在一个天色昏暗的冬日的早晨,你驱车前 往公司。公司的安全系统识别了你的车,让你进入公司, 同时分配给你一个停车位。此时,你的停车位上的灯亮 起,指引你快速停到那个位置。之后,这个车位分配系统 将自动进行更新,显示该车位已使用。,进入公司大楼后,相应的传感器注意到有人进入,并 从你身上的可穿戴设备如手表等识别到你。你乘坐电梯到 达二楼,像往常一样,你是第一个到达的。当电梯门打开 时,从电梯室到办公室及开水间的灯自动打开。咖啡在你 们公司是非常重要的,所以开水室的灯才会自动打开,其 它区域的灯关闭,从而节省能量。 你走进办公室,屋顶灯和台灯已经打开了,并且是你最喜 欢的亮
8、度等级。你注意到办公室温度比其它区域温度略高, 这正是你之前设置的。你靠近办公电脑,此时电脑自动登 陆你的账户。 现在你可以开始办公了,并且整个办公环境考虑到了个 人偏好,充分满足了你的需求。很显然这种这种系统是十分高 效的,那么它是如何实现的呢?,你们公司几个月前使用了蓝牙mesh技术,最开始安装在照 明系统上,随后添加到Occupancy sensor,环境传感器,无线 暖气控制系统,停车管理系统等网络中。这样,公司可以在 电力和热力系统上省上不少费用,而且工作环境更加人性 化,从而使员工的工作效率更高。整个系统的维护成本也 在下降,例如加入电灯开关不再需要布置昂贵且麻烦的电 线了。系统采
9、集的数据可以供大楼管理人员分析,从而了 解这栋建筑,以及它所提供的服务和人们对这些服务做出 的反应,进而对整个系统进行优化。,我们可以控制某栋建筑提供的服务,与其进行无线交 互,使其行为更加自动化,而蓝牙mesh正使这一切更加 方便且低成本。你甚至会感到惊讶之前没有这些技术是怎 么生活的。,(译者注: Occupancy sensor,一种室内运动检测 设备,检测到人体时会自动打开灯,温度调节装置及通 风系统。这种传感器多使用红外,超声,微波等技术, 主要用来节省能量,提供自动控制。),图 1 - 蓝牙mesh可以分布于办公室和停车处, 2017 Bluetooth SIG Proprieta
10、ry.,7,back to contents,Bluetooth Mesh Networking / An Introduction for Developers,3.0 蓝牙mesh基础, 2017 Bluetooth SIG Proprietary,8,back to contents,Bluetooth Mesh Networking / An Introduction for Developers,3.0 蓝牙mesh基础 概念及术语 要认识蓝牙mesh技术,需要读者了解一些新的技术 概念与术语,这些在之前蓝牙低功耗(BLE)的世界里是 没有的。本章我们将带你认识一些最基本的概念及术语
11、。 mesh vs 点对点 我们所见到的大多数BLE设备都是进行一对一的数据 通信的。这是一种点对点的网络拓扑类型,在蓝牙核心规 范中被称为“微微网”(piconet)。,假设一个智能手机与一个心率检测器建立了一个点对 点的连接,这样它们之间就可以传输数据了。蓝牙的一个 优点就是可以让设备建立多个连接,所以这台智能手机可 以再与另一个运动追踪设备建立连接。此时,手机可以同 另外两台设备进行通信,而这两台设备之间无法直接进行 沟通。,与以上情况相反的是,mesh拥有多对多的网络拓扑 类型。每一台设备都可以与网络中的其它设备进行通信 (我们会在第6章进行更深入的讨论)。设备间的通信以 消息的形式传
12、递,一台设备可以将某一台设备发来的消息 中继到另一台设备,这样就可以扩展端到端的通信范围, 这个范围远超过一个单独设备蓝牙无线电所覆盖的范围。,设备和节点 mesh网络中的单台设备称做节点(node),网络外 的设备称为“未开通配置设备”(unprovisioned devices)。将某个“未开通配置设备”转化为网络节点的 过程称为“开通配置”(provisioning)。例如,你买了一 个带有mesh功能的蓝牙灯,你需要把它带回家并进行简 单的配置,从而将其加入到家中原有的mesh网络中,这 样你就可以通过家里的电灯开关与调光器对其进行控制 了。这一过程即为“开通配置”(provision
13、ing)。,“开通配置”过程是每一台新设备都要经历的,在这 个过程中,新设备会获取一系列的密钥,同时告知“启动 配置设备”(provisioner device,通常是智能手机或者平板 电脑)有新设备加入到网络中。其中有一个密钥叫做网络 密钥,即NetKey。在后续章节我们会再对mesh的安全性进 行深入讨论。 Mesh网络中的每个节点都拥有至少一个NetKey,正 是这个NetKey让其成为相应网络的一员。节点的正常工作 需要满足许多条件,而NetKey则是最基本的第一步工作。 随后我们会对“开通配置”的过程展开深入的讨论,在此 不再赘述。,图 2 - 一种具有消息中继功能的多对多网络拓扑类
14、型, 2017 Bluetooth SIG Proprietary.,9,back to contents,Bluetooth Mesh Networking / An Introduction for Developers,元素 有些节点由多个独立的部分组成,每一个部分都可 以进行单独的控制。在蓝牙mesh中,这些独立的部分称 为元素(element)。图3即为网络中的一个灯节点,它 有3个元素,每个LED灯泡有一个元素。每个节点至少拥 有一个元素,称为主元素(Primary Element)。节点中 的每个元素都有一个唯一确定的地址,称为单播地址 (unicast address),这样每
15、个元素都可以独立寻址。,条响应信息。这条响应信息有两个作用:1.告知消息发送 方,消息已接收;2.返回消息接收方需要告知发送方的某 些数据。,需要应答的消息如果没有得到响应,则可能会被发送 多次,所以这种消息必需具有幂等性。幂等性意味着这种 消息不论到达接收节点多少次,与其到达接收节点一次产 生的效果都是相同的。否则如果因为某些意外,消息多次,到达接收节点,则有可能使接收节点的状态变得不确定。 不需要应答的消息不要求接收者发送响应信息。 地址 消息必须从一个地址发送到另一个地址。 蓝牙mesh协议中定义了3种地址(还有一种未分配地 址在此不做讨论)。 单播地址用于唯一确定单个元素。在“开通配置
16、”过 程中,会将单播地址赋给设备。 群组地址是一种多播地址,它可以代表一个或多个元 素。 群组地址要么是动态分配的,要么是蓝牙技术联盟 预先定义的(SIG固定群组地址)。蓝牙技术联盟已经定 义了4个固定群组地址,即All-proxies, All-friends, All- relays及All-nodes。在后续章节中我们会详细解释什么是 Proxy(代理), Friend(朋友)及 Relay(中继) 。,我们可以通过配置应用程序来建立动态群组地址,这 些地址反映了一栋建筑的某种实体分配,例如为大楼里的 每一个房间定义一个群组地址。,虚拟地址可以赋给一个或多个元素,横跨一个或多个 节点。虚
17、拟地址与128位UUID的形式类似,任何元素都可 以与其相关联,它更像一个标签。 虚拟地址可以在出厂前就进行预先配置,然后用于某 些特定场景,例如使某个厂商制作的投影仪的寻址更加方 便。,图 3 - 三个元素组成一个灯节点, 2017 Bluetooth SIG Proprietary.,10,消息 当某个节点需要获取其它节点的状态时,或需要以 某种方式控制其它节点,它会发送消息(message)。 如果某节点需要向其它节点汇报状态,它也会发送消 息。,在mesh网络中,所以通信都是以消息的形式传递 的。协议规范中定义了多种消息类型,每种消息类型都 有自己唯一的操作码。,消息可以统分为两种类型
18、:需要应答和不需要应 答。需要应答的消息要求接收节点接收到消息后返回一,back to contents,Bluetooth Mesh Networking / An Introduction for Developers,发布/订阅,在蓝牙mesh中,发送消息称为发布( publish )。 将某个节点配置成可以接收特定消息的过程称为订阅 (subscribe),即如果某个节点可以接收某条消息,那 么我们就说这个节点“ 订阅 ”了这条消息。,消息都是发往组地址或者虚拟地址的,而且这些地址都 具有可读性,具有现实意义,例如代表某一个房间。所以使 用起来既方便有直观。,在图4中我们可以看到,开关
19、1可以发布消息到厨房 组地址(上文我们已经提到,组地址可以代表某个房 间)。1号,2号和3号灯节点都订阅了厨房地址,因此可 以接收和处理发往该地址的消息。也就是说,1号,2号 和3号灯可以被1号开关控制。 同理,开关2可以发布消息到客厅组地址,而只有3 号灯订阅了该地址,所以开关2只能控制3号灯。从图中 我们也可以看到,一个节点可以订阅多个组地址,如3号 灯节点同时订阅了厨房和客厅两个组地址。蓝牙的mesh 功能非常强大而且灵活,我们还可以看到多个开关可以 向一个组地址发布消息,如开关5, 6都可以向花园组地 址发布消息。,使用组地址和虚拟地址来发布和订阅消息有许多好 处。当我们移除,替换或者
20、添加节点时,不需要重新配置 其它节点。想象一下你要在家里装一个灯有多麻烦你就知 道这种方式有多方便了。例如有新设备需要加入到客厅网 络中,只需经过“开通配置”过程并订阅相应的客厅组地 址就可以了,其它节点并不会受到影响。开关2依然可以 向客厅组地址发布消息,不过现在它可以控制3号灯与新 加入的灯了。,状态和属性 元素可能处在各种条件下,在蓝牙mesh中我们称之 为状态(state)。一个元素可以有多个状态,每个状态都 是一组特定值(在下面的服务器模型中会再做介绍)。 状态与特定的行为有关,不能在其它地方重用。,例如,蓝牙mesh定义了通用开关状态来形容某个 电灯可能存在的状态,为其赋1(on)
21、电灯打开,为其赋 0(off)电灯关闭,就这么简单。 属性(property)与状态类似,它们都包含与元素 相关的数值,但在其它方面二者存在显著差异。,发布, 2017 Bluetooth SIG Proprietary.,11,订阅,厨房,客厅,走廊,卧室,花园,图 4 - 发布/订阅,Switch 6,Switch 5,Switch 4,Switch 3,Switch 2,Switch 1,Light 1,Light 2,Light 3,Light 4,Light 5,Light 6,Light 7,Light 8,Light 9,back to contents,Bluetooth Me
22、sh Networking / An Introduction for Developers,熟悉BLE的读者应该了解特性(characteristic),它们 是一种没有与特定行为相联系的数据类型,这样它们就很 容易地得到重(chong)用。利用上面提到的属性,可以 将特性与具体含义相联系。有一点需要特别注意,这里提 到的属性(property)与我们在BLE协议栈中定义的属性 (attribute)是完全不同的,为了防止混淆,我们也可以 将前者翻译成“性质”(property)。 为了加深对属性的认识,我们考虑一个具体的例子。有这 样一个特性,称为“温度8”,它具有多个相关属性,包括室内
23、温度与室外温度。当接收客户端接收到温度值时,可以根 据对应属性值,来判断这个温度是室内温度还是室外温 度。,属性分为两类,分别是来自制造商的只读属性和来自 系统管理员的可读写属性。,消息,状态及属性,蓝牙mesh网络的正常工作依赖于消息的传递。某个特 定类型的消息可以对一个或多个状态值进行操作。消息可 以分为3类,简称为GET,SET,STATUS,对应于蓝牙 mesh网络支持的3种操作。 GET消息可以用来向一个或多个节点请求状态值,之 后,相应节点会返回STATUS信息,告知请求的状态值。 SET消息可以改变既定状态的值。有些SET消息需要 应答,要求返回一条STATUS消息 ,有些消息不
24、需要应 答。 STATUS消息可以用来应答GET消息,也可以用来应 答SET消息或者通过某元素中的定时器定时发送。 我们可以通过消息操作码(opcode)识别到特定状 态。另一方面,我们也可以在通用属性相关消息中使用 16位属性ID来直接引用属性(具体操作细节请参考蓝牙 mesh相关技术文档)。,状态转变,从一个状态转变为另一个状态的过程叫做状态转换, 转变的过程可能是瞬时的,也可能需要经过一段时间,这 段时间叫做转换时间。状态转变可能会对节点应用层的行 为产生影响。,绑定状态 状态之间也可能存在某种关系,一种状态改变会导致 另一种状态也改变,这种关系称为状态绑定(state binding)
25、。一个状态可以与其它多个状态绑定。,例如,通过一个调光器控制一盏灯。这盏灯有两种状 态,即通用开关状态和通用等级状态,他们之间相互绑 定。减少灯的亮度等级,直到亮度等级为0,这将导致通 用开关状态由开变为关。,通用开关服务 器,通用开关客户 端,图 5 - 通用模型, 2017 Bluetooth SIG Proprietary.,12,back to contents,Bluetooth Mesh Networking / An Introduction for Developers, 2017 Bluetooth SIG Proprietary.,13,模型 模型将之前提到的概念组合在一起
26、,定义了元素的功 能。当前蓝牙mesh规范中一共定义了3类模型。,第一种是服务器模型(server model),它定义了一 系列的状态,状态转换,状态绑定以及模型中元素可以收 发的消息。同时,它也定义了与消息,状态,状态转换相 对应的行为。,客户端模型(client model )没有定义任何状态,它 只定义了几种消息。我们可以利用这些消息来对相应服务 器模型中的状态进行操作,如GET,SET及STATUS。,控制模型(Control model)包含一个服务器模型和一 个客户端模型。服务器模型可以用来与其它客户端模型进 行通信,而客户端模型可以用来与其它服务器模型进行通 信。,我们可以通过
27、扩展某个模型来创建新的模型。不过有 一种模型不能扩展,这种模型称为root模型。,模型不能被改变,也就是说我们不能向模型中加入或 者移除相关行为。实现新模型的唯一方式就是扩展已经存 在的模型。,通用性 生活中我们不难看出,很多设备本质上都存在着相似 的状态。例如灯,风扇,电源插座等等,它们都具有开和 关两种状态。 因此,蓝牙mesh模型规范定义了许多可重用的通用状 态,例如通用开关状态(Generic OnOff),通用等级状态 (Generic Level)。 同理,我们还定义了一些通用消息,来对通用状态进 行处理,例如Generic OnOff Get和Generic Level Set消
28、息。,通用状态及通用消息可以用在通用模型中。通用模型 包括通用客户端模型,通用服务器模型,如通用开关服务 器,通用等级客户端等。,利用通用性,不需要创建新的模型就可以将蓝牙 mesh功能添加到多个设备中。因为可以通过扩展某个模 型来创建新的模型,所以我们可以利用通用模型为新设备 快速创建合适的模型。,情景 想象一下,某天晚上,你想要将卧室的温度调到20摄 氏度,将卧室吊灯调到合适的亮度,再将桌上的台灯调成 令人舒适的暖色调等等。也许你会想到这需要一个一个手 动设置,那你就out啦!我们可以在应用程序上保存这些 配置,在需要的时候调用它们。这些保存的配置称为“情 景”(scene)。我们可以通过
29、16位情景序号来识别特定 的情景,在每个mesh网络中,情景序号都是各不相同的。,利用情景可以让许多节点同时到达某种既定状态,省 去了单独配置每个节点的麻烦。,back to contents,Bluetooth Mesh Networking / An Introduction for Developers, 2017 Bluetooth SIG Proprietary.,14,开通配置(Provisioning) 开通配置是指将某台设备加入到mesh网络中,从而 变成一个节点的过程。它涉及几个阶段,期间会生成许多 安全密钥,这一过程对安全性要求比较高。,开通配置通常是通过手机或者平板电脑上
30、的应用程序 完成的。此时,手机或者平板电脑通常被称为启动配置设 备(Provisioner)。,开通配置的过程涉及5个步骤,下面就每个步骤分别 展开讨论。 第 1 步. 发送Beacon信号 为了支持蓝牙mesh的不同特性,包括但不限于“开 通配置”,我们引入了新的GAP广播类型(参考蓝牙核 心规范补充),包括广播类型。未开 通配置的设备(如需要加入mesh网络的灯)可以发出 广播数据包,声明自己是未开通配置 的设备,可以被启动配置。用户可能需要按照一定的方 式,如键入一组按钮,或长按某个按键一段时间,从而 启动新设备的广播,第 2 步. 邀请 在这一步骤中,启动配置设备(手机等)向需要加 入
31、mesh网络的设备(如灯)发送邀请,实际上发送的 就是“开通配置邀请PDU”,一种特定格式的数据包。 此时需要开通配置的设备(如灯)会返回一定的数据 包,即“开通配置能力PDU”告知自身情况。,第 4 步. 认证 在认证的过程中,新设备会根据自身输出能力按照 某种方式输出一个或多个随机数(这一点与蓝牙配对方 式有点类似)。例如新设备可以闪几下LED灯(闪烁的 次数代表输出的验证值),或者有屏幕的话可以直接输 出数字 。用户在启动配置设备上输入相应数字,整个 认证的过程就全部完成了。,第 5 步. 启动配置数据分发 认证完成之后,会利用两台设备的私钥和交换的对 等密钥生成一个会话密钥(Sessi
32、on Key)。之后利用会 话密钥来加密后续的数据分发,完成剩余的开通配置过 程,包括网络密钥(NetKey)和设备唯一地址,即单 播地址(Unicast Address)的分配。,开通配置过程完成后,新设备(如灯)将会拥有网 络的NetKey,这是一个称为“IV索引(IV Index)”的 mesh安全参数,且拥有一个由启动配置设备(如手 机)分配的单播地址。至此,这台新设备就正式成为节 点了。,特性 所有的节点都可以发送和接收mesh消息,但是我们 也可以单独赋予某些节点额外的特性,使其拥有某些特 定功能。一共有四种特性可以选择:中继(Relay), 代理(Proxy),友(Friend)
33、以及低功耗(Low Power)特性。每个节点都可以支持以上四种特性中的0 个或者多个,而且随时可以取消已经配置好的特性。,第 3 步. 交换公共密钥 启动配置设备(如手机)和需要开通配置的设备 (如灯)交换公钥。公钥可以是固定的,也可以是暂时 生成的。公钥的交换可以通过蓝牙传输,也可以使用带 外数据(OOB)交换的方式。例如使用NFC或者二维 码进行数据交换,这样数据传输的安全性更高。,back to contents,Bluetooth Mesh Networking / An Introduction for Developers, 2017 Bluetooth SIG Propriet
34、ary.,15,中继节点 支持中继特性的节点称为中继节点,它可以重发接收 到的消息。通过中继技术,消息可以进行多次“跳 跃”(hop),这样就可以将消息传输到整个mesh网络。 mesh网络PDU中有一个字段称为TTL(Time To Live)。TTL利用一个整数值来限制每条消息可以在网络 中跳跃(被中继)的次数。例如TTL等于3时,表示消息 最多被中继3次。TTL等于0则表示消息不能被中继,只能 进行单次传输。节点每隔一段时间发送一次TTL,这样可 以了解网络拓扑结构,充分利用mesh网络,避免不必要 的消息中继,从而节省功耗。,低功耗节点与友节点 有些节点可能采用电池供电,所以需要尽可能
35、地降低 功耗。这种类型的设备可能主要关心发送消息,但也需要 偶尔接收消息。 例如,有一个采用纽扣电池供电的温度传感器,当温 度超出既定阈值上限或者下限时,传感器每隔一分钟发送 一次温度值。如果温度不超出阈值,则不发送消息。如果 不考虑功耗问题的话,这些行为都很容易实现。,用户可能会向传感器发送消息,设置新的阈值,这种 行为比较少见,因为用户不可能有事没事地改变阈值,用 户可能会在季节改变或者新加设备时设置阈值。但是传感 器的阈值必须是能够改变的。接收消息的频率对接收器占 空比和功耗有影响。100%占空比能够确保传感器不丢失任 何一条温度阈值配置消息,但是功耗是非常大的。低占空 比可以节省功耗,
36、但是也可能丢失某条配置消息。 为了解决这一难题,蓝牙mesh引入了友节点(friend node)及友谊(friendship)的概念。 在上面的例子中,温度传感器可以设计成低功耗节点 (Low Power nodes)。在传感器的配置数据中,会设置特 定的标志,标记这是一个低功耗节点。,低功耗节点会同另一个节点配合工作,这个节点对功 耗没什么特别的要求(可能接入市电,有固定的电源), 这个节点称为友节点。友节点保存发往对应低功耗节点的 消息。低功耗节点会对友节点进行轮询(Poll),查看是 否有新消息。低功耗节点轮询的频率非常低,这样就可以 降低功耗,同时降低丢失配置消息的可能。当低功耗节点
37、 对友节点进行轮询时,保存在友节点的消息就会一个接一 个地发到低功耗节点。在发出的数据包中有一个 MD(more data)标志,用来指明友节点是否还有消息需 要发送。,低功耗节点与友节点的关系称为“友谊”(friend- ship)。正是这种友谊关系,才使得功耗受限的节点能够 在蓝牙mesh网络中正常接收消息,在正常工作的同时保持 较低功耗。,代理节点 在我们的生活中有大量的BLE设备,例如智能手机或 者平板电脑。到现在为止,已经上市的蓝牙设备都还没有 集成蓝牙mesh网络协议栈,它们只使用了BLE协议栈以及 传统蓝牙协议栈。所以它们只能通过通用属性规范 (Generic Attribute
38、 Profile-GATT)与其它设备进行信息交 互。 代理节点能够实现GATT和蓝牙mesh节点之间的信息 交互。我们定义了代理协议,用于面向连接的承载层,如 GATT。GATT设备(没有集成蓝牙mesh协议栈)可以通 过代理节点读写代理协议PDU。 总之,代理节点可以允许没有集成蓝牙mesh协议栈的 BLE设备与mesh网络中的任何节点进行通信。,back to contents,Bluetooth Mesh Networking / An Introduction for Developers,P,图 6- 智能手机通过代理节点与mesh网络进行通信,P = 代理节点, 2017 Blu
39、etooth SIG Proprietary.,16,节点配置 配置服务器模型(Configuration Server Model)定义 了许多状态,我们可以使用配置客户端模型 (Configuration Client Model)访问这些状态。配置状态与 节点可以产生的行为和能力有关,与具体的应用或者设备 类型无关。,例如,我们可以利用“配置服务器状态”来指明某个 节点是代理节点,中继节点还是其它节点。节点订阅的地 址保存在订阅列表中。网络和子网密钥以及应用密钥都保 存在配置块中(configuration block)。,配置客户端模型与配置服务器模型可以对相应的配置 服务器模型的状态
40、进行操作,这些操作包括GET,SET及 STATUS,它们是通过相应的配置消息完成的。,back to contents,Bluetooth Mesh Networking / An Introduction for Developers,4.0 mesh系统架构, 2017 Bluetooth SIG Proprietary.,17,back to contents,Bluetooth Mesh Networking / An Introduction for Developers,4.0 mesh系统架构,概述 本章我们将深入了解蓝牙mesh的体系结构,认识 mesh网络层级分布以及各个层
41、的功能。我们还会将蓝 牙mesh结构与BLE结构进行对比说明,这将更助于我 们理解。,承载层 发送和接收mesh消息需要底层协议栈的支持,而承 载层(bearer layer)则定义了如何使用底层BLE协议栈传输 网络PDU。目前定义了两个承载层:广播承载层和 GATT承载层。 广播承载层利用BLE GAP广播和扫描特性来发送和接 收mesh PDU。,对于不支持广播承载层的设备,可以利用GATT承载,层通过使用代理协议与mesh网络中的节点进行通信。,代理协议封装在GATT操作中,包括特殊定义的GATT 特性。mesh代理节点通过实现上述GATT特性,来支持 GATT承载层和广播承载层。这样
42、就可以在两种承载层间 转换和中继消息。,网络层 网络层(network layer)定义了多种消息地址类型和网 络消息格式,这样传输层的PDU就可以通过承载层传输 了。它可以支持多个承载层,每个承载层可以有多个网络 接口,如用于同一个节点不同元素间通信的本地接口。 网络层决定了用哪一种网络接口来输出消息。来自承 载层的消息会先经过一个输入滤波器,判断消息是否需要 传入网络层进行进一步处理。同理,输出消息会经过输出 滤波器,来决定消息是否要传递到承载层。,我们还可以通过网络层实现代理和中继特性。 从图7可以看到,蓝牙mesh网络结构的最下层是 BLE。事实上,这不仅仅只有一层,而是整个BLE协议
43、 栈。很显然,蓝牙mesh正是利用BLE进行实际上的信息 通信的。接下来我们将自底向上分别介绍各个层。,模型,基础模型,上层传输层,底层传输层,网络层,承载层,BLE,接入层, 2017 Bluetooth SIG Proprietary.,18,图 7 - 蓝牙mesh架构,back to contents,Bluetooth Mesh Networking / An Introduction for Developers, 2017 Bluetooth SIG Proprietary.,19,底层传输层 底层传输层(lower transport layer)可以将来自上层传 输层的PDU
44、发到对端设备的底层传输层。它还可以进行 PDU的分段和重组(这一点与BLE协议栈中的L2CAP类 似)。对于那些不能放入单个PDU的长数据包,底层传输 层会对其进行分段,将其放入多个PDU中传输。当其它设 备的底层传输层收到数据包后再将其重新组合,放入单个 上层传输层PDU中,再向上传输。 上层传输层 上层传输层(upper transport layer)可以将来自或者发 往接入层的应用数据进行加密,解密和认证。在不同节点 之间,上层传输层还负责“传输控制消息”的生成和发 送。传输控制消息与下文将要提到的“友谊”和“心 跳”有关。 接入层 接入层(access layer)定义了应用如何使用
45、上层传输 层。包括: 定义应用数据格式 定义和控制上层传输层中的数据加密和解密过程 验证从上层传输层传来的数据是否对应于正确的网络 和应用,如果正确则将其传入上层协议栈中 基础模型层 基础模型(foundation model)层负责涉及mesh网络配 置和管理的基础模型的实现。 模型层 模型(model)层定义了模型的实现以及模型规范中定 义的行为,消息,状态,状态绑定等的实现。,back to contents,Bluetooth Mesh Networking / An Introduction for Developers,5.0 安全性, 2017 Bluetooth SIG Pro
46、prietary.,20,back to contents,Bluetooth Mesh Networking / An Introduction for Developers,5.0 安全性 mesh网络安全特性具有强制性 在BLE中,允许profile设计者采用不同的安全机制。 例如使用不同的蓝牙配对方法,或者为某一个特性提供 单独的安全防护。也就是说,在BLE中,安全防护是可选 择的,允许设备不进行安全防护。由产品的设计者或制 造商负责分析产品的安全风险,满足具体的安全需求。 相反,蓝牙mesh的安全防护是强制执行的。不管是 网络,单个应用还是具体的设备都需要进行加密,并且 在任何条件下
47、都不能人为地关闭或减弱。 mesh网络安全性基本原则 蓝牙mesh网络会采用以下几个基本原则来确保网络 的安全性: 1. 所有的mesh消息都要经过加密和认证。,2. 网络安全性,应用安全性,设备安全性相互独立。 也就是下面要提到的“关注点分离”。,3. 在mesh网络中,我们可以通过密钥刷新程序来更新 节点的安全密钥。,4. 消息模糊化可以让外界难以追踪网络内所发送的消 息,进而提供了一种隐私保护机制,难以让外界跟 踪节点的活动。,5. 蓝牙mesh安全性可保护网络免受中继攻击。,6. 设备添加到mesh网络从而成为节点的过程本身就是 是一个安全的过程。也就是前面提到的,开通配置 过程。,7
48、. 节点可以从网络中安全地移除,这样可以防止垃圾 桶攻击(trash can attack)。,图 8 - 蓝牙mesh网络的安全性是最重要的, 2017 Bluetooth SIG Proprietary.,21,关注点分离与mesh安全密钥 蓝牙mesh网络安全性的核心是三种安全密钥。分别 使用这些密钥对网络中的不同部分进行加密,这在网络 安全性方面是一种关键能力,也就是我们要说的“关注 点分离”技术。,为了更好地了解这种技术,我们举一个例子。有一个已 经加入蓝牙mesh网络的灯。它可以当作一个中继节点来中继 消息。它可以中继门窗安全系统的消息,但是它不能理解消息 的具体含义,只需要中继消
49、息就行了。照明系统和门窗安全系 统相当于两个不同的子系统,它们使用不同的密钥进行加密, 这样整个网络的安全性就得到了提升。 蓝牙mesh网络里的每个节点都有一个相同的网络密钥 (NetKey)。正是这个密钥才使得节点成为这个网络的一员。 网络加密key与隐私key都是由这个网络密钥生成的。,back to contents,Bluetooth Mesh Networking / An Introduction for Developers, 2017 Bluetooth SIG Proprietary.,22,节点可以利用NetKey来加密和认证网络层,这样诸如 中继之类的网络功能就可以执行了
50、。但是NetKey不能加密 应用数据。 蓝牙mesh网络可以分成几个子网络,每个子网络都有 其单独的NetKey,这个NetKey只有当前子网络成员节点才 有,其它节点没有。这种方式可以分隔开特定的物理区 域,例如酒店中的每个房间都可以拥有一个单独的 NetKey。 只有拥有应用密钥(AppKey)的节点 才能解密相应 的应用数据。在一个mesh网络中,可以有许多不同的 AppKey,每个AppKey对应一种特定的应用(照明应用, 热力应用,门窗安全系统应用等)。例如,灯和开关拥有 灯应用的AppKey,但是没有热力系统的AppKey,只有网 络中的温度调节装置才拥有热力系统的AppKey。,
51、上层传输层会在将消息传输到接入层前,利用 AppKey对消息进行解密和认证。,每个AppKey只与对应的NetKey有关系,这种关系称 为“密钥绑定”(key binding)。也就意味着,一个拥有 既定AppKey的应用只能工作于某个特定网络,而一个 mesh网络可以拥有多个独立的应用。 最后一种密钥是设备密钥(DevKey)。这是一种特殊的 应用密钥。每个节点都有一个独一无二的设备密钥,这个 密钥只有启动配置设备(如手机)知道。设备密钥可以用 在开通配置过程,以确保启动配置设备与节点之间的安全 通讯。,节点移除、密钥刷新与垃圾桶攻击 如前文所述,节点包含多种mesh安全密钥。如果某个 节点
52、出现故障,需要被丢弃,或者用户想要将某个节点卖 给其他人,那么我们需要特别注意,节点中包含许多网络 密钥,不法分子可能利用这些密钥攻击你的网络,给用户 造成损失。 针对以上情况,蓝牙mesh规范中定义了一套安全的流 程来移除不需要的节点。启动配置设备(如手机)上的应 用程序可以将节点加入黑名单,之后发起密钥刷新程序。,密钥刷新程序(Key Refresh Procedure)会向网络中 的所有节点发送新的网络密钥,应用密钥等相关数据。换 句话说,所有的安全密钥都被替换了。当然在黑名单中的 节点不会收到这些信息。,因此,被移除的节点只拥有旧的密钥,所以不再是网 络中的一员,也就没有威胁了。,隐私
53、 隐私key是通过NetKey产生的,它可以用来模糊化网 络PDU报头,例如模糊化源地址。模糊技术可以防止不法 分子通过被动窃听来追踪某台设备或者某个人的位置。它 也可以令某些攻击更加困难,如基于网络流量分析的攻 击。利用隐私key可以提供非常合适的安全防护。,重放攻击 在网络安全方面,我们经常提到重放攻击(replay attack)技术。重放攻击是指窃听者截获一个或多个消息 后,再转发这些消息,以欺骗接收者,实施未授权的攻击 行为。例如我们经常提到的一个例子,汽车的无钥匙进入 系统受到攻击者的破坏,攻击者拦截了车主与汽车之间的 认证序列,然后重放这些信息进入汽车实施盗窃。,蓝牙mesh网络
54、可以防止重放攻击。在蓝牙mesh网络 PDU中包含两个字段,分别称为序列号(Sequence Number)和IV索引(IV Index)。每次发布消息时,元素 会增加序列号的值。当某个节点从元素接收消息时,如果 发现元素包含的序列号小于或等于上一个有效消息中的序 列号,则节点会将消息丢弃,因为很可能这则消息与重放 攻击有关。IV索引是一个单独的字段,需要与序列号一 同考虑。来自既定元素的消息中的IV索引值必须等于或 者大于该元素的上一个有效消息。,back to contents,Bluetooth Mesh Networking / An Introduction for Develope
55、rs,6.0 蓝牙mesh在行动, 2017 Bluetooth SIG Proprietary.,24,back to contents,Bluetooth Mesh Networking / An Introduction for Developers, 2017 Bluetooth SIG Proprietary.,25,6.0 蓝牙mesh在行动,消息发布与传递 Wi-Fi网络是基于一个中央网络节点进行工作的,这 个中央网络节点就是我们常见的路由器。所有的网络传输 都是通过路由器进行的。一旦路由器出现故障,整个网络 都会瘫痪。,与此相反,蓝牙mesh使用一种称为管理型网络泛洪 的技术来进行消息的传递。当一条消息被某个节点发布 后,这条消息不会只路由到某个或多个特定的节点。如果 配置合适的话,在初始节点无线电覆盖范围之内的所有节 点都会收到消息,然后还可以将其中继到更远的地方,这 样在离初始节点更远(远远超过初始节点无线电覆盖范 围)的地方也能收到中继来的广播消息。这样整个通信距 离将变得更长。,多路径传递,通过使用管理型网络泛洪技术,我们可以发现,消息 可以通过网络中的多种途径到达目的地。这就使得蓝牙 mesh网络的消息传输更加可靠,也正是由于这个原因,在 网络设计时,我们才采用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度常年法律顾问合同(知识产权保护专版)
- 二零二五年度大型活动安全保障服务采购协议
- 二零二五年度城市更新项目拆迁房屋分配及安置协议
- 二零二五年度网络安全专家聘用安全管理合同
- 二零二五年度新能源项目班组劳务合作合同
- 二零二五年度拆迁厂房评估与补偿标准执行说明合同
- 二零二五年度餐饮业农民工劳动协议书(全新升级)
- 二零二五版www.lianjia.comzhuantijy物业管理服务合同
- 二零二五年度车库出售与分期付款合同样本
- 二零二五年度O2O在线教育课程合作合同范本
- 云南省文山州州属事业单位选调工作人员笔试真题2024
- 2025年深圳市的房屋租赁合同
- 新疆平台经济发展调研报告2025
- 企业安全声明
- 检验科职业暴露培训课件
- 教师职业素养课件教学
- 汽车网销电话邀约话术培训
- 煤矿掘进试题库及答案
- 地坪材料推广活动方案
- 音乐数据分析与用户行为研究-洞察阐释
- 2025至2030中国电子级磷酸行业市场发展分析及市场需求与投资方向报告
评论
0/150
提交评论