藍(lán)牙m(xù)esh網(wǎng)絡(luò)基礎(chǔ)課件_第1頁
藍(lán)牙m(xù)esh網(wǎng)絡(luò)基礎(chǔ)課件_第2頁
藍(lán)牙m(xù)esh網(wǎng)絡(luò)基礎(chǔ)課件_第3頁
藍(lán)牙m(xù)esh網(wǎng)絡(luò)基礎(chǔ)課件_第4頁
藍(lán)牙m(xù)esh網(wǎng)絡(luò)基礎(chǔ)課件_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

畢健iHealth中國研發(fā)中心藍(lán)牙高級工程師郵箱:bi_jian@譯文版本:V1.0完成時間:2017.11.11備注

:畢健iHealth中國研發(fā)中心藍(lán)牙高級工程師郵箱: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)勢,在許多新興領(lǐng)域如智能家居,工業(yè)物聯(lián)網(wǎng),樓宇自動化等勢必會得到更好的應(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

與點對點93.3設(shè)備與節(jié)點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é)點低功耗節(jié)點與友節(jié)點代理節(jié)點節(jié)點配置?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)注點分離與mesh安全密鑰節(jié)點移除,密鑰刷新及垃圾桶攻擊隱私重放攻擊2121212222236.0

藍(lán)牙m(xù)esh在行動..

......

............................

24消息發(fā)布與傳遞多路徑傳遞管理型網(wǎng)絡(luò)泛洪協(xié)議棧中消息的傳遞252525257.0

藍(lán)牙Mesh

正待勇士開拓的疆場

..............

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ī)周邊產(chǎn)品如無線鼠標(biāo),鍵盤等領(lǐng)域占據(jù)了統(tǒng)治地位。2010年,藍(lán)牙低功耗技術(shù)(BLE)面世,推動藍(lán)牙技術(shù)向前邁進(jìn)了重要一步

。其影響深遠(yuǎn),主要體現(xiàn)在智能手機(jī),平板,以及醫(yī)療健康,智能家居,可穿戴產(chǎn)品等領(lǐng)域?;诰W(wǎng)狀拓?fù)漕愋偷臒o線通信系統(tǒng)可以覆蓋更大的范圍,使得通信距離變長,同時系統(tǒng)的魯棒性得到加強(qiáng)。但是他們?nèi)匀皇且环N小眾技術(shù),主要是因為與現(xiàn)有的大多數(shù)計算機(jī),智能手機(jī)等設(shè)備不兼容,因而沒有得到大范圍的推廣和應(yīng)用。為了將mesh技術(shù)應(yīng)用到藍(lán)牙中,120個藍(lán)牙SIG成員公司先后參與到這項工作中。與以往情況不同,此次規(guī)模之大,涉及范圍之廣,充分表明了業(yè)界對藍(lán)牙m(xù)esh技術(shù)標(biāo)準(zhǔn)制定的迫切需求。藍(lán)牙m(xù)esh技術(shù)的添加代表了一種技術(shù)類型的變化,這種變化如此巨大,我們甚至可以認(rèn)為這對藍(lán)牙技術(shù)標(biāo)準(zhǔn)來說是一次整體模式的轉(zhuǎn)變。(譯者注:藍(lán)牙特別興趣小組

The

Bluetooth

SpecialInterest

Group

(SIG),是一個非盈利性組織,致力于藍(lán)牙技術(shù)標(biāo)準(zhǔn)的開發(fā),和藍(lán)牙技術(shù)應(yīng)用及商標(biāo)的授權(quán)。公司成立于1998年,總部位于美國華盛頓。)?2017BluetoothSIG

Proprietary.5backtocontentsBluetoothMesh6backto

contentsBluetoothMeshNetworking/AnIntroductionfor

Developers2.0執(zhí)掌生活?2017BluetoothSIG

Proprietary.6backtocontentsBluetoothMesh7backto

contentsBluetoothMeshNetworking/AnIntroductionfor

Developers2.0

執(zhí)掌生活智能建筑將獲得真正的智能

想象一下,在一個天色昏暗的冬日的早晨,你驅(qū)車前往公司。公司的安全系統(tǒng)識別了你的車,讓你進(jìn)入公司,同時分配給你一個停車位。此時,你的停車位上的燈亮起,指引你快速停到那個位置。之后,這個車位分配系統(tǒng)將自動進(jìn)行更新,顯示該車位已使用。

進(jìn)入公司大樓后,相應(yīng)的傳感器注意到有人進(jìn)入,并從你身上的可穿戴設(shè)備如手表等識別到你。你乘坐電梯到達(dá)二樓,像往常一樣,你是第一個到達(dá)的。當(dāng)電梯門打開時,從電梯室到辦公室及開水間的燈自動打開。咖啡在你們公司是非常重要的,所以開水室的燈才會自動打開,其它區(qū)域的燈關(guān)閉,從而節(jié)省能量。

你走進(jìn)辦公室,屋頂燈和臺燈已經(jīng)打開了,并且是你最喜歡的亮度等級。你注意到辦公室溫度比其它區(qū)域溫度略高,這正是你之前設(shè)置的。你靠近辦公電腦,此時電腦自動登陸你的賬戶。

現(xiàn)在你可以開始辦公了,并且整個辦公環(huán)境考慮到了個人偏好,充分滿足了你的需求。很顯然這種這種系統(tǒng)是十分高效的,那么它是如何實現(xiàn)的呢?你們公司幾個月前使用了藍(lán)牙m(xù)esh技術(shù),最開始安裝在照明系統(tǒng)上,隨后添加到Occupancy

sensor,環(huán)境傳感器,無線暖氣控制系統(tǒng),停車管理系統(tǒng)等網(wǎng)絡(luò)中。這樣,公司可以在電力和熱力系統(tǒng)上省上不少費用,而且工作環(huán)境更加人性化,從而使員工的工作效率更高。整個系統(tǒng)的維護(hù)成本也在下降,例如加入電燈開關(guān)不再需要布置昂貴且麻煩的電線了。系統(tǒng)采集的數(shù)據(jù)可以供大樓管理人員分析,從而了解這棟建筑,以及它所提供的服務(wù)和人們對這些服務(wù)做出的反應(yīng),進(jìn)而對整個系統(tǒng)進(jìn)行優(yōu)化。我們可以控制某棟建筑提供的服務(wù),與其進(jìn)行無線交互,使其行為更加自動化,而藍(lán)牙m(xù)esh正使這一切更加方便且低成本。你甚至?xí)械襟@訝之前沒有這些技術(shù)是怎么生活的。(譯者注:

Occupancy

sensor,一種室內(nèi)運動檢測設(shè)備,檢測到人體時會自動打開燈,溫度調(diào)節(jié)裝置及通風(fēng)系統(tǒng)。這種傳感器多使用紅外,超聲,微波等技術(shù),主要用來節(jié)省能量,提供自動控制。)圖

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)識藍(lán)牙m(xù)esh技術(shù),需要讀者了解一些新的技術(shù)概念與術(shù)語,這些在之前藍(lán)牙低功耗(BLE)的世界里是沒有的。本章我們將帶你認(rèn)識一些最基本的概念及術(shù)語。mesh

vs

點對點我們所見到的大多數(shù)BLE設(shè)備都是進(jìn)行一對一的數(shù)據(jù)通信的。這是一種點對點的網(wǎng)絡(luò)拓?fù)漕愋?,在藍(lán)牙核心規(guī)范中被稱為“微微網(wǎng)”(piconet)。

假設(shè)一個智能手機(jī)與一個心率檢測器建立了一個點對點的連接,這樣它們之間就可以傳輸數(shù)據(jù)了。藍(lán)牙的一個優(yōu)點就是可以讓設(shè)備建立多個連接,所以這臺智能手機(jī)可以再與另一個運動追蹤設(shè)備建立連接。此時,手機(jī)可以同另外兩臺設(shè)備進(jìn)行通信,而這兩臺設(shè)備之間無法直接進(jìn)行溝通。與以上情況相反的是,mesh擁有多對多的網(wǎng)絡(luò)拓?fù)漕愋汀C恳慌_設(shè)備都可以與網(wǎng)絡(luò)中的其它設(shè)備進(jìn)行通信(我們會在第6章進(jìn)行更深入的討論)。設(shè)備間的通信以消息的形式傳遞,一臺設(shè)備可以將某一臺設(shè)備發(fā)來的消息中繼到另一臺設(shè)備,這樣就可以擴(kuò)展端到端的通信范圍,這個范圍遠(yuǎn)超過一個單獨設(shè)備藍(lán)牙無線電所覆蓋的范圍。設(shè)備和節(jié)點mesh網(wǎng)絡(luò)中的單臺設(shè)備稱做節(jié)點(node),網(wǎng)絡(luò)外的設(shè)備稱為“未開通配置設(shè)備”(unprovisioneddevices)。將某個“未開通配置設(shè)備”轉(zhuǎn)化為網(wǎng)絡(luò)節(jié)點的過程稱為“開通配置”(provisioning)。例如,你買了一個帶有mesh功能的藍(lán)牙燈,你需要把它帶回家并進(jìn)行簡單的配置,從而將其加入到家中原有的mesh網(wǎng)絡(luò)中,這樣你就可以通過家里的電燈開關(guān)與調(diào)光器對其進(jìn)行控制了。這一過程即為“開通配置”(provisioning)?!伴_通配置”過程是每一臺新設(shè)備都要經(jīng)歷的,在這個過程中,新設(shè)備會獲取一系列的密鑰,同時告知“啟動配置設(shè)備”(provisioner

device,通常是智能手機(jī)或者平板電腦)有新設(shè)備加入到網(wǎng)絡(luò)中。其中有一個密鑰叫做網(wǎng)絡(luò)密鑰,即NetKey。在后續(xù)章節(jié)我們會再對mesh的安全性進(jìn)行深入討論。Mesh網(wǎng)絡(luò)中的每個節(jié)點都擁有至少一個NetKey,正是這個NetKey讓其成為相應(yīng)網(wǎng)絡(luò)的一員。節(jié)點的正常工作需要滿足許多條件,而NetKey則是最基本的第一步工作。隨后我們會對“開通配置”的過程展開深入的討論,在此不再贅述。圖

2

-

一種具有消息中繼功能的多對多網(wǎng)絡(luò)拓?fù)漕愋?2017BluetoothSIG

Proprietary.9backtocontentsBluetoothMeshbackto

contentsBluetoothMeshNetworking/AnIntroductionfor

Developers元素

有些節(jié)點由多個獨立的部分組成,每一個部分都可以進(jìn)行單獨的控制。在藍(lán)牙m(xù)esh中,這些獨立的部分稱為元素(element)。圖3即為網(wǎng)絡(luò)中的一個燈節(jié)點,它有3個元素,每個LED燈泡有一個元素。每個節(jié)點至少擁有一個元素,稱為主元素(Primary

Element)。節(jié)點中的每個元素都有一個唯一確定的地址,稱為單播地址(unicast

address),這樣每個元素都可以獨立尋址。條響應(yīng)信息。這條響應(yīng)信息有兩個作用:1.告知消息發(fā)送方,消息已接收;2.返回消息接收方需要告知發(fā)送方的某些數(shù)據(jù)。

需要應(yīng)答的消息如果沒有得到響應(yīng),則可能會被發(fā)送多次,所以這種消息必需具有冪等性。冪等性意味著這種消息不論到達(dá)接收節(jié)點多少次,與其到達(dá)接收節(jié)點一次產(chǎn)生的效果都是相同的。否則如果因為某些意外,消息多次到達(dá)接收節(jié)點,則有可能使接收節(jié)點的狀態(tài)變得不確定。

不需要應(yīng)答的消息不要求接收者發(fā)送響應(yīng)信息。地址

消息必須從一個地址發(fā)送到另一個地址。

藍(lán)牙m(xù)esh協(xié)議中定義了3種地址(還有一種未分配地址在此不做討論)。

單播地址用于唯一確定單個元素。在“開通配置”過程中,會將單播地址賦給設(shè)備。

群組地址是一種多播地址,它可以代表一個或多個元素。

群組地址要么是動態(tài)分配的,要么是藍(lán)牙技術(shù)聯(lián)盟預(yù)先定義的(SIG固定群組地址)。藍(lán)牙技術(shù)聯(lián)盟已經(jīng)定義了4個固定群組地址,即All-proxies,

All-friends,

All-relays及All-nodes。在后續(xù)章節(jié)中我們會詳細(xì)解釋什么是Proxy(代理),

Friend(朋友)及

Relay(中繼)

。

我們可以通過配置應(yīng)用程序來建立動態(tài)群組地址,這些地址反映了一棟建筑的某種實體分配,例如為大樓里的每一個房間定義一個群組地址。

虛擬地址可以賦給一個或多個元素,橫跨一個或多個節(jié)點。虛擬地址與128位UUID的形式類似,任何元素都可以與其相關(guān)聯(lián),它更像一個標(biāo)簽。

虛擬地址可以在出廠前就進(jìn)行預(yù)先配置,然后用于某些特定場景,例如使某個廠商制作的投影儀的尋址更加方便。

3

-

三個元素組成一個燈節(jié)點

?2017BluetoothSIG

Proprietary.10消息

當(dāng)某個節(jié)點需要獲取其它節(jié)點的狀態(tài)時,或需要以某種方式控制其它節(jié)點,它會發(fā)送消息(message)。如果某節(jié)點需要向其它節(jié)點匯報狀態(tài),它也會發(fā)送消息。

在mesh網(wǎng)絡(luò)中,所以通信都是以消息的形式傳遞的。協(xié)議規(guī)范中定義了多種消息類型,每種消息類型都有自己唯一的操作碼。

消息可以統(tǒng)分為兩種類型:需要應(yīng)答和不需要應(yīng)答。需要應(yīng)答的消息要求接收節(jié)點接收到消息后返回一backtocontentsBluetoothMeshbackto

contentsBluetoothMeshNetworking/AnIntroductionfor

Developers發(fā)布/訂閱

在藍(lán)牙m(xù)esh中,發(fā)送消息稱為發(fā)布(

publish

)。將某個節(jié)點配置成可以接收特定消息的過程稱為訂閱(subscribe),即如果某個節(jié)點可以接收某條消息,那么我們就說這個節(jié)點“

訂閱

”了這條消息。

消息都是發(fā)往組地址或者虛擬地址的,而且這些地址都具有可讀性,具有現(xiàn)實意義,例如代表某一個房間。所以使用起來既方便有直觀。

在圖4中我們可以看到,開關(guān)1可以發(fā)布消息到廚房組地址(上文我們已經(jīng)提到,組地址可以代表某個房間)。1號,2號和3號燈節(jié)點都訂閱了廚房地址,因此可以接收和處理發(fā)往該地址的消息。也就是說,1號,2號和3號燈可以被1號開關(guān)控制。

同理,開關(guān)2可以發(fā)布消息到客廳組地址,而只有3號燈訂閱了該地址,所以開關(guān)2只能控制3號燈。從圖中我們也可以看到,一個節(jié)點可以訂閱多個組地址,如3號燈節(jié)點同時訂閱了廚房和客廳兩個組地址。藍(lán)牙的mesh功能非常強(qiáng)大而且靈活,我們還可以看到多個開關(guān)可以向一個組地址發(fā)布消息,如開關(guān)5,

6都可以向花園組地址發(fā)布消息。

使用組地址和虛擬地址來發(fā)布和訂閱消息有許多好處。當(dāng)我們移除,替換或者添加節(jié)點時,不需要重新配置其它節(jié)點。想象一下你要在家里裝一個燈有多麻煩你就知道這種方式有多方便了。例如有新設(shè)備需要加入到客廳網(wǎng)絡(luò)中,只需經(jīng)過“開通配置”過程并訂閱相應(yīng)的客廳組地址就可以了,其它節(jié)點并不會受到影響。開關(guān)2依然可以向客廳組地址發(fā)布消息,不過現(xiàn)在它可以控制3號燈與新加入的燈了。狀態(tài)和屬性

元素可能處在各種條件下,在藍(lán)牙m(xù)esh中我們稱之為狀態(tài)(state)。一個元素可以有多個狀態(tài),每個狀態(tài)都是一組特定值(在下面的服務(wù)器模型中會再做介紹)。狀態(tài)與特定的行為有關(guān),不能在其它地方重用。

例如,藍(lán)牙m(xù)esh定義了通用開關(guān)狀態(tài)來形容某個電燈可能存在的狀態(tài),為其賦1(on)電燈打開,為其賦0(off)電燈關(guā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)系。有一點需要特別注意,這里提到的屬性(property)與我們在BLE協(xié)議棧中定義的屬性(attribute)是完全不同的,為了防止混淆,我們也可以將前者翻譯成“性質(zhì)”(property)。

為了加深對屬性的認(rèn)識,我們考慮一個具體的例子。有這樣一個特性,稱為“溫度8”,它具有多個相關(guān)屬性,包括室內(nèi)溫度與室外溫度。當(dāng)接收客戶端接收到溫度值時,可以根據(jù)對應(yīng)屬性值,來判斷這個溫度是室內(nèi)溫度還是室外溫度。屬性分為兩類,分別是來自制造商的只讀屬性和來自系統(tǒng)管理員的可讀寫屬性。消息,狀態(tài)及屬性藍(lán)牙m(xù)esh網(wǎng)絡(luò)的正常工作依賴于消息的傳遞。某個特定類型的消息可以對一個或多個狀態(tài)值進(jìn)行操作。消息可以分為3類,簡稱為GET,SET,STATUS,對應(yīng)于藍(lán)牙m(xù)esh網(wǎng)絡(luò)支持的3種操作。

GET消息可以用來向一個或多個節(jié)點請求狀態(tài)值,之后,相應(yīng)節(jié)點會返回STATUS信息,告知請求的狀態(tài)值。

SET消息可以改變既定狀態(tài)的值。有些SET消息需要應(yīng)答,要求返回一條STATUS消息

,有些消息不需要應(yīng)答。

STATUS消息可以用來應(yīng)答GET消息,也可以用來應(yīng)答SET消息或者通過某元素中的定時器定時發(fā)送。我們可以通過消息操作碼(opcode)識別到特定狀態(tài)。另一方面,我們也可以在通用屬性相關(guān)消息中使用16位屬性ID來直接引用屬性(具體操作細(xì)節(jié)請參考藍(lán)牙m(xù)esh相關(guān)技術(shù)文檔)。狀態(tài)轉(zhuǎn)變從一個狀態(tài)轉(zhuǎn)變?yōu)榱硪粋€狀態(tài)的過程叫做狀態(tài)轉(zhuǎn)換,轉(zhuǎn)變的過程可能是瞬時的,也可能需要經(jīng)過一段時間,這段時間叫做轉(zhuǎn)換時間。狀態(tài)轉(zhuǎn)變可能會對節(jié)點應(yīng)用層的行為產(chǎn)生影響。綁定狀態(tài)狀態(tài)之間也可能存在某種關(guān)系,一種狀態(tài)改變會導(dǎo)致另一種狀態(tài)也改變,這種關(guān)系稱為狀態(tài)綁定(statebinding)。一個狀態(tài)可以與其它多個狀態(tài)綁定。例如,通過一個調(diào)光器控制一盞燈。這盞燈有兩種狀態(tài),即通用開關(guān)狀態(tài)和通用等級狀態(tài),他們之間相互綁定。減少燈的亮度等級,直到亮度等級為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ā)的消息。同時,它也定義了與消息,狀態(tài),狀態(tài)轉(zhuǎn)換相對應(yīng)的行為??蛻舳四P停╟lient

model

)沒有定義任何狀態(tài),它只定義了幾種消息。我們可以利用這些消息來對相應(yīng)服務(wù)器模型中的狀態(tài)進(jìn)行操作,如GET,SET及STATUS。控制模型(Control

model)包含一個服務(wù)器模型和一個客戶端模型。服務(wù)器模型可以用來與其它客戶端模型進(jìn)行通信,而客戶端模型可以用來與其它服務(wù)器模型進(jìn)行通信。我們可以通過擴(kuò)展某個模型來創(chuàng)建新的模型。不過有一種模型不能擴(kuò)展,這種模型稱為root模型。

模型不能被改變,也就是說我們不能向模型中加入或者移除相關(guān)行為。實現(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),通用等級狀態(tài)(Generic

Level)。同理,我們還定義了一些通用消息,來對通用狀態(tài)進(jìn)行處理,例如Generic

OnOff

Get和Generic

Level

Set消息。

通用狀態(tài)及通用消息可以用在通用模型中。通用模型包括通用客戶端模型,通用服務(wù)器模型,如通用開關(guān)服務(wù)器,通用等級客戶端等。

利用通用性,不需要創(chuàng)建新的模型就可以將藍(lán)牙m(xù)esh功能添加到多個設(shè)備中。因為可以通過擴(kuò)展某個模型來創(chuàng)建新的模型,所以我們可以利用通用模型為新設(shè)備快速創(chuàng)建合適的模型。情景想象一下,某天晚上,你想要將臥室的溫度調(diào)到20攝氏度,將臥室吊燈調(diào)到合適的亮度,再將桌上的臺燈調(diào)成令人舒適的暖色調(diào)等等。也許你會想到這需要一個一個手動設(shè)置,那你就out啦!我們可以在應(yīng)用程序上保存這些配置,在需要的時候調(diào)用它們。這些保存的配置稱為“情景”(scene)。我們可以通過16位情景序號來識別特定的情景,在每個mesh網(wǎng)絡(luò)中,情景序號都是各不相同的。利用情景可以讓許多節(jié)點同時到達(dá)某種既定狀態(tài),省去了單獨配置每個節(jié)點的麻煩。backtocontentsBluetoothMeshbackto

contentsBluetoothMeshNetworking/AnIntroductionfor

Developers?2017BluetoothSIG

Proprietary.14開通配置(Provisioning)

開通配置是指將某臺設(shè)備加入到mesh網(wǎng)絡(luò)中,從而變成一個節(jié)點的過程。它涉及幾個階段,期間會生成許多安全密鑰,這一過程對安全性要求比較高。

開通配置通常是通過手機(jī)或者平板電腦上的應(yīng)用程序完成的。此時,手機(jī)或者平板電腦通常被稱為啟動配置設(shè)備(Provisioner)。開通配置的過程涉及5個步驟,下面就每個步驟分別展開討論。第

1

步.

發(fā)送Beacon信號為了支持藍(lán)牙m(xù)esh的不同特性,包括但不限于“開通配置”,我們引入了新的GAP廣播類型(參考藍(lán)牙核心規(guī)范補(bǔ)充),包括<<Mesh

Beacon>>廣播類型。未開通配置的設(shè)備(如需要加入mesh網(wǎng)絡(luò)的燈)可以發(fā)出<<Mesh

Beacon>>廣播數(shù)據(jù)包,聲明自己是未開通配置的設(shè)備,可以被啟動配置。用戶可能需要按照一定的方式,如鍵入一組按鈕,或長按某個按鍵一段時間,從而啟動新設(shè)備的廣播第

2

步.

邀請在這一步驟中,啟動配置設(shè)備(手機(jī)等)向需要加入mesh網(wǎng)絡(luò)的設(shè)備(如燈)發(fā)送邀請,實際上發(fā)送的就是“開通配置邀請PDU”,一種特定格式的數(shù)據(jù)包。此時需要開通配置的設(shè)備(如燈)會返回一定的數(shù)據(jù)包,即“開通配置能力PDU”告知自身情況。第

4

步.

認(rèn)證在認(rèn)證的過程中,新設(shè)備會根據(jù)自身輸出能力按照某種方式輸出一個或多個隨機(jī)數(shù)(這一點與藍(lán)牙配對方式有點類似)。例如新設(shè)備可以閃幾下LED燈(閃爍的次數(shù)代表輸出的驗證值),或者有屏幕的話可以直接輸出數(shù)字

。用戶在啟動配置設(shè)備上輸入相應(yīng)數(shù)字,整個認(rèn)證的過程就全部完成了。第

5

步.

啟動配置數(shù)據(jù)分發(fā)認(rèn)證完成之后,會利用兩臺設(shè)備的私鑰和交換的對等密鑰生成一個會話密鑰(Session

Key)。之后利用會話密鑰來加密后續(xù)的數(shù)據(jù)分發(fā),完成剩余的開通配置過程,包括網(wǎng)絡(luò)密鑰(NetKey)和設(shè)備唯一地址,即單播地址(Unicast

Address)的分配。開通配置過程完成后,新設(shè)備(如燈)將會擁有網(wǎng)絡(luò)的NetKey,這是一個稱為“IV索引(IV

Index)”的mesh安全參數(shù),且擁有一個由啟動配置設(shè)備(如手機(jī))分配的單播地址。至此,這臺新設(shè)備就正式成為節(jié)點了。特性

所有的節(jié)點都可以發(fā)送和接收mesh消息,但是我們也可以單獨賦予某些節(jié)點額外的特性,使其擁有某些特定功能。一共有四種特性可以選擇:中繼(Relay),代理(Proxy),友(Friend)以及低功耗(LowPower)特性。每個節(jié)點都可以支持以上四種特性中的0個或者多個,而且隨時可以取消已經(jīng)配置好的特性。第

3

步.

交換公共密鑰

啟動配置設(shè)備(如手機(jī))和需要開通配置的設(shè)備(如燈)交換公鑰。公鑰可以是固定的,也可以是暫時生成的。公鑰的交換可以通過藍(lán)牙傳輸,也可以使用帶外數(shù)據(jù)(OOB)交換的方式。例如使用NFC或者二維碼進(jìn)行數(shù)據(jù)交換,這樣數(shù)據(jù)傳輸?shù)陌踩愿?。backtocontentsBluetoothMeshbackto

contentsBluetoothMeshNetworking/AnIntroductionfor

Developers?2017BluetoothSIG

Proprietary.15中繼節(jié)點

支持中繼特性的節(jié)點稱為中繼節(jié)點,它可以重發(fā)接收到的消息。通過中繼技術(shù),消息可以進(jìn)行多次“跳躍”(hop),這樣就可以將消息傳輸?shù)秸麄€mesh網(wǎng)絡(luò)。

mesh網(wǎng)絡(luò)PDU中有一個字段稱為TTL(Time

ToLive)。TTL利用一個整數(shù)值來限制每條消息可以在網(wǎng)絡(luò)中跳躍(被中繼)的次數(shù)。例如TTL等于3時,表示消息最多被中繼3次。TTL等于0則表示消息不能被中繼,只能進(jìn)行單次傳輸。節(jié)點每隔一段時間發(fā)送一次TTL,這樣可以了解網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),充分利用mesh網(wǎng)絡(luò),避免不必要的消息中繼,從而節(jié)省功耗。低功耗節(jié)點與友節(jié)點有些節(jié)點可能采用電池供電,所以需要盡可能地降低功耗。這種類型的設(shè)備可能主要關(guān)心發(fā)送消息,但也需要偶爾接收消息。

例如,有一個采用紐扣電池供電的溫度傳感器,當(dāng)溫度超出既定閾值上限或者下限時,傳感器每隔一分鐘發(fā)送一次溫度值。如果溫度不超出閾值,則不發(fā)送消息。如果不考慮功耗問題的話,這些行為都很容易實現(xiàn)。用戶可能會向傳感器發(fā)送消息,設(shè)置新的閾值,這種行為比較少見,因為用戶不可能有事沒事地改變閾值,用戶可能會在季節(jié)改變或者新加設(shè)備時設(shè)置閾值。但是傳感器的閾值必須是能夠改變的。接收消息的頻率對接收器占空比和功耗有影響。100%占空比能夠確保傳感器不丟失任何一條溫度閾值配置消息,但是功耗是非常大的。低占空比可以節(jié)省功耗,但是也可能丟失某條配置消息。為了解決這一難題,藍(lán)牙m(xù)esh引入了友節(jié)點(friendnode)及友誼(friendship)的概念。在上面的例子中,溫度傳感器可以設(shè)計成低功耗節(jié)點(Low

Power

nodes)。在傳感器的配置數(shù)據(jù)中,會設(shè)置特定的標(biāo)志,標(biāo)記這是一個低功耗節(jié)點。低功耗節(jié)點會同另一個節(jié)點配合工作,這個節(jié)點對功耗沒什么特別的要求(可能接入市電,有固定的電源),這個節(jié)點稱為友節(jié)點。友節(jié)點保存發(fā)往對應(yīng)低功耗節(jié)點的消息。低功耗節(jié)點會對友節(jié)點進(jìn)行輪詢(Poll),查看是否有新消息。低功耗節(jié)點輪詢的頻率非常低,這樣就可以降低功耗,同時降低丟失配置消息的可能。當(dāng)?shù)凸墓?jié)點對友節(jié)點進(jìn)行輪詢時,保存在友節(jié)點的消息就會一個接一個地發(fā)到低功耗節(jié)點。在發(fā)出的數(shù)據(jù)包中有一個MD(more

data)標(biāo)志,用來指明友節(jié)點是否還有消息需要發(fā)送。

低功耗節(jié)點與友節(jié)點的關(guān)系稱為“友誼”(friend-ship)。正是這種友誼關(guān)系,才使得功耗受限的節(jié)點能夠在藍(lán)牙m(xù)esh網(wǎng)絡(luò)中正常接收消息,在正常工作的同時保持較低功耗。代理節(jié)點

在我們的生活中有大量的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é)點能夠?qū)崿F(xiàn)GATT和藍(lán)牙m(xù)esh節(jié)點之間的信息交互。我們定義了代理協(xié)議,用于面向連接的承載層,如GATT。GATT設(shè)備(沒有集成藍(lán)牙m(xù)esh協(xié)議棧)可以通過代理節(jié)點讀寫代理協(xié)議PDU。總之,代理節(jié)點可以允許沒有集成藍(lán)牙m(xù)esh協(xié)議棧的BLE設(shè)備與mesh網(wǎng)絡(luò)中的任何節(jié)點進(jìn)行通信。backtocontentsBluetoothMeshbackto

contentsBluetoothMeshNetworking/AnIntroductionfor

DevelopersP圖

6-

智能手機(jī)通過代理節(jié)點與mesh網(wǎng)絡(luò)進(jìn)行通信,P

=

代理節(jié)點?2017BluetoothSIG

Proprietary.16節(jié)點配置

配置服務(wù)器模型(Configuration

Server

Model)定義了許多狀態(tài),我們可以使用配置客戶端模型(Configuration

ClientModel)訪問這些狀態(tài)。配置狀態(tài)與節(jié)點可以產(chǎn)生的行為和能力有關(guān),與具體的應(yīng)用或者設(shè)備類型無關(guān)。例如,我們可以利用“配置服務(wù)器狀態(tài)”來指明某個節(jié)點是代理節(jié)點,中繼節(jié)點還是其它節(jié)點。節(jié)點訂閱的地址保存在訂閱列表中。網(wǎng)絡(luò)和子網(wǎng)密鑰以及應(yīng)用密鑰都保存在配置塊中(configuration

block)。配置客戶端模型與配置服務(wù)器模型可以對相應(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)識mesh網(wǎng)絡(luò)層級分布以及各個層的功能。我們還會將藍(lán)牙m(xù)esh結(jié)構(gòu)與BLE結(jié)構(gòu)進(jìn)行對比說明,這將更助于我們理解。承載層

發(fā)送和接收mesh消息需要底層協(xié)議棧的支持,而承載層(bearer

layer)則定義了如何使用底層BLE協(xié)議棧傳輸網(wǎng)絡(luò)PDU。目前定義了兩個承載層:廣播承載層和GATT承載層。

廣播承載層利用BLE

GAP廣播和掃描特性來發(fā)送和接收mesh

PDU。

對于不支持廣播承載層的設(shè)備,可以利用GATT承載層通過使用代理協(xié)議與mesh網(wǎng)絡(luò)中的節(jié)點進(jìn)行通信。

代理協(xié)議封裝在GATT操作中,包括特殊定義的GATT特性。mesh代理節(jié)點通過實現(xiàn)上述GATT特性,來支持GATT承載層和廣播承載層。這樣就可以在兩種承載層間轉(zhuǎn)換和中繼消息。網(wǎng)絡(luò)層

網(wǎng)絡(luò)層(network

layer)定義了多種消息地址類型和網(wǎng)絡(luò)消息格式,這樣傳輸層的PDU就可以通過承載層傳輸了。它可以支持多個承載層,每個承載層可以有多個網(wǎng)絡(luò)接口,如用于同一個節(jié)點不同元素間通信的本地接口。

網(wǎng)絡(luò)層決定了用哪一種網(wǎng)絡(luò)接口來輸出消息。來自承載層的消息會先經(jīng)過一個輸入濾波器,判斷消息是否需要傳入網(wǎng)絡(luò)層進(jìn)行進(jìn)一步處理。同理,輸出消息會經(jīng)過輸出濾波器,來決定消息是否要傳遞到承載層。

我們還可以通過網(wǎng)絡(luò)層實現(xiàn)代理和中繼特性。

從圖7可以看到,藍(lán)牙m(xù)esh網(wǎng)絡(luò)結(jié)構(gòu)的最下層是BLE。事實上,這不僅僅只有一層,而是整個BLE協(xié)議棧。很顯然,藍(lán)牙m(xù)esh正是利用BLE進(jìn)行實際上的信息通信的。接下來我們將自底向上分別介紹各個層。模型

基礎(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ā)到對端設(shè)備的底層傳輸層。它還可以進(jìn)行PDU的分段和重組(這一點與BLE協(xié)議棧中的L2CAP類似)。對于那些不能放入單個PDU的長數(shù)據(jù)包,底層傳輸層會對其進(jìn)行分段,將其放入多個PDU中傳輸。當(dāng)其它設(shè)備的底層傳輸層收到數(shù)據(jù)包后再將其重新組合,放入單個上層傳輸層PDU中,再向上傳輸。上層傳輸層

上層傳輸層(upper

transport

layer)可以將來自或者發(fā)往接入層的應(yīng)用數(shù)據(jù)進(jìn)行加密,解密和認(rèn)證。在不同節(jié)點之間,上層傳輸層還負(fù)責(zé)“傳輸控制消息”的生成和發(fā)送。傳輸控制消息與下文將要提到的“友誼”和“心跳”有關(guān)。接入層

接入層(access

layer)定義了應(yīng)用如何使用上層傳輸層。包括:定義應(yīng)用數(shù)據(jù)格式定義和控制上層傳輸層中的數(shù)據(jù)加密和解密過程驗證從上層傳輸層傳來的數(shù)據(jù)是否對應(yīng)于正確的網(wǎng)絡(luò)和應(yīng)用,如果正確則將其傳入上層協(xié)議棧中基礎(chǔ)模型層

基礎(chǔ)模型(foundation

model)層負(fù)責(zé)涉及mesh網(wǎng)絡(luò)配置和管理的基礎(chǔ)模型的實現(xiàn)。模型層

模型(model)層定義了模型的實現(xiàn)以及模型規(guī)范中定義的行為,消息,狀態(tài),狀態(tài)綁定等的實現(xiàn)。backtocontentsBluetoothMeshbackto

contentsBluetoothMeshNetworking/AnIntroductionfor

Developers5.0安全性?2017BluetoothSIG

Proprietary.20backtocontentsBluetoothMeshbackto

contentsBluetoothMeshNetworking/AnIntroductionfor

Developers5.0

安全性mesh網(wǎng)絡(luò)安全特性具有強(qiáng)制性在BLE中,允許profile設(shè)計者采用不同的安全機(jī)制。例如使用不同的藍(lán)牙配對方法,或者為某一個特性提供單獨的安全防護(hù)。也就是說,在BLE中,安全防護(hù)是可選擇的,允許設(shè)備不進(jìn)行安全防護(hù)。由產(chǎn)品的設(shè)計者或制造商負(fù)責(zé)分析產(chǎn)品的安全風(fēng)險,滿足具體的安全需求。相反,藍(lán)牙m(xù)esh的安全防護(hù)是強(qiáng)制執(zhí)行的。不管是網(wǎng)絡(luò),單個應(yīng)用還是具體的設(shè)備都需要進(jìn)行加密,并且在任何條件下都不能人為地關(guān)閉或減弱。mesh網(wǎng)絡(luò)安全性基本原則

藍(lán)牙m(xù)esh網(wǎng)絡(luò)會采用以下幾個基本原則來確保網(wǎng)絡(luò)的安全性:1.

所有的mesh消息都要經(jīng)過加密和認(rèn)證。2.

網(wǎng)絡(luò)安全性,應(yīng)用安全性,設(shè)備安全性相互獨立。也就是下面要提到的“關(guān)注點分離”。3.

在mesh網(wǎng)絡(luò)中,我們可以通過密鑰刷新程序來更新節(jié)點的安全密鑰。4.

消息模糊化可以讓外界難以追蹤網(wǎng)絡(luò)內(nèi)所發(fā)送的消息,進(jìn)而提供了一種隱私保護(hù)機(jī)制,難以讓外界跟蹤節(jié)點的活動。5.

藍(lán)牙m(xù)esh安全性可保護(hù)網(wǎng)絡(luò)免受中繼攻擊。6.

設(shè)備添加到mesh網(wǎng)絡(luò)從而成為節(jié)點的過程本身就是是一個安全的過程。也就是前面提到的,開通配置過程。7.

節(jié)點可以從網(wǎng)絡(luò)中安全地移除,這樣可以防止垃圾桶攻擊(trash

can

attack)。圖

8

-

藍(lán)牙m(xù)esh網(wǎng)絡(luò)的安全性是最重要的?2017BluetoothSIG

Proprietary.21關(guān)注點分離與mesh安全密鑰

藍(lán)牙m(xù)esh網(wǎng)絡(luò)安全性的核心是三種安全密鑰。分別使用這些密鑰對網(wǎng)絡(luò)中的不同部分進(jìn)行加密,這在網(wǎng)絡(luò)安全性方面是一種關(guān)鍵能力,也就是我們要說的“關(guān)注點分離”技術(shù)。為了更好地了解這種技術(shù),我們舉一個例子。有一個已經(jīng)加入藍(lán)牙m(xù)esh網(wǎng)絡(luò)的燈。它可以當(dāng)作一個中繼節(jié)點來中繼消息。它可以中繼門窗安全系統(tǒng)的消息,但是它不能理解消息的具體含義,只需要中繼消息就行了。照明系統(tǒng)和門窗安全系統(tǒng)相當(dāng)于兩個不同的子系統(tǒng),它們使用不同的密鑰進(jìn)行加密,這樣整個網(wǎng)絡(luò)的安全性就得到了提升。藍(lán)牙m(xù)esh網(wǎng)絡(luò)里的每個節(jié)點都有一個相同的網(wǎng)絡(luò)密鑰(NetKey)。正是這個密鑰才使得節(jié)點成為這個網(wǎng)絡(luò)的一員。網(wǎng)絡(luò)加密key與隱私key都是由這個網(wǎng)絡(luò)密鑰生成的。backtocontentsBluetoothMeshbackto

contentsBluetoothMeshNetworking/AnIntroductionfor

Developers?2017BluetoothSIG

Proprietary.22節(jié)點可以利用NetKey來加密和認(rèn)證網(wǎng)絡(luò)層,這樣諸如中繼之類的網(wǎng)絡(luò)功能就可以執(zhí)行了。但是NetKey不能加密應(yīng)用數(shù)據(jù)。藍(lán)牙m(xù)esh網(wǎng)絡(luò)可以分成幾個子網(wǎng)絡(luò),每個子網(wǎng)絡(luò)都有其單獨的NetKey,這個NetKey只有當(dāng)前子網(wǎng)絡(luò)成員節(jié)點才有,其它節(jié)點沒有。這種方式可以分隔開特定的物理區(qū)域,例如酒店中的每個房間都可以擁有一個單獨的NetKey。

只有擁有應(yīng)用密鑰(AppKey)的節(jié)點

才能解密相應(yīng)的應(yīng)用數(shù)據(jù)。在一個mesh網(wǎng)絡(luò)中,可以有許多不同的AppKey,每個AppKey對應(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。上層傳輸層會在將消息傳輸?shù)浇尤雽忧?,利用AppKey對消息進(jìn)行解密和認(rèn)證。

每個AppKey只與對應(yīng)的NetKey有關(guān)系,這種關(guān)系稱為“密鑰綁定”(key

binding)。也就意味著,一個擁有既定AppKey的應(yīng)用只能工作于某個特定網(wǎng)絡(luò),而一個mesh網(wǎng)絡(luò)可以擁有多個獨立的應(yīng)用。最后一種密鑰是設(shè)備密鑰(DevKey)。這是一種特殊的應(yīng)用密鑰。每個節(jié)點都有一個獨一無二的設(shè)備密鑰,這個密鑰只有啟動配置設(shè)備(如手機(jī))知道。設(shè)備密鑰可以用在開通配置過程,以確保啟動配置設(shè)備與節(jié)點之間的安全通訊。節(jié)點移除、密鑰刷新與垃圾桶攻擊如前文所述,節(jié)點包含多種mesh安全密鑰。如果某個節(jié)點出現(xiàn)故障,需要被丟棄,或者用戶想要將某個節(jié)點賣給其他人,那么我們需要特別注意,節(jié)點中包含許多網(wǎng)絡(luò)密鑰,不法分子可能利用這些密鑰攻擊你的網(wǎng)絡(luò),給用戶造成損失。針對以上情況,藍(lán)牙m(xù)esh規(guī)范中定義了一套安全的流程來移除不需要的節(jié)點。啟動配置設(shè)備(如手機(jī))上的應(yīng)用程序可以將節(jié)點加入黑名單,之后發(fā)起密鑰刷新程序。

密鑰刷新程序(Key

Refresh

Procedure)會向網(wǎng)絡(luò)中的所有節(jié)點發(fā)送新的網(wǎng)絡(luò)密鑰,應(yīng)用密鑰等相關(guān)數(shù)據(jù)。換句話說,所有的安全密鑰都被替換了。當(dāng)然在黑名單中的節(jié)點不會收到這些信息。因此,被移除的節(jié)點只擁有舊的密鑰,所以不再是網(wǎng)絡(luò)中的一員,也就沒有威脅了。隱私

隱私key是通過NetKey產(chǎn)生的,它可以用來模糊化網(wǎng)絡(luò)PDU報頭,例如模糊化源地址。模糊技術(shù)可以防止不法分子通過被動竊聽來追蹤某臺設(shè)備或者某個人的位置。它也可以令某些攻擊更加困難,如基于網(wǎng)絡(luò)流量分析的攻擊。利用隱私key可以提供非常合適的安全防護(hù)。重放攻擊

在網(wǎng)絡(luò)安全方面,我們經(jīng)常提到重放攻擊(replayattack)技術(shù)。重放攻擊是指竊聽者截獲一個或多個消息后,再轉(zhuǎn)發(fā)這些消息,以欺騙接收者,實施未授權(quán)的攻擊行為。例如我們經(jīng)常提到的一個例子,汽車的無鑰匙進(jìn)入系統(tǒng)受到攻擊者的破壞,攻擊者攔截了車主與汽車之間的認(rèn)證序列,然后重放這些信息進(jìn)入汽車實施盜竊。

藍(lán)牙m(xù)esh網(wǎng)絡(luò)可以防止重放攻擊。在藍(lán)牙m(xù)esh網(wǎng)絡(luò)PDU中包含兩個字段,分別稱為序列號(SequenceNumber)和IV索引(IV

Index)。每次發(fā)布消息時,元素會增加序列號的值。當(dāng)某個節(jié)點從元素接收消息時,如果發(fā)現(xiàn)元素包含的序列號小于或等于上一個有效消息中的序列號,則節(jié)點會將消息丟棄,因為很可能這則消息與重放攻擊有關(guān)。IV索引是一個單獨的字段,需要與序列號一同考慮。來自既定元素的消息中的IV索引值必須等于或者大于該元素的上一個有效消息。backtocontentsBluetoothMeshbackto

contentsBluetoothMeshNetworking/AnIntroductionfor

Developers6.0藍(lán)牙m(xù)esh在行動?2017BluetoothSIG

Proprietary.24backtocontentsBluetoothMesh24backto

contentsBluetoothMeshNetworking/AnIntroductionfor

Developers?2017BluetoothSIG

Proprietary.256.0

藍(lán)牙m(xù)esh在行動消息發(fā)布與傳遞

Wi-Fi網(wǎng)絡(luò)是基于一個中央網(wǎng)絡(luò)節(jié)點進(jìn)行工作的,這個中央網(wǎng)絡(luò)節(jié)點就是我們常見的路由器。所有的網(wǎng)絡(luò)傳輸都是通過路由器進(jìn)行的。一旦路由器出現(xiàn)故障,整個網(wǎng)絡(luò)都會癱瘓。

與此相反,藍(lán)牙m(xù)esh使用一種稱為管理型網(wǎng)絡(luò)泛洪的技術(shù)來進(jìn)行消息的傳遞。當(dāng)一條消息被某個節(jié)點發(fā)布后,這條消息不會只路由到某個或多個特定的節(jié)點。如果配置合適的話,在初始節(jié)點無線電覆蓋范圍之內(nèi)的所有節(jié)點都會收到消息,然后還可以將其中繼到更遠(yuǎn)的地方,這樣在離初始節(jié)點更遠(yuǎn)(遠(yuǎn)遠(yuǎn)超過初始節(jié)點無線電覆蓋范圍)的地方也能收到中繼來的廣播消息。這樣整個通信距離將變得更長。多路徑傳遞通過使用管理型網(wǎng)絡(luò)泛洪技術(shù),我們可以發(fā)現(xiàn),消息可以通過網(wǎng)絡(luò)中的多種途徑到達(dá)目的地。這就使得藍(lán)牙m(xù)esh網(wǎng)絡(luò)的消息傳輸更加可靠,也正是由于這個原因,在網(wǎng)絡(luò)設(shè)計時,我們才采用了泛洪技術(shù),沒用采用路由的方法。管理型網(wǎng)絡(luò)泛洪

藍(lán)牙m(xù)esh網(wǎng)絡(luò)采用網(wǎng)絡(luò)泛洪的方式傳輸消息,這樣可以使整個網(wǎng)絡(luò)更加可靠和高效。我們可以通過多種方式來優(yōu)化泛洪的工作,稱之為“管理型網(wǎng)絡(luò)泛洪”。這些方式如下:心跳

節(jié)點會周期性地向其它節(jié)點發(fā)送心跳消息,告知其它節(jié)點該節(jié)點處于活動狀態(tài)。同時心跳消息還包含一部分?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é)點控制消息中繼的次數(shù),避免不必要的消息中繼,從而降低功耗。

心跳消息(heartbeat

messages)可以用來確定每次消息發(fā)布時應(yīng)該選用的最適合的TTL值。消息緩存

每個節(jié)點都具有消息緩存能力。緩存中包含了最近接收的全部消息。如果發(fā)現(xiàn)新來的消息已經(jīng)存在于緩存中,則說明此條消息之前已經(jīng)被處理過了,那么這條消息將被立即丟棄。友誼藍(lán)牙m(xù)esh網(wǎng)絡(luò)中最顯著的優(yōu)化機(jī)制可能就是友節(jié)點和低功耗節(jié)點的配合了。正如前文所述,友節(jié)點可以保存消息,為低功耗節(jié)點服務(wù),這使得低功耗節(jié)點能夠以一種極低功耗的方式運行。協(xié)議棧中消息的傳遞

某個節(jié)點通過底層的BLE協(xié)議棧接收到一條消息,通過承載層將其傳輸?shù)骄W(wǎng)絡(luò)層。網(wǎng)絡(luò)層通過各種校驗機(jī)制來決定是否將其傳輸?shù)缴蠈訁f(xié)議棧。此外,PDU中還有一塊稱為網(wǎng)絡(luò)ID的區(qū)域,我們可以利用網(wǎng)絡(luò)ID來識別消息加密的NetKey。如果NetKey沒有被接收節(jié)點的網(wǎng)絡(luò)層所識別,這就表明它沒有相應(yīng)的NetKey,也就是說它不是這個子網(wǎng)絡(luò)的一員,所以這個PDU會被丟棄。PDU中還有一塊消息完整性檢查(MIC)區(qū)域。我們可以利用與PDU網(wǎng)絡(luò)ID對應(yīng)的NetKey來進(jìn)行消息完整性檢查,如果失敗了,那么這條消息也會被丟棄。backtocontentsBluetoothMesh25backto

contentsBluetoothMeshNetworking/AnIntroductionfor

Developers?2017BluetoothSIG

Proprietary.26

某個節(jié)點發(fā)送的消息可以被它附近的所有節(jié)點接收,不過有些節(jié)點會很快將消息丟棄,因為他們與這個節(jié)點不在同一個網(wǎng)絡(luò)或者子網(wǎng)絡(luò),它們之間沒有什么關(guān)系。同樣的原則也適用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論