BleMesh总结

概念

BleMesh依赖于低功耗蓝牙 - 低功耗蓝牙技术是蓝牙mesh使用的无线通信协议栈。
蓝牙具有一对一、多对一及多对多三种通信方式。
BleMesh采用的是多对多的通信方式,Mesh网络中的所有设备都可以互相进行通信。
未加入mesh网络的设备称为"unprovisioned devices(未配网设备)";
已加入mesh网络的设备称为"node(节点)";
未配网设备转换为节点的过程称为"provisioning(配置)";
一个节点具有多个组成部分,每个可以独立进行控制,每个组成部分称为"element(元素)";
一个元素有多种情况,这种情况称为"state(状态)",例如Generic OnOff状态;
Properties(属性)代表具体含义的数据
Message(消息)用来操作状态值,分为三种:GET、SET、STATUS,SET消息又分为有响应式/无响应式。

element.png
节点、元素、状态.jpg

加入Mesh网络

设备加入mesh网络的过程称为provisioning,用于驱动provisioning过程的设备称为provisioner,provisioning成功后成为node,还需要经过一系列的配置。
配网过程应该遵循配网协议


provisioning架构.png

配网有5个阶段:

  • Beaconing 信标
    发起广播通知配网

  • Invitation 邀请
    provisioner发送配网邀请PDU,待配网设备作出响应,在Provisioning
    Capabilities PDU中回复关于自身的信息。

  • Exchange public keys 交换公钥
    provisioner与设备间互换公共密,公钥会用于分发配网数据时Session Key的产生。

  • Authentication 认证
    provisioner与设备间通过特定动作进行身份认证。

  • Distribution of provisioning data 分发配网数据
    从公钥和两个设备的私钥派生出Session Key,配网的信息交互的过程会用这个Session key来加密,将配网数据PDU包含“NetKey、DeviceKey...”发送给设备。

配网流程.png

蓝牙Mesh协议架构

Mesh架构.png

蓝牙Mesh加密

NetKey:网络消息加密加密,成为网络的一员。
AppKey(ApplicationKey):处理应用层数据,有AppKey才能实现上层传输层以上的所有功能。
DevKey(DeviceKey):每个节点的devKey唯一,用于配网阶段和配网器进行安全传输用,只有配网器与入网的节点知道DevKey。

Mesh攻击

垃圾桶攻击(Trashcan Attacks):

重放攻击(Replay Attacks):
通过SEQ Number与Iv Index来保证消息是最新的
每条指令都会携带Seq,当下一个seq小于上一条时则该指令不会执行,provisioner端记录seq变化,同时node也存在记录,当node重置或者Iv Index更新时,seq都会重置。

节点角色

代理:实现Gatt和蓝牙Mesh节点之间的mesh消息发送与接收。
中继:转发从其他设备接收到的消息,数据包包含TTL字段,用于限制中继的跳数。
低功耗/友好:两个节点互帮互助,由友好节点存储消息,在低功耗节点需要消息时,友好节点才会传送消息,他们关系称为"friendShip",一般低功耗节点受限于功耗,而友好节点相反,功率不受限的节点很适配作为友好节点。

地址分配

UnicastAddress:

一个network最多支持32767(0x7FFF)个地址

GroupAddress:

动态分配的地址(Dynamically Assigned) -> 0xC000-0xFEFF
固定地址(Fixed Address) – 由蓝牙技术联盟分配,分为五段:
保留供将来使用 (RFU) –> 0xFF00-0xFFFB

  • 发送到启用代理(proxy)功能的所有节点
    All-proxies -> 0xFFFC
  • 发送到启用friend功能的所有节点
    All-friends -> 0xFFFD
  • 发送到启用中继(relay)功能的所有节点
    All-relays -> 0xFFFE
  • 发送到所有节点
    All-nodes -> 0xFFFF
    发送到固定节点的所有消息都由节点的主元素(primary eleme6 nt)进行处理

Model

节点的基本功能都由模型来定义和实施,模型位于元素内,模型能定义并实施节点的功能和行为,而状态能定义元素的状态/条件。
蓝牙Mesh网络通过客户端-服务器架构进行通信
服务器模型(Server Model):暴露元素的状态,定义模型能够发送/接收消息,并根据这些消息定义元素的行为。
客户端模型(Client Model):对状态进行访问,请求、更改或使用服务器的状态
控制模型(Control Model):具有多种功能,可能同时含有一个或多个客户端模型、服务器模型

Configuration Server Model (Root Model)

表示mesh网设备的配置,该model只有主元素支持,该model定义了多种状态


Configuration Server Model.png

Configuration Client Model (Root Model)

该模型表示该元素可以控制节点的配置
主要的作用是设备上述Configuration Server Model所拥有的状态。
Config Model App Bind 该消息作用将appKey bind to Model,将appKey绑定至model如何理解?
当一个元素收到一个模型与AppKey绑定的消息并成功执行后,它应该将AppKey索引对应的AppKey绑定到特定的模型上,并给模型返回AppKey状态消息。
每个server Model都有一组绑定到它的appKey,这些key值就负责加密、认证有这些model处理的消息。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343