6.1.2 IEEE 802.15.4协议栈

IEEE 802.15.4协议栈是根据开放系统互联(OSI)参考模型制定的,其中定义了两个层:物理层和MAC层,物理层是由射频收发器和底层控制模块组成的,MAC层为高层访问提供了访问物理信道的服务接口,IEEE 802.15.4协议栈结构如图6.3所示。

图6.3 IEEE 802.15.4协议栈结构

1. 物理层规范

在OSI参考模型中,物理层是模型的最底层,是保障信号传输的功能层,IEEE 802.15.4的物理层与OSI模型类似,主要负责信号的发送与接收,提供无线物理信道和MAC层之间的接口等,它为链路层提供的服务包括物理连接的建立、维持与释放,物理服务数据单元的传输,物理层管理和数据编码。

1)信道分配及调制方式

无线传感器网络的物理层定义了三个载波频段用于收发数据,这三个频段被称为工业、科学和医疗(ISM)频段,即2 400 MHz、868 MHz、915 MHz频段,在这三个频段上采用的发送数据的速率、信号处理过程以及调制方式上面都有一定的协议,如表6.1所示。

表6.1 载波信道特性表

其中,在2 450 MHz频段上定义了16个信道,在915 MHz频段上定义了30个信道,在868 MHz频段上定义了3个信道,根据信道的编号我们可以很容易地计算出各个物理信道的中心频率。

2)物理层帧结构

物理层的数据帧也可以称为物理层协议数据单元(PPDU),每个PPDU帧由同步头、物理帧头和PHY负载组成,如图6.4所示。同步头包括1个前导码和1个帧起始分隔符(Start of Frame Delimiter,SFD),前导码由4个全0的字节组成,收发器在接收前导码期间会根据前导码序列的特征完成片同步和符号同步;帧起始分隔符字段长度为1字节,它的值固定为0xA7,表明前导码已经完成了同步,开始接收数据帧。物理帧头中低7位用来表示帧长度,高位是保留位。物理帧的负载长度可变,它又称为物理服务数据单元(PHY Service Data Unit,PSDU)负载,一般用来承载MAC帧。

图6.4 PPDU帧结构

3)物理层功能的实现

所有的物理层服务均是通过物理层服务访问接口实现的,数据服务是通过物理层数据访问接口(PD-SAP)实现的,管理服务则是通过物理层管理实体访问接口(PLME-SAP)实现的,每个接口都提供了相关的访问原语。

(1)数据的发送与接收。通过PD-SAP提供的PD-data原语可以实现两个MAC层的MPDU(MAC Protocol Data Unit)传输。IEEE 802.15.4特意定义了三个与传输数据有关的原语:数据请求原语(PD-DATA.request)、数据确认原语(PD-DATA.confirm)和数据指示原语(PD-DATA.indication)。

数据请求原语主要用于处理MAC层的数据发送请求,参数为待发送数据报文长度以及待发送报文,由MAC层产生,物理层在接收到该原语时,首先确认底层的射频收发器已置于发送打开状态,然后控制底层射频硬件把数据发送出去。如果物理层在发送数据时,发现底层的射频收发器处于接收状态(RX-ON)或者未打开状态(TRX-OFF),则将通过数据确认原语告知上层,其中原语的参数为失效的原因;否则视为发送成功(SUCCESS),同样通过确认原语报告给上层。

数据指示原语主要用于向MAC层报告接收的数据。在物理层成功接收到一个数据报文后,将产生该原语并通告MAC层,其中参数为接收到的报文长度、具体的报文(PSDU)和LQI。LQI与数据无关,是物理层在接收当前数据报文时链路质量的一个量化值,上层可以借助这个参数进行路由的选择。

(2)物理信道的能量监测(Energy Detection,ED)。在IEEE 802.15.4网络形成时,先是一个FFD把自己设置为网络协调器,网络协调器在构建一个新的网络时,需要负责扫描所有的信道(在MAC层称为ED-SCAN),然后为自己的网络选择一个新的空闲信道。这个过程在底层是借助物理信道的能量监测来完成的。如果一个信道被别的网络占用,则体现在信道能量上的值是不一样的。标准定义了与之相关的两个原语:能量检测请求原语(PLME-ED.request)和能量检测确认原语(PLME-ED.confirm)。

能量检测请求原语由MAC层产生,为一个无参数的原语。物理层在接收到该原语后,将产生能量检测确认原语,把当前信道的状态和当前信道的能量值返回给MAC层。在具体的实现中,一般射频芯片会使用特定寄存器存放当前的信道状态信道的能量值。

(3)射频收发器的激活和关闭。出于对低功耗等要求的考虑,在高层无数据收发时,可以选择关闭底层射频收发器。标准定义了与之相关的两个原语:收发器状态设置请求原语(PLME-SET0TRX-STATE.request)和收发器状态设置确认原语(PLME-SET-TRX0STATE. confirm)。

收发器状态设置请求原语由MAC层产生,参数为需要设置的目标状态,包括射频接收打开、发送打开、收发关闭和强行收发关闭。物理层在接收到该原语后,将射频设置为对应的状态,并通过设置确认原语返回操作的结果。如果请求原语要求的状态与当前的射频状态不冲突,设备将通过设置确认原语返回操作成功。当收发器正在发送数据,要求设置为接收状态或关闭状态时,设置确认原语将返回发送忙(BUSY-TX)。同样地,如果收发器正在接收数据,却被要求设置成发送状态或关闭状态,设置确认原语将返回接收忙(BUSY-RX)。如果收发器要求设置的状态与当前状态一致,设置确认原语将直接返回该状态。如果设置原语要求的是强行关闭状态,则不考虑当前的射频收发状态,直接强制关闭射频收发器。

(4)空闲信道评估(Clear Channel Assessment,CCA)。由于IEEE 802.15.4标准的MAC层采用的是CSMA-CA机制访问信道,需要探测当前的物理信道是否空闲,物理层提供的CCA监测功能就是专门为此定义的。标准专门定义了两个与之相关的原语:CCA请求原语(PLME-CCA.request)与CCA确认原语(PLME-CCA.confirm)。

CCA请求原语由MAC层产生,用于向物理层询问当前的信道状况,物理层在收到该原语后,如果当前的射频收发状态设置为接收状态,将进行CCA操作(读取物理芯片中相关的状态寄存器),然后通过CCA确认原语返回信道空闲(IDLE)或信道繁忙(BUSY)状态。如果当前射频收发器处于关闭状态或者发送状态,CCA确认原语将对应返回TRX=OFF或TRX-OFF。

(5)链路质量指示(LQI)。高层的协议往往需要依据底层的链路质量来选择路由,物理层在接收一个报文时可以顺带返回当前的LQI值。物理层主要通过底层的射频硬件支持来获取LQI。

(6)物理层属性参数的获取与设置。在协议栈里面,每一层协议都维护着一个信息库(PAN Information Base,PIB)用于管理该层,里面具体存放着与该层相关的一些属性参数,如最大报文长度等。在高层可以通过原语获取或修改下一层信息库里面的属性参数。IEEE 802.15.4物理层同样维护着这样一个信息库,并提供了4个相关的原语:属性参数获取请求原语(PLME-GET.request)、属性参数获取确认原语(PLME-GET.confirm)、属性参数设置请求原语(PLME-SET.request)和属性参数设置确认原语(PLME-SET.confirm)。

2. MAC层规范

在无线传感器网络中,存在一个竞争使用问题,因此,和OSI模型不同的是,IEEE 802.15.4标准将无线传感器网络的数据链路层分为两个子层,即逻辑链路子层(LLC)和介质控制访问子层(MAC),MAC层主要负责解决共享信道问题。

IEEE 802.15.4标准规定MAC层实现的功能有:

• 采用CSMA/CA机制来解决信道冲撞问题;

• 网络协调器产生并发送信标帧,用于协调整个网络;

• 支持PAN网络的关联和取消关联操作;

• 支持时隙保障(CTS)机制;

• 支持不同设备的MAC层间可靠传输。

IEEE 802.15.4标准根据网络配置的不同提供了两种信道访问机制:在无信标使能的网络中采用无时隙的CSMA/CA机制,在信标使能的网络中采用带时隙的CSMA/CA机制。

1)信道的时段分配

在开始讲解信道的时段分配之前,我们首先来认识一个概念—超帧。超帧是一种用来组织网络通信时间分配的逻辑结构,它将通信时间划分为活跃和不活跃两个时段,如图6.5所示。在不活跃期间,PAN网络中的设备不会相互通信,从而进入睡眠状态来节省能量。网络的通信在活跃期间进行,活跃期间又可以分为三个阶段,即信标帧发送时段、竞争访问时段(CAP)和非竞争访问时段(CFP),总共16个等长的时隙,每个时隙的长度、竞争访问时段包含的时隙数等参数都由网络协调器来控制设定,并通过信标帧广播到整个网络。

图6.5 超帧结构

在竞争访问时段,设备通过CSMA/CA机制与网络协调器通信。非竞争访问时段又可分为几个GTS,网络协调器在这个时段内只能与指定的设备进行通信。网络协调器在每个超帧时段最多可以分配7个GTS,1个GTS可以占有多个时隙。

在协议实现时,设置合适的参数可以使每个设备的活跃时段只占超帧周期很短的一部分,设备大部分时间可以处于睡眠状态,还可以为低能耗应用提供支持。此外,协议还可以通过超帧方式实现多簇网络,每个簇在自己的活跃时段内传送数据,将各个簇的活跃时段完全错开,每个设备在活跃时段内与自己的簇头(协调器)通信,以此实现创建信道无冲突的访问。不过这种方式需要整个网络保持精确的时钟同步,并且中间协调器要维护本簇内的信标同步,又要与其父节点实现信标同步。

2)CSMA/CA算法

在CAP内,各个设备采用CSMA/CA机制竞争访问信道,在设备与网络协调器之间传送数据帧或命令帧(不包含信标帧与应答帧)。CSMA/CA机制的时间计算以回退周期(Backoff Period)为单位,可以理解为将整个CAP离散地划分成多个回退周期,然后CSMA/CA里面的所有时间长度都以多少个回退周期来度量。特别地,在基于时隙的CSMA/CA机制里,回退周期必须与超帧边界保持对齐,对于非时隙的CSMA/CA没有这个限制。

CSMA/CA算法的流程如图6.6所示,每个采用CSMA/CA算法的设备需要维护三个变量:NB、CW和BE。NB记录在当前帧传输时已经回退的次数,初始值设置为0,每回退一次值增加1。CW记录竞争窗口的尺寸,即监测到信道空闲后还需等待多长时间才能真正开始发送数据,初始值为2,这个变量仅用在基于时隙的CSMA-CA中,在非时隙的CSMA/CA中监测到信道空闲后将立即发送。BE是一个回退指数,指在冲突后再次开始监测信道需要等待的时间(2BE−1),BE的初始值为一个常数,不同网络设置的BE值不同。在信道访问期间,由于CCA监测要求将射频收发器置为接收状态,这时将直接忽略接收到的数据。

按要求初始化上述参数后,对于基于时隙的CSMA/CA算法,需要首先定位到回退时间的边界,然后等待指定的时间,开始CCA信道探测,直到信道为空闲状态后,再等CW个回退周期长度,最后发送数据。考虑到CAP与CFP的边界,发送程序必须确保当前的数据可以在CAP内完成,才会进行发送,否则将保存到下一个超帧中发送。非时隙的CSMA/CA机制算法更简单,没有竞争窗口的概念,也不用定位到回退时间的边界,监测到空闲信道后就可以直接发送数据。在发送过程中,如果多次探测信道的结果都为忙(NB大于某个设定的值),则需要向上层报告发送失败,由上层处理。

为减少冲突以提高整个网络的吞吐量,在两种特殊情况时不采用CSMA/CA进行数据的发送:一种是应答帧,另外一种就是紧接在数据请求帧之后的数据帧,它们可以直接发送。

3)数据传输模型

LR WPAN中存在三种数据传输方式,即设备发送数据给网络协调器、网络协调器发送数据给设备、对等设备之间的数据传输。星状拓扑网络中只存在前两种数据传输方式,因为只在网络协调器与设备之间交换数据;而在点到点拓扑网络中,三种数据传输方式都存在。同时标准还提供两种可以选择的通信方式,即信标使能通信(Beacon-Enabled)和无信标使能通信(Nonbeacon-Enabled)。

在信标使能的网络中,网络建好后,网络协调器周期性广播信标帧以标示超帧的开始。在这种方式下,如果设备需要传输数据给网络协调器,则设备在收到网络协调器广播的信标帧后将进行网络同步,定位各时隙,然后采用基于时隙的CSMA-CA信道访问机制在竞争访问时段内进行信道竞争访问,最后完成数据的传输。设备依据上层的要求,在传输的帧中设置是否需要应答,网络协调器据此发送应答帧。如果网络协调器需要传输数据给目标设备,则网络协调器在信标帧中携带目标设备相关信息;目标设备在收到信标帧后,采用基于时隙的CSMA/CA机制发送MAC层数据请求命令帧。网络协调器首先按要求决定是否发送应答帧,然后也采用基于时隙的CSMA/CA机制把数据发送出去。在得到确认后,网络协调器从自己的发送缓存中删除对应的数据;若未收到确认,网络协调器重发数据。在信标使能的网络中,如果存在应答确认帧,则其一般直接跟在对应帧后传输给源设备,不采用信道竞争访问,因为应答帧长一般比较短。

图6.6 CSMA/CA算法的流程图

在无信标使能的网络中,网络协调器不发送信标帧,各个设备采用无时隙的CSMA/CA机制访问信道,完成信息的传输。在这种方式下,如果设备需要传输数据给网络协调器,设备将直接采用非时隙的CSMA/CA机制将数据传送给网络协调器;网络协调器同样依据数据帧中的应答域来决定是否发送应答帧。如果网络协调器需要传输数据给目标设备,由于没有信标帧,网络协调器只能为目标设备保存好数据,然后被动地等待目标设备的数据请求命令帧。目标设备可能会根据应用层的要求周期性地询问网络协调器,网络协调器通过回应一个确认帧表示是否有数据存在,如果有,网络协调器同样采用无时隙的CSMA/CA机制发送数据给目标设备。在无信标使能的网络中,如果存在应答帧,也直接跟在对应帧后传输给源设备,而不采用信道竞争访问机制。

在点到点的IEEE 802.15.4网络中,每个设备均可以与其无线辐射范围内的设备进行通信。为了保证通信的有效性,这些设备需要持续保持接收状态或实现严格的同步。

3. MAC层的帧格式

MAC层帧结构的设计目标就是在保持低复杂度的前提下,实现多噪声无线信道环境下的可靠数据传输。MAC帧格式如图6.7所示。

图6.7 MAC帧格式

每个MAC层的帧包括三部分:帧头、负载和帧尾。帧头由帧控制信息、帧序列号和地址信息组成。负载长度大小可变,具体内容由帧类型决定。帧尾是一个16位的FCS校验码。