天天看點

藍牙協定分析(2)_協定架構

1. 前言

本文是藍牙協定分析的第二篇文章,在“藍牙協定分析(1)_基本概念”的基礎上,從整體架構的角度,了解藍牙協定的組成,以便加深對藍牙的了解。

2. 協定層次

藍牙協定是通信協定的一種,為了把複雜問題簡單化,任何通信協定都具有層次性,特點如下:

從下到上分層,通過層層封裝,每一層隻需要關心特定的、獨立的功能,易于實作和維護;

在通信實體内部,下層向上層提供服務,上層是下層的使用者;

在通信實體之間,協定僅針對每一層,實體之間的通信,就像每一層之間的通信一樣,這樣有利于交流、了解、标準化。

藍牙協定也不例外,其協定層次如下:

藍牙協定分析(2)_協定架構

從OSI(Open System Interconnection)模型的角度看,藍牙是一個比較簡單的協定,它僅僅提供了實體層(Physical Layer)和資料鍊路層(Data Link Layer )兩個OSI層次。但由于藍牙協定的特殊性、曆史演化因素等原因,其協定層次又顯的不簡單,甚至晦澀難懂(如上面圖檔所示的Physical Link、Logical Transport等)。

藍牙協定分為四個層次:實體層(Physical Layer)、邏輯層(Logical Layer)、L2CAP Layer和應用層(APP Layer)。

實體層,負責提供資料傳輸的實體通道(通常稱為信道)。通常情況下,一個通信系統中存在幾種不同類型的信道,如控制信道、資料信道、語音信道等等。

邏輯層,在實體層的基礎上,提供兩個或多個裝置之間、和實體無關的邏輯傳輸通道(也稱作邏輯鍊路)。

L2CAP層,L2CAP是邏輯鍊路控制和适配協定(Logical Link Control and Adaptation Protocol)的縮寫,負責管理邏輯層提供的邏輯鍊路。基于該協定,不同Application可共享同一個邏輯鍊路。類似TCP/IP中端口(port)的概念。

APP層,了解藍牙協定中的應用層,基于L2CAP提供的channel,實作各種各樣的應用功能。Profile是藍牙協定的特有概念,為了實作不同平台下的不同裝置的互聯互通,藍牙協定不止規定了核心規範(稱作Bluetooth core),也為各種不同的應用場景,定義了各種Application規範,這些應用層規範稱作藍牙profile。

2.1 實體層

實體層負責提供資料傳輸的實體信道,藍牙的實體層分為Physical Channel和Physical Links兩個子層。我們先介紹Physical Channel。

2.1.1 Physical Channel(實體信道)

一個通信系統中通常存在多種類型的實體信道,藍牙也不例外。另外,由“藍牙協定分析(1)_基本概念”的介紹可知,藍牙存在BR/EDR、LE和AMP三種技術,這三種技術在實體層的實作就有很大的差異,下面讓我們一一介紹。

首先是相同點,BR/EDR、LE和AMP的RF都使用2.4GHz ISM(Industrial Scientific Medical) 頻段,頻率範圍是2.400-2.4835 GHz。

注1:不同國家和地區藍牙的頻率和信道配置設定情況是不同,本文所有的描述都以中國采用的“歐洲和美國”标準為準。

除了相同點,剩下的都是不同點了。

BR/EDR是傳統的藍牙技術,它這樣定義實體信道:

1)ISM頻率範圍内被分成79個channel,每一個channel占用1M的帶寬,在0 channel和78 channel之外設立guard band(保護帶寬,Lower Guard Band為2MHz,Upper Guard Band為3.5MHz)。

2)采用跳頻技術(hopping),也就是說,某一個實體信道,并不是固定的占用79個channel中的某一個,而是以一定的規律在跳動(該規律在技術上叫做"僞随機碼",就是"假"的随機碼)。是以藍牙的實體信道,也可以稱作跳頻信道(hopping channel)。

3)BR/EDR技術定義了5種實體信道(跳頻信道),BR/EDR Basic Piconet Physical Channel、BR/EDR Adapted Piconet Physical Channel、BR/EDR Page Scan Physical Channel、BR/EDR Inquiry Scan Physical Channel和BR/EDR Synchronization Scan Channel。

4)BR/EDR Inquiry Scan Physical Channel用于藍牙裝置的發現操作(discovery),即我們常用的搜尋其它藍牙裝置(discover)以及被其它藍牙裝置搜尋(discoverable)。

5)BR/EDR Page Scan Physical Channel用于藍牙裝置的連接配接操作(connect),即我們常用的連接配接其它藍牙裝置(connect)以及被其它藍牙裝置連接配接(connectable)。

6)BR/EDR Basic Piconet Physical Channel和BR/EDR Adapted Piconet Physical Channel主要用在處于連接配接狀态的藍牙裝置之間的通信。它們的差別是,BR/EDR Adapted Piconet Physical Channel使用較少的RF跳頻點。BR/EDR Basic Piconet Physical Channel使用全部79個跳頻點,而BR/EDR Adapted Piconet Physical Channel是根據目前的信道情況使用79個跳頻點中的子集,但是跳頻數目也不能少于20個。這個主要是因為藍牙使用ISM頻段,當藍牙和WIFI共存的時候,部分跳頻點被WIFI裝置占用而使得藍牙裝置在這些跳頻點上的通信總是失敗,是以,需要避過那些WIFI裝置占用的頻點。

7)BR/EDR Synchronization Scan Channel可用于無連接配接的廣播通信,後續文章會詳細介紹。

8)同一時刻,BT 裝置隻能在其中一個實體信道上通信,為了支援多個并行的操作,藍牙系統采用時分方式,即不同的時間點采用不同的信道。

LE是為藍牙低功耗而生的技術,為了實作低功耗的目标,其實體信道的定義與BR/EDR有些差異:

1)ISM頻率範圍内被分成40個channel,每一個channel占用2M的帶寬,在0 channel和39 channel之外設立guard band(保護帶寬,Lower Guard Band為2MHz,Upper Guard Band為3.5MHz)。

2)LE技術定義了2種實體信道,LE Piconet channel和LE Advertisement Broadcast Channel。

3)LE Piconet Channel用在處于連接配接狀态的藍牙裝置之間的通信,和BR/EDR一樣,采用調頻技術。和BR/EDR不一樣的地方是,隻會在40個頻率channel中的37個上面跳頻。

4)LE Advertisement Broadcast Channel用于在裝置間進行無連接配接的廣播通信,這些廣播通信可用于藍牙的裝置的發現、連接配接(和BR/EDR類似)操作,也可用于無連接配接的資料傳輸。

5)和BR/EDR一樣,同一時刻,BT 裝置隻能在其中一個實體信道上通信,為了支援多個并行的操作,藍牙系統采用時分方式,即不同的時間點采用不同的信道。

AMP是為高速資料傳輸設計的技術,其實體層規範直接采用802.11(WIFI)的PHY規範,主要有如下特點:

AMP實體信道隻有一種,即AMP Physical Channel,主要用于已連接配接裝置之間的資料通信,和BR/EDR技術中的BR/EDR Adapted Piconet Physical Channel位于一個級别,可以互相切換使用。

2.1.2 Physical Links(實體鍊路)

由2.1.1的描述可知,藍牙協定為BR/EDR、LE和AMP三種技術定義了8種類型的實體信道,包括:

AMP physical channel

BR/EDR Basic Piconet Physical Channel

BR/EDR Adapted Piconet Physical Channel

BR/EDR Page Scan Physical Channel

BR/EDR Inquiry Scan Physical Channel

BR/EDR Synchronization Scan Channel

LE Piconet Channel

LE Advertisement Broadcast Channel

而實體鍊路,則是對這些實體信道(主要是BR/EDR技術中的Basic Piconet Physical Channel和Adapted Piconet Physical Channel)的進一步封裝,其主要特征是(可參考2.5中的圖檔以輔助了解):

1)Physical Link是一個虛拟概念,不對應協定中任何的實體,資料包封包/解包的過程中不被展現。

2)AMP Physical Channel、LE Piconet Channel、LE Advertisement Broadcast Channel均有一個一一對應的Physical Link,分别是AMP Physical Link、LE Active Physical Link、LE Advertising Physical Channel。

3)BR/EDR Page Scan Physical Channel、BR/EDR Inquiry Scan Physical Channel、BR/EDR Synchronization Scan Channel隻在特定時間段使用,且無法控制任何屬性,是以不需要再Physical Link中展現。

4)BR/EDR Basic Piconet Physical Channel和BR/EDR Adapted Piconet Physical Channel是BR/EDR技術中已連接配接裝置之間進行資料通信的通道,且同一時刻隻能根據應用場景選擇一種channel進行資料傳輸。是以這兩個channel被map到BR/EDR Active Physical Link、BR/EDR Parked Physical Link和BR/EDR Connectionless Slave Broadcast Physical Link三個實體鍊路上。

5)BR/EDR Active Physical Link和BR/EDR Parked Physical Link的抽象主要有兩個方面的意義:

5-1)屏蔽底層的Basic/Adapted Piconet Physical Channel之間的差異,統一使用Physical Link取代。在需要的時候,可以通過上層的鍊路管理協定,指定使用哪一種physical channel(Basic or Adapted)。

5-2)可以通過Physical Link的抽象,控制Physical Channel的一些屬性(如發射功率、收發周期等),以達到節省功耗的目的。而上面的層次(如邏輯層)不需要對這些動作知情。

6)BR/EDR Active Physical Link定義了連接配接狀态的藍牙裝置在鍊路處于active狀态時的實體鍊路,該實體鍊路對應的裝置的發射功率是可修改的。

7)BR/EDR Parked Physical Link定義了連接配接狀态的藍牙裝置在鍊路處于parked狀态時的實體鍊路。parked狀态是一種特殊的連接配接狀态,連接配接雙方沒有正在進行的資料傳輸,所有的鍊路消耗,都是為保持連接配接所做的事情。此時可以通過降低在實體信道上的收發頻率而降低功耗。該實體鍊路和BR/EDR Active Physical Link使用相同的實體信道。

8)BR/EDR Connectionless Slave Broadcast Physical Link使用BR/EDR Adapted Piconet Physical Channel,用于一點到多點的廣播通信。

2.2 邏輯層

邏輯層的主要功能,是在已連接配接(LE Advertisement Broadcast可以看做一類特殊的連接配接)的藍牙裝置之間,基于實體鍊路,建立邏輯信道。所謂的邏輯信道,和城市道路上的車道類似:

一條城市道路可以看做一個實體鍊路(可能有兩個方向,我們隻考慮其中一個即可),該實體鍊路根據行車用途,可以劃分為多個邏輯信道,如直行車道、右轉車道、左轉車道、掉頭車道、快速車道、慢速車道等等。

這裡的車道(邏輯信道),從實體角度看,并沒有什麼分别,隻是為了友善交通(資料傳輸),人為的抽象出來的。和車道類似,藍牙邏輯信道的劃分依據是傳輸類型,主要包括下面3類(即Logical Link):

1)用于管理底層實體鍊路的控制類傳輸,包括AMP-C、ACL-C、PSB-C、LE-C、ADVB-C。

2)傳輸使用者資料的使用者類傳輸,包括AMP-U、ACL-U、PSB-U、LE-U、ADVB-U。

3)其它比較特殊的傳輸類型,包括流式傳輸(stream)、PBD(Profile Broadcast Data)。

以上每種Logic Link都會在下層對應一個Logical Transport,這些Logical Transport具有一些屬性值,如流控、應答/重傳機制等。如下:

AMP ACL(Asynchronous Connection-Oriented Link),基于AMP技術的、面前連接配接的、異步傳輸鍊路,為AMP-U提供服務。

BR/EDR ACL,基于BR/EDR技術的ACL鍊路,為ACL-C、ACL-U提供服務。

SCO/eSCO(Synchronous Connection-Oriented/Extended SCO),基于BR/EDR技術的、面向連接配接的、同步傳輸鍊路,為stream類型的Logical Link提供服務。

ASB(Active Slave Broadcast)、PSB(Parked Slave Broadcast),基于BR/EDR技術的、面向連接配接的廣播傳輸鍊路,為ACL-U、PSB-U、PSB-C提供服務。

CSB(Connectionless Slave Broadcast),基于BR/EDR技術的、無連接配接的廣播鍊路,為PBD提供服務。

LE ACL,基于LE技術的、面前連接配接的、異步傳輸鍊路,為LE-U、LE-C提供服務。

ADVB(Advertising Broadcast),基于LE技術的、廣告/廣播鍊路,為ADVB-U、ADVB-C提供服務。

注2:AMP-C沒有對應的Logical Transport,而是直接控制AMP Physical Link完成所需功能。

注3:藍牙邏輯層的抽象也是讓人醉了!還是那句話,不要逼自己去了解一個瘋子的行為,不然自己也會瘋的。

2.3 L2CAP Channels

L2CAP是Logical Link Control and Adaptation Protocol(邏輯鍊路控制和适配協定)的縮寫,藍牙協定到這個層次的時候,就清爽多了:

對下,它在使用者類XXX-U Logical Link的基礎上,抽象出和具體技術無關的資料傳輸通道(包括單點傳播和廣播兩類),至此使用者就不再需要關心繁雜的藍牙技術細節。

對上,它以L2CAP channel endpoints的概念(類似TCP/IP中的端口),為具體的應用程式(profile)提供獨立的資料傳輸通道(當然,也是一個邏輯通道)。

2.4 Profiles

profile是藍牙Application的代指,也可以翻譯為服務,為了實作不同平台下的不同裝置的互聯互通,藍牙協定為各種可能的、有通用意義的應用場景,都制定的了規範,如SPP、HSP、HFP、FTP、IPv6/6LoWPAN等等。

Profiles基于L2CAP提供的L2CAP channel endpoints實作,在它們對應的層次上進行資料通信,以完成所需功能。有關藍牙profile的介紹,會在後續文章中陸續給出,這裡就不再詳細說明了。

2.5 總結

下面圖檔包含上面各個層次(除了APP layer)中涉及到的一些實體、概念以及互相關系,供大家參考。

藍牙協定分析(2)_協定架構

摘錄自:Core_v4.2.pdf---->Vol1: Architecture & Terminology Overview---->Part A: Architecture---->3 DATA TRANSPORT ARCHITECTURE---->3.2 TRANSPORT ARCHITECTURE ENTITIES

3. 藍牙核心架構

藍牙規範有兩類:一類是藍牙核心規範,由Bluetooth Core Specification定義,囊括到L2CAP層,以及相關的核心profile;另一類是藍牙Application規範,包含了各種各樣的profile規範(具體可參考“https://www.bluetooth.com/specifications/adopted-specifications”中的清單)。

藍牙核心規範所定義的架構如下:

藍牙協定分析(2)_協定架構

經過第2章協定層次的介紹,藍牙核心架構已經比較容易了解了,這裡對層次中各個子產品做一個簡單的說明,更為詳細的分析,請參考後續的文章。

1)BR/EDR Radio & LE Radio & AMP PHY

藍牙RF層(實體層),包括BR/EDR、LE以及AMP三種。負責在實體channel上收發藍牙packet。

對BR/EDR和LE RF來說,還會接收來自Baseband的控制指令來控制RF頻率的選擇和timing。

AMP PHY使用802.11(WIFI)的規範,本文不再詳細介紹,後續有關AMP的内容,也不過多涉及。

2)Link Controller & Baseband resource management

Link Controller和Baseband resource management組成了藍牙的基帶(baseband)。

Link Controller負責鍊路控制,主要是根據目前實體channel的參數、邏輯channel的參數、邏輯transport的參數将資料payload組裝成bluetooth packet。另外,通過Link Control Protocol(對LE來說是LL Layer Protocol),可以實作流控、ack、重傳等機制。

Baseband resource management,主要用于管理RF資源。

3)Link Manager

Link Manager主要負責建立、修改、釋放藍牙邏輯連接配接(Logical Link),同時也負責維護藍牙裝置之間實體連接配接(Physical Link)的參數。它的功能主要是通過Link Management Protocol(LMP,for BR/EDR)和Link Layer Protocol(LL,for LE)完成。

4)Device Manager

Device Manager主要負責控制藍牙裝置的通用行為(藍牙資料傳輸除外的行為),主要是:

搜尋附近的藍牙裝置

連接配接到其他的藍牙裝置

使得本地的藍牙裝置connectable和discoverable

控制本地藍牙裝置的屬性(例如本地藍牙裝置的名字、link key等)

5)HCI(Host Controller Interface)

我們在“藍牙協定分析(1)_基本概念”介紹過,藍牙系統分為Bluetooth Controller和Bluetooth Host兩個大的block。它們之間通過HCI接口以HCI協定進行通信。

6)L2CAP

L2CAP位于Bluetooth Host中,包括兩個子子產品:

Channel Manager主要負責建立、管理、釋放L2CAP channel。

L2CAP Resource Manager負責統一管理、排程L2CAP channel上傳遞的PDU(Packet Data Unit),以確定那些高QoS的packet可以獲得對實體信道的控制權。

7)SMP(Security Manager Protocol)

SMP是一個點對點的協定,基于專用的L2CAP channel,用于生成加密(encryption)和識别(identity)用的密匙(keys)。

8)SDP(Service Discover Protocol)

SDP也是一個點對點的協定,基于專用的L2CAP channel,用于發現其它藍牙裝置能提供哪些profile以及這些profile有何特性。在了解清楚了其他藍牙裝置的profile以及特性之後,本藍牙裝置可以發起對自己感興趣的藍牙profile的連接配接動作。

9)AMP Manager

基于L2CAP channel,和對端的AMP manager互動,用于發現對方是否具備AMP功能,以及收集用于建立AMP實體鍊路的資訊。

10)GAP(Generic Access Profile)

GAP是一個基礎的藍牙profile,用于提供藍牙裝置的通用通路功能,包括裝置發現、連接配接、鑒權、服務發現等等。

GAP 是所有其它應用模型的基礎,它定義了在 Bluetooth 裝置間建立基帶鍊路的通用方法。還定義了一些通用的操作,這些操作可供引用 GAP 的應用模型以及實施多個應用模型的裝置使用。GAP 確定了兩個 藍牙裝置(不管制造商和應用程式)可以通過 Bluetooth 技術交換資訊,以發現彼此支援的應用程式。