在上篇中,我們了解到藍牙mesh網絡設備彼此之間可通過消息和發布/訂閱機制展開對話。
得益于mesh網絡,設備可以在非常廣闊的區域中安裝,同時彼此之間保持通信。想象一下購物中心、機場或辦公大樓的占地空間有多廣闊。因為存在墻壁和其他物理上的障礙物,樓宇中的設備可能無法與安裝在同一樓宇遠側的設備、或臨近樓宇中的設備建立直接的無線連接。而藍牙mesh網絡則能夠將網絡中的某些設備指定為“中繼設備”,進而解決這一難題。
中繼設備能夠轉發從其他設備接收到的消息。在轉發消息時,它們能夠與位于初始消息發布設備無線范圍以外的設備進行通信。消息可多次被中繼,每一次中繼即為一“跳”,最多可進行127跳,足以在一片廣闊的物理區域中進行消息傳輸。
藍牙 mesh網絡在節點之間中繼消息
管理型網絡泛洪(Managed Flooding)
藍牙mesh網絡采用一種稱為“網絡泛洪(flooding)”的方式來發布和中繼消息。這意味著消息不會通過某一進程進行路由, 也不會沿著由一系列特定設備構成的特定路徑來進行傳輸。相反,傳輸范圍內的所有設備都會接收消息,負責中繼的設備能將消息轉發至其傳輸范圍內的所有其他設備。
“網絡泛洪”這項技術在使用中往往是利弊參半。在藍牙mesh網絡的設計中,我們對此進行了針對性的優化,相信能夠揚長避短。
網絡泛洪的優勢
網絡泛洪的優勢在于無需特定設備專門扮演集中式路由器的角色。集中式路由器一旦發生故障,就可能會導致整個網絡無法運行。沒有特定的路由也可能對網絡造成災難性的影響,但這種情況也可以通過在mesh網絡中采用網絡泛洪的方法來避免。
網絡泛洪的方式也意味著消息一般能夠通過多重路徑到達其目的地。這就構建了一個相當可靠的網絡。
優化mesh網絡
藍牙mesh網絡也采取了一系列措施,支持采用網絡泛洪的方式,同時優化每臺設備、甚至整體網絡的能耗。
所有數據包都包含一個稱為TTL的字段,它可用于限制消息中繼的跳數。由設備間歇性發送的心跳消息中包含的信息,能夠讓網絡了解其拓撲結構、以及傳到其他每臺設備之間的跳數。這能夠讓設備將TTL設置為最佳值,從而避免不必要的中繼操作。
每臺設備都包含消息緩存,以確定自身是否已經中繼過該消息。如果是,則會立即丟棄該消息,從而避免上層堆棧進行不必要的處理。
最有趣的是,功率非常受限的設備(例如由小型電池持續供電多年的傳感器)可能被指定為“低功耗節點”。低功耗節點能夠與一個或多個被指定為 “friends” 的設備協同工作。Friends并非功率受限,它可以作為低功耗節點,存儲尋址到這一低功耗節點的消息,并且只有在低功耗節點需要時才傳送消息。低功耗節點和“friends”之間的關系理所當然就稱為“friendship”。
“Friendship”具體如何運轉?
下面我們從節能的角度來進行解讀。
低功耗設備通常將大部分時間用于傳輸數據,例如傳感器。每當溫度低于或高于指定閾值時,傳感器才會發送溫度讀數,這種情況也許每天只會發生兩次。這種不頻繁的傳輸方案本身就使這類設備保持相當低的能耗。
但如果傳感器需要不時地接收數據,又該怎么辦呢?
例如,可能它需要確保網絡中使用的安全密鑰始終處于最新狀態。或許需要根據季節修改這些溫度閾值,采用不同的值。要使傳感器直接接收消息,就需要開啟無線電,以便數據接收。但大多數時候它什么都接收不到,但能量卻會被消耗。
對設備來說,通過與“friends”的合作, 低功耗節點能夠以合理的頻率使用無線電來接收消息,但重要的是,相較于始終“聆聽”所有消息,它能夠以更低的頻率工作,同時確保發送來的罕見事件也不會被遺漏。
“Friends” 能幫助低功耗節點完成大量工作。它們能夠為所服務的低功耗節點存儲消息,并在低功耗節點明確要求的情況下向其提供消息,低功耗節點可按照自身的規劃進行操作,從而最有效地利用無線電。
市場上的藍牙設備支持
藍牙mesh網絡雖然推出不久,但低功耗藍牙(Bluetooth Low Energy)卻面世已久。
那么市場上數十億臺設備呢?智能手機和平板電腦呢?它們能否訪問藍牙mesh網絡?
低功耗藍牙設備和mesh支持
幸運的是,答案是YES!
藍牙mesh網絡會指定一臺設備來扮演代理節點(proxy node)的角色。代理節點包含一項標準:低功耗藍牙GATT服務,具有兩個GATT特性,分別是mesh代理數據輸入(Mesh Proxy Data In)和mesh代理數據輸出(Mesh Proxy Data Out)。諸如智能手機等低功耗藍牙設備均可使用這些特性,與mesh網絡進行數據收發。
這種mesh規格定義了一種代理協議(proxy protocol),同時通過代理節點的兩個GATT特性交換的數據中包含代理協議PDU。
欲知代理節點的作用,請持續關注本系列后續文章~
安全性
安全性是藍牙mesh網絡設計的核心,并且強制使用。
藍牙mesh網絡中強制性使用安全性
每個數據包都經過加密和認證。通過合理使用序列號能夠防止中繼攻擊。在重要流程中使用不對稱加密技術可防止中間人(Man-in-the-middle)攻擊。同時針對利用廢棄設備的垃圾桶攻擊提供保護。必要時還會刷新安全密鑰。
“安全分級考量”(Separation of Concerns)是藍牙mesh網絡安全性中體現的重要原則。網絡的安全性,以及諸如照明、供暖、或實體建筑安全等個別應用的安全性彼此獨立。可使用不同的安全密鑰來保護網絡層操作,例如中繼、或保護特定應用的消息內容。論其結果,舉例來說,由于燈泡和照明開關具有相同的應用密鑰,因此燈泡能夠全面訪問照明開關所發送消息中的數據。但是,盡管相同的燈泡能夠將來自藍牙物理訪問令牌的消息中繼到前門中的鎖,卻無法閱讀那些消息應用層的內容。
本系列的后續文章中也將詳細介紹安全性。我們還將密切關注一個稱為 “開通配置” (Provisioning)的安全流程,設備可通過這一流程變身為藍牙mesh網絡的一員。此外,我們還將探討如何從網絡中安全地刪除設備,以及如何在有需要時刷新安全密鑰。
協議棧
藍牙mesh網絡引入了全新的協議棧。如之前所述,這一協議棧建立在低功耗藍牙技術之上。下圖描繪了協議棧的層級。
藍牙mesh網絡協議棧
該規格是深入了解各層責任的最佳方式。為幫助您更好地了解其工作原理,以下列出了協議棧各層負責的工作:
承載層(bearer layer):承載層定義了如何使用底層低功耗堆棧傳輸PDU。目前定義了兩個承載層:廣播承載層(Advertising Bearer)和GATT承載層。
網絡層(network layer):網絡層定義了各種消息地址類型和網絡消息格式。中繼和代理行為通過網絡層實施。
底層傳輸層(lower transport layer):在需要之時,底層傳輸層能夠處理PDU的分段和重組。
上層傳輸層(upper transport layer):負責對接入層進出的應用數據進行加密、解密和認證。它還負責稱為“傳輸控制消息”(transport control messages)這一特殊的消息,包括與“friendship”相關的心跳和消息。
接入層(access layer):負責應用數據的格式、定義并控制上層傳輸層中執行的加密和解密過程,并在將數據轉發到協議棧之前,驗證接收到的數據是否適用于正確的網絡和應用。
基礎模型(foundation models):基礎模型層負責實現與mesh網絡配置和管理相關的模型。
模型(models):模型層與模型等的實施、以及諸如行為、消息、狀態等的實施有關。
藍牙mesh網絡的未來
我們期待藍牙mesh網絡廣泛應用于各行各業和各種應用,預計最初會從樓宇自動化、商業照明和傳感器網絡等應用開始。尤其令人興奮的是藍牙mesh網絡在商業照明方面的應用。試想一下,有了正確的固件,照明系統能實現的就不僅是無線燈光控制,還能夠成為樓宇中各種藍牙服務的平臺,如物資跟蹤和定位服務!
-
傳感器
+關注
關注
2548文章
50709瀏覽量
752091 -
藍牙
+關注
關注
114文章
5773瀏覽量
169856 -
電池
+關注
關注
84文章
10473瀏覽量
129035
發布評論請先 登錄
相關推薦
評論