mesh的配网过程
配网流程
* Beacon广播:设备通过广播包,通知配网者(provisioner)自己需要进行配网。用户可能需要根据制造商的说明,按照一定的流程,例如键入一组按钮,或将某一按钮长按一段时间等,以此方式启动新设备的广播。
用户还需要在启动配置设备中启动“添加设备到网络”的流程,以便从Beacon设备(Device)接收广播数据包。需要记住的一点是,启动配置设备可能是智能手机或平板电脑应用,因此在实际操作中会涉及到智能手机解锁、应用程序启动、也许还需要登录应用程序(为了进一步确保安全性),并通过其用户界面启动Beacon设备(Devices)搜寻。这样,启动配置设备就会意识到新设备(Device)的存在和准备就绪状态,可进入后续的启动配置流程。
* 邀请:启动配置设备将以启动配置邀请PDU(Provisioning Invite PDU)的形式向要进行启动配置设备发送邀请,这是启动配置协议的一部分。Beacon设备会在启动配置功能PDU中回应有关自身的信息。(例如其所拥有的元素数量、所支持的启动配置相关算法等。它还能指示设备(Device)拥有的输入输出功能类型,这些信息将用于认证(Authentication)步骤)
* 交换公共密钥:启动配置设备会与将被启动配置的设备(Device)交换公共密钥,来创建安全通道,以完成剩余的启动配置流程。
* 认证(Authentication):启动配置设备会基于对新设备(Device)功能的了解,向其发送消息,指示其输出单一或多位数值,即对其所支持的多种用户操作(例如按下按钮)作出响应;然后,设备(Device)和启动配置设备交换密码散列。
* 启动配置数据的分配: 认证成功完成之后,会通过两台设备的私有密钥(Private Key)和交换的对等公共密钥生成会话密钥(Session Key)。随后,会话密钥即可用于保护完成启动配置流程所需数据的后续分发,包括网络密钥(NetKey)和设备的唯一地址,即单播地址(Unicast Address)。
注: 配网阶段:provisioner为设备分配单播(mesh)地址和netkey;配置阶段:节点使用DevKey,provisioner为节点配置发布地址,订阅地址等(可选的配置),配置完成后,节点元素使用netkey(用于网络层安全,使相同netkey的节点在一个网络中,节点通过广播方式发布消息,若配置发布地址则发布消息到配置的地址A;若节点未配置订阅地址A则该节点就不能处理该消息),AppKey(用于保护应用层消息,仅用于provisioner(配置者)与provisionee(被配置者)之间进行私有通信,即再次配置时使用)。
【组内节点可以只配置发布地址到组播地址,不配置订阅地址到组播地址,即可实现组内其他节点发布消息到组播地址时,该节点可以不处理】
网络配置参数
关于对节点特征的定义
Role:定义扮演的mesh角色,一种是device角色,一种是provisioner角色,前者是被配置设备,后者是给人配置的设备。
Relay:置一表示支持中继角色
Proxy:置一表示支持代理角色
Fn:置一表示支持friend角色
Lpn:置一表示支持低功耗角色
Prov:置一表示在系统开始后会先广播入网配置广播(PB-GATT)
Snb:置一表示状态可以被config beacon改变
Bg_scan:置一表示在系统开始后会进行扫描