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)。
物理层,负责提供数据传输的物理通道(通常称为信道)。通常情况下,一个通信系统中存在几种不同类型的信道,如控制信道、数据信道、语音信道等等。
逻辑层,在物理层的基础上,提供两个或多个设备之间、和物理无关的逻辑传输通道(也称作逻辑链路)。
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是传统的蓝牙技术,它这样定义物理信道:
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。
用于蓝牙设备的发现操作(discovery),即我们常用的搜索其它蓝牙设备(discover)以及被其它蓝牙设备搜索(discoverable)。
用于蓝牙设备的连接操作(connect),即我们常用的连接其它蓝牙设备(connect)以及被其它蓝牙设备连接(connectable)。
主要用在处于连接状态的蓝牙设备之间的通信。它们的区别是,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设备占用的频点。
可用于无连接的广播通信,后续文章会详细介绍。
同一时刻,BT 设备只能在其中一个物理信道上通信,为了支持多个并行的操作,蓝牙系统采用时分方式,即不同的时间点采用不同的信道。
LE是为蓝牙低功耗而生的技术,为了实现低功耗的目标,其物理信道的定义与BR/EDR有些差异:
LE技术定义了2种物理信道,LE Piconet channel和LE Advertisement Broadcast Channel。
和BR/EDR一样,同一时刻,BT 设备只能在其中一个物理信道上通信,为了支持多个并行的操作,蓝牙系统采用时分方式,即不同的时间点采用不同的信道。
AMP是为高速数据传输设计的技术,其物理层规范直接采用802.11(WIFI)的PHY规范,主要有如下特点:
1.5.1.2 Physical Links(物理链路)
由前文的描述可知,蓝牙协议为BR/EDR、LE和AMP三种技术定义了8种类型的物理信道,包括:
而物理链路,则是对这些物理信道(主要是BR/EDR技术中的Basic Piconet Physical Channel和Adapted Piconet Physical Channel)的进一步封装,其主要特征是(可参考1.5中的图片以辅助理解):
由上面的描述可知,物理链路这一层抽象,实在是可有可无,希望大家不要纠结,知道怎么回事即可。
1.5.2 逻辑层
逻辑层的主要功能,是在已连接(LE Advertisement Broadcast可以看做一类特殊的连接)的蓝牙设备之间,基于物理链路,建立逻辑信道。所谓的逻辑信道,和城市道路上的车道类似:
一条城市道路可以看做一个物理链路(可能有两个方向,我们只考虑其中一个即可),该物理链路根据行车用途,可以划分为多个逻辑信道,如直行车道、右转车道、左转车道、掉头车道、快速车道、慢速车道等等。
这里的车道(逻辑信道),从物理角度看,并没有什么分别,只是为了方便交通(数据传输),人为的抽象出来的。和车道类似,蓝牙逻辑信道的划分依据是传输类型,主要包括下面3类(即Logical Link):
以上每种Logic Link都会在下层对应一个Logical Transport,这些Logical Transport具有一些属性值,如流控、应答/重传机制等。如下:
注2:AMP-C没有对应的Logical Transport,而是直接控制AMP Physical Link完成所需功能。
注3:蓝牙逻辑层的抽象也是让人醉了!还是那句话,不要逼自己去理解一个疯子的行为,不然自己也会疯的。
1.5.3 L2CAP Channels
L2CAP是Logical Link Control and Adaptation Protocol(逻辑链路控制和适配协议)的缩写,蓝牙协议到这个层次的时候,就清爽多了:
1.5.4 Profiles
profile是蓝牙Application的代指,也可以翻译为服务,为了实现不同平台下的不同设备的互联互通,蓝牙协议为各种可能的、有通用意义的应用场景,都制定的了规范,如SPP、HSP、HFP、FTP、IPv6/6LoWPAN等等。
Profiles基于L2CAP提供的L2CAP channel endpoints实现,在它们对应的层次上进行数据通信,以完成所需功能。有关蓝牙profile的介绍,会在后续文章中陆续给出,这里就不再详细说明了。
1.5.5 总结
下面图片包含上面各个层次(除了APP layer)中涉及到的一些实体、概念以及相互关系,供大家参考。
————————————————————————————————————————
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就只剩英文原版可以参考了,遂把自己的笔记发出来,互相交流,互相交流。