Mesh OverView
先從一張拓撲結構圖說起
- 數據傳遞有兩種方式ADV 和GATT, 屬於bear layer
- 低功耗模式
低功耗節點跟友元節點成對出現
low power node:主動向friend node 發生msg reuqest
friend node: 存儲和轉發mesh 網絡中的到low power node的信息 - relay node 通過adv,向周圍設備轉發mesh msg
上述是mesh 初印象,深層次的思考
將一個設備增加到mesh網絡中?
https://editor.csdn.net/md/?articleId=104375184
類比ble smp 過程
不支持oob ,input oob,output oob,static oob,四種情況。
ConfirmationProvisioner AES-CMAC產生(key=ConfirmationKey, Random || AuthValue)
ConfirmationKey = k1(ECDHSecret, ConfirmationSalt, “prck”)
ConfirmationSalt = s1(ConfirmationInputs)
ProvisioningSalt = s1(ConfirmationSalt || RandomProvisioner || RandomDevice)
SessionKey = k1(ECDHSecret, ProvisioningSalt, “prsk”)
僅使用一次的session key:
SessionNonce = k1(ECDHSecret, ProvisioningSalt, “prsn”)
分發過程中,provisioning data 使用如下算法加密:
Provisioning Data = Network Key || Key Index || Flags || IV Index || Unicast Address Encrypted Provisioning Data, Provisioning Data MIC = AES-CCM (SessionKey, SessionNonce,Provisioning Data)
代理節點工作流程
https://editor.csdn.net/md/?articleId=104406107
通過GATT交互,涉及三個角色,將信息轉發給不支持GATT的mesh 節點。
proxy client:保存有需要傳遞service 信息,通過gatt write方式,配置sever
proxy server:同時支持gatt 和adv,通過GATT 從proxy 獲取信息,再將信息轉給 mesh 網絡中的其他節點
mesh node:接收 adv mesh msg node
如果發送超長Proxy PDU
通過GATT發送,所有長度受限於ATT_MTU
SAR+TYPE+DATA
SAR :01 10 11
TPYE :network,mesh becon,proxy config,provision
如何配置過濾條件,過濾不感興趣的ADV
白名單:
僅僅接受目的地地址destination addresses ,在白名單中的設備
黑名單:
除了黑名單以內的所有設備,其他destination addresses 的所有設備都會接受
client 配置 server