1. 程式人生 > >SIG-mesh與Telink-mesh簡單介紹

SIG-mesh與Telink-mesh簡單介紹

CA 公司 group con 識別 發送 概念 選擇 網絡

SIG-mesh與telink-mesh都采用泛洪管理的消息機制在廣播信道收發消息。telink-mesh的實現方式較為簡單,主要是根據用戶名與密碼來甄別同一mesh網內節點消息。SIG-mesh采用Network-Key與Application-Key進行兩級加密,實現方式相對於telink-mesh更加復雜,但是適用性、安全性更好。

由於telink-mesh協議棧代碼並未開源,所以telink-mesh實現方式是根據SDK中應用層API及應用代碼推測的。。。

數據傳輸是在廣播信道進行的,即一個節點發出的消息所有節點都可以收到。在一個節點收到的消息中,有非mesh藍牙節點的廣播數據、mesh網內節點的有效數據、mesh網外節點的無效數據。

在進來的消息中,如何識別本節點所屬mesh網內的消息呢?telink-mesh是這樣實現的,在包數據的特定位置插入用戶名、密碼,這樣用戶名密碼不匹配的消息就被過濾掉了。使用相同用戶名密碼的節點,構成一個mesh網。telink-mesh的組網過程,只是修改節點的用戶名。

出廠時,所有的節點都設置相同的默認用戶名密碼,用戶使用時,會通過APP註冊一個唯一的用戶名(比如 [email protected])。app首先通過出廠默認用戶名密碼連接節點,然後將其修改為app用戶名。通過這種方式,該app連接的節點共享一個用戶名,構成一個mesh網。

SIG-mesh實現方式

SIG-mesh是基於BLE5.0實現的,其網絡層級結構自下而上一次是:

BLE協議棧 -> bearer_layer -> network_layer -> transport_layer -> access_layer -> model_layer -> application

除了最下層的BLE協議棧,nordic都將其實現代碼開源。

SIG-mesh的組網由provisionconfigure兩個動作實現。

provision過程是給節點分配Network_key和IV_Index,該過程將未配網設備加入到網絡中,成為網絡節點。

SIG_mesh中,mesh網內節點共享相同的Network_key和IV_Index,其中IV_Index每隔30~60分鐘會加1,網內節點同步更新IV_Index。
一個節點可以配置多個Network_Key,即屬於多個子網。

初始時,未經過provision的設備,會不斷發出unprovision_beacon幀,beacon幀中的數據包含該設備的UUID。Provisioner如果掃描到該beacon幀時,會根據其中的UUID信息,決定是否provision該節點。之後,provisioner會選擇一個UUID的設備,向該節點發送Network_Key、IV_Index等信息。設備獲得正確的Network_Key、IV_Index時,就算是加入mesh網了,節點之間可以轉發本mesh網內消息。

UUID是一個16字節(128 bit)的數據,可以在UUID的特定位置做標記,比如燈、插座、開關、公司等。這樣在provision階段就可以獲取掃描的設備信息。

經過provision階段,節點已經組網了,相互之間可以轉發消息。這時節點還沒有地址、Application_Key等信息,還需要configure階段才能構建完整的mesh網絡。

Configure過程就是配置節點地址及Application_Key。

分配地址過程首先給節點內每個element分配一個unicast_address,根據實際情況分配group_address及virtual_address。

element是SIG_mesh中的一個基本概念,舉個例子,一個智能插排設備會有六個插座位置,這六個插座位置都可以接收開關消息,而我們需要獨立控制每個插座位置,所以不能只給這個插排分配一個unicast_address。要給六個插座位都分配一個唯一的地址。每個插座位就是一個element。可以接收相同消息的單元(這裏是插座位),需要分配在不同element種,以便獨立控制。

分配Application_Key,是針對不同應用而言,比如門鎖與燈。在實際應用中,一個家庭的所有mesh設備構成一個網絡,其中包括門鎖、插座、燈等設備,處於一個mesh網可以互發消息,但是為了防止燈的消息對門鎖造成影響,因此需要對不同的應用分配不同的application_key。這樣門鎖根本就不會去解析燈的消息,但是由於共享相同的Network_Key,門鎖可以轉發燈節點的消息。

SIG-mesh與Telink-mesh簡單介紹