為物聯(lián)網(wǎng)不斷前行的藍(lán)牙Mesh
從本質(zhì)上來(lái)講,藍(lán)牙Mesh技術(shù)并非無(wú)線通信技術(shù),而是一種網(wǎng)絡(luò)(組網(wǎng))的技術(shù),用于構(gòu)建“多對(duì)多通信連接”的網(wǎng)絡(luò)。
縱觀藍(lán)牙技術(shù)的發(fā)展旅程,SIG不斷地追求著無(wú)線連接的性能:傳輸速率(EDR-Enhanced Data Rate、AMP)、低功耗(Sniff Subrating、BLE)、網(wǎng)絡(luò)接入(6LoWPAN、Mesh)和安全配對(duì)(SSP),以滿足各種應(yīng)用對(duì)近距離通信的需求。
原本,SIG主要是聚焦于“以人為中心的邊緣網(wǎng)絡(luò)”進(jìn)行技術(shù)創(chuàng)新,而如今,藍(lán)牙適用的范圍已經(jīng)逐漸拓展到所有物聯(lián)網(wǎng)邊緣場(chǎng)景:“藍(lán)牙增強(qiáng)速率技術(shù)(BR / EDR)”的應(yīng)用從無(wú)線耳機(jī)發(fā)展到鼠標(biāo)鍵盤(pán);“藍(lán)牙低功耗技術(shù)”應(yīng)用于手表、手環(huán),發(fā)掘了可穿戴市場(chǎng);而“藍(lán)牙Mesh組網(wǎng)技術(shù)”則瞄準(zhǔn)了整個(gè)(邊緣域)物聯(lián)網(wǎng)市場(chǎng),包括消費(fèi)領(lǐng)域和工業(yè)領(lǐng)域。
從最新的組網(wǎng)構(gòu)架(Mesh組網(wǎng))中,讓我們逐漸地看清了藍(lán)牙技術(shù)聯(lián)盟對(duì)物聯(lián)網(wǎng)通信的預(yù)想,以及對(duì)邊緣網(wǎng)絡(luò)的理解。
一、為物聯(lián)網(wǎng)不斷前行的藍(lán)牙Mesh
為了開(kāi)發(fā)和應(yīng)用的方便,藍(lán)牙技術(shù)聯(lián)盟在藍(lán)牙Mesh中加入了“情景(Scene)”這一概念,可以將網(wǎng)絡(luò)中的一部分節(jié)點(diǎn)、元素、狀態(tài)、操作行為“捆綁”在一起,形成“物”的聯(lián)動(dòng)機(jī)制,使得應(yīng)用的內(nèi)涵豐富多姿,且易于開(kāi)發(fā)和理解。
通過(guò)攜帶特殊的16位情景序號(hào),一個(gè)觸發(fā)節(jié)點(diǎn)可以通過(guò)發(fā)布一個(gè)消息,就實(shí)現(xiàn)一組節(jié)點(diǎn)設(shè)備改變各自運(yùn)行狀態(tài),形成物與物內(nèi)在關(guān)聯(lián)的場(chǎng)景。開(kāi)發(fā)人員可以利用豐富的情景預(yù)設(shè),向用戶交付最佳的應(yīng)用體驗(yàn)。
在安全方面,藍(lán)牙技術(shù)聯(lián)盟從應(yīng)用到網(wǎng)絡(luò),設(shè)計(jì)、部署了多層次的防護(hù)措施。
- 在藍(lán)牙Mesh技術(shù)中,引入各類秘鑰:Netkey、AppKey、DevKey,以對(duì)應(yīng)用、網(wǎng)絡(luò)、節(jié)點(diǎn)進(jìn)行全面的認(rèn)證。并且,網(wǎng)絡(luò)中的啟動(dòng)配置設(shè)備(配網(wǎng)節(jié)點(diǎn)-Provisioner:負(fù)責(zé)其它所有節(jié)點(diǎn)入網(wǎng)的認(rèn)證和密鑰分配)可以配置黑名單,并控制全網(wǎng)更改秘鑰(秘鑰刷新程序),將嫌疑節(jié)點(diǎn)踢出藍(lán)牙Mesh網(wǎng)絡(luò);
- 通過(guò)NetKey派生的隱私Key,可以模糊化藍(lán)牙網(wǎng)絡(luò)PDU報(bào)頭,以防止定向的竊聽(tīng)和追蹤;
- 通過(guò)在網(wǎng)絡(luò)PDU中引入序列號(hào)(Sequence Number)和IV索引(IV Index),避免“重放攻擊”,欺騙節(jié)點(diǎn)作出未授權(quán)的處理和響應(yīng)。
縱觀藍(lán)牙Mesh技術(shù),它轉(zhuǎn)變了傳統(tǒng)藍(lán)牙以“人”為中心的網(wǎng)絡(luò)特性(集中化網(wǎng)絡(luò)),而轉(zhuǎn)向“多點(diǎn)對(duì)多點(diǎn)”的網(wǎng)絡(luò)架構(gòu),以滿足“物”的連接需求為協(xié)議開(kāi)發(fā)的宗旨。
在局部空間中,從應(yīng)用到網(wǎng)絡(luò)連接,設(shè)計(jì)了一整套基礎(chǔ)網(wǎng)絡(luò)構(gòu)建的規(guī)范和標(biāo)準(zhǔn),簡(jiǎn)化開(kāi)發(fā)和運(yùn)營(yíng)的難度。它兼容低功耗藍(lán)牙技術(shù),滿足電池驅(qū)動(dòng)設(shè)備低頻低量的連接需求。
它采取強(qiáng)制執(zhí)行的安全策略:入網(wǎng)必須認(rèn)證、連接必須加密,以及具有秘鑰動(dòng)態(tài)更新、關(guān)鍵字節(jié)等其它安全措施。其技術(shù)的開(kāi)放性,為物聯(lián)網(wǎng)應(yīng)用生態(tài)的構(gòu)建提供了基礎(chǔ)。
從藍(lán)牙Mesh技術(shù)中也能看到,它并沒(méi)有關(guān)于互聯(lián)網(wǎng)連接、服務(wù)的設(shè)計(jì)。在實(shí)際應(yīng)用開(kāi)發(fā)中,該部分主要由應(yīng)用的開(kāi)發(fā)者自己來(lái)完成。此外,泛洪的信息傳播模式(“管理型網(wǎng)絡(luò)泛洪”),雖然采用了一些優(yōu)化措施(TTL等),但對(duì)網(wǎng)絡(luò)的擴(kuò)展擴(kuò)容有較大影響,還需要進(jìn)一步地設(shè)計(jì)優(yōu)化方案。
在物聯(lián)網(wǎng)的邊緣,越來(lái)越多的網(wǎng)絡(luò)技術(shù)開(kāi)始考慮“物”的連接需求,Mesh組網(wǎng)、多點(diǎn)對(duì)多點(diǎn)、低功耗連接、非對(duì)等網(wǎng)絡(luò)等理念,不斷嵌入到局部空間的網(wǎng)絡(luò)設(shè)計(jì)當(dāng)中,邊緣網(wǎng)絡(luò)作為物聯(lián)網(wǎng)技術(shù)的先行者,將成為物聯(lián)網(wǎng)生態(tài)建立的基石和保證。
二、藍(lán)牙Mesh網(wǎng)絡(luò)架構(gòu)
藍(lán)牙Mesh通過(guò)網(wǎng)狀網(wǎng)的組網(wǎng)結(jié)構(gòu),可以實(shí)現(xiàn)室內(nèi)的大范圍網(wǎng)絡(luò)覆蓋。節(jié)點(diǎn)(Node)組成了藍(lán)牙Mesh的主干網(wǎng)絡(luò),在Node之間使用了低功耗藍(lán)牙的技術(shù)進(jìn)行對(duì)連,而具有不同能力特性的節(jié)點(diǎn)在網(wǎng)絡(luò)中承擔(dān)了不同的角色。
承擔(dān)網(wǎng)絡(luò)角色,需要節(jié)點(diǎn)之間遵守藍(lán)牙Mesh的語(yǔ)法(通信規(guī)則、數(shù)據(jù)格式)進(jìn)行對(duì)話,通過(guò)協(xié)商組成網(wǎng)絡(luò)并向應(yīng)用提供網(wǎng)絡(luò)路由服務(wù)。
節(jié)點(diǎn)間的網(wǎng)絡(luò)協(xié)商過(guò)程,是通過(guò)“消息攜帶組網(wǎng)信息”,從“源地址向目的地址傳遞”,并形成“網(wǎng)絡(luò)信息的交互”而構(gòu)成的。
1. 網(wǎng)絡(luò)地址
藍(lán)牙Mesh網(wǎng)絡(luò)中,統(tǒng)一的地址長(zhǎng)度為16位,分四種類型:?jiǎn)尾サ刂?unicast address)、組播地址(group address)、虛擬地址(virtual address)、未分配地址(unassigned)。
(1)單播地址(Unicast Address)
單播地址在藍(lán)牙Mesh網(wǎng)絡(luò)中具有唯一性,可以標(biāo)識(shí)出節(jié)點(diǎn)內(nèi)的一個(gè)元素,節(jié)點(diǎn)在接入網(wǎng)絡(luò)的時(shí)候被分配獲得。一個(gè)mesh網(wǎng)絡(luò)可以有32767個(gè)單播地址。
(2)組播地址(group address)
組播地址即是多播地址,標(biāo)識(shí)一個(gè)或多個(gè)元素。SIG預(yù)定義了四類組播:“All-proxies”, “All-friends”,“All-relays” 和 “All-nodes”。開(kāi)發(fā)者也可以將多個(gè)元素自定義到一個(gè)多播地址,便于應(yīng)用的統(tǒng)一控制和管理。
(3)虛擬地址(Virtual Address)
虛擬地址可以賦給一個(gè)或多個(gè)元素,且可以由多個(gè)節(jié)點(diǎn)共有。虛擬地址類似于標(biāo)簽,可以在設(shè)備出廠前就配置,標(biāo)簽可以使得節(jié)點(diǎn)容易在網(wǎng)絡(luò)被識(shí)別和應(yīng)用。例如,可以表示某個(gè)廠商生產(chǎn)的某一個(gè)特定型號(hào)的攝像頭。
(4)未分配地址(unassigned)
16位全零的地址,表示元素還沒(méi)有配置地址。
2. 消息(Message)
藍(lán)牙m(xù)esh網(wǎng)絡(luò)通過(guò)消息承載數(shù)據(jù)信息進(jìn)行通信。一個(gè)節(jié)點(diǎn)可以通過(guò)消息來(lái)詢問(wèn)其它節(jié)點(diǎn)的狀態(tài),也可以將自己狀態(tài)消息發(fā)送給別的節(jié)點(diǎn)。在藍(lán)牙m(xù)esh技術(shù)規(guī)范中,定義了很多種類型的消息。
在藍(lán)牙m(xù)esh網(wǎng)絡(luò)中,無(wú)論節(jié)點(diǎn)間相距多遠(yuǎn),所有節(jié)點(diǎn)均可以訂閱某一節(jié)點(diǎn)發(fā)布的狀態(tài)數(shù)據(jù)。
(1)消息的應(yīng)用類型:
消息有兩種應(yīng)用類型:控制消息(Control Message)和接入消息(Access Message)
- 控制消息(Control Message),是與藍(lán)牙m(xù)esh網(wǎng)絡(luò)操作有關(guān)的消息,例如Low Power Node和Friend Node之間的連接請(qǐng)求消息。
- 接入消息(Access Message),該類消息會(huì)攜帶節(jié)點(diǎn)中的模型和狀態(tài)值,用來(lái)實(shí)現(xiàn)節(jié)點(diǎn)之間對(duì)模型狀態(tài)的查詢和控制。應(yīng)用層通過(guò)接入消息中的操作碼(opcode) 和參數(shù),來(lái)識(shí)別并執(zhí)行設(shè)備的相關(guān)操作。
接入消息有兩種交互類型:有應(yīng)答(acknowledged)消息和無(wú)應(yīng)答(unacknowledged)消息。
- 有應(yīng)答消息:表示該消息需要“提問(wèn)-應(yīng)答”式的交互,消息發(fā)送方需要接收方的響應(yīng)。響應(yīng)消息攜帶相關(guān)的狀態(tài)信息,以向發(fā)送方表示某種操作執(zhí)行成功,并反饋操作執(zhí)行后的狀態(tài)值。如果沒(méi)有響應(yīng),發(fā)送方可以重復(fù)發(fā)送該消息。
- 無(wú)應(yīng)答消息:發(fā)送方向接收方發(fā)送消息,但不需要回復(fù)。
(2)消息的操作類型
消息中包含三種消息的操作類型:GET、SET、STATUS。三種操作類型對(duì)應(yīng)三種信息操作的方式:
- GET:發(fā)送節(jié)點(diǎn)使用GET消息,向一個(gè)或多個(gè)節(jié)點(diǎn)請(qǐng)求元素模塊中的狀態(tài)值。
- SET:發(fā)送節(jié)點(diǎn)使用SET消息,向一個(gè)或多個(gè)節(jié)點(diǎn)設(shè)置或改變某些狀態(tài)值。
- STATUS:該消息是應(yīng)答消息,是對(duì)GET消息或SET消息的響應(yīng)。STATUS消息中會(huì)攜帶當(dāng)前的狀態(tài)值,返回給GET/SET消息的發(fā)送節(jié)點(diǎn)。
3. 節(jié)點(diǎn)模式
根據(jù)節(jié)點(diǎn)在實(shí)際應(yīng)用中承擔(dān)的不同角色,將其分成三類模式:服務(wù)器模式(Server Model)、客戶端模式(Client Model)、控制模式(Control Model)。
(1)服務(wù)器模式(Server Model)
“服務(wù)器”,可以理解為“處理器”和“執(zhí)行器”,其對(duì)兩部分內(nèi)容進(jìn)行了定義:
- 數(shù)據(jù)的定義:定義了元素模型中的狀態(tài)屬性(格式、類型)和相關(guān)消息。狀態(tài)屬性包括狀態(tài)(state)、狀態(tài)轉(zhuǎn)換(state transitions), 狀態(tài)綁定(state bindings)等等。
- 行為的定義:定義了各類實(shí)體操作(Behaviors),以及這些操作和狀態(tài)參數(shù)的對(duì)應(yīng)關(guān)系。例如,當(dāng)藍(lán)牙電燈就收到一個(gè)“開(kāi)關(guān)狀態(tài)為‘On’”的消息時(shí),它就給燈泡通電發(fā)光。
(2)客戶端模式(Client Model)
“客戶端”可以理解為“操作端”或“觸發(fā)器”,它沒(méi)有狀態(tài)信息,但定義了消息的格式和收發(fā)方式,用于獲取“服務(wù)器”提供的應(yīng)用服務(wù):發(fā)送信息、查詢狀態(tài)、控制開(kāi)關(guān)、調(diào)節(jié)級(jí)別等等。“客戶端”就像是電視機(jī)的遙控機(jī),由人來(lái)操作并切換電視頻道。
(3)控制模式(Control Model)
控制模式兼具了服務(wù)器模式和客戶端模式,并且還定義了各模式之間數(shù)據(jù)交互的處理邏輯(規(guī)則和行為),即稱為“控制器邏輯(Controller logic)”。
4. Publish/Subscribe 發(fā)布和訂閱
在實(shí)際應(yīng)用中,節(jié)點(diǎn)發(fā)送應(yīng)用消息的行為稱為“發(fā)布”。消息的發(fā)布方向是組地址或者虛擬地址。在應(yīng)用設(shè)計(jì)中,組地址或者虛擬地址通常代表一個(gè)空間區(qū)域或同一類設(shè)備,易于用戶和應(yīng)用系統(tǒng)統(tǒng)一辨識(shí)和使用。
“訂閱”就是某個(gè)節(jié)點(diǎn)被配置成可以接受某個(gè)特定消息。換一種說(shuō)法,節(jié)點(diǎn)“訂閱”了某消息,就意味著它可以讀取該消息的內(nèi)容。
生成消息的節(jié)點(diǎn)(客戶端)“發(fā)布”消息,使用消息的節(jié)點(diǎn)(服務(wù)器)“訂閱”消息。
發(fā)布和訂閱關(guān)系舉例:
在由電燈和開(kāi)關(guān)組成的藍(lán)牙Mesh網(wǎng)絡(luò)應(yīng)用中:
- 開(kāi)關(guān)1可以發(fā)布消息到廚房組地址
- 電燈1號(hào)、2號(hào)、3號(hào)訂閱了廚房組地址的消息
- 開(kāi)關(guān)2可以發(fā)布消息到客廳組地址
- 電燈3號(hào)訂閱了客廳組地址的消息
當(dāng)開(kāi)關(guān)1發(fā)布消息(其模型中攜帶“開(kāi)燈”的狀態(tài))至藍(lán)牙Mesh網(wǎng)絡(luò)時(shí),因?yàn)榇嬖谟嗛嗞P(guān)系,所以電燈1號(hào)、2號(hào)、3號(hào)接收到開(kāi)關(guān)1的消息,會(huì)執(zhí)行其中表達(dá)的指令---將燈(1號(hào)、2號(hào)、3號(hào))點(diǎn)亮。
當(dāng)開(kāi)關(guān)2發(fā)布消息(其模型中攜帶“關(guān)燈”的狀態(tài))至藍(lán)牙Mesh網(wǎng)絡(luò)時(shí),因?yàn)榇嬖谟嗛嗞P(guān)系,所以電燈3號(hào)接收到開(kāi)關(guān)2的消息,會(huì)執(zhí)行其中表達(dá)的指令---將燈熄滅。其他電燈(1、2)雖然也會(huì)收到2的消息,但因?yàn)樗鼈冇嗛喌南⒌刂凡⒉话蛷d組地址,所以2的消息會(huì)被丟棄。
消息的發(fā)布/訂閱模式的使用,結(jié)合組地址和虛擬地址的配置,可以方便地在藍(lán)牙網(wǎng)絡(luò)中移除或添加節(jié)點(diǎn),其它在網(wǎng)節(jié)點(diǎn)無(wú)需做任何配置。
5. 節(jié)點(diǎn)間的連接類型
各類節(jié)點(diǎn)之間形成各種類型的聯(lián)接,主要有4種:
(1)非中繼連接:普通節(jié)點(diǎn)之間的連接,兩節(jié)點(diǎn)之間可以收發(fā)數(shù)據(jù),但是節(jié)點(diǎn)在收到信息后不會(huì)轉(zhuǎn)發(fā)。
(2)親友連接(也翻譯為“友誼”連接):低功耗節(jié)點(diǎn)和親友節(jié)點(diǎn)間的連接,在建立親友關(guān)系后,低功耗節(jié)點(diǎn)會(huì)定期向親友節(jié)點(diǎn)發(fā)送消息,詢問(wèn)是否有自己的消息。親友節(jié)點(diǎn)如果有暫存的低功耗節(jié)點(diǎn)的消息,它會(huì)將該消息送還給低功耗節(jié)點(diǎn)。
(3)中繼連接:包括普通節(jié)點(diǎn)與中繼、代理、親友節(jié)點(diǎn)的連接,中繼、代理、親友節(jié)點(diǎn)的相互連接。在該類鏈接上,會(huì)傳遞普通的藍(lán)牙Mesh廣播消息。
(4)GATT連接:沒(méi)有藍(lán)牙Mesh組網(wǎng)能力的藍(lán)牙設(shè)備(具備GATT接口),需要通過(guò)代理節(jié)點(diǎn)幫其轉(zhuǎn)換連接模式轉(zhuǎn)發(fā)信息,這些節(jié)點(diǎn)和代理節(jié)點(diǎn)之間的連接就是GATT連接。
6. 消息轉(zhuǎn)發(fā)處理的機(jī)制
在藍(lán)牙Mesh中,當(dāng)一個(gè)節(jié)點(diǎn)收到一個(gè)消息時(shí),它會(huì)根據(jù)自身的節(jié)點(diǎn)角色(模式),與相鄰節(jié)點(diǎn)間的連接狀態(tài)、以及收到消息中的網(wǎng)絡(luò)參數(shù),來(lái)決定是否丟棄、緩存、處理,還是轉(zhuǎn)發(fā)該消息。
在消息中,影響轉(zhuǎn)發(fā)的參數(shù)主要有:NID(網(wǎng)絡(luò)ID,從網(wǎng)絡(luò)密鑰-NetKey 派生而來(lái)的唯一公共標(biāo)識(shí)符)、TTL(Time To Live,消息轉(zhuǎn)發(fā)最大允許“跳躍-Hop”次數(shù))、SRC(Source Address,源地址)和DST(Destination Address,目的地址)。
接受消息后,轉(zhuǎn)發(fā)節(jié)點(diǎn)(中繼、代理、親友節(jié)點(diǎn))在轉(zhuǎn)發(fā)消息前有兩部分的處理工作:消息健康檢測(cè)、消息轉(zhuǎn)發(fā)判定。
(1)健康檢測(cè):
在收到消息后,節(jié)點(diǎn)先判斷該消息的發(fā)送源是否是一個(gè)已注冊(cè)節(jié)點(diǎn)(以NID作為判定條件),再對(duì)消息的數(shù)據(jù)包做完整性效驗(yàn)(MIC),并對(duì)數(shù)據(jù)包中的源地址、目的地址進(jìn)行有效性判斷,最后確認(rèn)是存在重復(fù)收包的情況,即檢查轉(zhuǎn)發(fā)緩存(轉(zhuǎn)發(fā)隊(duì)列)中是否已經(jīng)有該數(shù)據(jù)包。如果以上步驟中有一項(xiàng)未通過(guò),則該消息會(huì)被節(jié)點(diǎn)丟棄,如果通過(guò)了,則進(jìn)入下一個(gè)轉(zhuǎn)發(fā)判定的環(huán)節(jié)。
(2)轉(zhuǎn)發(fā)判定:
如果消息中的目的地址是本節(jié)點(diǎn),則消息會(huì)被傳遞到應(yīng)用層,不再轉(zhuǎn)發(fā)。如果目的地址非本節(jié)點(diǎn),則根據(jù)自己的節(jié)點(diǎn)角色和數(shù)據(jù)包中的TTL值來(lái)確定是否轉(zhuǎn)發(fā)。非轉(zhuǎn)發(fā)類節(jié)點(diǎn)會(huì)將數(shù)據(jù)丟棄,轉(zhuǎn)發(fā)類節(jié)點(diǎn)則會(huì)檢查TTL值是否大等于2,如果滿足條件則轉(zhuǎn)發(fā),否則也將數(shù)據(jù)丟棄。
(3)以圖例進(jìn)行舉例:
- 親友節(jié)點(diǎn)L、M分別和低功耗節(jié)點(diǎn)X、Y建立了親友連接關(guān)系
- P為中繼節(jié)點(diǎn)
- Q為非中繼節(jié)點(diǎn)D的代理節(jié)點(diǎn),它本身也是中繼節(jié)點(diǎn)。
A. 低功耗節(jié)點(diǎn)X發(fā)消息至普通節(jié)點(diǎn)A
a) 低功耗節(jié)點(diǎn)X在入網(wǎng)時(shí),和親友節(jié)點(diǎn)L建立了“友誼連接”。他在發(fā)送消息中將TTL標(biāo)識(shí)設(shè)置為“3”,然后發(fā)給L,L則會(huì)對(duì)該消息進(jìn)行廣播,廣播前將TTL設(shè)置為“2”。
b) 非中繼節(jié)點(diǎn)B和中繼節(jié)點(diǎn)P離L很近,它們都能收到L的消息。在收到消息后,B發(fā)現(xiàn)消息中的目的地址不是它,而它又不是中繼節(jié)點(diǎn),故它會(huì)將該消息丟棄。
c) 中繼節(jié)點(diǎn)P收到L的消息后,先完成健康檢測(cè)(確認(rèn)數(shù)據(jù)包信息無(wú)異常),再進(jìn)行轉(zhuǎn)發(fā)判斷:發(fā)現(xiàn)目的地址不是它,并且TTL值等于2,于是它將TTL改成“1”后廣播了該消息。
d) 中繼節(jié)點(diǎn)Q在作轉(zhuǎn)發(fā)判斷時(shí),發(fā)現(xiàn)該消息的TTL等于1,且該消息的目的地址并不是它,于是就將該消息丟棄。非中繼節(jié)點(diǎn)B收到P發(fā)來(lái)的消息,它會(huì)采取和步驟2一樣的處理方式將數(shù)據(jù)丟棄。
e) 非中繼節(jié)點(diǎn)A收到P轉(zhuǎn)來(lái)的消息,發(fā)現(xiàn)該消息的目的地址是它自己,于是消息在經(jīng)過(guò)通過(guò)傳輸層、接入層的預(yù)處理后,被A送到其應(yīng)用層(模型層)。
B. 非轉(zhuǎn)發(fā)節(jié)點(diǎn)(不支持藍(lán)牙Mesh)D發(fā)消息至低功耗節(jié)點(diǎn)Y
f) 無(wú)Mesh協(xié)議棧的藍(lán)牙節(jié)點(diǎn)D在入網(wǎng)時(shí),和中繼節(jié)點(diǎn)S建立了“代理連接”,S作為D在Mesh網(wǎng)絡(luò)中的代理節(jié)點(diǎn)。他將消息中的TTL標(biāo)識(shí)設(shè)置為“3”,并發(fā)送給S。
g) S作為中繼節(jié)點(diǎn),將信息(TTL=2)廣播出去,節(jié)點(diǎn)M和P都收到了該信息。
h) 中繼節(jié)點(diǎn)P繼續(xù)廣播該消息(TTL=1),節(jié)點(diǎn)A、B、L收到后確認(rèn)消息的目的地址不是自己,且TTL=1,則就將消息丟棄。
i) 親友節(jié)點(diǎn)M收到該消息,發(fā)現(xiàn)消息的目的地址是低功耗節(jié)點(diǎn)Y,于是將該消息放進(jìn)緩存。當(dāng)Y向M發(fā)送“輪詢(Poll)”消息,查問(wèn)是否有它的消息時(shí),M會(huì)將緩存的消息傳給Y。
【本文是51CTO專欄作者王峰的原創(chuàng)文章,轉(zhuǎn)載請(qǐng)聯(lián)系作者本人獲取授權(quán)】