BleMesh總結(jié)

概念

BleMesh依賴于低功耗藍牙 - 低功耗藍牙技術(shù)是藍牙m(xù)esh使用的無線通信協(xié)議棧粪小。
藍牙具有一對一椒楣、多對一及多對多三種通信方式爆惧。
BleMesh采用的是多對多的通信方式臊旭,Mesh網(wǎng)絡(luò)中的所有設(shè)備都可以互相進行通信落恼。
未加入mesh網(wǎng)絡(luò)的設(shè)備稱為"unprovisioned devices(未配網(wǎng)設(shè)備)";
已加入mesh網(wǎng)絡(luò)的設(shè)備稱為"node(節(jié)點)"离熏;
未配網(wǎng)設(shè)備轉(zhuǎn)換為節(jié)點的過程稱為"provisioning(配置)"佳谦;
一個節(jié)點具有多個組成部分,每個可以獨立進行控制滋戳,每個組成部分稱為"element(元素)"钻蔑;
一個元素有多種情況,這種情況稱為"state(狀態(tài))"奸鸯,例如Generic OnOff狀態(tài)咪笑;
Properties(屬性)代表具體含義的數(shù)據(jù)
Message(消息)用來操作狀態(tài)值,分為三種:GET娄涩、SET窗怒、STATUS映跟,SET消息又分為有響應(yīng)式/無響應(yīng)式。

element.png
節(jié)點扬虚、元素努隙、狀態(tài).jpg

加入Mesh網(wǎng)絡(luò)

設(shè)備加入mesh網(wǎng)絡(luò)的過程稱為provisioning,用于驅(qū)動provisioning過程的設(shè)備稱為provisioner辜昵,provisioning成功后成為node荸镊,還需要經(jīng)過一系列的配置。
配網(wǎng)過程應(yīng)該遵循配網(wǎng)協(xié)議


provisioning架構(gòu).png

配網(wǎng)有5個階段:

  • Beaconing 信標(biāo)
    發(fā)起廣播通知配網(wǎng)

  • Invitation 邀請
    provisioner發(fā)送配網(wǎng)邀請PDU,待配網(wǎng)設(shè)備作出響應(yīng)堪置,在Provisioning
    Capabilities PDU中回復(fù)關(guān)于自身的信息躬存。

  • Exchange public keys 交換公鑰
    provisioner與設(shè)備間互換公共密,公鑰會用于分發(fā)配網(wǎng)數(shù)據(jù)時Session Key的產(chǎn)生舀锨。

  • Authentication 認證
    provisioner與設(shè)備間通過特定動作進行身份認證岭洲。

  • Distribution of provisioning data 分發(fā)配網(wǎng)數(shù)據(jù)
    從公鑰和兩個設(shè)備的私鑰派生出Session Key,配網(wǎng)的信息交互的過程會用這個Session key來加密雁竞,將配網(wǎng)數(shù)據(jù)PDU包含“NetKey钦椭、DeviceKey...”發(fā)送給設(shè)備。

配網(wǎng)流程.png

藍牙Mesh協(xié)議架構(gòu)

Mesh架構(gòu).png

藍牙Mesh加密

NetKey:網(wǎng)絡(luò)消息加密加密碑诉,成為網(wǎng)絡(luò)的一員。
AppKey(ApplicationKey):處理應(yīng)用層數(shù)據(jù)侥锦,有AppKey才能實現(xiàn)上層傳輸層以上的所有功能进栽。
DevKey(DeviceKey):每個節(jié)點的devKey唯一,用于配網(wǎng)階段和配網(wǎng)器進行安全傳輸用恭垦,只有配網(wǎng)器與入網(wǎng)的節(jié)點知道DevKey快毛。

Mesh攻擊

垃圾桶攻擊(Trashcan Attacks):

重放攻擊(Replay Attacks):
通過SEQ Number與Iv Index來保證消息是最新的
每條指令都會攜帶Seq,當(dāng)下一個seq小于上一條時則該指令不會執(zhí)行番挺,provisioner端記錄seq變化唠帝,同時node也存在記錄,當(dāng)node重置或者Iv Index更新時玄柏,seq都會重置襟衰。

節(jié)點角色

代理:實現(xiàn)Gatt和藍牙Mesh節(jié)點之間的mesh消息發(fā)送與接收。
中繼:轉(zhuǎn)發(fā)從其他設(shè)備接收到的消息粪摘,數(shù)據(jù)包包含TTL字段瀑晒,用于限制中繼的跳數(shù)。
低功耗/友好:兩個節(jié)點互幫互助徘意,由友好節(jié)點存儲消息苔悦,在低功耗節(jié)點需要消息時,友好節(jié)點才會傳送消息椎咧,他們關(guān)系稱為"friendShip"玖详,一般低功耗節(jié)點受限于功耗,而友好節(jié)點相反,功率不受限的節(jié)點很適配作為友好節(jié)點蟋座。

地址分配

UnicastAddress:

一個network最多支持32767(0x7FFF)個地址

GroupAddress:

動態(tài)分配的地址(Dynamically Assigned) -> 0xC000-0xFEFF
固定地址(Fixed Address) – 由藍牙技術(shù)聯(lián)盟分配劳澄,分為五段:
保留供將來使用 (RFU) –> 0xFF00-0xFFFB

  • 發(fā)送到啟用代理(proxy)功能的所有節(jié)點
    All-proxies -> 0xFFFC
  • 發(fā)送到啟用friend功能的所有節(jié)點
    All-friends -> 0xFFFD
  • 發(fā)送到啟用中繼(relay)功能的所有節(jié)點
    All-relays -> 0xFFFE
  • 發(fā)送到所有節(jié)點
    All-nodes -> 0xFFFF
    發(fā)送到固定節(jié)點的所有消息都由節(jié)點的主元素(primary eleme6 nt)進行處理

Model

節(jié)點的基本功能都由模型來定義和實施,模型位于元素內(nèi)蜈七,模型能定義并實施節(jié)點的功能和行為秒拔,而狀態(tài)能定義元素的狀態(tài)/條件。
藍牙Mesh網(wǎng)絡(luò)通過客戶端-服務(wù)器架構(gòu)進行通信
服務(wù)器模型(Server Model):暴露元素的狀態(tài)飒硅,定義模型能夠發(fā)送/接收消息砂缩,并根據(jù)這些消息定義元素的行為。
客戶端模型(Client Model):對狀態(tài)進行訪問三娩,請求庵芭、更改或使用服務(wù)器的狀態(tài)
控制模型(Control Model):具有多種功能,可能同時含有一個或多個客戶端模型雀监、服務(wù)器模型

Configuration Server Model (Root Model)

表示mesh網(wǎng)設(shè)備的配置双吆,該model只有主元素支持,該model定義了多種狀態(tài)


Configuration Server Model.png

Configuration Client Model (Root Model)

該模型表示該元素可以控制節(jié)點的配置
主要的作用是設(shè)備上述Configuration Server Model所擁有的狀態(tài)会前。
Config Model App Bind 該消息作用將appKey bind to Model好乐,將appKey綁定至model如何理解?
當(dāng)一個元素收到一個模型與AppKey綁定的消息并成功執(zhí)行后,它應(yīng)該將AppKey索引對應(yīng)的AppKey綁定到特定的模型上瓦宜,并給模型返回AppKey狀態(tài)消息蔚万。
每個server Model都有一組綁定到它的appKey,這些key值就負責(zé)加密、認證有這些model處理的消息临庇。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末反璃,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子假夺,更是在濱河造成了極大的恐慌淮蜈,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件已卷,死亡現(xiàn)場離奇詭異梧田,居然都是意外死亡,警方通過查閱死者的電腦和手機悼尾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門柿扣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人闺魏,你說我怎么就攤上這事未状。” “怎么了析桥?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵司草,是天一觀的道長艰垂。 經(jīng)常有香客問我,道長埋虹,這世上最難降的妖魔是什么猜憎? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮搔课,結(jié)果婚禮上胰柑,老公的妹妹穿的比我還像新娘。我一直安慰自己爬泥,他們只是感情好柬讨,可當(dāng)我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著袍啡,像睡著了一般踩官。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上境输,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天蔗牡,我揣著相機與錄音,去河邊找鬼嗅剖。 笑死辩越,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的窗悯。 我是一名探鬼主播区匣,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蒋院!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起莲绰,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤欺旧,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蛤签,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辞友,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年震肮,在試婚紗的時候發(fā)現(xiàn)自己被綠了称龙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡戳晌,死狀恐怖鲫尊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情沦偎,我是刑警寧澤疫向,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布咳蔚,位于F島的核電站,受9級特大地震影響搔驼,放射性物質(zhì)發(fā)生泄漏谈火。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一舌涨、第九天 我趴在偏房一處隱蔽的房頂上張望糯耍。 院中可真熱鬧,春花似錦囊嘉、人聲如沸温技。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽荒揣。三九已至,卻和暖如春焊刹,著一層夾襖步出監(jiān)牢的瞬間系任,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工虐块, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留俩滥,地道東北人。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓贺奠,卻偏偏與公主長得像霜旧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子儡率,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,914評論 2 355