藍牙mesh基本概念
藍牙Mesh
是由藍牙SIG
開發和發佈的配置文件規範。這裏介紹藍牙Mesh的基本概念,概述了配置文件的操作和功能,並解釋了Mesh設備的生命週期。
1、藍牙Mesh
與BLE
的關係
藍牙Mesh
基於藍牙4.0
規範的藍牙低功耗
部分,並與該協議共享最底層。在廣播中,藍牙Mesh物理表示與現有的BLE
兼容,因爲Mesh消息包含在藍牙低功耗廣播分組的有效載荷內。但是,藍牙Mesh指定了一個全新的主機層,雖然共享了一些概念,但藍牙Mesh與藍牙低功耗主機層不兼容。
藍牙Mesh
和藍牙低功耗
規範之間的關係:
2、應用領域
藍牙Mesh
主要針對簡單的控制
和監控應用
,如光控或傳感器數據採集。數據包格式針對小型控制數據包
進行了優化,發出單個命令
或報告
,不適用於數據流
或其他高帶寬
應用程序。
使用藍牙Mesh
會導致比傳統藍牙低功耗
應用更高的功耗
。這主要是因爲需要保持接收不斷運行。因此,與藍牙低功耗
不同,主動Mesh設備
不能長時間地使用鈕釦電池。
藍牙Mesh在網絡中最多支持32767
個設備,最大網絡直徑爲126
跳。
3、網絡拓撲和中繼
藍牙Mesh
是一種基於廣播
的網絡協議,網絡中的每個節點
都向所有節點發送和接收所有的消息。Mesh網絡
中沒有連接
的概念。Mesh中的任何設備
可以中繼
來自任何其他節點的消息,這使得Mesh節點可以通過讓一個或多個其他節點將消息中繼到目的地
來向無線電範圍之外的設備發送消息。此屬性還允許設備隨時移動和進出網絡。
4、Mesh傳輸
藍牙Mesh
利用BLE
廣告客戶和掃描儀角色,通過BLE
廣告數據包進行通信。廣告包
由附近的Mesh節點拾取並像其他BLE
廣告包一樣處理。Mesh數據包
用唯一的AD
類型表示,並添加到廣告數據包有效負載
中。
BLE
設備以規則的廣告間隔
發送廣告包
,Mesh包也不例外。然而,與傳統廣告商不同,Mesh設備將在每次傳輸時改變其廣告有效載荷,當它們在堆棧中排隊時廣播新的Mesh分組。每個藍牙Mesh廣告僅針對每個設備傳輸一次,並且如果Mesh中沒有流量,則設備保持靜默。
5、中繼實現
藍牙Mesh
通過中繼消息
擴展網絡範圍。任何Mesh設備都可以配置爲充當中繼
,並且不需要專用的中繼設備來構建網絡。作爲中繼
的每個設備都會減少
接收消息中的生存時間
(TTL
)值,如果TTL
爲2
或更高
,則轉發它們。這種無向中繼
被稱爲消息泛洪
,並確保消息傳遞的高概率
,而不需要任何關於網絡拓撲
的信息。Mesh配置文件規範不提供任何路由
機制,所有消息都由所有中繼
轉發,直到TTL
值達到0
。爲了避免消息被反覆轉發
,所有Mesh節點
都維護消息緩存
。此緩存用於過濾
節點已處理的數據包
。
基於洪泛
的消息中繼
方法可能導致大量空中流量
,這可能會影響網絡的吞吐量
和可靠性
。因此,強烈建議限制網絡
中的中繼
數量以限制此影響。網絡中的中繼節點
的速率
是消息路由冗餘
和可靠性
之間的折衷。應根據網絡密度
,流量
,網絡佈局
以及可靠性
和響應性
要求進行調整。
6、降低能量消耗
爲了實現基於廣播的通信,節點必須持續保持其無線
處於收聽模式
,導致功耗顯着高於典型的藍牙低功耗設備。爲了使低功耗節點能夠參與Mesh網絡,藍牙Mesh網絡包含低功耗朋友功能。該協議允許低功耗節點與常規Mesh節點建立關係,然後將定期緩存
並將消息轉發到低功耗設備。這使得低功耗設備不必繼續監聽傳入的消息。
7、GATT代理
爲了支持不支持接收Mesh數據包的傳統藍牙低功耗設備,藍牙Mesh網定義了一個單獨的協議,用於通過藍牙低功耗GATT協議隧道化Mesh消息。爲此,Mesh配置文件規範定義了GATT承載和相應的GATT代理協議。該協議允許傳統藍牙低功耗設備通過建立與啓用了代理功能的網狀設備的GATT連接來參與Mesh網絡。
爲舊設備分配一個地址和必要的密鑰,以成爲網絡的正式成員。設備通過常規配置過程或通過一些帶外機制接收安全憑證。
8、解決
藍牙Mesh尋址方案不同於藍牙低功耗尋址方案。它有三種類型的地址:
(1)單播地址:每個設備都是唯一的
(2)組地址:允許形成一組設備並一次解決所有設備
(3)虛擬地址:具有大地址空間的未跟蹤的基於UUID的地址
將設備添加到網絡時,會爲其分配一系列代表它的單播地址。設備的單播地址無法更改,並且始終是順序的。單播地址空間支持在單個網狀網絡中具有32767個單播地址。任何應用程序都可以使用單播地址直接向設備發送消息。
組地址作爲網絡配置過程的一部分進行分配和分配。組地址可以表示任意數量的設備,並且設備可以是任意數量的組的一部分。網狀網絡中最多可以有16127個通用組地址。
虛擬地址可以被認爲是組地址的特殊形式,並且可以用於表示任意數量的設備。每個虛擬地址都是從文本標籤生成的128位UUID。虛擬地址不必由網絡配置設備跟蹤,並且以這種方式,用戶可以在部署之前生成虛擬地址,或者可以在網絡中的設備之間臨時生成地址。
9、模型和元素(Model / Element)
爲了標準化來自不同供應商的設備之間的通信,網狀配置文件規範定義了一個接入層,該接入層在設備中的各種模型之間路由網格消息。模型表示特定的行爲或服務,並定義一組狀態和消息,這些狀態和消息作用於這些狀態。網格配置文件規範和網格模型規範各自定義了一組模型,以涵蓋典型的使用場景,如設備配置,傳感器讀數和燈光控制。除此之外,供應商可以自由定義自己的模型,並附帶消息和狀態。
設備中的模型屬於元素。每個設備都有一個或多個元素,每個元素都充當網格中的虛擬實體,具有自己唯一的單播地址。每個傳入消息都由元素中的模型實例處理。爲了能夠唯一地解決消息的處理方式,每個元素只有一個模型實例可以爲特定的消息操作碼實現處理程序。如果設備具有相同模型的多個實例,則必須將每個實例分配給單獨的元素。同樣,如果兩個模型爲同一個消息實現處理程序,則這些模型必須位於不同的元素中。
爲了表示具有最小消息和狀態重複的複雜行爲,模型可以由其他模型組成,可能跨越多個元素。這些模型稱爲擴展模型。純粹自包含的模型稱爲根模型。
模型通過發佈和訂閱系統相互通信。每個模型都可以訂閱一組組和虛擬地址,模型只處理髮布到其訂閱地址之一或包含元素的單播地址的消息。任何模型都可以維護髮布消息的發佈地址。此發佈地址可以是任何類型。
訪問層
結構:
10、配置(Provision)
在設備可以參與正常網格操作之前,必須先進行配置。在配置期間,設備被添加到網絡並被分配單播地址,網絡密鑰和設備密鑰。供應由供應商完成,供應商是可信設備,可訪問網絡中的完整設備列表及其地址。在配置新設備之後,預計配置器將使用新設備的設備密鑰來建立安全通道來配置它。
11、配置網絡
藍牙網格將網絡配置留給中央網絡配置器。設備不應自行進行任何類型的服務發現。爲了控制其他設備,必須通過用戶交互或通過從數據庫加載預定配置,由配置器配置諸如燈開關之類的設備。每個設備必須在其第一個元素中實現強制配置服務器模型,該元素用於配置其餘模型。
配置完成後,配置程序將使用其Configuration Client模型的實例爲新設備提供一組應用程序密鑰和地址。除非重新配置,否則設備將在網絡上的生命週期內使用這些密鑰和地址。
12、示例場景:燈泡和開關
配置新的燈開關後,配置器中的配置客戶端模型會讀出新設備的模型和元素的列表,並將其呈現給用戶。用戶在設備的模型列表中找到燈開關模型,併爲其提供「燈光控制」應用程序鍵。接下來,用戶將模型的發佈地址設置爲「廚房區域」組地址,廚房中的所有燈泡都訂閱該地址。下次按下新的燈開關時,廚房中的所有燈泡都會亮起。
13、安全
藍牙Mesh採用多種安全措施來防止第三方干擾和監控。
14、認證
設備身份驗證是配置過程的一部分,並允許用戶確認添加到網絡中的設備確實是他們認爲的設備。網狀配置文件規範定義了一系列帶外認證方法,例如燈光閃爍,密碼輸出和輸入,以及針對預共享密鑰的靜態認證。爲了確保供應過程,使用橢圓曲線Diffie-Helman(ECDH)公鑰密碼術。設置完設備後,它就是網絡的一部分,其所有消息都被認爲是經過身份驗證的。
15、郵件加密
Bluetooth Mesh具有兩級AES-CCM加密功能,128位密鑰可用於通過網絡傳輸的所有消息。
最低層,網絡加密,保護網狀網絡中的所有消息不被不屬於網絡的設備讀取。加密是使用網絡加密密鑰完成的,任何網絡都可能包含多達4096個不同的子網,每個子網都有自己的網絡密鑰。共享網絡密鑰的所有設備都被視爲網絡的一部分,可以通過它發送和中繼消息。通過使用多個網絡密鑰,網絡管理員可以有效地將其網絡劃分爲多個子網,因爲網狀中繼僅轉發使用已知網絡密鑰加密的消息。
第二加密層是傳輸加密。此加密層通過使用應用程序或設備密鑰加密應用程序有效負載來限制哪些設備可以在網絡中執行哪些操作。例如,考慮部署在酒店的網狀網絡,希望限制一些功能由工作人員控制(如配置密鑰卡或訪問存儲區域)和一些可供客人使用的功能(如控制房間照明或空調)。爲此,我們可以爲訪客提供一個應用程序密鑰,爲員工提供一個應用程序密鑰,允許消息在同一網絡中進行中繼,同時防止訪客和工作人員閱讀彼此的消息。
雖然應用程序密鑰用於將訪問權限分離到網絡中的不同應用程序,但設備密鑰用於管理網絡中的設備。每個設備都有一個唯一的設備密鑰,只有供應商和設備本身才知道。除了設置其他特定於設備的參數之外,在使用新加密密鑰(網絡或應用程序密鑰)或地址配置設備時使用設備密鑰。它還可用於通過將新密鑰傳輸到網絡中的所有其他設備(在傳輸密鑰時使用其各自的設備密鑰)從網絡中驅逐惡意設備。此過程稱爲密鑰刷新過程。
每個加密層都包含一個消息完整性檢查值,用於驗證消息內容是否使用指示的加密密鑰加密。
16、隱私
所有網狀消息有效負載都是完全加密的。諸如源地址和消息序列號之類的消息元數據使用從網絡密鑰導出的隱私密鑰進行模糊處理,即使對於公共報頭字段也提供有限的隱私。
17、重播保護
爲了防止惡意設備重放先前的消息,每個設備都保留一個正在運行的序列號,用於出站消息。使用唯一的序列號和源地址對發送每個網格消息。當接收消息時,接收設備存儲序列號並確保它比從相同源地址接收的最後序列號更新。