本节书摘来自华章出版社《无线网络:理解和应对互联网环境下网络互连所带来的挑战》一书中的第3章,第3.1节,作者:(美)杰克L.伯班克(Jack L. Burbank)等著,更多章节内容可以访问云栖社区“华章计算机”公众号查看
第3章 无线个域网
本章将对WPAN进行回顾,包括一些关键技术、应用案例和演进历程。WPAN技术用于距离几十英尺的设备之间的通信。与其他无线组网技术相比,WPAN一般不需要复杂的基础设施,因此功耗和成本都较低。据记载,在20世纪90年代末,ad hoc 组网概念促使了WPAN的兴起。如今,已实现了多种WPAN标准以适用各种应用,包括无线耳机、无线游戏、无线显示和家庭自动化。
本章将要阐述三种WPAN技术:UWB、IEEE 802.15.4/ZigBee和蓝牙。每一节将会介绍一种技术和相应的使用案例。
3.1 蓝牙
蓝牙SIG成立于1988年,是一个私立的非盈利贸易协会,专门致力于开发个域组网技术。蓝牙这个名字来源于十世纪的一位丹麦国王Harald I的绰号。蓝牙是一个用于短距离个域组网的无线标准,旨在取代便携或固定设备的线缆。一些能够使用蓝牙的设备有移动电话、耳机和笔记本电脑。蓝牙工作在2.4GHz ISM频段,其特点为低功耗和低成本。
现有两类蓝牙系统。最初的标准定义了基本速率(Basic Rate,BR)系统,而当前的4.0版本(2011年)标准用于支持LE(Low Energy)系统。这些系统能够提供用于无线个域组网技术的典型功能,包括设备发现、连接建立和维护。目前,BR系统在蓝牙第一代标准的初始范畴之外又增加了一些新的功能,称为增强型数据速率(Enhanced Date Rate,EDR),以及相关的MAC层和PHY层扩展以支持更高的数据速率。LE系统致力于满足低功耗的需求。表3-1汇总了目前发布的所有蓝牙标准。
蓝牙协议栈如图3-1[3]所示。无线电层代表PHY层,基带层类似于OSI的链路层或MAC层。链路管理层用于物理链路的建立和控制。L2CAP层用于逻辑链路控制(一个物理链路中可以存在多个逻辑链路),并向高层协议提供面向连接和无连接的数据服务。
核心蓝牙系统包括一个主机和若干个控制器。逻辑上,主机定义为非核心文件之下、主机控制器接口(Host Controller Interface,HCI)之上的所有层。控制器正好相反,即HCI之下的所有层。
蓝牙BR系统最大支持数据速率为721.2kbps,EDR最大支持2.1Mbps。使用802.11波形的高速运行最大能够支持24Mbps。这种系统使用一种跳频的扩频方式来增强对抗干扰的鲁棒性。BR运行中使用二进制调频方式来最小化接收机复杂度,符号速率为1Ms/s。EDR使用PSK调制方式。
图3-1 蓝牙协议栈,摘自参考文献[3]
在BR系统中,主要的调制方式为高斯频移键控(Gaussian Frequency Shift Keying,GFSK),带宽比特周期乘积为0.5,调制指数在0.28和0.35之间,符号定时要求在±20ppm之间。频移键控的数学表达式如公式(3-1)所示:
其中,t是时间自变量,Es为每个符号的能量,T是比特周期,fc是载波频率,n是数字采样周期T的整数索引,an是第n个数据比特(0或1),h是调制指数,θ是连续相移。将公式(3-1)的信号通过公式(3-2)所示的高斯滤波器,就可以把FSK波形转换为GFSK波形:
其中,t是时间变量,T是比特周期,BT是带宽比特周期乘积。GFSK波形可以通过s(t)和g(t)的卷积得到:
GFSK能成为理想的调制方式的原因是,它比FSK有更高的频谱效率。利用高斯匹配滤波器通过扩宽转换时间,同时最小化码间串扰(ISI)。
在EDR系统中,在每个发送的蓝牙数据包中调制方式是变化的。接入码和包头采用BR系统 1Mbps GFSK方式传输,而其他字段使用EDR PSK方式传输。这样就通过增加包头成功接收的概率改善了同步性能。
对于2Mbps EDR波形,调制方式为π/4-差分四相相移键控(π/4-DQPSK)。对于3Mbps EDR波形,调制方式为八进制差分相移键控(8DPSK)。这里使用了升余弦脉冲成形。二进制数据流映射到代表信号相位的符号上,然后对这些比特进行差分编码。表3-2[3]总结了这两种调制方式的映射关系。
摘自参考文献[3]。
在2.4GHz频段里,蓝牙规范定义了多个特定的信道。这些信道用于跳频机制。信道定义如式(3-4)所示:
在蓝牙中,连接可以是点对点,或是点对多点。对于点对点的连接,两个设备共享物理信道。对于点对多点的连接,多个设备之间共享物理信道。这些共享同一个信道的设备组成一个微微网络。在一个微微网络中,只有一个主节点协调所有的通信,其他节点为从节点。从节点能够加入多个微微网络,通过在多个主节点之间复用时间来完成通信,每个主节点相当于一个独立的微微网络。此外,一个微微网络中的主节点可以是另外一个微微网络中的从节点。由于蓝牙的跳频功能,2.4GHz频带内的多个微微网络采用异步的跳频,以减少微微网络之间的干扰。图3-2[3]详细说明了一些微微网络的概念。
图3-2 微微网络概念,摘自参考文献[3]
图中有三种不同配置的微微网络。值得注意的是,多个主/从节点配置表明一个节点在一个微微网络中作为主节点的同时也可在另外一个微微网络中作为从节点。
在一个网络中,每个蓝牙设备分配一个48比特的设备地址。它包含一个3字节的公司ID,作为高位地址部分(UAP),用于定义蓝牙设备的厂商。公司可分配的部分有3字节,作为低位地址部分(CAP),用于区分同一厂商的其他设备。图3-3[3]详细说明了蓝牙的地址结构。
在公司分配的地址部分,某些保留数值用于查询操作。
蓝牙设备生成和接收蓝牙数据包,基本速率型的数据包格式如图3-4 [3]所示。
图3-4 蓝牙基本速率数据包结构,摘自参考文献[3]
如图所示,接入码可以为68或72比特。包头为54比特,有效载荷为0~2745比特之间。如果接入码后是包头,那么接入码的长度为72比特,否则是68比特,表明使用短接入码进行同步或其他功能。接入码用以区分同一物理信道的不同数据包。这使得接收机采用滑动相关器便可快速地区分同一信道上的数据包。蓝牙有四种类型的接入码:信道接入码(CAC)、设备接入码(DAC)、通用查询接入码(GIAC)和专用查询接入码(DIAC)。CAC用于用户数据的传输,而DAC用于设备的直接通信。通用/专用查询接入码用于查询功能。
增强型数据速率的数据包格式如图3-5所示。值得注意的是,这种格式比基本速率型多出很多字段。
图3-5 蓝牙增强型数据速率的数据包结构,摘自参考文献[3]
如图所示,前两个字段与基本速率型完全相同,调制方式也相同。但是,为了支持高速率DPSK调制,在数据有效载荷之前、包头和同步符号头之间插入了保护间隔。负载之后增加了包含两个DPSK符号的尾部。
BR和EDR的包头有6个字段:
LT_ADDR(3比特):逻辑传输地址,用于指示逻辑传输类型
TYPE(4比特):类型码,用于指示数据包类型
FLOW(1比特):流量控制字段
ARQN(1比特):确认指示符
SEQN(1比特):序列号指示
HEC(8比特):包头错误校验
蓝牙物理信道由4部分组成:伪随机跳频序列用于改变调制基带信号的中心频率、特定时隙传输时间、接入码和数据包头。为使设备能在物理信道上通信,它们必须保持严格的时间同步以确保它们以相同的速率跳频,并保持相同的中心频率。28比特的时钟用于设备间的同步,每个时钟的时间片为312.5μs。蓝牙主设备会选择跳频序列,并命令同一个微微网中的从设备去同步这个序列。在连接阶段最大跳频速率可达1600跳/秒,在查询和寻呼阶段可达3200跳/秒。
蓝牙中定义了4种物理信道:
基础型微微网物理信道:用于用户数据传输
适应型微微网物理信道:用于用户数据传输
查询扫描物理信道:用于发现设备
寻呼扫描物理信道:用于设备间建立连接
基础型和适应型微微网物理信道用于用户数据传输。适应型微微网物理信道的跳频序列不同于基础型微微网物理信道。在适应型信道中,跳频序列可以少于79个跳频频率,但基本序列要使用所有的79个频率。
蓝牙中利用时隙使得主设备和从设备之间共享媒体。主设备给所有的设备分配特定的时隙。图3-6[3]详细说明了一个理想的时隙分配方案。
图3-6 蓝牙中的时隙分配,摘自参考文献[3]
值得注意的是主设备选择的频率取决于当前的时钟值(用索引K来表示)。一旦主设备完成了一次传输,从设备就会使用相同频率在下一个时隙进行传输。时隙分配根据传输的数据包长度大小来确定,在一个数据包长度内只使用一个频率。
对于每台蓝牙设备而言,有3个主要的状态:连接(设备处于活跃状态并传输用户数据)、休眠(链路处于空闲状态且无传输)、待机(默认方式,设备会处于低功耗配置,并且只有时钟在工作)。图3-7[3]详细说明了可能的状态。
图3-7 蓝牙链路的状态图,摘自参考文献[3]
建立新的连接需要寻呼过程。任何发起连接的设备成为该微微网络的主设备。设备使用寻呼扫描子状态扫描特定的频率以发现其他设备。主设备使用寻呼子状态与处于寻呼扫描子状态的任何从设备建立连接。表3-3总结了建立一个连接需要的步骤[3]。
摘自参考文献[3]。
在表中,数据包类型ID指标识数据包,为68比特的固定长度并包含DAC或IAC。数据包类型FHS指的是跳频同步数据包,包含蓝牙设备地址和主设备的时钟信息。在一个微微网中,FHS数据包用以确保从设备跟主设备之间严格保持时钟一致和跳频同步。POLL类型没有负载,但需要从设备进行确认。所以,主设备能够确认从设备与它的跳频图案匹配。否则,两个设备重新回到寻呼/寻呼扫描子状态。
查询子状态用于设备发现。一个设备要发现其他设备,必须进入查询子状态。在此状态,跳频图案会驱动设备在不同的频率上发送一个查询消息(ID数据包)。这个图案来自于GIAC(用于所有设备的一个数值)的低地址部分。任何可被发现的设备会周期性地进入查询扫描子状态,寻找这个消息并使用它作为建立连接的基础。
在连接子状态,设备可能处于活跃或休眠状态。在任何时候,连接模式下最多有7个活跃设备,可以*地加入信道。休眠状态最多有255个设备。在这个阶段,设备保持与主设备同步,但是并不参与信道中常规的发送/接收。主设备在常规时隙发送一个信标来维持休眠设备的同步。
在不同的工作模式下,蓝牙定义了一系列逻辑传输,用于承载不同类型的业务。这些类型包括:
同步定向连接(SCO)
扩展型SCO(eSCO)
异步定向连接(ACL)
活跃从设备广播(ASB)
休眠从设备广播(PSB)
SCO和eSCO都是用于主从设备之间的点对点传输,包含如话音或同步信息等业务,且主设备一般会给他们保留常规时隙。ACL也用于主从设备之间的传输,但时隙并不保留。主设备使用ASB与活跃从设备通信,而用PSB与休眠从设备通信。
蓝牙中定义了5种逻辑链路:
链路控制(LC)
ACL控制(ACL-C)
用户异步/非同步(ACl-U)
用户同步(SCO-S)
用户异步/扩展型同步(eSCO-S)
LC和ACL-C是控制链路,分别控制和管理链路。LC链路被映射到包头上,且承载在除了ID之外的每个数据包上。ACL-U承载ACL业务,而SCO-S和eSCO-S分别承载SCO和eSCO业务。表3-4总结了传输类型和相关的支持链路。
表3-5[3]总结了蓝牙的大部分数据包类型。ID数据包没有在表中,因为它没有包头(也就没有类型码)。
摘自参考文献[3]。
表3-5中的数据包类型定义如下:
NULL:没有有效载荷,只包含CAC和包头。用于发送确认或接收缓存的状态信息。
POLL:类似于NULL,但需要确认。
FHS:包含蓝牙设备地址和发送端的时钟,用于辅助跳频序列的同步。
DM1:用于任何逻辑传输中,支持DM1数据包类型的控制消息,也支持用户数据。
HV1:用于SCO逻辑传输中,包含10个信息字节,常用于支持用户语音或数据。
HV2:用于SCO逻辑传输中,包含20个信息字节,常用于支持用户语音或数据。
HV3:用于SCO逻辑传输中,包含30个信息字节,常用于支持用户语音或数据。
DV:语音–数据组合包,其中语音字段80比特,数据字段最大150比特。
EV3:用于eSCO逻辑传输中,包含1~30个信息字节,常用于支持用户语音或数据。
EV4:用于eSCO逻辑传输中,包含1~120个信息字节,常用于支持用户语音或数据。
EV5:用于eSCO逻辑传输中,包含1~180个信息字节,常用于支持用户语音或数据。
2-EV3:类似EV3,但负载调制方式为π/4-DQPSK,包含1~60个信息字节,常用于支持用户语音或数据。
2-EV5:类似EV5,但负载调制方式为π/4-DQPSK,包含1~360个信息字节,常用于支持用户语音或数据。
3-EV3:类似EV3,但负载调制方式为8DPSK,包含1~90个信息字节,常用于支持用户话音或数据。
3-EV5:类似EV3,但负载调制方式为8DPSK,包含1~540个信息字节,常用于支持用户话音或数据。
DM1:用于ACL逻辑传输中,包含1~18个信息字节,且只承载数据信息。
DH1:用于ACL逻辑传输中,类似DM1,但负载中的信息未进行前向纠错编码。
DM3:用于ACL逻辑传输中,最多占用三个时隙,且负载包含2~123个信息字节。
DH3:类似DM3,但未进行前向纠错编码。
DM5:最多可占用5个时隙,负载包含2~226个信息字节。
DH5:类似DM5,但未进行前向纠错编码。
AUX1:类似DH1,但没有循环冗余校验(cyclic redundancy check,CRC)。包含1~30个信息字节,且占用一个时隙。
2-DH1:类似DH1,但调制方式为π/4-DQPSK。
2-DH3:类似DH3,但调制方式为π/4-DQPSK。
2-DH5:类似DH5,但调制方式为π/4-DQPSK。
3-DH1:类似DH1,但调制方式为8DPSK。
3-DH3:类似DH3,但调制方式为8DPSK。
3-DH5:类似DH5,但调制方式为8DPSK。
链路管理协议(Link Manager Protocol,LMP)是蓝牙中管理链路的机制,它控制着蓝牙连接的所有方面。在ACL-C逻辑链路中,使用默认的ACL方式传输定义LMP的消息。图3-8阐述了LMP的连接建立过程。由图所示,最初为基带寻呼过程,然后协商以校正时钟偏移、支持哪种版本LMP以及支持哪种特性。接着,寻呼设备向被寻呼设备发送主机连接请求,被寻呼设备响应,表示接受或拒绝消息。假如连接请求一旦被接受,则便会协商配对、认证和加密等特性。一旦这些完成,双方都产生LMP建立完成消息去确认连接的建立。
为了保证应用的互操作性,蓝牙规范特别定义了蓝牙协议栈中每层的功能。参考文献[3]定义了这些规范,用于每一层之间的垂直交互。所有设备必须支持通用接入规范(Generic Access Profile,GAP),它定义了蓝牙设备的基本要求。在GAP中,有一个属性协议(Attribute Protocol,ATT),它允许设备共享属性来完成读/写,且这些属性支持GAP定义的功能。
为了使设备支持特殊的应用,服务发现协议(Service Discovery Protocol,SDP)能够使应用发现服务以及可用的相关特征。例如,蓝牙耳机与手机连接时,两个设备的蓝牙核心系统都使用SDP来使耳机(语音)应用正常工作。蓝牙号码分配机构给特殊服务分配特定的通用唯一标识符(Universally Unique Identifier,UUID),用于指示特殊服务类、规范。表3-6总结了服务类/规范。
可以定义用户参数对蓝牙设备进行控制。例如,用户可以为一个特定设备(如智能手机)定义一个设备名称。此外,配对时用户可以定义一个6位阿拉伯数字密码(passkey),为两个设备间提供一个基本的认证机制,然后继续进行配对过程。
3.1.1 LE蓝牙
在蓝牙标准的Core 4.0版本中定义了LE蓝牙规范[3]。为提高蓝牙设备能效,该规范定义了物理层和链路层特征。与BR/EDR规范不同,LE本质上更轻量,与BR/EDR的实现相比,极大地减少功率消耗。此外,LE通常不适用于用户所认为的蓝牙典型应用(音频、视频、数据)。相反,LE适用于低带宽、低延时的应用,如周期或触发的传感器传输。
LE蓝牙定义在2.4GHz ISM频段内,调制方式为高斯最小频移键控(Gaussian Minimum Shift Keying,GMSK),带宽比特周期乘积为0.5,调制指数在0.45到0.55之间。与BR/EDR相比,同样传输功率下,提升了工作范围,输出功率范围是0.01~10mW。
LE蓝牙的信道化与BR/EDR有很大的不同。在2.4GHz频段内,总共有40个信道,每个信道间隔2MHz。其中3个广播信道,37个数据信道。表3-7总结了LE蓝牙的信道化。值得注意的是,信道号37、38和39号信道对应广播(advertising)信道(表格中用粗体显示),而0~36号信道对应数据信道(表格中用斜体显示)。
LE工作的一个特点是包含5种工作状态,各状态之间的转换关系如图3-9所示[3]。
LE蓝牙协议规定,在同一时间内一台蓝牙设备只允许处于5种状态中的一种。在待机状态下,不能接收和发送任何数据包;在广播状态下,发送广播信道数据包,并可以监听响应;在扫描状态下,监听广播信道数据包;在初始化状态下,监听从特定设备发出的广播信道数据包,且可以向该设备发送响应以初始化一次连接;在连接状态下,与另一台蓝牙设备保持有效的连接。与BR/EDR相同,LE也允许在连接状态下把设备分为主从两种角色。
在LE中,广播信道用于发现设备、初始化连接和广播数据;数据信道用于连接设备之间的互相通信。与BR/EDR不同,LE不会跳频,一个特定时刻只使用一个物理信道。但是,每个数据包的开头使用接入地址作为标识符,以减小多个蓝牙设备之间由于使用相同的射频信道而产生的干扰。
LE规定了唯一的链路层数据包格式,如图3-10[3]所示。广播信道数据包的8比特前导码为0xAA。数据信道数据包的前导码有两种,如果接入地址的最低有效位(least significant bit,LSB)为0,则8比特前导码为0xAA;如果接入地址的LSB为1,则8比特前导码为0x55。所有广播信道数据包的接入地址相同,均为0x8E89BED6。而对于数据信道数据包,接入地址则随两个节点之间连接的不同而不同。PDU部分由用户数据组成。同时为了确保数据的完整性,在数据包末尾添加了CRC字段。
图3-10 LE链路层数据包格式,摘自参考文献[3]
LE分别定义了广播信道和数据信道PDU的格式,图3-11[3]为广播信道PDU的格式。
图3-11 广播PDU格式,摘自参考文献[3]
如图3-11所示,包头由6个字段组成。PDU类型字段表征广播信道数据包的类型。表 3-8[3]总结了这些数据包的类型。
摘自参考文献[3]。
RFU为预留字段,这表示它们在蓝牙4.0标准中还没有被定义。TxAdd和RxAdd字段对于每一种广播信道数据包类型是唯一的。长度字段表征有效载荷的长度,以字节为单位(6~37字节或48~296比特)。
数据信道PDU格式用于数据信道数据包中。它的格式如图3-12[3]所示。
图3-12 数据PDU格式,摘自参考文献[3]
表3-9[3]总结了数据PDU的字段信息。
摘自参考文献[3]。
图3-13描绘了一台蓝牙设备与另一台设备初始化连接的流程。如图中所示,设备1发出一条指令用于与设备2初始化连接。设备1的链路层接收到一条来自设备2的广播,然后发送一条CONNECT_REQ消息作为响应。这条消息发出以后,LE连接完成响应就会发送到每一台设备。
图3-13 连接初始化流程,摘自参考文献[3]
3.1.2 蓝牙应用示例
目前,也许蓝牙应用最常见的例子是无处不在的大多数移动电话所应用的免手持操作模式。在这种场景中,移动电话作为蓝牙核心系统,附带一个免手持的设备,如装有蓝牙的汽车音响系统或一个独立的耳机。在这个例子中,移动电话和免手持设备组成的设备对允许用户利用他们的语音对移动电话进行操作,而不是用手拨电话号码或手持移动电话。通过两个设备之间建立的蓝牙数据无缝传输链路,免手持设备可以正常操作麦克风和扬声器,而这通常是只有移动电话才能操作的。
蓝牙技术的另一个不太常见的例子是无线计算机网络。在这个例子中,假如有两个用户在同一个小房间使用两个单独的笔记本电脑。如果两个笔记本电脑都支持蓝牙,那么他们就能够使用蓝牙波形配对,并彼此交换文件。
蓝牙技术越来越多地用于游戏应用中。例如,任天堂的Wii和索尼的PlayStation 3游戏机都使用蓝牙技术与无线控制器连接。
蓝牙也可以用作本地无线网桥使一台笔记本电脑共享一部移动电话的互联网连接。假定移动电话具有蓝牙无线电和网络共享功能,一台笔记本电脑就可以与这部移动电话配对,并通过蓝牙链路来路由自己的IP业务,经由移动电话来访问蜂窝网络。在这种情况下,移动电话充当笔记本电脑和蜂窝网络之间的网关,使用蓝牙作为链路来传递两个系统之间基于IP的业务。
对于LE蓝牙,语音或视频等流数据一般不适合传输。然而,周期性的传感器数据应用可能会更合适。例如,将一个计步器安装在具有LE蓝牙功能的鞋内。当鞋内的压力超过一定的阈值时,计步器传感器就会触发一个事件。从这个意义上说,计步器可以用作计数器来确定给定时间段内的步数。买了这双鞋的跑步者可以将传感器与一部支持LE蓝牙的智能手机配对,并计算一次跑步期间的步数。这项技术可以在连接模式下使用,通过数据信道用计步器传感器发送事件更新,或者在无连接模式下对广播信道加以使用。
3.1.3 蓝牙性能
早在2006年,参考文献[63]就已经评估了BR蓝牙的性能。特别是,文献的作者们测试了几种不同的场景,每种场景中传输的文件大小固定,从200到5000 kB不等。在每次测试中,作者们将两个蓝牙设备分开一段固定的距离,距离分别为2、4或6米,还测试了两台设备被两堵墙分隔开的情况。这些测试的结果如图3-14[63]所示。显然,随着距离从2米变化到6米,文件大小似乎对性能并没有本质的影响,图上显示可以实现约为280 ~ 400 kbps的吞吐量。然而,当文件大小较小时,结果表明变化比较大。另外,在被两堵墙分开的情况下,吞吐量明显减小,在220~280kbps间变化。测试结果表明,原始的BR蓝牙物理层在个域通信范围内表现出良好的性能,给定的应用可以有效利用的数据速率范围为200~400kbps。这些速率适合于免手持的语音和低速互联网访问业务(网页浏览或电子邮件)。虽然BR蓝牙的最大广播速率为1Mbps,但很明显,用户可以实现的吞吐量非常小,只有最大速率的20%~40%。然而应该注意的是,给出的结果是基于特定的蓝牙收发设备实现的,因此采用其他厂商的设备和2006年以来开发的改进的收发设备前端进行测试,结果可能会有所不同。
图3-14 蓝牙性能,摘自参考文献[63]