蓝牙Mesh网络是用于建立多对多(many:many)设备通信的低能耗蓝牙(Bluetooth Low Energy,也称为Bluetooth LE)新的网络拓扑。它允许您创建基于多个设备的大型网络,网络可以包含数十台,数百甚至数千台蓝牙Mesh设备,这些设备之间可以相互进行信息的传递,无疑这样一种应用形态为楼宇自动化,无线传感器网络,资产跟踪和其他解决方案提供了理想的选择。
楼宇自动化
新的控制和自动化系统,无论是涉及照明、供暖/制冷,还是安全防护等相关系统,未来的发展趋势都将是更加的智能。智能楼宇在布设了蓝牙Mesh网络之后,使得楼宇内的数十个、数百个或是上千个无线设备都可以可靠、安全的彼此通信,传输信息。
无线传感器网络
无线传感器网络(Wireless Sensor Network, WSN)市场正在快速增长,特别是在工业领域,许多公司正在对现有的无线传感器网络进行显着的成本优化和效率改进。蓝牙Mesh网络旨在满足工业领域严格的可靠性,可扩展性和安全性要求。
资产跟踪
低功耗蓝牙的广播模式(advertising mode)已经成为有源RFID资产跟踪的具有吸引力的替代方案。蓝牙Mesh网络的出现提升了之前低功耗蓝牙广播范围的限制,并为建立蓝牙Mesh资产跟踪解决方案的应用提供给了可能性。
部署蓝牙Mesh很多朋友都在关心市场上的存量设备,例如现有的低功耗蓝牙手环、腕带、球鞋等,是否可以通过固件升级的方式支持蓝牙Mesh。蓝牙Mesh网络运行于低功耗蓝牙之上并且与蓝牙4.0及以上版本前向兼容, 因此市面上现有的低功耗蓝牙产品都可能通过固件升级(尤其以OTA为主)的方式升级为具有蓝牙Mesh功能的产品,但是否具有升级的可能性,还需要考量多个因素,例如程序存储器(ROM)的容量,内存(RAM)的容量,是否具有OTA升级的功能,MCU的处理能力是否满足Provisioning对于非对称加密的运算需求等。
关于Flooding蓝牙Mesh采用flooding的方式进行信息的转发,在这里flooding可以解释为网络泛洪,也就是通过广播的方式,将信息从网络当中的某一个节点转发至目的节点。
大家听到广播已经网络泛洪之后,第一感觉就是网络会非常的繁忙、效率低下、耗电,但是蓝牙Mesh采用的网络泛洪是可控的,设备对于信息的转发需要满足多种限定条件。对于Mesh网络,广播不是“洪水猛兽”,无论是基于AODV路由方式的Mesh,还是与蓝牙Mesh类似基于网络泛洪的方式,都需要使用广播。
采用网络泛洪的方式,通过可控的泛洪消息传递,不需要创建和管理复杂的路由表、路由发现表等,节省了维护网络运行的存储器空间的开销。同时,网络泛洪消息传播的本质是多路径(Multi path)的,确保了信息可以通过多条路径传递到目的节点,因此网络中任何一个单点的故障也不会对网络传输造成致命性的影响,这使得网络高度可靠。
低功耗,Friendship低功耗是蓝牙技术的一大优点,这一优点在蓝牙Mesh技术当中也得以继承。在蓝牙Mesh网络中有一类节点支持低功耗特性(Low Power Feature),也可以称为低功耗节点。这一类节点可以通过减少射频收发机(RF transceiver)开启的占空比来达到低功耗的目的,也就是说这一类节点只有在需要进行消息收发的时候才会打开射频收发器,其他时间都处于休眠状态。
在蓝牙Mesh网络中还有一类节点是专门为低功耗节点服务的,其具有Friend特性,也可以称为Friend节点。Friend节点与低功耗节点可以建立Friendship关系。建立此种关系之后,Friend节点可以暂存发往低功耗节点的信息,待低功耗节点退出休眠模式之后,再从Friend节点取回相关信息。
在实际应用中,Friend节点可以是灯泡、机顶盒、路由器,这些设备都是通过市电供电的,对于功耗不是很敏感;低功耗节点可以是由电池供电的设备,如传感器、门锁等。
手机如何接入到蓝牙Mesh网络要开发与蓝牙Mesh网络产品一起使用的智能手机或平板电脑应用程序,也就是我们常说的App,您必须使用蓝牙Mesh的代理(Proxy)协议,才能通过代理节点与网状网络进行通信。关于代理协议,在蓝牙Mesh规范的第6章节有非常消息的介绍。在这里,对于代理协议进行简单的描述就是:代理协议可以在标准低功耗蓝牙GAP和GATT API之上得以实现,应用程序实现预先定义的GATT服务(service)和特性(Characteristic),就可以与蓝牙Mesh当中的代理节点进行通信,进而通过代理结点,与蓝牙Mesh网络进行互动。
关于安全性蓝牙Mesh网络是一种真正的工业级解决方案,其安全特性包括:
• 使用经过验证的安全算法对添加到网络的设备进行配置(Provisioning)。这套安全机制通过椭圆曲线(Elliptic Curve)Diffie-Hallman非对称加密和带外认证的方式来保证安全地添加设备;
• 所有通信信息都需要使用128-bit AES-CCM进行加密和认证,蓝牙Mesh网络中的所有消息都需要进行加密和认证;
• 加密和认证应用于网络层(Network layer)和应用层(Application layer)两层,分别有两组密钥:网络层密钥(Network key)和应用层密钥(Application key)。同一网络中的节点间使用同一网络层密钥加密及解密。但是应用层的信息是否可以被解密取决于节点是否具有应用层密钥。举一个简单的例子,家中的灯泡和门锁处于同一个网络,因此它们的网络层密钥相同,但是他们的应用层密钥互为不同,灯泡属于照明系统,使用照明类的应用层密钥;门锁属于安全系统,使用安全类的应用层密钥。如果一条信息的目的节点是门锁,家中的各个灯泡可以转发这条信息至门锁,因为灯泡和门锁同处于一个网络;但是灯泡是无法解析这条信息的应用层内容,到底是开锁还是闭锁的动作,灯泡并不清楚,因为灯泡没有安全系统的应用层密钥对应用层信息进行解密。这样设计的好处是将网络层加密与应用层加密隔离,加解密互为操作,互不干扰,互不耦合。
• 通过在发送的每个消息上加入不同序列号(Sequence Number)来防止重放攻击(Replay Attack);
• 在蓝牙Mesh网络中,可以通过既定的密钥更新程序将mesh网络中不授信的设备列入黑名单,这些不授信的设备将会被剔除到Mesh网络之外;
• 通过扰码的方式对每条信息进行模糊(obfuscation)处理,这意味着即使您在走动的同时携带蓝牙Mesh设备,身边的“骇客”通过数据包嗅探器(packet sniffer)也无法跟踪到您的行踪,因为所有的信息都进过了模糊处理。