版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
畢健iHealth中國(guó)研發(fā)中心藍(lán)牙高級(jí)工程師郵箱:bi_jian@譯文版本:V1.0完成時(shí)間:2017.11.11備注
:畢健iHealth中國(guó)研發(fā)中心藍(lán)牙高級(jí)工程師郵箱:bi_j11藍(lán)牙m(xù)esh基礎(chǔ)致開發(fā)者:2017夏,藍(lán)牙低功耗技術(shù)引入了一種新的網(wǎng)絡(luò)拓?fù)漕愋?/p>
--
Mesh。mesh的引入使得藍(lán)牙在低功耗無線通信技術(shù)領(lǐng)域更具優(yōu)勢(shì),在許多新興領(lǐng)域如智能家居,工業(yè)物聯(lián)網(wǎng),樓宇自動(dòng)化等勢(shì)必會(huì)得到更好的應(yīng)用。藍(lán)牙1藍(lán)牙m(xù)esh基礎(chǔ)致開發(fā)者:藍(lán)牙2BluetoothMeshNetworking/AnIntroductionfor
DevelopersContributorsMartin
WoolleyAuthorSarah
SchmidtGraphic
Designer目錄?2017BluetoothSIG
Proprietary.21.0
介紹
...........
....................................
42.0
執(zhí)掌生活
.........................
..............
62.1
智能建筑獲得真正的智能 73.0藍(lán)牙m(xù)esh基礎(chǔ)
........
..
.
...........................
83.1概念和術(shù)語93.2mesh
與點(diǎn)對(duì)點(diǎn)93.3設(shè)備與節(jié)點(diǎn)93.4元素103.5消息103.6地址103.7發(fā)布/訂閱113.8狀態(tài)和屬性113.9消息,狀態(tài)及屬性123.10狀態(tài)轉(zhuǎn)變123.11綁定狀態(tài)123.12模型133.13通用性133.14情景133.15開通配置143.16特性14BluetoothMeshNetworking/An3BluetoothMeshNetworking/AnIntroductionfor
Developers3.0
藍(lán)牙m(xù)esh基礎(chǔ)
(續(xù))中繼節(jié)點(diǎn)低功耗節(jié)點(diǎn)與友節(jié)點(diǎn)代理節(jié)點(diǎn)節(jié)點(diǎn)配置?2017BluetoothSIG
Proprietary.3151515164.0
Mesh系統(tǒng)架構(gòu).
.....................
...
.....
..
.
.
174.1
概述 184.2承載層184.3網(wǎng)絡(luò)層184.4底層傳輸層194.5上層傳輸層194.6接入層194.7基礎(chǔ)模型194.8模型195.0
安全性.......................................
.
20Mesh網(wǎng)絡(luò)安全特性具有強(qiáng)制性Mesh網(wǎng)絡(luò)安全性基本原則關(guān)注點(diǎn)分離與mesh安全密鑰節(jié)點(diǎn)移除,密鑰刷新及垃圾桶攻擊隱私重放攻擊2121212222236.0
藍(lán)牙m(xù)esh在行動(dòng)..
......
............................
24消息發(fā)布與傳遞多路徑傳遞管理型網(wǎng)絡(luò)泛洪協(xié)議棧中消息的傳遞252525257.0
藍(lán)牙Mesh
—
正待勇士開拓的疆場(chǎng)
..............
277.1
參考資料 28BluetoothMeshNetworking/An4backto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers1.0
介紹?2017BluetoothSIG
Proprietary.4backtocontentsBluetoothMesh5backto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers1.0
介紹2000年,藍(lán)牙技術(shù)面世,用以替代線纜進(jìn)行無線通信。此后的十幾年間,藍(lán)牙得到了快速的發(fā)展,很快在無線音頻及計(jì)算機(jī)周邊產(chǎn)品如無線鼠標(biāo),鍵盤等領(lǐng)域占據(jù)了統(tǒng)治地位。2010年,藍(lán)牙低功耗技術(shù)(BLE)面世,推動(dòng)藍(lán)牙技術(shù)向前邁進(jìn)了重要一步
。其影響深遠(yuǎn),主要體現(xiàn)在智能手機(jī),平板,以及醫(yī)療健康,智能家居,可穿戴產(chǎn)品等領(lǐng)域?;诰W(wǎng)狀拓?fù)漕愋偷臒o線通信系統(tǒng)可以覆蓋更大的范圍,使得通信距離變長(zhǎng),同時(shí)系統(tǒng)的魯棒性得到加強(qiáng)。但是他們?nèi)匀皇且环N小眾技術(shù),主要是因?yàn)榕c現(xiàn)有的大多數(shù)計(jì)算機(jī),智能手機(jī)等設(shè)備不兼容,因而沒有得到大范圍的推廣和應(yīng)用。為了將mesh技術(shù)應(yīng)用到藍(lán)牙中,120個(gè)藍(lán)牙SIG成員公司先后參與到這項(xiàng)工作中。與以往情況不同,此次規(guī)模之大,涉及范圍之廣,充分表明了業(yè)界對(duì)藍(lán)牙m(xù)esh技術(shù)標(biāo)準(zhǔn)制定的迫切需求。藍(lán)牙m(xù)esh技術(shù)的添加代表了一種技術(shù)類型的變化,這種變化如此巨大,我們甚至可以認(rèn)為這對(duì)藍(lán)牙技術(shù)標(biāo)準(zhǔn)來說是一次整體模式的轉(zhuǎn)變。(譯者注:藍(lán)牙特別興趣小組
The
Bluetooth
SpecialInterest
Group
(SIG),是一個(gè)非盈利性組織,致力于藍(lán)牙技術(shù)標(biāo)準(zhǔn)的開發(fā),和藍(lán)牙技術(shù)應(yīng)用及商標(biāo)的授權(quán)。公司成立于1998年,總部位于美國(guó)華盛頓。)?2017BluetoothSIG
Proprietary.5backtocontentsBluetoothMesh6backto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers2.0執(zhí)掌生活?2017BluetoothSIG
Proprietary.6backtocontentsBluetoothMesh7backto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers2.0
執(zhí)掌生活智能建筑將獲得真正的智能
想象一下,在一個(gè)天色昏暗的冬日的早晨,你驅(qū)車前往公司。公司的安全系統(tǒng)識(shí)別了你的車,讓你進(jìn)入公司,同時(shí)分配給你一個(gè)停車位。此時(shí),你的停車位上的燈亮起,指引你快速停到那個(gè)位置。之后,這個(gè)車位分配系統(tǒng)將自動(dòng)進(jìn)行更新,顯示該車位已使用。
進(jìn)入公司大樓后,相應(yīng)的傳感器注意到有人進(jìn)入,并從你身上的可穿戴設(shè)備如手表等識(shí)別到你。你乘坐電梯到達(dá)二樓,像往常一樣,你是第一個(gè)到達(dá)的。當(dāng)電梯門打開時(shí),從電梯室到辦公室及開水間的燈自動(dòng)打開??Х仍谀銈児臼欠浅V匾?,所以開水室的燈才會(huì)自動(dòng)打開,其它區(qū)域的燈關(guān)閉,從而節(jié)省能量。
你走進(jìn)辦公室,屋頂燈和臺(tái)燈已經(jīng)打開了,并且是你最喜歡的亮度等級(jí)。你注意到辦公室溫度比其它區(qū)域溫度略高,這正是你之前設(shè)置的。你靠近辦公電腦,此時(shí)電腦自動(dòng)登陸你的賬戶。
現(xiàn)在你可以開始辦公了,并且整個(gè)辦公環(huán)境考慮到了個(gè)人偏好,充分滿足了你的需求。很顯然這種這種系統(tǒng)是十分高效的,那么它是如何實(shí)現(xiàn)的呢?你們公司幾個(gè)月前使用了藍(lán)牙m(xù)esh技術(shù),最開始安裝在照明系統(tǒng)上,隨后添加到Occupancy
sensor,環(huán)境傳感器,無線暖氣控制系統(tǒng),停車管理系統(tǒng)等網(wǎng)絡(luò)中。這樣,公司可以在電力和熱力系統(tǒng)上省上不少費(fèi)用,而且工作環(huán)境更加人性化,從而使員工的工作效率更高。整個(gè)系統(tǒng)的維護(hù)成本也在下降,例如加入電燈開關(guān)不再需要布置昂貴且麻煩的電線了。系統(tǒng)采集的數(shù)據(jù)可以供大樓管理人員分析,從而了解這棟建筑,以及它所提供的服務(wù)和人們對(duì)這些服務(wù)做出的反應(yīng),進(jìn)而對(duì)整個(gè)系統(tǒng)進(jìn)行優(yōu)化。我們可以控制某棟建筑提供的服務(wù),與其進(jìn)行無線交互,使其行為更加自動(dòng)化,而藍(lán)牙m(xù)esh正使這一切更加方便且低成本。你甚至?xí)械襟@訝之前沒有這些技術(shù)是怎么生活的。(譯者注:
Occupancy
sensor,一種室內(nèi)運(yùn)動(dòng)檢測(cè)設(shè)備,檢測(cè)到人體時(shí)會(huì)自動(dòng)打開燈,溫度調(diào)節(jié)裝置及通風(fēng)系統(tǒng)。這種傳感器多使用紅外,超聲,微波等技術(shù),主要用來節(jié)省能量,提供自動(dòng)控制。)圖
1
-
藍(lán)牙m(xù)esh可以分布于辦公室和停車處?2017BluetoothSIG
Proprietary.7backtocontentsBluetoothMesh8backto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers3.0藍(lán)牙m(xù)esh基礎(chǔ)?2017BluetoothSIG
Proprietary8backtocontentsBluetoothMesh9backto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers3.0
藍(lán)牙m(xù)esh基礎(chǔ)概念及術(shù)語要認(rèn)識(shí)藍(lán)牙m(xù)esh技術(shù),需要讀者了解一些新的技術(shù)概念與術(shù)語,這些在之前藍(lán)牙低功耗(BLE)的世界里是沒有的。本章我們將帶你認(rèn)識(shí)一些最基本的概念及術(shù)語。mesh
vs
點(diǎn)對(duì)點(diǎn)我們所見到的大多數(shù)BLE設(shè)備都是進(jìn)行一對(duì)一的數(shù)據(jù)通信的。這是一種點(diǎn)對(duì)點(diǎn)的網(wǎng)絡(luò)拓?fù)漕愋?,在藍(lán)牙核心規(guī)范中被稱為“微微網(wǎng)”(piconet)。
假設(shè)一個(gè)智能手機(jī)與一個(gè)心率檢測(cè)器建立了一個(gè)點(diǎn)對(duì)點(diǎn)的連接,這樣它們之間就可以傳輸數(shù)據(jù)了。藍(lán)牙的一個(gè)優(yōu)點(diǎn)就是可以讓設(shè)備建立多個(gè)連接,所以這臺(tái)智能手機(jī)可以再與另一個(gè)運(yùn)動(dòng)追蹤設(shè)備建立連接。此時(shí),手機(jī)可以同另外兩臺(tái)設(shè)備進(jìn)行通信,而這兩臺(tái)設(shè)備之間無法直接進(jìn)行溝通。與以上情況相反的是,mesh擁有多對(duì)多的網(wǎng)絡(luò)拓?fù)漕愋?。每一臺(tái)設(shè)備都可以與網(wǎng)絡(luò)中的其它設(shè)備進(jìn)行通信(我們會(huì)在第6章進(jìn)行更深入的討論)。設(shè)備間的通信以消息的形式傳遞,一臺(tái)設(shè)備可以將某一臺(tái)設(shè)備發(fā)來的消息中繼到另一臺(tái)設(shè)備,這樣就可以擴(kuò)展端到端的通信范圍,這個(gè)范圍遠(yuǎn)超過一個(gè)單獨(dú)設(shè)備藍(lán)牙無線電所覆蓋的范圍。設(shè)備和節(jié)點(diǎn)mesh網(wǎng)絡(luò)中的單臺(tái)設(shè)備稱做節(jié)點(diǎn)(node),網(wǎng)絡(luò)外的設(shè)備稱為“未開通配置設(shè)備”(unprovisioneddevices)。將某個(gè)“未開通配置設(shè)備”轉(zhuǎn)化為網(wǎng)絡(luò)節(jié)點(diǎn)的過程稱為“開通配置”(provisioning)。例如,你買了一個(gè)帶有mesh功能的藍(lán)牙燈,你需要把它帶回家并進(jìn)行簡(jiǎn)單的配置,從而將其加入到家中原有的mesh網(wǎng)絡(luò)中,這樣你就可以通過家里的電燈開關(guān)與調(diào)光器對(duì)其進(jìn)行控制了。這一過程即為“開通配置”(provisioning)?!伴_通配置”過程是每一臺(tái)新設(shè)備都要經(jīng)歷的,在這個(gè)過程中,新設(shè)備會(huì)獲取一系列的密鑰,同時(shí)告知“啟動(dòng)配置設(shè)備”(provisioner
device,通常是智能手機(jī)或者平板電腦)有新設(shè)備加入到網(wǎng)絡(luò)中。其中有一個(gè)密鑰叫做網(wǎng)絡(luò)密鑰,即NetKey。在后續(xù)章節(jié)我們會(huì)再對(duì)mesh的安全性進(jìn)行深入討論。Mesh網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)都擁有至少一個(gè)NetKey,正是這個(gè)NetKey讓其成為相應(yīng)網(wǎng)絡(luò)的一員。節(jié)點(diǎn)的正常工作需要滿足許多條件,而NetKey則是最基本的第一步工作。隨后我們會(huì)對(duì)“開通配置”的過程展開深入的討論,在此不再贅述。圖
2
-
一種具有消息中繼功能的多對(duì)多網(wǎng)絡(luò)拓?fù)漕愋?2017BluetoothSIG
Proprietary.9backtocontentsBluetoothMeshbackto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers元素
有些節(jié)點(diǎn)由多個(gè)獨(dú)立的部分組成,每一個(gè)部分都可以進(jìn)行單獨(dú)的控制。在藍(lán)牙m(xù)esh中,這些獨(dú)立的部分稱為元素(element)。圖3即為網(wǎng)絡(luò)中的一個(gè)燈節(jié)點(diǎn),它有3個(gè)元素,每個(gè)LED燈泡有一個(gè)元素。每個(gè)節(jié)點(diǎn)至少擁有一個(gè)元素,稱為主元素(Primary
Element)。節(jié)點(diǎn)中的每個(gè)元素都有一個(gè)唯一確定的地址,稱為單播地址(unicast
address),這樣每個(gè)元素都可以獨(dú)立尋址。條響應(yīng)信息。這條響應(yīng)信息有兩個(gè)作用:1.告知消息發(fā)送方,消息已接收;2.返回消息接收方需要告知發(fā)送方的某些數(shù)據(jù)。
需要應(yīng)答的消息如果沒有得到響應(yīng),則可能會(huì)被發(fā)送多次,所以這種消息必需具有冪等性。冪等性意味著這種消息不論到達(dá)接收節(jié)點(diǎn)多少次,與其到達(dá)接收節(jié)點(diǎn)一次產(chǎn)生的效果都是相同的。否則如果因?yàn)槟承┮馔?,消息多次到達(dá)接收節(jié)點(diǎn),則有可能使接收節(jié)點(diǎn)的狀態(tài)變得不確定。
不需要應(yīng)答的消息不要求接收者發(fā)送響應(yīng)信息。地址
消息必須從一個(gè)地址發(fā)送到另一個(gè)地址。
藍(lán)牙m(xù)esh協(xié)議中定義了3種地址(還有一種未分配地址在此不做討論)。
單播地址用于唯一確定單個(gè)元素。在“開通配置”過程中,會(huì)將單播地址賦給設(shè)備。
群組地址是一種多播地址,它可以代表一個(gè)或多個(gè)元素。
群組地址要么是動(dòng)態(tài)分配的,要么是藍(lán)牙技術(shù)聯(lián)盟預(yù)先定義的(SIG固定群組地址)。藍(lán)牙技術(shù)聯(lián)盟已經(jīng)定義了4個(gè)固定群組地址,即All-proxies,
All-friends,
All-relays及All-nodes。在后續(xù)章節(jié)中我們會(huì)詳細(xì)解釋什么是Proxy(代理),
Friend(朋友)及
Relay(中繼)
。
我們可以通過配置應(yīng)用程序來建立動(dòng)態(tài)群組地址,這些地址反映了一棟建筑的某種實(shí)體分配,例如為大樓里的每一個(gè)房間定義一個(gè)群組地址。
虛擬地址可以賦給一個(gè)或多個(gè)元素,橫跨一個(gè)或多個(gè)節(jié)點(diǎn)。虛擬地址與128位UUID的形式類似,任何元素都可以與其相關(guān)聯(lián),它更像一個(gè)標(biāo)簽。
虛擬地址可以在出廠前就進(jìn)行預(yù)先配置,然后用于某些特定場(chǎng)景,例如使某個(gè)廠商制作的投影儀的尋址更加方便。
圖
3
-
三個(gè)元素組成一個(gè)燈節(jié)點(diǎn)
?2017BluetoothSIG
Proprietary.10消息
當(dāng)某個(gè)節(jié)點(diǎn)需要獲取其它節(jié)點(diǎn)的狀態(tài)時(shí),或需要以某種方式控制其它節(jié)點(diǎn),它會(huì)發(fā)送消息(message)。如果某節(jié)點(diǎn)需要向其它節(jié)點(diǎn)匯報(bào)狀態(tài),它也會(huì)發(fā)送消息。
在mesh網(wǎng)絡(luò)中,所以通信都是以消息的形式傳遞的。協(xié)議規(guī)范中定義了多種消息類型,每種消息類型都有自己唯一的操作碼。
消息可以統(tǒng)分為兩種類型:需要應(yīng)答和不需要應(yīng)答。需要應(yīng)答的消息要求接收節(jié)點(diǎn)接收到消息后返回一backtocontentsBluetoothMeshbackto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers發(fā)布/訂閱
在藍(lán)牙m(xù)esh中,發(fā)送消息稱為發(fā)布(
publish
)。將某個(gè)節(jié)點(diǎn)配置成可以接收特定消息的過程稱為訂閱(subscribe),即如果某個(gè)節(jié)點(diǎn)可以接收某條消息,那么我們就說這個(gè)節(jié)點(diǎn)“
訂閱
”了這條消息。
消息都是發(fā)往組地址或者虛擬地址的,而且這些地址都具有可讀性,具有現(xiàn)實(shí)意義,例如代表某一個(gè)房間。所以使用起來既方便有直觀。
在圖4中我們可以看到,開關(guān)1可以發(fā)布消息到廚房組地址(上文我們已經(jīng)提到,組地址可以代表某個(gè)房間)。1號(hào),2號(hào)和3號(hào)燈節(jié)點(diǎn)都訂閱了廚房地址,因此可以接收和處理發(fā)往該地址的消息。也就是說,1號(hào),2號(hào)和3號(hào)燈可以被1號(hào)開關(guān)控制。
同理,開關(guān)2可以發(fā)布消息到客廳組地址,而只有3號(hào)燈訂閱了該地址,所以開關(guān)2只能控制3號(hào)燈。從圖中我們也可以看到,一個(gè)節(jié)點(diǎn)可以訂閱多個(gè)組地址,如3號(hào)燈節(jié)點(diǎn)同時(shí)訂閱了廚房和客廳兩個(gè)組地址。藍(lán)牙的mesh功能非常強(qiáng)大而且靈活,我們還可以看到多個(gè)開關(guān)可以向一個(gè)組地址發(fā)布消息,如開關(guān)5,
6都可以向花園組地址發(fā)布消息。
使用組地址和虛擬地址來發(fā)布和訂閱消息有許多好處。當(dāng)我們移除,替換或者添加節(jié)點(diǎn)時(shí),不需要重新配置其它節(jié)點(diǎn)。想象一下你要在家里裝一個(gè)燈有多麻煩你就知道這種方式有多方便了。例如有新設(shè)備需要加入到客廳網(wǎng)絡(luò)中,只需經(jīng)過“開通配置”過程并訂閱相應(yīng)的客廳組地址就可以了,其它節(jié)點(diǎn)并不會(huì)受到影響。開關(guān)2依然可以向客廳組地址發(fā)布消息,不過現(xiàn)在它可以控制3號(hào)燈與新加入的燈了。狀態(tài)和屬性
元素可能處在各種條件下,在藍(lán)牙m(xù)esh中我們稱之為狀態(tài)(state)。一個(gè)元素可以有多個(gè)狀態(tài),每個(gè)狀態(tài)都是一組特定值(在下面的服務(wù)器模型中會(huì)再做介紹)。狀態(tài)與特定的行為有關(guān),不能在其它地方重用。
例如,藍(lán)牙m(xù)esh定義了通用開關(guān)狀態(tài)來形容某個(gè)電燈可能存在的狀態(tài),為其賦1(on)電燈打開,為其賦0(off)電燈關(guān)閉,就這么簡(jiǎn)單。屬性(property)與狀態(tài)類似,它們都包含與元素相關(guān)的數(shù)值,但在其它方面二者存在顯著差異。發(fā)布?2017BluetoothSIG
Proprietary.11訂閱廚房客廳走廊臥室花園圖
4
-
發(fā)布/訂閱Switch
6Switch
5Switch
4Switch
3Switch
2Switch
1Light
1Light
2Light
3Light
4Light
5Light
6Light
7Light
8Light
9backtocontentsBluetoothMeshbackto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers
熟悉BLE的讀者應(yīng)該了解特性(characteristic),它們是一種沒有與特定行為相聯(lián)系的數(shù)據(jù)類型,這樣它們就很容易地得到重(chong)用。利用上面提到的屬性,可以將特性與具體含義相聯(lián)系。有一點(diǎn)需要特別注意,這里提到的屬性(property)與我們?cè)贐LE協(xié)議棧中定義的屬性(attribute)是完全不同的,為了防止混淆,我們也可以將前者翻譯成“性質(zhì)”(property)。
為了加深對(duì)屬性的認(rèn)識(shí),我們考慮一個(gè)具體的例子。有這樣一個(gè)特性,稱為“溫度8”,它具有多個(gè)相關(guān)屬性,包括室內(nèi)溫度與室外溫度。當(dāng)接收客戶端接收到溫度值時(shí),可以根據(jù)對(duì)應(yīng)屬性值,來判斷這個(gè)溫度是室內(nèi)溫度還是室外溫度。屬性分為兩類,分別是來自制造商的只讀屬性和來自系統(tǒng)管理員的可讀寫屬性。消息,狀態(tài)及屬性藍(lán)牙m(xù)esh網(wǎng)絡(luò)的正常工作依賴于消息的傳遞。某個(gè)特定類型的消息可以對(duì)一個(gè)或多個(gè)狀態(tài)值進(jìn)行操作。消息可以分為3類,簡(jiǎn)稱為GET,SET,STATUS,對(duì)應(yīng)于藍(lán)牙m(xù)esh網(wǎng)絡(luò)支持的3種操作。
GET消息可以用來向一個(gè)或多個(gè)節(jié)點(diǎn)請(qǐng)求狀態(tài)值,之后,相應(yīng)節(jié)點(diǎn)會(huì)返回STATUS信息,告知請(qǐng)求的狀態(tài)值。
SET消息可以改變既定狀態(tài)的值。有些SET消息需要應(yīng)答,要求返回一條STATUS消息
,有些消息不需要應(yīng)答。
STATUS消息可以用來應(yīng)答GET消息,也可以用來應(yīng)答SET消息或者通過某元素中的定時(shí)器定時(shí)發(fā)送。我們可以通過消息操作碼(opcode)識(shí)別到特定狀態(tài)。另一方面,我們也可以在通用屬性相關(guān)消息中使用16位屬性ID來直接引用屬性(具體操作細(xì)節(jié)請(qǐng)參考藍(lán)牙m(xù)esh相關(guān)技術(shù)文檔)。狀態(tài)轉(zhuǎn)變從一個(gè)狀態(tài)轉(zhuǎn)變?yōu)榱硪粋€(gè)狀態(tài)的過程叫做狀態(tài)轉(zhuǎn)換,轉(zhuǎn)變的過程可能是瞬時(shí)的,也可能需要經(jīng)過一段時(shí)間,這段時(shí)間叫做轉(zhuǎn)換時(shí)間。狀態(tài)轉(zhuǎn)變可能會(huì)對(duì)節(jié)點(diǎn)應(yīng)用層的行為產(chǎn)生影響。綁定狀態(tài)狀態(tài)之間也可能存在某種關(guān)系,一種狀態(tài)改變會(huì)導(dǎo)致另一種狀態(tài)也改變,這種關(guān)系稱為狀態(tài)綁定(statebinding)。一個(gè)狀態(tài)可以與其它多個(gè)狀態(tài)綁定。例如,通過一個(gè)調(diào)光器控制一盞燈。這盞燈有兩種狀態(tài),即通用開關(guān)狀態(tài)和通用等級(jí)狀態(tài),他們之間相互綁定。減少燈的亮度等級(jí),直到亮度等級(jí)為0,這將導(dǎo)致通用開關(guān)狀態(tài)由開變?yōu)殛P(guān)。通用開關(guān)服務(wù)器通用開關(guān)客戶端圖
5
-
通用模型?2017BluetoothSIG
Proprietary.12backtocontentsBluetoothMeshbackto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers?2017BluetoothSIG
Proprietary.13模型模型將之前提到的概念組合在一起,定義了元素的功能。當(dāng)前藍(lán)牙m(xù)esh規(guī)范中一共定義了3類模型。第一種是服務(wù)器模型(server
model),它定義了一系列的狀態(tài),狀態(tài)轉(zhuǎn)換,狀態(tài)綁定以及模型中元素可以收發(fā)的消息。同時(shí),它也定義了與消息,狀態(tài),狀態(tài)轉(zhuǎn)換相對(duì)應(yīng)的行為。客戶端模型(client
model
)沒有定義任何狀態(tài),它只定義了幾種消息。我們可以利用這些消息來對(duì)相應(yīng)服務(wù)器模型中的狀態(tài)進(jìn)行操作,如GET,SET及STATUS??刂颇P停–ontrol
model)包含一個(gè)服務(wù)器模型和一個(gè)客戶端模型。服務(wù)器模型可以用來與其它客戶端模型進(jìn)行通信,而客戶端模型可以用來與其它服務(wù)器模型進(jìn)行通信。我們可以通過擴(kuò)展某個(gè)模型來創(chuàng)建新的模型。不過有一種模型不能擴(kuò)展,這種模型稱為root模型。
模型不能被改變,也就是說我們不能向模型中加入或者移除相關(guān)行為。實(shí)現(xiàn)新模型的唯一方式就是擴(kuò)展已經(jīng)存在的模型。通用性
生活中我們不難看出,很多設(shè)備本質(zhì)上都存在著相似的狀態(tài)。例如燈,風(fēng)扇,電源插座等等,它們都具有開和關(guān)兩種狀態(tài)。因此,藍(lán)牙m(xù)esh模型規(guī)范定義了許多可重用的通用狀態(tài),例如通用開關(guān)狀態(tài)(Generic
OnOff),通用等級(jí)狀態(tài)(Generic
Level)。同理,我們還定義了一些通用消息,來對(duì)通用狀態(tài)進(jìn)行處理,例如Generic
OnOff
Get和Generic
Level
Set消息。
通用狀態(tài)及通用消息可以用在通用模型中。通用模型包括通用客戶端模型,通用服務(wù)器模型,如通用開關(guān)服務(wù)器,通用等級(jí)客戶端等。
利用通用性,不需要?jiǎng)?chuàng)建新的模型就可以將藍(lán)牙m(xù)esh功能添加到多個(gè)設(shè)備中。因?yàn)榭梢酝ㄟ^擴(kuò)展某個(gè)模型來創(chuàng)建新的模型,所以我們可以利用通用模型為新設(shè)備快速創(chuàng)建合適的模型。情景想象一下,某天晚上,你想要將臥室的溫度調(diào)到20攝氏度,將臥室吊燈調(diào)到合適的亮度,再將桌上的臺(tái)燈調(diào)成令人舒適的暖色調(diào)等等。也許你會(huì)想到這需要一個(gè)一個(gè)手動(dòng)設(shè)置,那你就out啦!我們可以在應(yīng)用程序上保存這些配置,在需要的時(shí)候調(diào)用它們。這些保存的配置稱為“情景”(scene)。我們可以通過16位情景序號(hào)來識(shí)別特定的情景,在每個(gè)mesh網(wǎng)絡(luò)中,情景序號(hào)都是各不相同的。利用情景可以讓許多節(jié)點(diǎn)同時(shí)到達(dá)某種既定狀態(tài),省去了單獨(dú)配置每個(gè)節(jié)點(diǎn)的麻煩。backtocontentsBluetoothMeshbackto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers?2017BluetoothSIG
Proprietary.14開通配置(Provisioning)
開通配置是指將某臺(tái)設(shè)備加入到mesh網(wǎng)絡(luò)中,從而變成一個(gè)節(jié)點(diǎn)的過程。它涉及幾個(gè)階段,期間會(huì)生成許多安全密鑰,這一過程對(duì)安全性要求比較高。
開通配置通常是通過手機(jī)或者平板電腦上的應(yīng)用程序完成的。此時(shí),手機(jī)或者平板電腦通常被稱為啟動(dòng)配置設(shè)備(Provisioner)。開通配置的過程涉及5個(gè)步驟,下面就每個(gè)步驟分別展開討論。第
1
步.
發(fā)送Beacon信號(hào)為了支持藍(lán)牙m(xù)esh的不同特性,包括但不限于“開通配置”,我們引入了新的GAP廣播類型(參考藍(lán)牙核心規(guī)范補(bǔ)充),包括<<Mesh
Beacon>>廣播類型。未開通配置的設(shè)備(如需要加入mesh網(wǎng)絡(luò)的燈)可以發(fā)出<<Mesh
Beacon>>廣播數(shù)據(jù)包,聲明自己是未開通配置的設(shè)備,可以被啟動(dòng)配置。用戶可能需要按照一定的方式,如鍵入一組按鈕,或長(zhǎng)按某個(gè)按鍵一段時(shí)間,從而啟動(dòng)新設(shè)備的廣播第
2
步.
邀請(qǐng)?jiān)谶@一步驟中,啟動(dòng)配置設(shè)備(手機(jī)等)向需要加入mesh網(wǎng)絡(luò)的設(shè)備(如燈)發(fā)送邀請(qǐng),實(shí)際上發(fā)送的就是“開通配置邀請(qǐng)PDU”,一種特定格式的數(shù)據(jù)包。此時(shí)需要開通配置的設(shè)備(如燈)會(huì)返回一定的數(shù)據(jù)包,即“開通配置能力PDU”告知自身情況。第
4
步.
認(rèn)證在認(rèn)證的過程中,新設(shè)備會(huì)根據(jù)自身輸出能力按照某種方式輸出一個(gè)或多個(gè)隨機(jī)數(shù)(這一點(diǎn)與藍(lán)牙配對(duì)方式有點(diǎn)類似)。例如新設(shè)備可以閃幾下LED燈(閃爍的次數(shù)代表輸出的驗(yàn)證值),或者有屏幕的話可以直接輸出數(shù)字
。用戶在啟動(dòng)配置設(shè)備上輸入相應(yīng)數(shù)字,整個(gè)認(rèn)證的過程就全部完成了。第
5
步.
啟動(dòng)配置數(shù)據(jù)分發(fā)認(rèn)證完成之后,會(huì)利用兩臺(tái)設(shè)備的私鑰和交換的對(duì)等密鑰生成一個(gè)會(huì)話密鑰(Session
Key)。之后利用會(huì)話密鑰來加密后續(xù)的數(shù)據(jù)分發(fā),完成剩余的開通配置過程,包括網(wǎng)絡(luò)密鑰(NetKey)和設(shè)備唯一地址,即單播地址(Unicast
Address)的分配。開通配置過程完成后,新設(shè)備(如燈)將會(huì)擁有網(wǎng)絡(luò)的NetKey,這是一個(gè)稱為“IV索引(IV
Index)”的mesh安全參數(shù),且擁有一個(gè)由啟動(dòng)配置設(shè)備(如手機(jī))分配的單播地址。至此,這臺(tái)新設(shè)備就正式成為節(jié)點(diǎn)了。特性
所有的節(jié)點(diǎn)都可以發(fā)送和接收mesh消息,但是我們也可以單獨(dú)賦予某些節(jié)點(diǎn)額外的特性,使其擁有某些特定功能。一共有四種特性可以選擇:中繼(Relay),代理(Proxy),友(Friend)以及低功耗(LowPower)特性。每個(gè)節(jié)點(diǎn)都可以支持以上四種特性中的0個(gè)或者多個(gè),而且隨時(shí)可以取消已經(jīng)配置好的特性。第
3
步.
交換公共密鑰
啟動(dòng)配置設(shè)備(如手機(jī))和需要開通配置的設(shè)備(如燈)交換公鑰。公鑰可以是固定的,也可以是暫時(shí)生成的。公鑰的交換可以通過藍(lán)牙傳輸,也可以使用帶外數(shù)據(jù)(OOB)交換的方式。例如使用NFC或者二維碼進(jìn)行數(shù)據(jù)交換,這樣數(shù)據(jù)傳輸?shù)陌踩愿摺acktocontentsBluetoothMeshbackto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers?2017BluetoothSIG
Proprietary.15中繼節(jié)點(diǎn)
支持中繼特性的節(jié)點(diǎn)稱為中繼節(jié)點(diǎn),它可以重發(fā)接收到的消息。通過中繼技術(shù),消息可以進(jìn)行多次“跳躍”(hop),這樣就可以將消息傳輸?shù)秸麄€(gè)mesh網(wǎng)絡(luò)。
mesh網(wǎng)絡(luò)PDU中有一個(gè)字段稱為TTL(Time
ToLive)。TTL利用一個(gè)整數(shù)值來限制每條消息可以在網(wǎng)絡(luò)中跳躍(被中繼)的次數(shù)。例如TTL等于3時(shí),表示消息最多被中繼3次。TTL等于0則表示消息不能被中繼,只能進(jìn)行單次傳輸。節(jié)點(diǎn)每隔一段時(shí)間發(fā)送一次TTL,這樣可以了解網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),充分利用mesh網(wǎng)絡(luò),避免不必要的消息中繼,從而節(jié)省功耗。低功耗節(jié)點(diǎn)與友節(jié)點(diǎn)有些節(jié)點(diǎn)可能采用電池供電,所以需要盡可能地降低功耗。這種類型的設(shè)備可能主要關(guān)心發(fā)送消息,但也需要偶爾接收消息。
例如,有一個(gè)采用紐扣電池供電的溫度傳感器,當(dāng)溫度超出既定閾值上限或者下限時(shí),傳感器每隔一分鐘發(fā)送一次溫度值。如果溫度不超出閾值,則不發(fā)送消息。如果不考慮功耗問題的話,這些行為都很容易實(shí)現(xiàn)。用戶可能會(huì)向傳感器發(fā)送消息,設(shè)置新的閾值,這種行為比較少見,因?yàn)橛脩舨豢赡苡惺聸]事地改變閾值,用戶可能會(huì)在季節(jié)改變或者新加設(shè)備時(shí)設(shè)置閾值。但是傳感器的閾值必須是能夠改變的。接收消息的頻率對(duì)接收器占空比和功耗有影響。100%占空比能夠確保傳感器不丟失任何一條溫度閾值配置消息,但是功耗是非常大的。低占空比可以節(jié)省功耗,但是也可能丟失某條配置消息。為了解決這一難題,藍(lán)牙m(xù)esh引入了友節(jié)點(diǎn)(friendnode)及友誼(friendship)的概念。在上面的例子中,溫度傳感器可以設(shè)計(jì)成低功耗節(jié)點(diǎn)(Low
Power
nodes)。在傳感器的配置數(shù)據(jù)中,會(huì)設(shè)置特定的標(biāo)志,標(biāo)記這是一個(gè)低功耗節(jié)點(diǎn)。低功耗節(jié)點(diǎn)會(huì)同另一個(gè)節(jié)點(diǎn)配合工作,這個(gè)節(jié)點(diǎn)對(duì)功耗沒什么特別的要求(可能接入市電,有固定的電源),這個(gè)節(jié)點(diǎn)稱為友節(jié)點(diǎn)。友節(jié)點(diǎn)保存發(fā)往對(duì)應(yīng)低功耗節(jié)點(diǎn)的消息。低功耗節(jié)點(diǎn)會(huì)對(duì)友節(jié)點(diǎn)進(jìn)行輪詢(Poll),查看是否有新消息。低功耗節(jié)點(diǎn)輪詢的頻率非常低,這樣就可以降低功耗,同時(shí)降低丟失配置消息的可能。當(dāng)?shù)凸墓?jié)點(diǎn)對(duì)友節(jié)點(diǎn)進(jìn)行輪詢時(shí),保存在友節(jié)點(diǎn)的消息就會(huì)一個(gè)接一個(gè)地發(fā)到低功耗節(jié)點(diǎn)。在發(fā)出的數(shù)據(jù)包中有一個(gè)MD(more
data)標(biāo)志,用來指明友節(jié)點(diǎn)是否還有消息需要發(fā)送。
低功耗節(jié)點(diǎn)與友節(jié)點(diǎn)的關(guān)系稱為“友誼”(friend-ship)。正是這種友誼關(guān)系,才使得功耗受限的節(jié)點(diǎn)能夠在藍(lán)牙m(xù)esh網(wǎng)絡(luò)中正常接收消息,在正常工作的同時(shí)保持較低功耗。代理節(jié)點(diǎn)
在我們的生活中有大量的BLE設(shè)備,例如智能手機(jī)或者平板電腦。到現(xiàn)在為止,已經(jīng)上市的藍(lán)牙設(shè)備都還沒有集成藍(lán)牙m(xù)esh網(wǎng)絡(luò)協(xié)議棧,它們只使用了BLE協(xié)議棧以及傳統(tǒng)藍(lán)牙協(xié)議棧。所以它們只能通過通用屬性規(guī)范(Generic
Attribute
Profile-GATT)與其它設(shè)備進(jìn)行信息交互。
代理節(jié)點(diǎn)能夠?qū)崿F(xiàn)GATT和藍(lán)牙m(xù)esh節(jié)點(diǎn)之間的信息交互。我們定義了代理協(xié)議,用于面向連接的承載層,如GATT。GATT設(shè)備(沒有集成藍(lán)牙m(xù)esh協(xié)議棧)可以通過代理節(jié)點(diǎn)讀寫代理協(xié)議PDU。總之,代理節(jié)點(diǎn)可以允許沒有集成藍(lán)牙m(xù)esh協(xié)議棧的BLE設(shè)備與mesh網(wǎng)絡(luò)中的任何節(jié)點(diǎn)進(jìn)行通信。backtocontentsBluetoothMeshbackto
contentsBluetoothMeshNetworking/AnIntroductionfor
DevelopersP圖
6-
智能手機(jī)通過代理節(jié)點(diǎn)與mesh網(wǎng)絡(luò)進(jìn)行通信,P
=
代理節(jié)點(diǎn)?2017BluetoothSIG
Proprietary.16節(jié)點(diǎn)配置
配置服務(wù)器模型(Configuration
Server
Model)定義了許多狀態(tài),我們可以使用配置客戶端模型(Configuration
ClientModel)訪問這些狀態(tài)。配置狀態(tài)與節(jié)點(diǎn)可以產(chǎn)生的行為和能力有關(guān),與具體的應(yīng)用或者設(shè)備類型無關(guān)。例如,我們可以利用“配置服務(wù)器狀態(tài)”來指明某個(gè)節(jié)點(diǎn)是代理節(jié)點(diǎn),中繼節(jié)點(diǎn)還是其它節(jié)點(diǎn)。節(jié)點(diǎn)訂閱的地址保存在訂閱列表中。網(wǎng)絡(luò)和子網(wǎng)密鑰以及應(yīng)用密鑰都保存在配置塊中(configuration
block)。配置客戶端模型與配置服務(wù)器模型可以對(duì)相應(yīng)的配置服務(wù)器模型的狀態(tài)進(jìn)行操作,這些操作包括GET,SET及STATUS,它們是通過相應(yīng)的配置消息完成的。backtocontentsBluetoothMeshbackto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers4.0mesh系統(tǒng)架構(gòu)?2017BluetoothSIG
Proprietary.17backtocontentsBluetoothMeshbackto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers4.0
mesh系統(tǒng)架構(gòu)概述本章我們將深入了解藍(lán)牙m(xù)esh的體系結(jié)構(gòu),認(rèn)識(shí)mesh網(wǎng)絡(luò)層級(jí)分布以及各個(gè)層的功能。我們還會(huì)將藍(lán)牙m(xù)esh結(jié)構(gòu)與BLE結(jié)構(gòu)進(jìn)行對(duì)比說明,這將更助于我們理解。承載層
發(fā)送和接收mesh消息需要底層協(xié)議棧的支持,而承載層(bearer
layer)則定義了如何使用底層BLE協(xié)議棧傳輸網(wǎng)絡(luò)PDU。目前定義了兩個(gè)承載層:廣播承載層和GATT承載層。
廣播承載層利用BLE
GAP廣播和掃描特性來發(fā)送和接收mesh
PDU。
對(duì)于不支持廣播承載層的設(shè)備,可以利用GATT承載層通過使用代理協(xié)議與mesh網(wǎng)絡(luò)中的節(jié)點(diǎn)進(jìn)行通信。
代理協(xié)議封裝在GATT操作中,包括特殊定義的GATT特性。mesh代理節(jié)點(diǎn)通過實(shí)現(xiàn)上述GATT特性,來支持GATT承載層和廣播承載層。這樣就可以在兩種承載層間轉(zhuǎn)換和中繼消息。網(wǎng)絡(luò)層
網(wǎng)絡(luò)層(network
layer)定義了多種消息地址類型和網(wǎng)絡(luò)消息格式,這樣傳輸層的PDU就可以通過承載層傳輸了。它可以支持多個(gè)承載層,每個(gè)承載層可以有多個(gè)網(wǎng)絡(luò)接口,如用于同一個(gè)節(jié)點(diǎn)不同元素間通信的本地接口。
網(wǎng)絡(luò)層決定了用哪一種網(wǎng)絡(luò)接口來輸出消息。來自承載層的消息會(huì)先經(jīng)過一個(gè)輸入濾波器,判斷消息是否需要傳入網(wǎng)絡(luò)層進(jìn)行進(jìn)一步處理。同理,輸出消息會(huì)經(jīng)過輸出濾波器,來決定消息是否要傳遞到承載層。
我們還可以通過網(wǎng)絡(luò)層實(shí)現(xiàn)代理和中繼特性。
從圖7可以看到,藍(lán)牙m(xù)esh網(wǎng)絡(luò)結(jié)構(gòu)的最下層是BLE。事實(shí)上,這不僅僅只有一層,而是整個(gè)BLE協(xié)議棧。很顯然,藍(lán)牙m(xù)esh正是利用BLE進(jìn)行實(shí)際上的信息通信的。接下來我們將自底向上分別介紹各個(gè)層。模型
基礎(chǔ)模型上層傳輸層底層傳輸層網(wǎng)絡(luò)層承載層BLE接入層?2017BluetoothSIG
Proprietary.18圖
7
-
藍(lán)牙m(xù)esh架構(gòu)backtocontentsBluetoothMeshbackto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers?2017BluetoothSIG
Proprietary.19底層傳輸層
底層傳輸層(lower
transport
layer)可以將來自上層傳輸層的PDU發(fā)到對(duì)端設(shè)備的底層傳輸層。它還可以進(jìn)行PDU的分段和重組(這一點(diǎn)與BLE協(xié)議棧中的L2CAP類似)。對(duì)于那些不能放入單個(gè)PDU的長(zhǎng)數(shù)據(jù)包,底層傳輸層會(huì)對(duì)其進(jìn)行分段,將其放入多個(gè)PDU中傳輸。當(dāng)其它設(shè)備的底層傳輸層收到數(shù)據(jù)包后再將其重新組合,放入單個(gè)上層傳輸層PDU中,再向上傳輸。上層傳輸層
上層傳輸層(upper
transport
layer)可以將來自或者發(fā)往接入層的應(yīng)用數(shù)據(jù)進(jìn)行加密,解密和認(rèn)證。在不同節(jié)點(diǎn)之間,上層傳輸層還負(fù)責(zé)“傳輸控制消息”的生成和發(fā)送。傳輸控制消息與下文將要提到的“友誼”和“心跳”有關(guān)。接入層
接入層(access
layer)定義了應(yīng)用如何使用上層傳輸層。包括:定義應(yīng)用數(shù)據(jù)格式定義和控制上層傳輸層中的數(shù)據(jù)加密和解密過程驗(yàn)證從上層傳輸層傳來的數(shù)據(jù)是否對(duì)應(yīng)于正確的網(wǎng)絡(luò)和應(yīng)用,如果正確則將其傳入上層協(xié)議棧中基礎(chǔ)模型層
基礎(chǔ)模型(foundation
model)層負(fù)責(zé)涉及mesh網(wǎng)絡(luò)配置和管理的基礎(chǔ)模型的實(shí)現(xiàn)。模型層
模型(model)層定義了模型的實(shí)現(xiàn)以及模型規(guī)范中定義的行為,消息,狀態(tài),狀態(tài)綁定等的實(shí)現(xiàn)。backtocontentsBluetoothMeshbackto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers5.0安全性?2017BluetoothSIG
Proprietary.20backtocontentsBluetoothMeshbackto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers5.0
安全性mesh網(wǎng)絡(luò)安全特性具有強(qiáng)制性在BLE中,允許profile設(shè)計(jì)者采用不同的安全機(jī)制。例如使用不同的藍(lán)牙配對(duì)方法,或者為某一個(gè)特性提供單獨(dú)的安全防護(hù)。也就是說,在BLE中,安全防護(hù)是可選擇的,允許設(shè)備不進(jìn)行安全防護(hù)。由產(chǎn)品的設(shè)計(jì)者或制造商負(fù)責(zé)分析產(chǎn)品的安全風(fēng)險(xiǎn),滿足具體的安全需求。相反,藍(lán)牙m(xù)esh的安全防護(hù)是強(qiáng)制執(zhí)行的。不管是網(wǎng)絡(luò),單個(gè)應(yīng)用還是具體的設(shè)備都需要進(jìn)行加密,并且在任何條件下都不能人為地關(guān)閉或減弱。mesh網(wǎng)絡(luò)安全性基本原則
藍(lán)牙m(xù)esh網(wǎng)絡(luò)會(huì)采用以下幾個(gè)基本原則來確保網(wǎng)絡(luò)的安全性:1.
所有的mesh消息都要經(jīng)過加密和認(rèn)證。2.
網(wǎng)絡(luò)安全性,應(yīng)用安全性,設(shè)備安全性相互獨(dú)立。也就是下面要提到的“關(guān)注點(diǎn)分離”。3.
在mesh網(wǎng)絡(luò)中,我們可以通過密鑰刷新程序來更新節(jié)點(diǎn)的安全密鑰。4.
消息模糊化可以讓外界難以追蹤網(wǎng)絡(luò)內(nèi)所發(fā)送的消息,進(jìn)而提供了一種隱私保護(hù)機(jī)制,難以讓外界跟蹤節(jié)點(diǎn)的活動(dòng)。5.
藍(lán)牙m(xù)esh安全性可保護(hù)網(wǎng)絡(luò)免受中繼攻擊。6.
設(shè)備添加到mesh網(wǎng)絡(luò)從而成為節(jié)點(diǎn)的過程本身就是是一個(gè)安全的過程。也就是前面提到的,開通配置過程。7.
節(jié)點(diǎn)可以從網(wǎng)絡(luò)中安全地移除,這樣可以防止垃圾桶攻擊(trash
can
attack)。圖
8
-
藍(lán)牙m(xù)esh網(wǎng)絡(luò)的安全性是最重要的?2017BluetoothSIG
Proprietary.21關(guān)注點(diǎn)分離與mesh安全密鑰
藍(lán)牙m(xù)esh網(wǎng)絡(luò)安全性的核心是三種安全密鑰。分別使用這些密鑰對(duì)網(wǎng)絡(luò)中的不同部分進(jìn)行加密,這在網(wǎng)絡(luò)安全性方面是一種關(guān)鍵能力,也就是我們要說的“關(guān)注點(diǎn)分離”技術(shù)。為了更好地了解這種技術(shù),我們舉一個(gè)例子。有一個(gè)已經(jīng)加入藍(lán)牙m(xù)esh網(wǎng)絡(luò)的燈。它可以當(dāng)作一個(gè)中繼節(jié)點(diǎn)來中繼消息。它可以中繼門窗安全系統(tǒng)的消息,但是它不能理解消息的具體含義,只需要中繼消息就行了。照明系統(tǒng)和門窗安全系統(tǒng)相當(dāng)于兩個(gè)不同的子系統(tǒng),它們使用不同的密鑰進(jìn)行加密,這樣整個(gè)網(wǎng)絡(luò)的安全性就得到了提升。藍(lán)牙m(xù)esh網(wǎng)絡(luò)里的每個(gè)節(jié)點(diǎn)都有一個(gè)相同的網(wǎng)絡(luò)密鑰(NetKey)。正是這個(gè)密鑰才使得節(jié)點(diǎn)成為這個(gè)網(wǎng)絡(luò)的一員。網(wǎng)絡(luò)加密key與隱私key都是由這個(gè)網(wǎng)絡(luò)密鑰生成的。backtocontentsBluetoothMeshbackto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers?2017BluetoothSIG
Proprietary.22節(jié)點(diǎn)可以利用NetKey來加密和認(rèn)證網(wǎng)絡(luò)層,這樣諸如中繼之類的網(wǎng)絡(luò)功能就可以執(zhí)行了。但是NetKey不能加密應(yīng)用數(shù)據(jù)。藍(lán)牙m(xù)esh網(wǎng)絡(luò)可以分成幾個(gè)子網(wǎng)絡(luò),每個(gè)子網(wǎng)絡(luò)都有其單獨(dú)的NetKey,這個(gè)NetKey只有當(dāng)前子網(wǎng)絡(luò)成員節(jié)點(diǎn)才有,其它節(jié)點(diǎn)沒有。這種方式可以分隔開特定的物理區(qū)域,例如酒店中的每個(gè)房間都可以擁有一個(gè)單獨(dú)的NetKey。
只有擁有應(yīng)用密鑰(AppKey)的節(jié)點(diǎn)
才能解密相應(yīng)的應(yīng)用數(shù)據(jù)。在一個(gè)mesh網(wǎng)絡(luò)中,可以有許多不同的AppKey,每個(gè)AppKey對(duì)應(yīng)一種特定的應(yīng)用(照明應(yīng)用,熱力應(yīng)用,門窗安全系統(tǒng)應(yīng)用等)。例如,燈和開關(guān)擁有燈應(yīng)用的AppKey,但是沒有熱力系統(tǒng)的AppKey,只有網(wǎng)絡(luò)中的溫度調(diào)節(jié)裝置才擁有熱力系統(tǒng)的AppKey。上層傳輸層會(huì)在將消息傳輸?shù)浇尤雽忧埃肁ppKey對(duì)消息進(jìn)行解密和認(rèn)證。
每個(gè)AppKey只與對(duì)應(yīng)的NetKey有關(guān)系,這種關(guān)系稱為“密鑰綁定”(key
binding)。也就意味著,一個(gè)擁有既定AppKey的應(yīng)用只能工作于某個(gè)特定網(wǎng)絡(luò),而一個(gè)mesh網(wǎng)絡(luò)可以擁有多個(gè)獨(dú)立的應(yīng)用。最后一種密鑰是設(shè)備密鑰(DevKey)。這是一種特殊的應(yīng)用密鑰。每個(gè)節(jié)點(diǎn)都有一個(gè)獨(dú)一無二的設(shè)備密鑰,這個(gè)密鑰只有啟動(dòng)配置設(shè)備(如手機(jī))知道。設(shè)備密鑰可以用在開通配置過程,以確保啟動(dòng)配置設(shè)備與節(jié)點(diǎn)之間的安全通訊。節(jié)點(diǎn)移除、密鑰刷新與垃圾桶攻擊如前文所述,節(jié)點(diǎn)包含多種mesh安全密鑰。如果某個(gè)節(jié)點(diǎn)出現(xiàn)故障,需要被丟棄,或者用戶想要將某個(gè)節(jié)點(diǎn)賣給其他人,那么我們需要特別注意,節(jié)點(diǎn)中包含許多網(wǎng)絡(luò)密鑰,不法分子可能利用這些密鑰攻擊你的網(wǎng)絡(luò),給用戶造成損失。針對(duì)以上情況,藍(lán)牙m(xù)esh規(guī)范中定義了一套安全的流程來移除不需要的節(jié)點(diǎn)。啟動(dòng)配置設(shè)備(如手機(jī))上的應(yīng)用程序可以將節(jié)點(diǎn)加入黑名單,之后發(fā)起密鑰刷新程序。
密鑰刷新程序(Key
Refresh
Procedure)會(huì)向網(wǎng)絡(luò)中的所有節(jié)點(diǎn)發(fā)送新的網(wǎng)絡(luò)密鑰,應(yīng)用密鑰等相關(guān)數(shù)據(jù)。換句話說,所有的安全密鑰都被替換了。當(dāng)然在黑名單中的節(jié)點(diǎn)不會(huì)收到這些信息。因此,被移除的節(jié)點(diǎn)只擁有舊的密鑰,所以不再是網(wǎng)絡(luò)中的一員,也就沒有威脅了。隱私
隱私key是通過NetKey產(chǎn)生的,它可以用來模糊化網(wǎng)絡(luò)PDU報(bào)頭,例如模糊化源地址。模糊技術(shù)可以防止不法分子通過被動(dòng)竊聽來追蹤某臺(tái)設(shè)備或者某個(gè)人的位置。它也可以令某些攻擊更加困難,如基于網(wǎng)絡(luò)流量分析的攻擊。利用隱私key可以提供非常合適的安全防護(hù)。重放攻擊
在網(wǎng)絡(luò)安全方面,我們經(jīng)常提到重放攻擊(replayattack)技術(shù)。重放攻擊是指竊聽者截獲一個(gè)或多個(gè)消息后,再轉(zhuǎn)發(fā)這些消息,以欺騙接收者,實(shí)施未授權(quán)的攻擊行為。例如我們經(jīng)常提到的一個(gè)例子,汽車的無鑰匙進(jìn)入系統(tǒng)受到攻擊者的破壞,攻擊者攔截了車主與汽車之間的認(rèn)證序列,然后重放這些信息進(jìn)入汽車實(shí)施盜竊。
藍(lán)牙m(xù)esh網(wǎng)絡(luò)可以防止重放攻擊。在藍(lán)牙m(xù)esh網(wǎng)絡(luò)PDU中包含兩個(gè)字段,分別稱為序列號(hào)(SequenceNumber)和IV索引(IV
Index)。每次發(fā)布消息時(shí),元素會(huì)增加序列號(hào)的值。當(dāng)某個(gè)節(jié)點(diǎn)從元素接收消息時(shí),如果發(fā)現(xiàn)元素包含的序列號(hào)小于或等于上一個(gè)有效消息中的序列號(hào),則節(jié)點(diǎn)會(huì)將消息丟棄,因?yàn)楹芸赡苓@則消息與重放攻擊有關(guān)。IV索引是一個(gè)單獨(dú)的字段,需要與序列號(hào)一同考慮。來自既定元素的消息中的IV索引值必須等于或者大于該元素的上一個(gè)有效消息。backtocontentsBluetoothMeshbackto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers6.0藍(lán)牙m(xù)esh在行動(dòng)?2017BluetoothSIG
Proprietary.24backtocontentsBluetoothMesh24backto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers?2017BluetoothSIG
Proprietary.256.0
藍(lán)牙m(xù)esh在行動(dòng)消息發(fā)布與傳遞
Wi-Fi網(wǎng)絡(luò)是基于一個(gè)中央網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行工作的,這個(gè)中央網(wǎng)絡(luò)節(jié)點(diǎn)就是我們常見的路由器。所有的網(wǎng)絡(luò)傳輸都是通過路由器進(jìn)行的。一旦路由器出現(xiàn)故障,整個(gè)網(wǎng)絡(luò)都會(huì)癱瘓。
與此相反,藍(lán)牙m(xù)esh使用一種稱為管理型網(wǎng)絡(luò)泛洪的技術(shù)來進(jìn)行消息的傳遞。當(dāng)一條消息被某個(gè)節(jié)點(diǎn)發(fā)布后,這條消息不會(huì)只路由到某個(gè)或多個(gè)特定的節(jié)點(diǎn)。如果配置合適的話,在初始節(jié)點(diǎn)無線電覆蓋范圍之內(nèi)的所有節(jié)點(diǎn)都會(huì)收到消息,然后還可以將其中繼到更遠(yuǎn)的地方,這樣在離初始節(jié)點(diǎn)更遠(yuǎn)(遠(yuǎn)遠(yuǎn)超過初始節(jié)點(diǎn)無線電覆蓋范圍)的地方也能收到中繼來的廣播消息。這樣整個(gè)通信距離將變得更長(zhǎng)。多路徑傳遞通過使用管理型網(wǎng)絡(luò)泛洪技術(shù),我們可以發(fā)現(xiàn),消息可以通過網(wǎng)絡(luò)中的多種途徑到達(dá)目的地。這就使得藍(lán)牙m(xù)esh網(wǎng)絡(luò)的消息傳輸更加可靠,也正是由于這個(gè)原因,在網(wǎng)絡(luò)設(shè)計(jì)時(shí),我們才采用了泛洪技術(shù),沒用采用路由的方法。管理型網(wǎng)絡(luò)泛洪
藍(lán)牙m(xù)esh網(wǎng)絡(luò)采用網(wǎng)絡(luò)泛洪的方式傳輸消息,這樣可以使整個(gè)網(wǎng)絡(luò)更加可靠和高效。我們可以通過多種方式來優(yōu)化泛洪的工作,稱之為“管理型網(wǎng)絡(luò)泛洪”。這些方式如下:心跳
節(jié)點(diǎn)會(huì)周期性地向其它節(jié)點(diǎn)發(fā)送心跳消息,告知其它節(jié)點(diǎn)該節(jié)點(diǎn)處于活動(dòng)狀態(tài)。同時(shí)心跳消息還包含一部分?jǐn)?shù)據(jù),可以讓網(wǎng)絡(luò)了解其拓?fù)浣Y(jié)構(gòu),以及傳到其它設(shè)備需要的跳數(shù)。這部分信息可以用在TTL字段中。TTL
上文我們已經(jīng)提到,TTL(time
to
live)是藍(lán)牙m(xù)eshPDU中包含的一塊區(qū)域,它控制著某條消息允許跳躍的最大次數(shù)。設(shè)置TTL能夠讓節(jié)點(diǎn)控制消息中繼的次數(shù),避免不必要的消息中繼,從而降低功耗。
心跳消息(heartbeat
messages)可以用來確定每次消息發(fā)布時(shí)應(yīng)該選用的最適合的TTL值。消息緩存
每個(gè)節(jié)點(diǎn)都具有消息緩存能力。緩存中包含了最近接收的全部消息。如果發(fā)現(xiàn)新來的消息已經(jīng)存在于緩存中,則說明此條消息之前已經(jīng)被處理過了,那么這條消息將被立即丟棄。友誼藍(lán)牙m(xù)esh網(wǎng)絡(luò)中最顯著的優(yōu)化機(jī)制可能就是友節(jié)點(diǎn)和低功耗節(jié)點(diǎn)的配合了。正如前文所述,友節(jié)點(diǎn)可以保存消息,為低功耗節(jié)點(diǎn)服務(wù),這使得低功耗節(jié)點(diǎn)能夠以一種極低功耗的方式運(yùn)行。協(xié)議棧中消息的傳遞
某個(gè)節(jié)點(diǎn)通過底層的BLE協(xié)議棧接收到一條消息,通過承載層將其傳輸?shù)骄W(wǎng)絡(luò)層。網(wǎng)絡(luò)層通過各種校驗(yàn)機(jī)制來決定是否將其傳輸?shù)缴蠈訁f(xié)議棧。此外,PDU中還有一塊稱為網(wǎng)絡(luò)ID的區(qū)域,我們可以利用網(wǎng)絡(luò)ID來識(shí)別消息加密的NetKey。如果NetKey沒有被接收節(jié)點(diǎn)的網(wǎng)絡(luò)層所識(shí)別,這就表明它沒有相應(yīng)的NetKey,也就是說它不是這個(gè)子網(wǎng)絡(luò)的一員,所以這個(gè)PDU會(huì)被丟棄。PDU中還有一塊消息完整性檢查(MIC)區(qū)域。我們可以利用與PDU網(wǎng)絡(luò)ID對(duì)應(yīng)的NetKey來進(jìn)行消息完整性檢查,如果失敗了,那么這條消息也會(huì)被丟棄。backtocontentsBluetoothMesh25backto
contentsBluetoothMeshNetworking/AnIntroductionfor
Developers?2017BluetoothSIG
Proprietary.26
某個(gè)節(jié)點(diǎn)發(fā)送的消息可以被它附近的所有節(jié)點(diǎn)接收,不過有些節(jié)點(diǎn)會(huì)很快將消息丟棄,因?yàn)樗麄兣c這個(gè)節(jié)點(diǎn)不在同一個(gè)網(wǎng)絡(luò)或者子網(wǎng)絡(luò),它們之間沒有什么關(guān)系。同樣的原則也適用
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 旅游景區(qū)裝修合同解除
- 2025年度室內(nèi)外公共空間照明設(shè)計(jì)與施工合同
- 離職和終止勞動(dòng)合同管理制度
- 家具定制生產(chǎn)加工合同
- 太陽能光伏組件銷售合同
- 房地產(chǎn)經(jīng)紀(jì)行業(yè)二手房買賣合同協(xié)議
- 電子競(jìng)技賽事組織服務(wù)合同
- 2024年人工智能產(chǎn)業(yè)發(fā)展投資合同
- 智慧城市項(xiàng)目運(yùn)營(yíng)管理服務(wù)合同
- 版權(quán)轉(zhuǎn)讓及合作開發(fā)合同
- 七年級(jí)數(shù)學(xué)新北師大版(2024)下冊(cè)第一章《整式的乘除》單元檢測(cè)習(xí)題(含簡(jiǎn)單答案)
- 2024-2025學(xué)年云南省昆明市盤龍區(qū)高一(上)期末數(shù)學(xué)試卷(含答案)
- 五年級(jí)上冊(cè)寒假作業(yè)答案(人教版)
- 2025年山東浪潮集團(tuán)限公司招聘25人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年財(cái)政部會(huì)計(jì)法律法規(guī)答題活動(dòng)題目及答案一
- 2025年江西省港口集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 2025年中考語文復(fù)習(xí)熱搜題速遞之說明文閱讀(2024年7月)
- (2024年)中國(guó)傳統(tǒng)文化介紹課件
- 液化氣安全檢查及整改方案
- 《冠心病》課件(完整版)
- 2024年云網(wǎng)安全應(yīng)知應(yīng)會(huì)考試題庫(kù)
評(píng)論
0/150
提交評(píng)論