蓝牙架构(3)—— 1 蓝牙概述 (1.3 AMP概述 & 1.4 术语命名 & 1.5 总结)

Vol 1 架构和术语概述

Part A 1 总体概述

Agenda:

1.3 AMP操作概述. 

1.4 术语命名. 

1.5 总结. 

1.5 1 物理层. 

1.5.2 逻辑层. 

1.5.3 L2CAP Channels 

1.5.4 Profiles 

1.5.5 总结. 

1.3 AMP操作概述

Alternate MAC/PHYs (AMP)是蓝牙核心系统的次要控制器(secondary Controllers)。BR/EDR的主要控制器用作搜索,配对,连接建立,连接维持。当两个BR/EDR蓝牙设备L2CAP连接建立后,AMP管理器能检测到另外一个设备的AMP管理器。当两个蓝牙设备都有AMP控制器,蓝牙核心系统提供一种机制,让数据流从主要控制器迁移到次要控制器

每个AMP控制器一个协议适配层( Protocol Adaptation Layer,简称PAL)。在协议栈分层架构图中,PAL在MAC和PHY层之上。PAL的功能职责是把主控制器中的蓝牙协议映射到AMP控制器中去。

L2CAP通道可能创建到或者迁移到AMP控制器。当AMP功能不再需要或者AMP物理连接通信超时,L2CAP通道可能会迁移回BR/EDR主控制器。如果两个BR/EDR设备之间的ACL通信超时,那么所有AMP物理连接会全部断开。

AMP控制器可能被关闭,目的是降低功耗。

1.4 术语命名

(175页)如果说明书中出现下列术语,则其含义见下表。

术语

描述

Active Slave Broadcast (ASB)

逻辑通信通过BR/EDR控制器来传输L2CAP的用户数据流和一部分的LMP流到微微网中的所有设备

Ad Hoc Network

一种自发创建的网络,不需要基础设施,并且在一定时间和空间上都是临时性的

Advertiser

在广播信道中,在广播事件里广播数据包的蓝牙低功耗设备

Advertising Event

广播者在不同的广播物理信道上发送1到3个广播包

Advertising Packet

包含广播数据的数据包

AMP

可切换的媒体访问控制器(Media Access Controller)和物理层(Physical Layer)

AMP Controller

AMP控制器,包括AMP物理层、AMP媒体访问控制器、协议适配层、HCI接口

BD_ADDR

蓝牙设备地址,用来分辨不同的设备

Bluetooth

蓝牙是无线通信,使用跳频技术,运行在国际无授权2.4GHz ISM频段。他够让实时音视频和数据在蓝牙主机中传输。链路层协议是基于时间槽(slot)

Bluetooth Baseband

属于蓝牙系统的一部分,使用媒体访问和物理层流程,从而实现实时音频和用户数据在设备之间传输

Bluetooth Clock

在BR/EDR控制器中的28位时钟,单位是312.5us。时钟数值代表物理信道上slot的id和时间

Bluetooth Controller

一般情况下指主要控制器,不是次要控制器

Bluetooth Device

一种使用蓝牙技术进行短距离无线通信的设备(176页)

Bluetooth Device Address

48位地址用来分辨不同蓝牙设备

BR/EDR

蓝牙基础速率和增强速率技术

BR/EDR Controller

使用BR/EDR技术的控制器,包括蓝牙射频、基带、链接管理器和HCI层

BR/EDR Piconet Physical Channel

一种物理信道,用时间槽去划分,时间槽在不同的频率上。连续的时间槽一般不在同一个频率上,跳频频率是1600跳/秒。射频频率按照在79个频道上的准随机跳频序列进行切换。如果使用可调跳频技术(AFH),跳频频道少于79个

BR/EDR/LE

蓝牙基础速率,增强速率,蓝牙低功耗

C-plane

控制面

Channel

物理信道或者是L2CAP信道,根据上下文决定

Connect (to service)

建立到服务的连接的整个过程,包括建立物理连接,逻辑传输,逻辑连接和L2CAP通道

Connectable device

对于BR/EDR设备,在一定范围内,在page scan信道上侦听page请求,并且对请求应答。对于LE设备,则在广播通道上,在广播事件中发送可连接广播包(注意BR/EDR设备是侦听,LE设备是广播)

Connected devices

两个BR/EDR设备之间存在一个物理连接

Connecting

建立两个设备间连接的过程(物理链路建立之后紧接着是连接过程)

Connection

两个对等应用或上层间的映射在L2CAP通道的连接

Connection establishment

创建连接的过程

Connection Event

master和slave间,在同一个物理通道上的一系列数据包交替收发事件(只有LE设备有这个概念,注意不是建立连接,而是数据传输事件。一开始我也被它名字误导了)

Connectionless Slave Broadcast(CSB)

一种功能,能让master广播数据到多个slave(177页)

Connectionless Slave Broadcast Receiver

微微网中的slave设备。这些设备接收CSB广播者的广播数据

Connectionless Slave Broadcast Transmitter

微微网中的master设备。这个设备发送无连接广播数据给多个无连接slave接收者

Controller

蓝牙协议栈中,HCI以下的层次和模块

Coverage area

两个蓝牙设备能够保证通信质量的范围

Creation of a secure connection

建立连接的一个子步骤,包括授权和加密

Creation of a trusted relationship

远程设备被标记为信任设备的过程。包括保存密钥过程(用来之后的授权),以及密钥不可用时候的配对过程

Device discovery

一个获取对方蓝牙设备信息的过程。这些信息包括蓝牙地址、时钟、设备类型、page scan模式

Discoverable device

在一定范围内,在inquiry scan物理信道上侦听、应答inquiry请求的BR/EDR设备。在一定范围内,使用可连接(connectable)或者可扫描(scannable)事件发送带可发现(discoverable)标识的广播包的LE设备。(注意BR/EDR设备是侦听,LE设备是广播)

Discoverable Mode

BR/EDR蓝牙设备执行inquiry scan,或者LE设备使用可连接(connectable)或者可扫描(scannable)事件发送带可发现(discoverable)标识的广播包

Discovery procedure

BR/EDR设备在执行inquiry scan流程;LE设备使用可连接(connectable)或者可扫描(scannable)事件发送带可发现(discoverable)标识的广播包的流程

HCI

基带和链路层的接口,查询硬件状态和访问控制寄存器的接口。这个接口提供一套访问蓝牙基带的统一的方法

Host

在蓝牙协议栈中,在HCI接口以上的层次和模块

Initiator(178页)

在广播信道侦听可连接广播事件,并且发起连接的LE蓝牙设备

Inquiring device

执行inquiry流程的BR/EDR设备。通过这个流程来发现其他蓝牙设备

Inquiry

蓝牙设备在覆盖范围内发送inquiry请求并且接收应答信息,用来发现其他蓝牙设备的过程

Inquiry scan

在inquiry scan物理信道上侦听inquiry请求的过程,用来被其他设备发现

Interoperability

一个或多个系统或组件交换和使用对方信息的能力

Isochronous data

数据流中的信息,他传输时机受前一个数据和后一个数据所制约

Known device

至少蓝牙地址被记录下来的蓝牙设备

L2CAP

逻辑链路控制和适配协议(Logical Link Control and Adaptation Protocol)

L2CAP Channel

两设备,同一个应用或上层协议间的L2CAP逻辑连接

L2CAP Channel establishment

在L2CAP层上建立逻辑连接的过程

LE

蓝牙低功耗技术

Link

逻辑连接的简称

Link establishment

建立设备间的默认ACL连接,以及建立各个层次连接和通道的过程

Link key

两个设备都知道的密钥,用作鉴权

LMP authentication

在LMP层用来识别远程设备的流程

LMP pairing

两设备间的鉴权和创建密钥的过程。密钥用作两设备间建立信任关系,也可以用作加密一个逻辑连接

Logical link

蓝牙架构中最底层的,为蓝牙设备的客户端提供独立数据通信服务

Logical transport

有相同的流量控制协议和链路标识符的逻辑连接

Name discovery

从可连接设备上获取设备名称的过程

Packet

在物理信道上传输的数据格式

Page(179页)

连接建立过程中的第一个步骤。一个设备发送一系列page请求,直到收到应答,或者发生超时

Page scan

蓝牙设备在page scan物理信道上侦听page请求的过程

Paging device

执行page流程的蓝牙设备

Paired device

连接密钥已经创建的设备

Passkey

安全简单配对(Secure Simple Pairing)模式下的6位数字,用作鉴权

Physical Channel

一个或多个设备,使用相同的时序,去占用多个频率。不同的物理信道类型有不同的用途

Physical Link

两个设备间的基带或者链路层的连接

Physical Transport

物理层数据包在射频信道上使用一种或多种调制策略传输

Piconet

占用同一个物理信道的设备集合。其中有一个是master设备,其他的是slave设备

Piconet Master

微微网中的一个蓝牙设备,他的时钟和蓝牙地址用来定义微微网物理通道的特性

Piconet Slave

微微网中不是master的其他蓝牙设备

PIN

在配对前,用作鉴权的用户输入的数字

PMP

同时接入到多个微微网的设备。使用时分多用的方式分别访问不同的微微网物理信道。

Profile Broadcast Data (PBD)

一个逻辑连接,用来从CSB Transmitter发送数据到CSB Receivers

Scanner

在广播信道侦听广播事件的LE设备

Scatternet

相交的两个或多个微微网组成的网络

Service discovery

查询和浏览另外一个设备的服务的过程(180页)

Service Layer Protocol

使用L2CAP信道传输PDU的协议

Silent device

不应答对方请求的设备

Synchronization Scan Physical Channel

slave设备接收master发出的训练包的物理信道

Synchronization Train

固定频率上发送的一系列数据包,提供足够的信息。使得接收设备开始接收CSB包或者恢复微微网的时钟同步

U-plane

用户面

Unknown device

没有信息被记录的蓝牙设备

1.5 总结

蓝牙协议分为四个层次:物理层(Physical Layer)、逻辑层(Logical Layer)、L2CAP Layer和应用层(APP Layer)。

蓝牙架构(3)—— 1 蓝牙概述 (1.3 AMP概述 & 1.4 术语命名 & 1.5 总结)_第1张图片

物理层,负责提供数据传输的物理通道(通常称为信道)。通常情况下,一个通信系统中存在几种不同类型的信道,如控制信道、数据信道、语音信道等等。

逻辑层,在物理层的基础上,提供两个或多个设备之间、和物理无关的逻辑传输通道(也称作逻辑链路)。

L2CAP,L2CAP是逻辑链路控制和适配协议(Logical Link Control and Adaptation Protocol)的缩写,负责管理逻辑层提供的逻辑链路。基于该协议,不同Application可共享同一个逻辑链路。类似TCP/IP中端口(port)的概念。

APP,理解蓝牙协议中的应用层,基于L2CAP提供的channel,实现各种各样的应用功能。Profile是蓝牙协议的特有概念,为了实现不同平台下的不同设备的互联互通,蓝牙协议不止规定了核心规范(称作Bluetooth core),也为各种不同的应用场景,定义了各种Application规范,这些应用层规范称作蓝牙profile。

在以上四个层次的基础上,蓝牙协议又将物理层和逻辑层划分了子层,分别是Physical Channel/Physical Links和Logical Transports/Logical Links,这一划分,相当使人崩溃,要多花费大量的脑细胞去理解它们,具体请参考下面的分析。

1.5 1 物理层

物理层负责提供数据传输的物理信道,蓝牙的物理层分为Physical Channel和Physical Links两个子层。我们先介绍Physical Channel。

1.5.1.1 Physical Channel(物理信道)

一个通信系统中通常存在多种类型的物理信道,蓝牙也不例外。另外,蓝牙存在BR/EDR、LE和AMP三种技术,这三种技术在物理层的实现就有很大的差异。

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

注1:不同国家和地区蓝牙的频率和信道分配情况是不同,本文所有的描述都以中国采用的“欧洲和美国”标准为准。

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

BR/EDR是传统的蓝牙技术,它这样定义物理信道:

  • ISM频率范围内被分成79个channel,每一个channel占用1M的带宽,在0 channel和78 channel之外设立guard band(保护带宽,Lower Guard Band为2MHz,Upper Guard Band为3.5MHz)。
  • 采用跳频技术(hopping),也就是说,某一个物理信道,并不是固定的占用79个channel中的某一个,而是以一定的规律在跳动(该规律在技术上叫做"伪随机码",就是"假"的随机码)。因此蓝牙的物理信道,也可以称作跳频信道(hopping channel)。

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。

  • BR/EDR Inquiry Scan Physical Channel

用于蓝牙设备的发现操作(discovery),即我们常用的搜索其它蓝牙设备(discover)以及被其它蓝牙设备搜索(discoverable)。

  • BR/EDR Page Scan Physical Channel

用于蓝牙设备的连接操作(connect),即我们常用的连接其它蓝牙设备(connect)以及被其它蓝牙设备连接(connectable)。

  • 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设备占用的频点。

  • BR/EDR Synchronization Scan Channel

可用于无连接的广播通信,后续文章会详细介绍。

同一时刻,BT 设备只能在其中一个物理信道上通信,为了支持多个并行的操作,蓝牙系统采用时分方式,即不同的时间点采用不同的信道。

LE是为蓝牙低功耗而生的技术,为了实现低功耗的目标,其物理信道的定义与BR/EDR有些差异:

  • ISM频率范围内被分成40个channel,每一个channel占用2M的带宽,在0 channel和39 channel之外设立guard band(保护带宽,Lower Guard Band为2MHz,Upper Guard Band为3.5MHz)。

LE技术定义了2种物理信道,LE Piconet channel和LE Advertisement Broadcast Channel。

  • LE Piconet Channel用在处于连接状态的蓝牙设备之间的通信,和BR/EDR一样,采用调频技术。和BR/EDR不一样的地方是,只会在40个频率channel中的37个上面跳频。
  • LE Advertisement Broadcast Channel用于在设备间进行无连接的广播通信,这些广播通信可用于蓝牙的设备的发现、连接(和BR/EDR类似)操作,也可用于无连接的数据传输。

和BR/EDR一样,同一时刻,BT 设备只能在其中一个物理信道上通信,为了支持多个并行的操作,蓝牙系统采用时分方式,即不同的时间点采用不同的信道。

AMP是为高速数据传输设计的技术,其物理层规范直接采用802.11(WIFI)的PHY规范,主要有如下特点:

  • AMP物理信道只有一种,即AMP Physical Channel,主要用于已连接设备之间的数据通信,和BR/EDR技术中的BR/EDR Adapted Piconet Physical Channel位于一个级别,可以互相切换使用。

1.5.1.2  Physical Links(物理链路)

由前文的描述可知,蓝牙协议为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)的进一步封装,其主要特征是(可参考1.5中的图片以辅助理解):

  • Physical Link是一个虚拟概念,不对应协议中任何的实体,数据包封包/解包的过程中不被体现。
  • AMP Physical Channel、LE Piconet Channel、LE Advertisement Broadcast Channel均有一个一一对应的Physical Link,分别是AMP Physical Link、LE Active Physical Link、LE Advertising Physical Channel。
  • BR/EDR Page Scan Physical Channel、BR/EDR Inquiry Scan Physical Channel、BR/EDR Synchronization Scan Channel只在特定时间段使用,且无法控制任何属性,因此不需要在Physical Link中体现。
  • 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三个物理链路上。
  • BR/EDR Active Physical Link和BR/EDR Parked Physical Link的抽象主要有两个方面的意义: 
  1. 屏蔽底层的Basic/Adapted Piconet Physical Channel之间的差异,统一使用Physical Link取代。在需要的时候,可以通过上层的链路管理协议,指定使用哪一种physical channel(Basic or Adapted)。 
  2. 可以通过Physical Link的抽象,控制Physical Channel的一些属性(如发射功率、收发周期等),以达到节省功耗的目的。而上面的层次(如逻辑层)不需要对这些动作知情。
  • BR/EDR Active Physical Link定义了连接状态的蓝牙设备在链路处于active状态时的物理链路,该物理链路对应的设备的发射功率是可修改的。
  • BR/EDR Parked Physical Link定义了连接状态的蓝牙设备在链路处于parked状态时的物理链路。parked状态是一种特殊的连接状态,连接双方没有正在进行的数据传输,所有的链路消耗,都是为保持连接所做的事情。此时可以通过降低在物理信道上的收发频率而降低功耗。该物理链路和BR/EDR Active Physical Link使用相同的物理信道。
  • BR/EDR Connectionless Slave Broadcast Physical Link使用BR/EDR Adapted Piconet Physical Channel,用于一点到多点的广播通信。

由上面的描述可知,物理链路这一层抽象,实在是可有可无,希望大家不要纠结,知道怎么回事即可。

1.5.2 逻辑层

逻辑层的主要功能,是在已连接(LE Advertisement Broadcast可以看做一类特殊的连接)的蓝牙设备之间,基于物理链路,建立逻辑信道。所谓的逻辑信道,和城市道路上的车道类似:

一条城市道路可以看做一个物理链路(可能有两个方向,我们只考虑其中一个即可),该物理链路根据行车用途,可以划分为多个逻辑信道,如直行车道、右转车道、左转车道、掉头车道、快速车道、慢速车道等等。

这里的车道(逻辑信道),从物理角度看,并没有什么分别,只是为了方便交通(数据传输),人为的抽象出来的。和车道类似,蓝牙逻辑信道的划分依据是传输类型,主要包括下面3类(即Logical Link):

  • 用于管理底层物理链路的控制类传输,包括AMP-C、ACL-C、PSB-C、LE-C、ADVB-C。
  • 传输用户数据的用户类传输,包括AMP-U、ACL-U、PSB-U、LE-U、ADVB-U。
  • 其它比较特殊的传输类型,包括流式传输(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:蓝牙逻辑层的抽象也是让人醉了!还是那句话,不要逼自己去理解一个疯子的行为,不然自己也会疯的。

1.5.3 L2CAP Channels

L2CAP是Logical Link Control and Adaptation Protocol(逻辑链路控制和适配协议)的缩写,蓝牙协议到这个层次的时候,就清爽多了:

  • 对下,它在用户类XXX-U Logical Link的基础上,抽象出和具体技术无关的数据传输通道(包括单播和广播两类),至此用户就不再需要关心繁杂的蓝牙技术细节。
  • 对上,它以L2CAP channel endpoints的概念(类似TCP/IP中的端口),为具体的应用过程(profile)提供独立的数据传输通道(当然,也是一个逻辑通道)。

1.5.4 Profiles

profile是蓝牙Application的代指,也可以翻译为服务,为了实现不同平台下的不同设备的互联互通,蓝牙协议为各种可能的、有通用意义的应用场景,都制定的了规范,如SPP、HSP、HFP、FTP、IPv6/6LoWPAN等等。

Profiles基于L2CAP提供的L2CAP channel endpoints实现,在它们对应的层次上进行数据通信,以完成所需功能。有关蓝牙profile的介绍,会在后续文章中陆续给出,这里就不再详细说明了。

1.5.5 总结

下面图片包含上面各个层次(除了APP layer)中涉及到的一些实体、概念以及相互关系,供大家参考。

蓝牙架构(3)—— 1 蓝牙概述 (1.3 AMP概述 & 1.4 术语命名 & 1.5 总结)_第2张图片

————————————————————————————————————————

Reference

1 BT specification Core 4.2, Bluetooth SIG.

2 https://me.csdn.net/cocavon

3 http://www.wowotech.net/bluetooth/bt_protocol_arch.html

4 https://baike.baidu.com/

————————————————————————————————————————

作者按:蓝牙从业者,潜心学习BT stack,蓝牙协议奇多无比,概述只是开始,网上资料还比较多,学到后面的各种spec就只剩英文原版可以参考了,遂把自己的笔记发出来,互相交流,互相交流。

你可能感兴趣的:(躺雨没的学习笔记——蓝牙架构)