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


1. 前言

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

2. 協議層次

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

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

在通信實體內部,下層向上層提供服務,上層是下層的用戶;

在通信實體之間,協議僅針對每一層,實體之間的通信,就像每一層之間的通信一樣,這樣有利於交流、理解、標准化。

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

image

從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)中涉及到的一些實體、概念以及相互關系,供大家參考。

image

摘錄自: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”中的列表)。

藍牙核心規范所定義的框架如下:

image

經過第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 技術交換信息,以發現彼此支持的應用程序。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM