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