- 藍(lán)牙(yá)淵源
1.1 藍(lán)牙(yá)定(dìng)義
藍(lán)牙(yá):是(shì)一種(zhǒng)工作(zuò)在(zài) 2.4G 频段(duàn)的(de)無線(xiàn)技術(shù)标(biāo)準,可(kě)實(shí)現(xiàn)固定(dìng)設備、移動(dòng)設備
和(hé)樓宇个(gè)人(rén)域网之(zhī)間(jiān)的(de)短距離數據(jù)交換。
藍(lán)牙(yá)主要(yào)分(fēn)为(wèi) 3 个(gè)部(bù)分(fēn):
- 高速藍(lán)牙(yá):使用(yòng) Wi-Fi 無線(xiàn)協議来(lái)提(tí)升(shēng)速度(dù);
- 低(dī)功耗藍(lán)牙(yá):Bluetooth Low Energy 低(dī)速率低(dī)功耗藍(lán)牙(yá);
- 传統藍(lán)牙(yá):主要(yào)用(yòng)于(yú)日(rì)常信(xìn)息传輸如(rú)音(yīn)频等;
我(wǒ)们(men)一般藍(lán)牙(yá)主要(yào)指传統藍(lán)牙(yá)和(hé)低(dī)功耗藍(lán)牙(yá),传統藍(lán)牙(yá)簡稱 BT,低(dī)功耗藍(lán)牙(yá)簡稱 BLE,双(shuāng)模藍(lán)牙(yá)則是(shì)兼備传統藍(lán)牙(yá)和(hé)低(dī)功耗藍(lán)牙(yá)的(de)功能(néng)。
藍(lán)牙(yá)經(jīng)过(guò)了长(cháng)时(shí)間(jiān)的(de)發(fà)展(zhǎn),從最開(kāi)始的(de)藍(lán)牙(yá),到(dào)現(xiàn)在(zài)最新(xīn)的(de)藍(lán)牙(yá) 5.2,在(zài)这(zhè)些(xiē)不(bù)同(tóng)的(de)藍(lán)牙(yá)版本(běn),增加了許多(duō)特(tè)性(xìng)。
1999 年(nián)~2003 年(nián)的(de)藍(lán)牙(yá)1.0~藍(lán)牙(yá)1.3 短距離無線(xiàn)通(tòng)信(xìn)早(zǎo)期(qī)的(de)探索
2004 年(nián)~2007 年(nián)的(de)藍(lán)牙(yá)2.0~藍(lán)牙(yá)2.1 發(fà)力传輸速率的(de) EDR 时(shí)代(dài)
2009 年(nián)藍(lán)牙(yá)3.0 High Speed,传輸速率高达(dá) 24Mbps
2010 年(nián) 4.0 版本(běn)提(tí)出(chū)了“低(dī)功耗藍(lán)牙(yá)”、“传統藍(lán)牙(yá)”和(hé)“高速藍(lán)牙(yá)”三(sān)種(zhǒng)模式。
2013 年(nián) 4.1 版本(běn)改善與(yǔ) LET 之(zhī)間(jiān)的(de)干(gàn)擾、優化連(lián)接方(fāng)式(主從一體(tǐ))、传輸方(fāng)式
2014 年(nián) 4.2 版本(běn)支持 IPV6 & 6LowPAN ,加強(qiáng)隐私保密,提(tí)升(shēng)了數據(jù)传輸速度(dù)
2016 年(nián) 5.0 版本(běn) BLE 速度(dù)提(tí)升(shēng)两(liǎng)倍(2Mbps),範圍擴大(dà)至(zhì) 300 米(mǐ)
2017 年(nián) 7月(yuè) SIG 提(tí)出(chū) BLE Mesh
2019 年(nián) 5.1 版本(běn)發(fà)布(bù),在(zài)藍(lán)牙(yá) 5.0 的(de)基礎上(shàng),新(xīn)增尋向(xiàng) (direction finding) 功能(néng),配合藍(lán)牙(yá)近(jìn)接 (proximity)技術(shù),即可(kě)讓設備更容易被(bèi)偵测發(fà)現(xiàn),同(tóng)时(shí)将藍(lán)牙(yá)定(dìng)位(wèi)的(de)精準度(dù)提(tí)升(shēng)到(dào)厘(lí)米(mǐ)级,借(jiè)此(cǐ)應(yìng)用(yòng)在(zài)小型藍(lán)牙(yá)設備中實(shí)現(xiàn)定(dìng)位(wèi)。
2020 年(nián) 5.2 版其(qí)中最引人(rén)注目的(de)是(shì)下(xià)一代(dài)藍(lán)牙(yá)音(yīn)频 LE Audio 的(de)頒布(bù), LE Audio 不(bù)僅支持連(lián)接狀态及(jí)廣播狀态下(xià)的(de)立體(tǐ)聲,還(huán)将通(tòng)过(guò)一系(xì)列的(de)規格调整增強(qiáng)藍(lán)牙(yá)音(yīn)频性(xìng)能(néng),包(bāo)括縮小延遲,通(tòng)过(guò) LC3 編解(jiě)碼增強(qiáng)音(yīn)質(zhì)等。在(zài)通(tòng)过(guò) LE 實(shí)現(xiàn)短距離万物(wù)互聯後(hòu),加上(shàng) LE Audio,这(zhè)将使得藍(lán)牙(yá)在(zài)物(wù)聯网时(shí)代(dài)獲得徹底新(xīn)生和(hé)騰飛。
我(wǒ)们(men)本(běn)篇(piān)主要(yào)介紹藍(lán)牙(yá) Mesh,藍(lán)牙(yá) Mesh 不(bù)属于(yú)任何一个(gè)版本(běn)的(de)藍(lán)牙(yá),是(shì)另(lìng)外(wài)补充的(de)協議,只(zhī)要(yào)芯片(piàn)硬(yìng)件(jiàn)與(yǔ)協議棧可(kě)以(yǐ)支持,即可(kě)支持藍(lán)牙(yá) Mesh,
藍(lán)牙(yá)私有(yǒu) Mesh 其(qí)實(shí)在(zài)很久之(zhī)前(qián)就(jiù)已經(jīng)有(yǒu)出(chū)来(lái),但是(shì)因(yīn)为(wèi)私有(yǒu)的(de)關(guān)系(xì),不(bù)能(néng)實(shí)現(xiàn)互聯互通(tòng),並(bìng)沒(méi)有(yǒu)在(zài)市(shì)场(chǎng)上(shàng)大(dà)規模應(yìng)用(yòng),目前(qián)藍(lán)牙(yá)成本(běn)較低(dī),更多(duō)是(shì)應(yìng)用(yòng)在(zài)燈(dēng)具上(shàng)而(ér)已,
且(qiě) Mesh 需要(yào)一定(dìng)的(de)时(shí)間(jiān)来(lái)完成協議棧,因(yīn)此(cǐ)藍(lán)牙(yá) Mesh 穩定(dìng)應(yìng)用(yòng)个(gè)人(rén)認为(wèi)還(huán)需要(yào)一段(duàn)时(shí)間(jiān)。
2.藍(lán)牙(yá) Mesh 介紹
2.1 藍(lán)牙(yá) Mesh
藍(lán)牙(yá)Mesh 网絡使用(yòng)、並(bìng)且(qiě)依賴于(yú)低(dī)功耗藍(lán)牙(yá)。低(dī)功耗藍(lán)牙(yá)技術(shù)是(shì)藍(lán)牙(yá)Mesh 使用(yòng)的(de)無線(xiàn)通(tòng)信(xìn)協議棧。
2.2 Mesh 网絡
Mesh 网絡一般分(fēn)为(wèi)两(liǎng)種(zhǒng):路由(yóu) Mesh 和(hé)泛洪 Mesh。
路由(yóu) Mesh: 每个(gè)設備選定(dìng)最快(kuài)指定(dìng)的(de)会(huì)話(huà)路徑,即路徑指定(dìng)一般情(qíng)況下(xià)唯一。
泛洪 Mesh: 泛洪 Mesh 网絡上(shàng)的(de)每台(tái)設備都能(néng)向(xiàng)所連(lián)接的(de)設備集體(tǐ)發(fà)送信(xìn)号(hào),会(huì)話(huà)路徑不(bù)唯一,但它(tā)存在(zài)两(liǎng)个(gè)挑戰:一是(shì)衆多(duō)設備互相之(zhī)間(jiān)進(jìn)行混亂而(ér)交错的(de)对(duì)話(huà);二(èr)是(shì)对(duì)功率效率的(de)拖累。
2.3 藍(lán)牙(yá) Mesh Modules
- 設備和(hé)节(jié)點(diǎn) (Devices and Nodes)
未加入(rù) Mesh 网絡的(de)産品为(wèi)設備,加入(rù)後(hòu)变成节(jié)點(diǎn),加入(rù)的(de)过(guò)程稱为(wèi)“配网”。
- 元素 (Element)
定(dìng)義是(shì)在(zài)設備中可(kě)以(yǐ)尋址訪問(wèn)的(de)實(shí)體(tǐ),如(rú)燈(dēng)設備有(yǒu)三(sān)个(gè)子燈(dēng),每个(gè)子燈(dēng)可(kě)以(yǐ)被(bèi)獨立的(de)控制。那(nà)麼(me)这(zhè)个(gè)燈(dēng)在(zài) Mesh网絡里(lǐ)就(jiù)叫做 Node节(jié)點(diǎn),每个(gè)子燈(dēng)就(jiù)叫做元素 Element。
- 消息(Messages)
节(jié)點(diǎn)需要(yào)查詢或(huò)控制另(lìng)外(wài)节(jié)點(diǎn)时(shí),需要(yào)發(fà)一个(gè)对(duì)應(yìng)類(lèi)型的(de)消息;节(jié)點(diǎn)向(xiàng)另(lìng)外(wài)节(jié)點(diǎn)報告狀态改变时(shí),也需要(yào)發(fà)出(chū)一个(gè)消息。每種(zhǒng)消息都有(yǒu)对(duì)應(yìng)的(de)操作(zuò)碼,消息可(kě)以(yǐ)按照有(yǒu)應(yìng)答(dá) (acknowledged) 和(hé)沒(méi)應(yìng)答(dá) (unacknowledged) 来(lái)分(fēn)類(lèi)。
- 地(dì)址 (Addresses)
在(zài)藍(lán)牙(yá) Mesh 里(lǐ)面(miàn)定(dìng)義了三(sān)種(zhǒng)類(lèi)型的(de)地(dì)址。單播地(dì)址,組播地(dì)址和(hé)虛拟地(dì)址。唯一性(xìng)的(de)單播地(dì)址可(kě)以(yǐ)識别出(chū)一个(gè)元素。組播地(dì)址是(shì)一个(gè)表(biǎo)示一个(gè)及(jí)以(yǐ)上(shàng)元素的(de)廣播地(dì)址,虛拟地(dì)址可(kě)以(yǐ)使用(yòng) 128 位(wèi)的(de)标(biāo)签(qiān) Label UUID 邏輯上(shàng)来(lái)表(biǎo)示。
- 狀态和(hé)属性(xìng) (States and Properties)
(1)在(zài)藍(lán)牙(yá) Mesh 中,元素的(de)不(bù)同(tóng)情(qíng)況叫做狀态,狀态是(shì)一个(gè)特(tè)定(dìng)類(lèi)型的(de)值,存在(zài)每个(gè)元素内部(bù)。除了本(běn)身(shēn)的(de)值以(yǐ)外(wài),狀态還(huán)有(yǒu)一些(xiē)相關(guān)的(de)行为(wèi)(開(kāi)/關(guān)燈(dēng))。
(2)属性(xìng)只(zhī)是(shì)表(biǎo)明(míng)了一个(gè)量(liàng),但这(zhè)个(gè)量(liàng)你可(kě)以(yǐ)用(yòng)在(zài)很多(duō)的(de)场(chǎng)合,比如(rú)一个(gè)温度(dù)值, 她並(bìng)沒(méi)有(yǒu)體(tǐ)現(xiàn)这(zhè)里(lǐ)温度(dù)值和(hé)什(shén)麼(me)相關(guān)。
- 發(fà)布(bù)和(hé)訂閱 (Publish/Subscribe)
在(zài)藍(lán)牙(yá) Mesh里(lǐ)面(miàn)發(fà)消息的(de)動(dòng)作(zuò)我(wǒ)们(men)叫做發(fà)布(bù)(Publish)。节(jié)點(diǎn)發(fà)布(bù)消息到(dào)單播 地(dì)址,組播地(dì)址或(huò)者(zhě)虛拟地(dì)址。节(jié)點(diǎn)有(yǒu)兴趣接收(shōu)这(zhè)些(xiē)數據(jù)的(de)可(kě)以(yǐ)訂閱这(zhè)些(xiē)地(dì)址。
因(yīn)为(wèi)存在(zài)牆(qiáng)壁和(hé)其(qí)他(tā)物(wù)理上(shàng)的(de)障礙物(wù),樓宇中的(de)設備可(kě)能(néng)無法(fǎ)與(yǔ)安(ān)裝(zhuāng)在(zài)同(tóng)一樓宇遠(yuǎn)侧的(de)設備、或(huò)臨近(jìn)樓宇中的(de)設備建立直(zhí)接的(de)無線(xiàn)連(lián)接。而(ér)藍(lán)牙(yá) Mesh网絡則能(néng)夠将网絡中的(de)某些(xiē)設備指定(dìng)为(wèi)“ 中繼設備”,進(jìn)而(ér)解(jiě)决这(zhè)一難題(tí)。
中繼設備能(néng)夠轉(zhuǎn)發(fà)從其(qí)他(tā)設備接收(shōu)到(dào)的(de)消息。在(zài)轉(zhuǎn)發(fà)消息时(shí),它(tā)们(men)能(néng)夠與(yǔ)位(wèi)于(yú)初始消息發(fà)布(bù)設備無線(xiàn)範圍以(yǐ)外(wài)的(de)設備進(jìn)行通(tòng)信(xìn)。消息可(kě)多(duō)次(cì)被(bèi)中繼,每一次(cì)中繼即为(wèi)一“跳”,最多(duō)可(kě)進(jìn)行 127 跳,足以(yǐ)在(zài)一片(piàn)廣闊的(de)物(wù)理區(qū)域中進(jìn)行消息传輸。
藍(lán)牙(yá) Mesh 网絡也采取(qǔ)了一系(xì)列措施,支持采用(yòng)网絡泛洪的(de)方(fāng)式,同(tóng)时(shí)優化每台(tái)設備、甚至(zhì)整體(tǐ)网絡的(de)能(néng)耗。
數據(jù)包(bāo)包(bāo)含一个(gè) TTL 的(de)字(zì)段(duàn),用(yòng)于(yú)限制消息中繼的(de)跳數。这(zhè)能(néng)夠讓設備将 TTL 設置为(wèi)最佳值,從而(ér)避免不(bù)必要(yào)的(de)中繼操作(zuò)。每台(tái)設備都包(bāo)含消息缓存,以(yǐ)确定(dìng)自(zì)身(shēn)是(shì)否已經(jīng)中繼过(guò)該消息。如(rú)果(guǒ)是(shì),則会(huì)立即丢棄該消息,從而(ér)避免上(shàng)层(céng)堆(duī)棧進(jìn)行不(bù)必要(yào)的(de)處(chù)理。
2.4 节(jié)點(diǎn)間(jiān)的(de) “Friendship”
另(lìng)外(wài)一點(diǎn),功率非(fēi)常受限的(de)設備(例如(rú)传感(gǎn)器)可(kě)以(yǐ)被(bèi)指定(dìng)为(wèi)“低(dī)功耗节(jié)點(diǎn)”。低(dī)功耗节(jié)點(diǎn)能(néng)夠與(yǔ)一个(gè)或(huò)多(duō)个(gè)被(bèi)指定(dìng)为(wèi) “friends”的(de)設備協同(tóng)工作(zuò)。Friends 並(bìng)非(fēi)功率受限設備,它(tā)可(kě)以(yǐ)作(zuò)为(wèi)低(dī)功耗节(jié)點(diǎn),存儲尋址到(dào)这(zhè)一低(dī)功耗节(jié)點(diǎn)的(de)消息,並(bìng)且(qiě)只(zhī)有(yǒu)在(zài)低(dī)功耗节(jié)點(diǎn)需要(yào)时(shí)才传送消息。
“Friendship” 具體(tǐ)如(rú)何运轉(zhuǎn)?
对(duì)設備来(lái)说(shuō),通(tòng)过(guò)與(yǔ) “friends” 的(de)合作(zuò), 低(dī)功耗节(jié)點(diǎn)能(néng)夠以(yǐ)合理的(de)频率使用(yòng)無線(xiàn)電(diàn)来(lái)接收(shōu)消息,但重(zhòng)要(yào)的(de)是(shì),相較于(yú)始終(zhōng)“聆听(tīng)”所有(yǒu)消息,它(tā)能(néng)夠以(yǐ)更低(dī)的(de)频率工作(zuò),同(tóng)时(shí)确保發(fà)送来(lái)的(de)罕見(jiàn)事件(jiàn)也不(bù)会(huì)被(bèi)遺漏
2.5 Mesh 网絡
安(ān)全(quán)性(xìng)是(shì)藍(lán)牙(yá) Mesh网絡設計(jì)的(de)核心(xīn),並(bìng)且(qiě)強(qiáng)制使用(yòng)。
每个(gè)數據(jù)包(bāo)都經(jīng)过(guò)加密和(hé)認證。通(tòng)过(guò)合理使用(yòng)序列号(hào)能(néng)夠防止中繼攻擊。在(zài)重(zhòng)要(yào)流程中使用(yòng)不(bù)对(duì)稱加密技術(shù)可(kě)防止中間(jiān)人(rén)(Man-in-the-middle)攻擊。同(tóng)时(shí)針(zhēn)对(duì)利用(yòng)廢棄設備的(de)垃圾桶(tǒng)攻擊提(tí)供保護。必要(yào)时(shí)還(huán)会(huì)刷新(xīn)安(ān)全(quán)密鑰。
“安(ān)全(quán)分(fēn)级考量(liàng)”(Separation of Concerns)是(shì)藍(lán)牙(yá)mesh网絡安(ān)全(quán)性(xìng)中體(tǐ)現(xiàn)的(de)重(zhòng)要(yào)原則。我(wǒ)们(men)還(huán)将密切(qiè)關(guān)注一个(gè)稱为(wèi)開(kāi)通(tòng)配置 “Provisioning”的(de)安(ān)全(quán)流程,設備可(kě)通(tòng)过(guò)这(zhè)一流程变身(shēn)为(wèi)藍(lán)牙(yá)mesh网絡的(de)一員。此(cǐ)外(wài),我(wǒ)们(men)還(huán)将探讨如(rú)何從网絡中安(ān)全(quán)地(dì)删除設備,以(yǐ)及(jí)如(rú)何在(zài)有(yǒu)需要(yào)时(shí)刷新(xīn)安(ān)全(quán)密鑰。
藍(lán)牙(yá) Mesh 网絡引入(rù)了全(quán)新(xīn)的(de)協議棧
承载层(céng):承载层(céng)定(dìng)義了如(rú)何使用(yòng)底层(céng)低(dī)功耗堆(duī)棧传輸 PDU
网絡层(céng):网絡层(céng)定(dìng)義了各(gè)種(zhǒng)消息地(dì)址類(lèi)型和(hé)网絡消息格式。
底层(céng)传輸层(céng):在(zài)需要(yào)之(zhī)时(shí),底层(céng)传輸层(céng)能(néng)夠處(chù)理 PDU 的(de)分(fēn)段(duàn)和(hé)重(zhòng)組。
上(shàng)层(céng)传輸层(céng):負責对(duì)接入(rù)层(céng)進(jìn)出(chū)的(de)應(yìng)用(yòng)數據(jù)進(jìn)行加密、解(jiě)密和(hé)認證。
接入(rù)层(céng):負責應(yìng)用(yòng)數據(jù)的(de)格式、定(dìng)義並(bìng)控制上(shàng)层(céng)传輸层(céng)中執行的(de)加密和(hé)解(jiě)密过(guò)程,證接收(shōu)到(dào)的(de)數據(jù)是(shì)否适用(yòng)于(yú)正(zhèng)确的(de)网絡和(hé)應(yìng)用(yòng)。
基礎模型:基礎模型层(céng)負責實(shí)現(xiàn)與(yǔ) Mesh 网絡配置和(hé)管(guǎn)理相關(guān)的(de)模型。
模型:模型层(céng)與(yǔ)模型等的(de)實(shí)施、以(yǐ)及(jí)諸如(rú)行为(wèi)、消息、狀态等的(de)實(shí)施有(yǒu)關(guān)。
參考文(wén)檔:
1.《解(jiě)密藍(lán)牙(yá) Mesh系(xì)列》 小碼哥 藍(lán)牙(yá)技術(shù)聯盟 公(gōng)衆号(hào)
2.《藍(lán)牙(yá)Mesh 技術(shù) 一起(qǐ)學(xué) 入(rù)門(mén)篇(piān)》 dawei 知乎
