上层传输层负责接入层消息的加密,和控制消息的交互。
1.Access PDU
由Access层下发来的消息为Access PDU,Access PDU经过Appkey或者DevKey加密后生成4/8字节的TransMIC(transport message integrity check)。
Encrypted Access Payload的最大size为380个字节。
2.Control PDU
用于节点之间控制消息即非应用消息的传递,用于特殊消息收发通道的建立,主要为Friend消息和Heartbeat消息。
CTL消息在这一层不需要加密,所以没有TransMIC,但NetMIC(利用NetKey二次加密的MIC)为8个字节。
Access PDU中的payload包含Opcode,而CTL PDU中Opcode单独提出来。在每个分段的CTL PDU都有Opocde,分段只是对Param域进行分段。
控制消息有以下几种类型:
Value | Opcode | Notes |
---|---|---|
0x00 | - | Reserved for lower transport layer |
0x01 | Friend Poll | LPN向Friend请求Friend存储的消息 |
0x02 | Friend Update | Friend通知LPN安全更新和消息 |
0x03 | Friend Request | LPN向所有Friend请求建立Friendship |
0x04 | Friend Offer | Friend收到LPN的请求后发出邀请 |
0x05 | Friend Clear | Friend与LPN建立Friendship后,通知LPN之前的Friend移除Friendship |
0x06 | Friend Clear Confirm | Old Friend收到Clear消息响应给New Friend |
0x07 | Friend Subscription List Add | 通知Friend添加某个LPN的订阅地址 |
0x08 | Friend Subscription List Remove | 通知Friend移除某个LPN的订阅地址 |
0x09 | Friend Subscription List Confirm | Friend响应订阅地址操作已完成 |
0x0A | Heartbeat | 节点发送心跳消息 |
0x0B-0x7F | RFU | Reserved for Future Use |
Friendship相关控制消息见Ble Mesh技术(九)之Friendship。
Heartbeat相关控制消息见Ble Mesh技术(十)之Heartbeat。