Mesh(三)----Provision

2017-12-10  本文已影响0人  shlin

Provision statck

下图是provision的stack架构,分为三层,左边基于Adv,右边基于GATT


image.png

Provision bearer layer

bearer,送信人的意思,表示传输媒介
两种bearer构成:

一个未配对的设备应该支持上述两种中的一种,强烈建议都支持。
Provisioner(发起配对方)应该支持至少一种,强烈建议支持PB-ADV

PB-ADV

通过adv channels传递Generic Provisioning PDUs,基于会话,一个未绑定的设备只能同时支持一个会话,Provisioner没有限制。会话的建立使用Link Establishment procedure。
MTU(maximum transmission unit)大小是24个字节
设备要能主动扫描(close to 100% duty)避免丢包。
任何使用PB-ADV的广播应该是非连接的非定向扫描的。(non-connectable, non-scannable undirected)

PB-ADV数据格式:


image.png

PB-ADV PDU格式


image.png

PDU过长,分段,所有的分段使用同样的transaction number。
PDU重发的时候,分段号也不变。
Provisioner上该值的范围0x000x7F,device上该值的范围0x800xFF。
当一个设备收到Provisioning PDU,它应该把该值设置为收到的值
当一个设备发送Transaction Acknowledgement PDU,该值应该被设为被承认的PB-ADV中的值----发ack的时候,使用双方协定好的transaction number。

PB-GATT

允许绑定设备,通过Proxy PDUs。
连接间隔建议250ms~1000ms

Proxy Protocol
该协议允许节点收发Network PDUs,mesh beacons,proxy configuration messages and Provisioning PDUs over a connection-oriented bearer。
Proxy PDUs包含Network PDUs,Mesh beacons, proxy configuration messages or provisioning PDU。
mesh消息转发的协议

Generic Provisioning layer

传输Generic Provisioning PUDs的。

Generic Provisioning PDU types:

Link Establishment procedure

不同设备靠Device UUID区分
Device UUID,128-bit UUID,因为mac地址太简单了,不够复杂

image.png

Provisioning protocol

Provisioning PDUs

发起者和设备之间交流的媒介。
格式如下:

image.png

type如下:

image.png

传输层协议使用带外数据(out-of-band,OOB)来发送一些重要的数据,如果通信一方有重要的数据需要通知对方时,协议能够将这些数据快速地发送到对方.为了发送这些数据,协议一般不使用与普通数据相同的通道,而是使用另外的通道.

Provisioning behavior

Provisioning is performed using a five-step process:

ECDH,Deffie-Hellman 算法是 密钥交换算法,它的作用是解决如何在不安全的信道中安全的传输一些信息(主要是交换对称加密的密钥/参数)。ECDH 就是使用椭圆曲线函数的 DH 算法
a,b都有一对公钥,各自根据公钥计算出密钥,使用该密钥就行加密

下图是Provisioning process的整体流程,在下一节会对每个流程做详细描述。


image.png

Provisioning errors

一旦中间失败,没有恢复机制,必须从新开始配对。
发起方发生错误,会立即断开连接。
接收方发生错误,发送一个Failed PDU给发起方,由发起方断开连接。60s超时后,可以不同发送Failed PDU。

流程详解

基于PB-ADV

image.png

不支持加密的流程

image.png

支持加密的流程


image.png

Input OOB


image.png

Static OOB

image.png

加密

目前只支持一种加密方式FIPS P-256 Elliptic Curve,整体加密流程如下:
P是public key


image.png image.png

最终算出一个session key用来加密provisioning data这些信息。

上一篇 下一篇

猜你喜欢

热点阅读