華文網

藍牙技術的起源與發展歷程

西元十世紀,有一名丹麥國王出身海盜家庭,統一了四分五裂的北歐(挪威、瑞典和丹麥),成為維京王國的國王。國王的原名叫Harald Gormsson,愛吃藍莓的他有個綽號:“Harald Blåtand”,由“斯堪的納維亞”(北歐地區)的語言翻譯成英語就是“Harold Bluetooth(藍牙)”。


在1994年,愛立信開始著手研究一種新型的短距離無線通訊技術,而為了迎接這個即將上市的新技術,愛立信用丹麥國王的外號(Harold Bluetooth)給它命名。藍牙技術最初的構想,是用無線通訊技術替代RS-232標準電纜(串口),讓局部空間內的各類設備能夠互聯互通、協調工作。“藍牙”國王的事蹟正預示著這個短距通信技術的未來。

1998年,多家通信業巨頭(IBM、Intel、東芝、諾基亞)加入到藍牙技術的研發中,

並成立了“藍牙技術聯盟(SIG,Bluetooth Special Interest Group)”。藍牙技術旨在實現消費領域、工業領域中不同設備的組網通信,以建立個人局域網 (PAN)為目標,並於1999年推出了第一個正式發佈的技術版本。

(注釋:個人局域網(PAN-Personal Area Network):在一個人操作可及的空間範圍內,把與此人相關的電子設備(例如可擕式電腦等)用無線技術連接起來的網路。)

在2004年,技術聯盟推出了藍牙2.0+EDR(Enhanced data rate),使得藍牙傳輸速率達到了2.1Mbps(262.5KB/s)。

在2009年發佈了藍牙3.0+HS(Hight Speed),

借用Wi-Fi技術和AMP(Alternative MAC/PHY,交替射頻)技術,將資料傳輸速率提高到了24Mbps(3MB/s)的理論值。

在2010年發佈的藍牙4.0包含三種協議,分別是傳統藍牙(Classic Bluetooth)、低功耗藍牙(Bluetooth Low Energy)和高速藍牙技術(Bluetooth High Speed)。其中低功率藍牙(BLE),晶片模組所需的最低功耗只有0.01-0.5W左右,極大地降低了藍牙設備的通信電力負擔。

2014年,V4.2版的藍牙支援6LoWPAN(IPv6 over LR-WPAN,基於IPv6的低速無線個域網標準),使得藍牙設備更易於接入互聯網。

2016年,藍牙5.0針對低功耗設備,進一步提升了通信速率,

並且能夠結合wifi對室內的設備位置進行輔助定位。

2017年7月19日,藍牙技術全面支援Mesh網狀網路。

縱觀藍牙技術的發展旅程,SIG不斷地追求著無線連接的性能:傳輸速率(EDR-Enhanced Data Rate、AMP)、低功耗(Sniff Subrating、BLE)、網路接入(6LoWPAN、Mesh)和安全配對(SSP),以滿足各種應用對近距離通信的需求。

原本,SIG主要是聚焦于“以人為中心的邊緣網路”進行技術創新,而如今,藍牙適用的範圍已經逐漸拓展到所有物聯網邊緣場景:“藍牙增強速率技術(BR / EDR)”的應用從無線耳機發展到滑鼠鍵盤;“藍牙低功耗技術”應用於手錶、手環,

發掘了可穿戴市場;而“藍牙Mesh組網技術”則瞄準了整個(邊緣域)物聯網市場,包括消費領域和工業領域。

從最新的組網構架(Mesh組網)中,讓我們逐漸地看清了藍牙技術聯盟對物聯網通信的預想,以及對邊緣網路的理解。

從本質上來講,藍牙Mesh技術並非無線通訊技術,而是一種網路(組網)的技術,用於構建“多對多通信連接”的網路。

而低能耗藍牙技術(BLE)則為無線通訊技術。

所以,藍牙Mesh是建立在低功耗藍牙之上的通信網路。目前,藍牙Mesh網路基於洪泛式(flooding)協議,未來在修訂版本中可能會基於路由式通訊協定來實現網路連接。

藍牙Mesh技術完整定義了通信協定的各個層次(從無線射頻的實體層到應用層),並具有良好的相容性:保證異廠家設備之間的互通性。藍牙Mesh網路旨在滿足工業領域嚴格的可靠性,可擴展性和安全性要求。

藍牙Mesh整體上可以分成應用層和網路層,這兩層都具有鮮明的層次化設計,有利於開發者進行網路部署及應用的開發。

1.應用層模型

在應用層面,SIG對藍牙設備的功能進行了多層次的封裝:節點-元素-模型-狀態。

(1)device(設備)和node(節點)

節點的角色(網路角色)

設備是指有藍牙功能電子終端。而一個設備加入到mesh網路中後,就成為一個節點。設備加入Mesh網路,需要網內的配網節點(Provisioner)的授權。

藍牙Mesh網路的節點除了實現應用功能以外,還具有網路角色,以實現網路組網、消息傳遞、網路安全管理等的各種功能。

主要的網路角色有五種:低功耗節點-Low Power Node、親友節點-Friend Node、中繼節點-Relay node、代理節點-Proxy node、非衝擊節點-No relay node。

Low Power Node和Friend Node:低功耗節點和親友節點。

低功耗節點通常由小型電池供電,需要盡可能的減少通信開銷。該節點不會一直在廣播通道發送或者監聽資料包,但網路有時還是資料傳送一些資料給它(比如新的測量閥值)。

所以,低功耗節點會採用一種“代收快遞”的方式來實現資料的獲取。首先,低功耗節點和網路中的其它節點實現“串聯”,形成一種“代理”關係,官方文檔中稱為“友誼(Friendship)”關係。

而後,當網路中有低功耗節點的資料時,會先發給串聯節點進行資料緩存。最後,當低功耗節點發送查詢資訊(定期的“Poll”消息)的時候,串聯的節點會將緩存的資料遞交給低功耗節點。這其中的串聯節點,即稱為Friend node(親友節點)。

Relay node:中繼節點

在Mesh網路中,某些設備被指定為“中繼設備”,通過廣播承載層來接收和轉發藍牙Mesh的消息,它承擔著擴展網路覆蓋範圍的職責。中繼節點使得資料能夠通過無線信號的“接力”繞過樓道內的物理障礙物,送達到目的設備。中繼節點需要充沛的供電,並具備一定的計算能力。親友節點(Friend Node)是一種特殊的中繼節點。

Proxy node:代理節點

代理節點提供了GATT介面(“Generic Attributes”,一種低功耗藍牙設備之間的通信協定),以便於藍牙設備在不具備藍牙Mesh網路通訊協定棧的情況下,能夠通過代理節點接入藍牙Mesh網路。代理節點同時支援廣播承載層和GATT承載層的資料包收發。代理節點(Proxy node)是一種特殊的中繼節點。

No relay node:普通節點(非代理節點)

沒有中繼功能的節點,也稱為普通節點。普通節點可以即時地收發消息,但是無法轉發其它節點的消息。

節點網路角色的功能,通過元素模型配置(網路位址、消息等)來具體定義,並由網路層、傳輸層實施具體操作(網路協商)。在具體應用中,節點需要遵循自己的節點角色發送、接收、轉發消息。

在藍牙Mesh網路中,低功耗節點和普通節點通常位於網路邊緣,屬於信源設備(資訊產生、處理的節點);而親友節點、中繼節點和代理節點一般處於較核心的位置,都可以視為“中繼”節點(具有資訊轉發的網路功能)。

(2)Element(元素)

出於節能或便捷部署的需要,一個節點可以關聯多個子設備,這每個子設備都是一個“元素”。例如,一個節點可以包含一個藍牙通信模組和一個燈組(燈組由多個燈泡組成),所有的燈泡都是通過同一個藍牙模組接入Mesh網路,在燈組中的每一個燈泡都是一個元素。元素是Mesh網路中最小單位的“實體”,每個元素在網路中都有一個唯一的位址(單播位址,Unicast Address)。

(3)模型(model)和狀態(state)

模型代表了節點中的元素所具備的行為功能。一個元素必須至少有一個模型,既一種功能。每個模型都有唯一的識別字(32位元),能夠在Mesh網路中被識別出來。

模型具有一種或多種的“狀態”。狀態是一個或一組特定類型的值。狀態的改變,就代表模型執行了某項功能。

例如,燈具有開/關的功能。其中,燈代表“元素”實體,而開/關的功能就是“模型”。開關具有兩種特徵:“on”、“off”,這便是燈的“狀態”。

在應用層面,“節點”就是接入藍牙Mesh網路的“設備”,它包含了一個或一組“元素”(子設備),每個元素都具有一些“模型”(功能),且每一項功能都配置有一個或一組“狀態”參數,來表示此功能所對應的操作。

每當耶誕節來臨,聖誕樹需要燈飾裝點,燈飾一般都是一串彩燈(由許多不同顏色的燈泡組成)。可以將這一串燈視為一個“節點”。為了營造聖誕氣氛,可以對燈串中每一種顏色的燈作為“元素(Element)”進行單獨控制。

每種顏色的燈都具有發光的功能作為它的“模型”,模型包括兩種狀態屬性:“開/關”狀態、亮度狀態。這樣,藍牙Mesh網路便有了對裝飾燈進行動態控制的基礎。

當然,如果需要更多的動態效果,甚至可以將每一個燈泡配置成一個元素。不過,這樣做可能會“浪費”掉不少藍牙Mesh的位址資源(節點中的每個元素都會被分配一個唯一的單播位址)。如何定義和設計應用,完全由開發者根據產品要求自行決定,藍牙Mesh技術只是提供了節點配置的框架。

2.網路層結構

藍牙Mesh網路是搭建在藍牙低功耗技術(BLE)構架之上的,其網路的層次構架與OSI的7層參考模型有一點相似:BLE層-承載層-網路層-傳輸下層-傳輸上層-接入層-基礎模型層-模型層。

BLE層(Bluetooth Low Energy Layer):低功耗藍牙連接層,實現節點之間的無線通訊連接,是實現Mesh網路的基礎。

承載層(Bearer Layer):定義了如何使用底層BLE協定棧傳輸網路PDU(協定資料單元)。實際的承載方式分為兩種:廣播承載(advertising bearer)和GATT承載。預設情況下,使用廣播承載來封裝Mesh的網路資料包。

網路層(Network Layer):定義了各種消息的網址類別型、格式,完成資料的網路定址和轉發。節點的中繼、代理行為是通過網路層實現的。

傳輸下層(Lower Transport Layer):主要負責網路中傳送的PDU(協定資料單元,Protocol Data Unit)的分段和重組。如果傳輸層資料包過長,那麼該層會將資料包拆分後送給網路層發送;在收到網路層分片的資料包後,該層會進行資料包的重組。

傳輸上層(Upper Transport Layer):負責對上層應用資料進行加密、解密和認證。該層還定義了“傳輸控制消息”(transport control messages),用於關聯節點間互通消息,例如親友節點(Friend Node)和低功耗節點(Low Power Node)之間的“心跳狀態包(Heartbeats)”。

接入層(Access Layer):定義應用的資料格式,以及如何使用傳輸層的服務(網路服務)。接入層能夠定義、控制在傳輸層中的資料加密、解密過程。對於傳輸層送達的資料,接入層能夠對其中的網路、應用資訊進行驗證。

基礎模型層(foundation models Layer):實現應用層模型與Mesh網路通訊協定的適配,定義了其中的消息、狀態等屬性。

模型層(models Layer):處於藍牙Mesh應用層,實現應用層資料配置、設備操作、消息收發的基本功能單位。同時它也具有控制、管理網路的功能,收發與藍牙mesh網路操作有關的消息,例如網路心跳(heartbeat)消息。在藍牙Mesh網路中,模型是實現各類應用功能的基礎。

可擴展性和安全性要求。

藍牙Mesh整體上可以分成應用層和網路層,這兩層都具有鮮明的層次化設計,有利於開發者進行網路部署及應用的開發。

1.應用層模型

在應用層面,SIG對藍牙設備的功能進行了多層次的封裝:節點-元素-模型-狀態。

(1)device(設備)和node(節點)

節點的角色(網路角色)

設備是指有藍牙功能電子終端。而一個設備加入到mesh網路中後,就成為一個節點。設備加入Mesh網路,需要網內的配網節點(Provisioner)的授權。

藍牙Mesh網路的節點除了實現應用功能以外,還具有網路角色,以實現網路組網、消息傳遞、網路安全管理等的各種功能。

主要的網路角色有五種:低功耗節點-Low Power Node、親友節點-Friend Node、中繼節點-Relay node、代理節點-Proxy node、非衝擊節點-No relay node。

Low Power Node和Friend Node:低功耗節點和親友節點。

低功耗節點通常由小型電池供電,需要盡可能的減少通信開銷。該節點不會一直在廣播通道發送或者監聽資料包,但網路有時還是資料傳送一些資料給它(比如新的測量閥值)。

所以,低功耗節點會採用一種“代收快遞”的方式來實現資料的獲取。首先,低功耗節點和網路中的其它節點實現“串聯”,形成一種“代理”關係,官方文檔中稱為“友誼(Friendship)”關係。

而後,當網路中有低功耗節點的資料時,會先發給串聯節點進行資料緩存。最後,當低功耗節點發送查詢資訊(定期的“Poll”消息)的時候,串聯的節點會將緩存的資料遞交給低功耗節點。這其中的串聯節點,即稱為Friend node(親友節點)。

Relay node:中繼節點

在Mesh網路中,某些設備被指定為“中繼設備”,通過廣播承載層來接收和轉發藍牙Mesh的消息,它承擔著擴展網路覆蓋範圍的職責。中繼節點使得資料能夠通過無線信號的“接力”繞過樓道內的物理障礙物,送達到目的設備。中繼節點需要充沛的供電,並具備一定的計算能力。親友節點(Friend Node)是一種特殊的中繼節點。

Proxy node:代理節點

代理節點提供了GATT介面(“Generic Attributes”,一種低功耗藍牙設備之間的通信協定),以便於藍牙設備在不具備藍牙Mesh網路通訊協定棧的情況下,能夠通過代理節點接入藍牙Mesh網路。代理節點同時支援廣播承載層和GATT承載層的資料包收發。代理節點(Proxy node)是一種特殊的中繼節點。

No relay node:普通節點(非代理節點)

沒有中繼功能的節點,也稱為普通節點。普通節點可以即時地收發消息,但是無法轉發其它節點的消息。

節點網路角色的功能,通過元素模型配置(網路位址、消息等)來具體定義,並由網路層、傳輸層實施具體操作(網路協商)。在具體應用中,節點需要遵循自己的節點角色發送、接收、轉發消息。

在藍牙Mesh網路中,低功耗節點和普通節點通常位於網路邊緣,屬於信源設備(資訊產生、處理的節點);而親友節點、中繼節點和代理節點一般處於較核心的位置,都可以視為“中繼”節點(具有資訊轉發的網路功能)。

(2)Element(元素)

出於節能或便捷部署的需要,一個節點可以關聯多個子設備,這每個子設備都是一個“元素”。例如,一個節點可以包含一個藍牙通信模組和一個燈組(燈組由多個燈泡組成),所有的燈泡都是通過同一個藍牙模組接入Mesh網路,在燈組中的每一個燈泡都是一個元素。元素是Mesh網路中最小單位的“實體”,每個元素在網路中都有一個唯一的位址(單播位址,Unicast Address)。

(3)模型(model)和狀態(state)

模型代表了節點中的元素所具備的行為功能。一個元素必須至少有一個模型,既一種功能。每個模型都有唯一的識別字(32位元),能夠在Mesh網路中被識別出來。

模型具有一種或多種的“狀態”。狀態是一個或一組特定類型的值。狀態的改變,就代表模型執行了某項功能。

例如,燈具有開/關的功能。其中,燈代表“元素”實體,而開/關的功能就是“模型”。開關具有兩種特徵:“on”、“off”,這便是燈的“狀態”。

在應用層面,“節點”就是接入藍牙Mesh網路的“設備”,它包含了一個或一組“元素”(子設備),每個元素都具有一些“模型”(功能),且每一項功能都配置有一個或一組“狀態”參數,來表示此功能所對應的操作。

每當耶誕節來臨,聖誕樹需要燈飾裝點,燈飾一般都是一串彩燈(由許多不同顏色的燈泡組成)。可以將這一串燈視為一個“節點”。為了營造聖誕氣氛,可以對燈串中每一種顏色的燈作為“元素(Element)”進行單獨控制。

每種顏色的燈都具有發光的功能作為它的“模型”,模型包括兩種狀態屬性:“開/關”狀態、亮度狀態。這樣,藍牙Mesh網路便有了對裝飾燈進行動態控制的基礎。

當然,如果需要更多的動態效果,甚至可以將每一個燈泡配置成一個元素。不過,這樣做可能會“浪費”掉不少藍牙Mesh的位址資源(節點中的每個元素都會被分配一個唯一的單播位址)。如何定義和設計應用,完全由開發者根據產品要求自行決定,藍牙Mesh技術只是提供了節點配置的框架。

2.網路層結構

藍牙Mesh網路是搭建在藍牙低功耗技術(BLE)構架之上的,其網路的層次構架與OSI的7層參考模型有一點相似:BLE層-承載層-網路層-傳輸下層-傳輸上層-接入層-基礎模型層-模型層。

BLE層(Bluetooth Low Energy Layer):低功耗藍牙連接層,實現節點之間的無線通訊連接,是實現Mesh網路的基礎。

承載層(Bearer Layer):定義了如何使用底層BLE協定棧傳輸網路PDU(協定資料單元)。實際的承載方式分為兩種:廣播承載(advertising bearer)和GATT承載。預設情況下,使用廣播承載來封裝Mesh的網路資料包。

網路層(Network Layer):定義了各種消息的網址類別型、格式,完成資料的網路定址和轉發。節點的中繼、代理行為是通過網路層實現的。

傳輸下層(Lower Transport Layer):主要負責網路中傳送的PDU(協定資料單元,Protocol Data Unit)的分段和重組。如果傳輸層資料包過長,那麼該層會將資料包拆分後送給網路層發送;在收到網路層分片的資料包後,該層會進行資料包的重組。

傳輸上層(Upper Transport Layer):負責對上層應用資料進行加密、解密和認證。該層還定義了“傳輸控制消息”(transport control messages),用於關聯節點間互通消息,例如親友節點(Friend Node)和低功耗節點(Low Power Node)之間的“心跳狀態包(Heartbeats)”。

接入層(Access Layer):定義應用的資料格式,以及如何使用傳輸層的服務(網路服務)。接入層能夠定義、控制在傳輸層中的資料加密、解密過程。對於傳輸層送達的資料,接入層能夠對其中的網路、應用資訊進行驗證。

基礎模型層(foundation models Layer):實現應用層模型與Mesh網路通訊協定的適配,定義了其中的消息、狀態等屬性。

模型層(models Layer):處於藍牙Mesh應用層,實現應用層資料配置、設備操作、消息收發的基本功能單位。同時它也具有控制、管理網路的功能,收發與藍牙mesh網路操作有關的消息,例如網路心跳(heartbeat)消息。在藍牙Mesh網路中,模型是實現各類應用功能的基礎。