1. 介绍

ZigBee MAC层,即IEEE 802.15.4 MAC层,这里主要介绍了802.15.4-2003版本

MAC层处理所有对物理无线信道的访问控制,并负责下面的任务

- 为协调器生成网络信标
- 与网络信标同步
- 与PAN网络关联和解除关联
- 设备安全支持
- 使用CSMA-CA机制进行信道访问
- 处理和维护GTS机制
- 在两个对等MAC实体间提供可靠链路

2. 服务

MAC层通过MCPS-SAP和MLME-SAP提供SSCS(Service Specific Convergence Sublayer)和PHY之间的接口,

MAC包括一个称为MLME的管理实体;MLME提供了层管理服务接口,通过该接口可以调用层管理功能;MLME还负责维护与MAC有关的被管理对象的数据库,该数据库被称为MAC PIB

MAC数据服务,通过MCPS-SAP(MAC Common Part Sublayer Data SAP)访问;PHY管理服务,通过MLME-SAP访问

参考模型如下图所示

2.1 数据服务

MCPS-SAP支持在对等SSCS实体之间传输SPDU(SSCS Protocol Data Unit)

MCPS-SAP支持的原语为MCPS-DATA、MCPS-PURGE(RFD可选支持)
MCPS-DATA包括Request、Confirm、Indication;MCPS-PURGE包括Request、Confirm

2.1.1 MCPS-DATA

2.1.1.1 MCPS-DATA.request

本地SSCS实体通过MCPS-DATA.request传输SPDU到对等SSCS实体;MAC层实体收到MCPS-DATA.request原语时开始传送所提供的MSDU

为了发送帧,MAC层首先通过向PHY发送具有TX_ON状态的PLME-SET-TRX-STATE.request原语来启用发送器;在接收到具有SUCCESS或TX_ON状态的PLME-SET-TRX-STATE.confirm原语时,然后通过发出PD-DATA.request原语来发送构造的MPDU;最后,在接收到PD-DATA.confirm原语时,MAC子通过向PHY发出状态为RX_ON或TRX_OFF的PLME-SET-TRX-STATE.request原语来禁用发送器

SrcAddrMode和DstAddrMode参数中的标志对应于帧控制字段中的寻址子字段,用于构造MHR的帧控制和寻址字段

TxOptions参数指示MAC层如何传输MSDU:
- 当GTS传输被设置、目的地地址不存在或者设备协调器,则忽略间接传输位
- 当GTS传输被设置,MAC层将确定其是否具有有效的GTS
- 当GTS传输未设置,MAC层首先检查CAP,对于启用beacon的PAN使用时隙CSMA-CA来传输;对于未启用beacon的PAN使用非时隙CSMA-CA来传输
- 当间接传输被设置并且设备为协调器时,则原语中包含的信息将被添加到待处理事务列表中
- 当安全性未被设置,MAC层不对数据帧执行任何安全操作
- 当安全性被设置,MAC层从ACL条目获取与DstAddr参数对应的密钥和安全信息PIB;如果DstAddrMode参数为无地址,MAC层将获得与PAN协调器的地址相对应的密钥和安全信息
- 当确认传输被设置,MAC层在MPDU传输之后立即启用接收器,并在macAckWaitDuration时间内等待确认;如果MAC层在此时间内未收到确认,则它最多进行aMaxFrameRetries次重传

该原语语法和参数为

MCPS-DATA.request(SrcAddrMode, SrcPANId, SrcAddr, DstAddrMode, DstPANId, DstAddr, msduLength, msdu, msduHandle, TxOptions)
- SrcAddrMode: 源寻址模式, 取值如下0x00: 无地址0x01: 保留0x02: 16位短地址0x03: 64位扩展地址
- SrcPANId:    源MSDU的16位PAN标识符
- SrcAddr:     源MSDU的设备地址
- DstAddrMod:  目的寻址模式, 取值同SrcAddrMode
- DstPANId:    目的MSDU的16位PAN标识符
- DstAddr:     目的MSDU的设备地址
- msduLength:  待传输MSDU的字节数, 取值范围为0-aMaxMACFrameSiz
- msdu:        待传输MSDU的
- msduHandle:  待传输MSDU关联的句柄
- TxOptions:   此MSDU的传输选项, 取值为以下或值0x01: 确认传输0x02: GTS传输0x04: 间接传输0x08: 启用安全性传输

2.1.1.2 MCPS-DATA.confirm

MCPS-DATA.confirm是于MCPS-DATA.request原语的回应,MAC层通过该原语向SSCS通知传输请求的结果;其中SUCCESS表示传输成功

该原语语法和参数为

MCPS-DATA.confirm(msduHandle, status)
- msduHandle: 与MSDU相关联的句柄
- status:     最后一次MSDU传输的状态, 取值如下: SUCCESS、TRANSACTION_OVERFLOWTRANSACTION_EXPIRED、CHANNEL_ACCESS_FAILUREINVALID_GTS、NO_ACK、UNAVAILABLE_KEYFRAME_TOO_LONG、FAILED_SECURITY_CHECKINVALID_PARAMETER

2.1.1.3 MCPS-DATA.indication

MCPS-DATA.indication用于MAC层实体向SSCS通知数据的到达

该原语语法和参数为

MCPS-DATA.indication(SrcAddrMode, SrcPANId, SrcAddr,DstAddrMode, DstPANId DstAddr,msduLength, msdu,mpduLinkQuality, SecurityUse, ACLEntry)
- ...
- mpduLinkQuality: 在接收MPDU期间测量的LQ值
- SecurityUse:     指示接收的数据帧是否正在使用安全性, 取值为TRUE和FALSE
- ACLEntry:        发送方数据帧关联的ACL条目的macSecurityMode值, 取值为0x00-0x08当未找到该条目时设置为0x08

2.1.2 MCPS-PURGE

MCPS-PURGE.request原语允许高层从事务队列中清除MSDU

MAC层收到该原语后尝试在其事务队列中找到由msduHandle参数指示的MSDU并进行处理;处理完成后通过MCPS-PURGE.confirm原语来反馈请求结果

该原语语法和参数为

MCPS-PURGE.request(msduHandle)
MCPS-PURGE.confirm(msduHandle, status)
- msduHandle: 待从事务队列中清除的MSDU的句柄
- status:     请求结果, 取值为SUCCESS或INVALID_HANDLE

2.1.3 消息序列图

下图显示了两个设备进行直接数据传输的消息序列

下图显示了两个设备进行间接数据传输的消息序列

2.2 管理服务

MLME-SAP允许高层和MLME之间传输管理命令,下表总结了MLME通过MLME-SAP接口支持的原语

!!! 真的是太多了,笔者看的头大,这里主要进行介绍,关于其具体事宜等参考规范!!!

2.2.1 关联原语

关联(MLME-ASSOCIATE)原语定义了设备如何与PAN进行关联

该原语语法如下

- MLME-ASSOCIATE.request(LogicalChannel, CoordAddrMode, CoordPANId, CoordAddress, CapabilityInformation, SecurityEnable)
- MLME-ASSOCIATE.indication(DeviceAddress, CapabilityInformation, SecurityUse, ACLEntry)
- MLME-ASSOCIATE.response(DeviceAddress, AssocShortAddress, status, SecurityEnable)
- MLME-ASSOCIATE.confirm(AssocShortAddress, status)

其交互序列图如下

2.2.2 解除关联原语

解除关联(MLME-DISASSOCIATE)原语定义了设备如何与PAN解除关联

该原语语法如下

- MLME-DISASSOCIATE.request(DeviceAddress, DisassociateReason, SecurityEnable)
- MLME-DISASSOCIATE.indication(DeviceAddress, DisassociateReason, SecurityUse, ACLEntry)
- MLME-DISASSOCIATE.confirm(status)

其交互序列图如下

2.2.3 信标通知原语

信标通知(MLME-BEACON-NOTIFY)原语定义了设备在正常操作期间收到信标通知相关事宜

该原语语法如下

- MLME-BEACON-NOTIFY.indication(BSN, PANDescriptor, PendAddrSpec, AddrList, sduLength, sdu)

2.2.4 PIB属性获取原语

PIB属性获取(MLME-GET)原语定义了如何通过PIB属性获取其值

该原语语法如下

- MLME-GET.request(PIBAttribute)
- MLME-GET.confirm(status, PIBAttribute, PIBAttributeValue)

2.2.5 GTS管理原语

GTS管理(MLME-GTS)原语定义了如何请求和维护GTS

该原语语法如下

- MLME-GTS.request(GTSCharacteristics, SecurityEnable)
- MLME-GTS.confirm(GTSCharacteristics, status)
- MLME-GTS.indication(DevAddress, GTSCharacteristics, SecurityUse, ACLEntry)

下图显示了由设备发起的GTS分配的消息序列图

下图显示了由设备(a)和PAN协调器(b)发起的GTS解除分配的消息序列图

2.2.6 孤儿通知原语

孤儿通知(MLME-ORPHAN)原语定义协调器如何发出孤儿设备的通知

该原语语法如下

- MLME-ORPHAN.indication(OrphanAddress, SecurityUse, ACLEntry)
- MLME-ORPHAN.response(OrphanAddress, ShortAddress, AssociatedMember, SecurityEnable)

其交互序列图如下

2.2.7 MAC层重置原语

MAC层重置(MLME-RESET)原语定义了如何重置MAC层到默认值

该原语语法如下

- MLME-RESET.request(SetDefaultPIB)
- MLME-RESET.confirm(status)

2.2.8 接收器使能原语

接收器使能(MLME-RX-ENABLE)原语定义了设备如何在给定时间启用或禁用接收器

该原语语法如下

- MLME-RX-ENABLE.request(DeferPermit, RxOnTime, RxOnDuration)
- MLME-RX-ENABLE.confirm(status)

其交互序列图如下,包括启用信标的PAN(a)和信标未启用的PAN(b)两种情况

2.2.9 信道扫描原语

信道扫描(MLME-SCAN)原语定义了设备在通信信道中了解其能量使用情况或PAN的存在状态

该原语语法如下

- MLME-SCAN.request(ScanType, ScanChannels, ScanDuration)
- MLME-SCAN.confirm(status, ScanType, UnscannedChannels,                     ResultListSize, EnergyDetectList, PANDescriptorList)

下图显示了主动扫描的消息序列图

下图显示了被动扫描的消息序列图

2.2.10 通信状态原语

通信状态(MLME-COMM-STATUS)原语定义了MLME关于传输状态异常时与高层的通信

该原语语法如下

- MLME-COMM-STATUS.indication(PANId, SrcAddrMode, SrcAddr, DstAddrMode, DstAddr, status)

2.2.11 PIB属性设置原语

PIB属性设置(MLME-SET)原语定义了如何设置PIB属性值

该原语语法如下

- MLME-SET.request(PIBAttribute, PIBAttributeValue)
- MLME-SET.confirm(status, PIBAttribute)

2.2.12 超帧配置原语

超帧配置(MLME-START)原语定义了FFD设备如何使用新的超帧配置发起PAN、设备发现、在PAN上发送信标、停止发送信标

该原语语法如下

- MLME-START.request(PANId, LogicalChannel, BeaconOrder, SuperframeOrder, PANCoordinator, BatteryLifeExtension, CoordRealignment, SecurityEnable)
- MLME-START.confirm(status)

其交互序列图如下

2.2.13 协调器同步原语

协调器同步(MLME-SYNC、MLME-SYNC-LOSS)原语定义了如何实现与协调器的同步和将状态传送到高层

该原语语法如下

- MLME-SYNC.request(LogicalChannel, TrackBeacon)
- MLME-SYNC-LOSS.indication(LossReason)

其交互序列图如下,包括单个同步请求(a)和跟踪同步请求(b)两种情况

2.2.14 轮询原语

轮询(MLME-DISASSOCIATE)原语定义如何从协调器请求数据

该原语语法如下

- MLME-POLL.request(CoordAddrMode, CoordPANId, CoordAddress, SecurityEnable)
- MLME-POLL.confirm(status)

其交互序列图如下,包括协调器无待处理数据(a)和协调器有待处理数据(b)两种情况

3. MPDU格式

MPDU, MAC Protocol Data Unit, 即MAC帧

注意:MAC帧被描述为特定顺序的字段序列;所有帧格式按照从左到右顺序发送,其中最左边的比特首先在时间上发送;长度超过单八位字节的字段按从包含最低编号位的八位字节到包含最高编号位的八位字节的顺序发送到PHY

3.1 帧格式

MPDU帧由以下组成部分

- MHR, MAC Header, 包括帧控制, 序列号和地址信息
- MAC Payload, 包含不同的帧类型的有效载荷, 长度可变; 其中, 确认帧不包含该字段
- MFR, MAC Footer, 帧结束字段, 包含FCS

通用格式如下图所示

3.2 字段描述

MPDU各字段含义如下

Frame Control: 帧控制字段,包含定义帧类型,寻址字段和其他控制标志的信息
Frame type取值如下
 

Security Enabled为安全使能字段: 0表示帧未受MAC层加密保护,1则应使用存储在MAC PIB中的密钥来保护帧,以获得当前帧指示的安全关系

Frame Pending为帧挂起字段: 1表示有更多数据待发送,接收方应通过向设备发送另一个数据请求命令来进行检索;该字段仅用于在CAP期间并启用信标的PAN操作时,或未启用非信标的PAN操作的任意时间

Acknowledgment Request为确认请求字段: 1表示接收方应在确定帧有效后发送确认帧

Intra-PAN字段: 该字段指定MAC帧是在PAN内还是PAN间发送;当设置为1并且存在目的和源地址时,则该帧不应包含Source PAN identifier;当设置为0并且存在目的和源地址,则该帧应包含Destination & Source PAN Identifier

Destination Addressing Mode为目的寻址模式字段: 如果该子字段等于0并且帧类型子字段未指定该帧是确认或信标帧,则源寻址模式字段应该被指定,这表示该帧被定向到由Source PAN Identifier指定PAN标识符的PAN协调器
Source Addressing Mode为源寻址模式字段: 如果该子字段等于0并且帧类型子字段未指定该帧是确认,则目的寻址模式字段应该被指定,这表示该帧源自由Destination PAN Identifier指定PAN标识符的PAN协调器

Sequence Number: 序列号字段,指定帧的唯一序列标识符
对于信标帧,序列号字段应指定BSN;每个协调器应将其当前BSN值存储在MAC PIB的macBSN属性中,并初始化为随机值;协调器应将macBSN属性的值复制到信标帧的序列号字段中,每次生成一个,然后将其加1

对于数据帧、确认帧或命令帧,序列号字段应指定对应的DSN(Data Sequence Number);每个设备都应仅支持一个DSN,应将其存储在MAC PIB属性macDSN中,并初始化为随机值;设备应将macDSN属性的值复制到数据或命令帧的序列号字段中,每次生成一个,然后将其加1

如果帧设置了Acknowledgment Request,则接收方应将接收到的数据或命令帧中的DSN复制到相应确认帧的DSN字段中;如果在macAckWaitDuration时间后没有收到确认帧,则始发设备的MAC层应使用与原始传输中相同的DSN重新发送帧

Destination PAN Identifier: 目的PAN标识符字段,长度为2 bytes,用于指定待接收者的唯一PAN标识符;当其值为0xffff表示广播PAN标识符,该标识符应被当前收听该信道的所有设备接受为有效的PAN标识符
注意:仅当帧控制字段的Destination Addressing Mode≠0时,该字段才应包括在MAC帧中

Destination Address: 目的地址字段,其长度为2 bytes或8 bytes,由Destination Addressing Mode字段值来确定,用于指定帧的预期接收者的地址;当其值为0xffff表示广播短地址,该地址应被当前收听该信道的所有设备接受为有效短地址
注意:仅当帧控制字段的Destination Addressing Mode≠0时,该字段才应包括在MAC帧中

Source PAN Identifier: 源PAN标识符字段,长度为2 bytes,用于指定帧的发起者的唯一PAN标识符
注意:仅当帧控制字段的Source addressing mode≠0 && Intra-PAN=0,该字段才应包括在MAC帧中

Source Address: 源地址字段,其长度为2 bytes或8 bytes,由Source Addressing Mode字段值来确定,用于指定帧的发起者的地址
注意:仅当帧控制字段的Source Addressing Mode≠0,该字段才应包括在MAC帧中

Frame Payload: 帧有效载荷字段,长度可变,包含特定于各个帧类型的信息;如果Security Enabled设置为1,则帧有效负载受到选择的安全套件的保护

FCS: Frame Check Sequence,帧校验序列,包含16位ITU-T CRC,其计算包括MHR和MAC Payload

3.3 帧类型

MAC帧类型包括:信标帧(Beacon)、数据帧(Data)、确认帧(Acknowledgment)和命令帧(MAC Command)

3.3.1 信标帧

信标帧格式如下

GTS Fields字段的格式如下

Pending Address字段的格式如下

3.3.1.1 Beacon MHR

Beacon MHR应包含帧控制字段,序列号字段,源PAN标识符字段和源地址字段

在帧控制(Frame Control)字段中,帧类型字段应为指示信标帧的值(即000),并且源寻址模式字段应被设置为适合协调器的地址的值;如果使用安全性,Security Enabled字段应设置为1;所有其他字段应设置为0并在接收时忽略

序列号(Beacon Sequence Number)字段为macBSN的当前值

源寻址信息(Source Addressing Information)字段包括源PAN标识符和源地址,分别为发送信标设备的PAN标识符和地址

3.3.1.2 Superframe Specification

信标顺序(Beacon Order)字段用于指定信标的传输间隔;BI(Beacon Interval)计算公式如下,BO代表信标顺序的值
- 0≤BO≤14: BI = aBaseSuperframeDuration * 2BO
- BO=15:则协调器不应发送信标帧;但是在收到信标请求命令时即使BO=15仍然可以发送信标帧

超帧顺序(Superframe Order)字段用于指定超帧的有效时间,包括信标帧传输时间;协调器只能在超帧活动期间与其PAN进行交互;SD(Superframe Duration)计算公式如下,SO代表超帧顺序的值
- 0≤SO≤BO≤14: SD = aBaseSuperframeDuration * 2SO,
- SO=15:则在发送信标之后超帧不应该是活动的

最终的CAP时隙(Final CAP Slot)字段用于指定CAP使用的最终超帧时隙;CAP的持续时间应≥aMinCAPLength;但是,在执行GTS维护期间允许所需的信标帧长度的临时增加

电池寿命延长(Battery Life Extension)字段,如果在CAP期间发送到信标设备的帧需要在信标的IFS周期之后的第六个完全退避时间段内或之前开始,应设置为1

PAN协调器(PAN Coordinator)字段,当PAN协调器正在发送信标帧时设置为1

关联许可(Association Permit)字段,当macAssociationPermit设置为TRUE时(即协调器正在接受PAN上的关联)应设置为1); 如果协调器当前不接受其网络上的关联请求,该字段应设置为0

3.3.1.3 GTS Specification

GTS规范字段格式如下

GTS描述符计数(GTS Descriptor Count)字段指定了包含在信标帧的GTS列表字段中的3个八位字节GTS描述符的数量
如果该子字段的值大于零,则允许CAP的大小低于aMinCAPLength以适应由包含子字段引起的信标帧长度的临时增加
如果该子字段的值为零,则不存在信标帧的GTS方向字段和GTS列表字段

GTS许可(GTS Permit)字段,当如果macGTSPermit设置为TRUE时(即PAN协调器正在接受GTS请求)应设置为1

3.3.1.4 GTS Directions

GTS方向字段格式如下

GTS方向掩码(GTS Directions Mask)字段包含一个掩码,用于标识超帧中GTS的方向
掩码中的最低位对应于信标帧的GTS列表字段中包含的第一个GTS的方向,其余部分依次按照顺序指示

如果GTS是仅接收GTS,则每个比特应设置为1;如果GTS是仅发送GTS,则每个比特应设置为0

注意:GTS方向是相对于设备的数据帧传输方向来定义的

3.3.1.5 GTS List

GTS列表字段的大小为信标帧的GTS规范字段中GTS描述符计数指定的值,包含了正在维护的GTS的GTS描述符列表
GTS描述符的最大数量应限制为7

每个GTS描述符的长度为3 bytes,其格式如下

设备短地址(Device Short Address)字段包含了GTS描述符所对应的设备的短地址
GTS起始时隙(GTS Starting Slot)字段包含GTS开始的超帧时隙
GTS长度(GTS Length)字段包含GTS活动的连续超帧时隙的数量

3.3.1.6 Pending Address Specification

待处理地址规范字段格式如下

待处理短地址数量(Number of Short Addresses Pending)字段表示信标帧的地址列表字段中包含的短地址的数量

待处理扩展地址数量(Number of Extended Addresses Pending)字段表示信标帧的地址列表字段中包含的扩展地址的数量

3.3.1.7 Pending Address List

待处理地址列表字段的大小由信标帧的待处理地址规范(Pending Address Specification)字段中指定的值确定,指定了当前具有协调器待处理消息的设备的地址列表

注意: 地址列表不应包含广播短地址0xffff

待处理地址的最大数量为7,可以包括短地址和扩展地址;所有待处理的短地址应首先出现在列表中,然后是任何扩展地址

如果协调器能够存储七个以上的事务,它应以先到先得的方式在其信标中指示它们,确保信标帧最多包含七个地址

3.3.1.8 Beacon Payload

信标有效载荷字段包含高层在信标帧指定的数据,其最大长度为aMaxBeaconPayloadLength字节
如果macBeaconPayloadLength非零,则macBeaconPayload中包含的数据应复制到该字段中

如果在输出信标帧上需要安全性,则应根据与aExtendedAddress相对应的安全套件处理信标有效载荷字段中的数据

如果输入帧的帧控制字段的安全使能字段设置为0,则将信标有效载荷字段直接传递给高层
如果输入帧的帧控制字段的安全使能字段设置为1,则设备应根据与输入帧的源地址相对应的安全套件处理信标有效载荷字段,然后将处理后的数据传递到高层

如果设备接收到存在有效载荷字段的信标,则它应将其传递给高层,然后处理超帧规范字段和地址列表字段中包含的信息
如果MAC层接收到不存在有效载荷字段的信标,则它应立即处理超帧规范字段和地址列表字段中包含的信息

3.3.2 数据帧

数据帧格式如下

数据帧的字段顺序应遵照MAC帧通用格式的顺序

3.3.2.1 Data MHR

数据帧的MHR应包含帧控制字段,序列号字段,目的/源PAN标识符/地址字段

在帧控制(Frame Control)字段中,帧类型字段应为指示数据帧的值(即001),其他字段应根据数据帧的预期用途进行适当设置

序列号(Sequence Number)字段为macDSN的当前值

寻址(Addressing)字段应包括目的地址字段和/或源地址字段,具体取决于帧控制字段中的设置

3.3.2.2 Data payload

数据帧的有效载荷应包含高层请求MAC层发送的数据序列

如果在输出数据帧上需要安全性
- 如果存在目的地址,应根据与目的地址对应的安全套件处理数据有效载荷字段中的数据
- 如果不存在目的地址,应根据macCoordExtendedAddress对应的安全套件处理数据有效载荷字段中的数据

如果输入帧的帧控制字段的安全使能字段设置为0,则将数据有效载荷字段直接传递给高层
如果输入帧的帧控制字段的安全使能字段设置为1,则设备应根据其选择的安全套件处理数据有效载荷字段,然后将处理后的数据传递到高层

3.3.3 确认帧

确认帧格式如下

确认帧的字段顺序应遵照MAC帧通用格式的顺序,其MHR只包含帧控制字段,序列号字段

在帧控制(Frame Control)字段中,帧类型字段应为指示数据帧的值(即010);帧挂起字段应根据发送设备是否有更多的数据来设置;所有其他子字段应设置为0并在接收时忽略

序列号(Seuqence Number)字段为待确认帧的序列号的值

3.3.4 命令帧

命令帧格式如下

命令帧的字段顺序应遵照MAC帧通用格式的顺序

3.3.4.1 Command MHR

命令帧的MHR应包含帧控制字段,序列号字段,目的/源PAN标识符/地址字段

在帧控制(Frame Control)字段中,帧类型字段应为指示命令帧的值(即011),其他字段应根据数据帧的预期用途进行适当设置

序列号(Data Sequence Number)字段为macDSN的当前值

寻址信息(Addressing Information)字段应包括目的地址字段和/或源地址字段,具体取决于帧控制字段中的设置

3.3.4.2 Command Type

命令帧标识符字段表示正在使用的MAC命令,该字段取值参考下一章节

3.3.4.3 Command Payload

命令有效载荷字段包含MAC命令本身。

如果在传出的命令帧上需要安全性
- 如果存在目的地址,应根据与目的地址对应的安全套件处理命令有效载荷字段中的数据
- 如果不存在目的地址,应根据macCoordExtendedAddress对应的安全套件处理命令有效载荷字段中的数据

如果输入帧的帧控制字段的安全使能字段设置为0,则将命令有效载荷字段包含预期的MAC命令
如果输入帧的帧控制字段的安全使能字段设置为1,则设备应根据其选择的安全套件处理命令有效载荷字段,以便确定预期的MAC命令

下一章节描述了各个命令的格式

4. MAC命令帧

下表列出了MAC层定义的命令帧;FFD应能够发送和接收所有命令帧类型,而RFD的要求参考下表

注意:MAC命令只能在CAP中用于启用信标的PAN,或者在任何时候用于启用非信标的PAN

MLME如何构建单个传输命令的详细信息,参考下面的章节;MAC命令接收应遵守章节XXX中描述的过程

4.1 关联和解除关联

关联(Assiciation)和解除关联(Disassociation)命令用于允许设备与PAN关联或解除关联

4.1.1 关联请求命令

关联请求(Association request)命令允许非关联设备请求与协调器的PAN网络进行关联,PAN网络由扫描过程获取

其格式如下(其中,Command Frame Identifier取值为0x01)

4.1.1.1 MHR

=== 帧控制(Frame Control)

源寻址模式(Source Addressing Mode)字段均设置为3(即64位扩展寻址);
目的寻址模式(Destination Addressing Mode)字段应被设置为与关联请求命令所参考的信标帧中指示的模式
安全性(Security Enabled)相关此处不再累述
帧挂起(Frame Pending)字段应设置为0并在接收时忽略
确认请求(Acknowledgment Request)字段设置为1

=== 目的PAN标识符(Destination PAN Identifier) & 目的地址(Destination Address)

目的PAN标识符(Destination PAN Identifier)字段为要关联的PAN的标识符
目的地址(Destination Address)字段为由协调器信发出的信标帧中指定的地址

=== 源PAN标识符(Source PAN Identifier)& 源地址(Source Address)

源PAN标识符(Source PAN Identifier)字段为广播PAN标识符(即0×ffff)
源地址(Source Address)字段为aExtendedAddress的值

4.1.1.2 Capability information

能力信息字段的格式如下

备用PAN协调器(Alternate Pan Coordinator)字段用于指示设备是否能够成为PAN协调器

设备类型(Device Type)字段用于指示设备是为FFD(取1)还是RFD(取0)

电源(Power Source)字段用于指示设备是否从交流电接收电源

空闲时休眠接收器(Receiver On When Idle)字段用于指示设备在空闲期间是否(是取0,否取1)关闭其接收器以节省功率

安全能力(Security Capability)字段用于指示设备是否(是取1,否取0)能够发送和接收使用【Security suite specifications】中指定的安全套件保护的MAC帧

分配地址(Allocate Address)字段指示设备是否(是取1,否取0)希望协调器在关联后分配短地址;当取值为0时,协调器则应将0xfffe的特殊短地址分配给设备,并通过关联响应命令返回,而此时设备应仅使用其64位扩展地址在PAN上进行通信

4.1.2 关联响应命令

关联响应(Association response)命令用于协调器回应来自设备的关联请求结果;该命令只能由协调器发送到待关联设备

其格式如下(其中,Command Frame Identifier取值为0x02)

4.1.2.1 MHR

--- 帧控制(Frame Control)

源&目的寻址模式(Source & Destination Addressing Mode)字段均设置为3(即64位扩展寻址)
安全性(Security Enabled)相关此处不再累述
帧挂起(Frame Pending)字段应设置为0并在接收时忽略
确认请求(Acknowledgment Request)字段设置为1

--- 目的/源PAN标识符(Destination/Source PAN Identifier) & 目的/源地址(Destination/Source Address)

目的/源PAN标识符(Destination/Source PAN Identifier)字段为macPANId
目的地址(Destination Address)字段为设备请求关联的扩展地址
源地址(Source Address)字段为aExtendedAddress的值

4.1.2.2 Short address

当协调器无法将此设备与其PAN关联,设置此字段为0xffff,同时设置关联状态(Association Status)字段指示失败的原因

当协调器能够将设备与其PAN关联,该字段为设备在PAN上的通信中可以使用的短地址,直到它被解除关联

当该字段为0xfffe指示设备已成功与PAN关联,但尚未分配短地址;此时设备应仅使用其64位扩展地址在PAN上进行通信

4.1.2.3 Association status

关联状态字段取值如下

4.1.3 解除关联通知命令

解除关联通知(Disassociate Notification)命令用于通知关联解除,协调器或关联设备均发送该命令

其格式如下(其中,Command Frame Identifier取值为0x03)

4.1.3.1 MHR

--- 帧控制(Frame Control)

源&目的寻址模式(Source & Destination Addressing Mode)字段均设置为3(即64位扩展寻址)
安全性(Security Enabled)相关此处不再累述
帧挂起(Frame Pending)字段应设置为0并在接收时忽略
确认请求(Acknowledgment Request)字段设置为1

--- 目的/源PAN标识符(Destination/Source PAN Identifier) & 目的/源地址(Destination/Source Address)

目的/源PAN标识符(Destination/Source PAN Identifier)字段为macPANId
目的地址(Destination Address)字段为待移除设备的扩展地址的如果协调器希望关联设备离开;为macCoordExtendedAddress如果关联设备想要离开PAN
源地址(Source Address)字段为aExtendedAddress

4.1.3.2 Disassociation Reason

解除关联原因字段取值如下

4.2 协调器交互

协调器交互命令集允许设备与协调器交互

4.2.1 数据请求命令

数据请求(Data Request)命令命令用于设备从协调器请求数据

其格式如下(其中,Command Frame Identifier取值为0x04)

在启用信标的PAN上,当macAutoRequest等于TRUE并且信标帧指示有挂起数据时,设备应发送该命令到其协调器
其中,协调器通过将数据接收者的地址添加到地址列表字段来指示其信标帧中的挂起数据

当接收到来自高层的MLME-POLL.request原语时,设备也应该发送该命令

此外,设备可以在请求命令(例如关联或GTS请求)确认并等待aResponseWaitTime时间后发送将该命令到协调器符号

下面是MHR字段的详细信息

--- 帧控制(Frame Control)

源寻址模式(Source Addressing Mode)字段设置为3仅当macShortAddress为0xfffe/0xffff,其他情况设置为2
目的寻址模式(Destination Addressing Mode)字段为0表示要将数据请求命令发送到PAN协调器,否则按照协调器指示设置
安全使能(Security Enabled)字段为1时根据macCoordExtendedAddress对应安全套件中定义的方法处理该帧
帧挂起(Frame Pending)字段应设置为0并在接收时忽略
确认请求(Acknowledgment Request)字段设置为1

--- 目的PAN标识符(Destination PAN Identifier) & 目的地址(Destination Address)

目的PAN标识符(Destination PAN Identifier)字段设置为macPANId当目的寻址模式为2时;当目的寻址模式为0时不存在
目的地址(Destination Address)字段设置为macCoordShortAddress当目的寻址模式为2时;当目的寻址模式为0时不存在

--- 源PAN标识符(Source PAN Identifier) & 源地址(Source Address)

源PAN标识符(Source PAN Identifier)字段为macPANId
源地址(Source Address)字段为aExtendedAddress的值当macShortAddress为0xfffe时;否则为macShortAddress

4.2.2 PAN ID冲突通知命令

当设备检测到PAN标识符冲突时通过PAN ID冲突通知(PAN ID Conflict Notification)命令通知PAN协调器

其格式如下(其中,Command Frame Identifier取值为0x05)

下面是MHR字段的详细信息

--- 帧控制(Frame Control)

目的/源寻址模式(Destination/Source Addressing Mode)字段均为3
安全使能(Security Enabled)字段为1时根据macCoordExtendedAddress对应安全套件中定义的方法处理该帧
帧挂起(Frame Pending)字段应设置为0并在接收时忽略
确认请求(Acknowledgment Request)字段设置为1

--- 目的/源PAN标识符(Destination/Source PAN Identifier) & 目的/源地址(Destination/Source Address)

目的/源PAN标识符(Destination/Source PAN Identifier)字段为macPANId
目的地址(Destination Address)字段为macCoordExtendedAddress
源地址(Source Address)字段为aExtendedAddress

4.2.3 孤儿通知命令

孤儿通知(Orphan Notification)命令用于与其协调器失去同步的关联设备

其格式如下(其中,Command Frame Identifier取值为0x06)

下面是MHR字段的详细信息

--- 帧控制(Frame Control)

目的寻址模式(Destination Addressing Mode)字段均为2(即16位短地址)
源寻址模式(Source Addressing Mode)字段均为3(即64位扩展地址)
安全使能(Security Enabled)字段为1时根据macCoordExtendedAddress对应安全套件中定义的方法处理该帧
帧挂起(Frame Pending)字段应设置为0并在接收时忽略
确认请求(Acknowledgment Request)字段应设置为0并在接收时忽略

--- 目的/源PAN标识符(Destination/Source PAN Identifier) & 目的/源地址(Destination/Source Address)

目的/源PAN标识符(Destination/Source PAN Identifier)字段为0xffff
目的地址(Destination Address)字段为广播短地址(0xffff)
源地址(Source Address)字段为aExtendedAddress

4.2.4 信标请求命令

信标请求(Beacon Request)命令用于设置在活动扫描期间定位其POS内的所有协调器

其格式如下(其中,Command Frame Identifier取值为0x07)

下面是MHR字段的详细信息

--- 帧控制(Frame Control)

目的寻址模式(Destination Addressing Mode)字段均为2(即16位短地址)
源寻址模式(Source Addressing Mode)字段均为0(无目的寻址信息)
帧挂起(Frame Pending)字段应设置为0并在接收时忽略
确认请求(Acknowledgment Request)字段应设置为0

--- 目的PAN标识符(Destination PAN Identifier) & 目的地址(Destination Address)

目的PAN标识符(Destination PAN Identifier)字段为广播PAN标识符(0xffff)
目的地址(Destination Address)字段为广播短地址(0xffff)

--- 源PAN标识符(Source PAN Identifier) & 源地址(Source Address)

源PAN标识符(Source PAN Identifier)字段不存在
源地址(Source Address)字段不存在

4.2.5 协调器重新调整命令

协调器重新调整(Coordinator Realignment)命令用于协调器在接收到设备孤儿通知(Orphan Notification)命令或其PAN配置属性改变时发送

如果协调器在接收到孤儿通知命令后发送此命令,则将其直接发送到孤儿设备;如果在任何PAN配置属性(如PAN标识符或逻辑信道)改变时发送该命令,则将其广播到PAN间当前能够接收的任何设备

其格式如下(其中,Command Frame Identifier取值为0x08)

4.2.5.1 MHR

--- 帧控制(Frame Control)

目的寻址模式(Destination Addressing Mode)字段为3表示发往孤儿设备;为2表示要将其广播到PAN
源寻址模式(Source Addressing Mode)字段均为3
安全使能(Security Enabled)字段为1当发往孤儿设备,且根据与目标地址对应的安全套件定义的方法处理帧;否则为0
帧挂起(Frame Pending)字段应设置为0并在接收时忽略
确认请求(Acknowledgment Request)字段为1表示发往孤儿设备;为0表示要将其广播到PAN

--- 目的PAN标识符(Destination PAN Identifier) & 目的地址(Destination Address)

目的PAN标识符(Destination PAN Identifier)字段为广播PAN标识符(0xffff)
目的地址(Destination Address)字段为孤立设备的扩展地址当发往孤儿设备;否则为广播短地址(0xffff)

--- 源PAN标识符(Source PAN Identifier) & 源地址(Source Address)

源PAN标识符(Source PAN Identifier)字段为macPANId
源地址(Source Address)字段为aExtendedAddress

4.2.5.2 PAN Identifier

PAN标识符字段为协调器打算用于通信的PAN标识符

4.2.5.3 Coordinator Short Address

协调器短地址字段为macShortAddress的值

4.2.5.4 Logical Channel

逻辑信道字段为协调器打算用于通信的逻辑信道

4.2.5.5 Short Address

如果该命令被广播到PAN,短地址字段为0xffff并在接收时忽略
如果该命令发送到孤儿设备,则该字段为设备用于在PAN上操作的短地址;如果设备没有短地址,该字段为0xfffe

4.3 GTS分配和解除分配

GTS请求命令用于管理GTS;设备可以使用此命令请求分配新GTS或释放现有GTS

4.3.1 GTS请求命令

GTS请求(GTS Request)命令用于关联设备从协调器请求分配新GTS或请求重新分配现有GTS

注意:只有具有有效短地址的设备才能发送此命令,即macShortAddress的值不等于0xfffe & 0xffff

其格式如下(其中,Command Frame Identifier取值为0x09)

4.3.1.1 MHR

--- 帧控制(Frame Control)

目的寻址模式(Destination Addressing Mode)字段均为0(无目的寻址信息)
源寻址模式(Source Addressing Mode)字段均为2(即16位短地址)
安全使能(Security Enabled)字段应根据macCoordExtendedAddress对应安全套件中定义的方法处理该帧,如果安全套件标识符为0x00,则该字段为0;否则,该字段为1
帧挂起(Frame Pending)字段应设置为0并在接收时忽略
确认请求(Acknowledgment Request)字段应设置为1

--- 目的PAN标识符(Destination PAN Identifier) & 目的地址(Destination Address)

目的PAN标识符(Destination PAN Identifier)字段字段不存在
目的地址(Destination Address)字段字段不存在

--- 源PAN标识符(Source PAN Identifier) & 源地址(Source Address)

源PAN标识符(Source PAN Identifier)字段为macPANId
源地址(Source Address)字段为macShortAddress

4.3.1.2 GTS Characteristics

GTS特征字段格式如下

GTS长度(GTS Length)字段为为GTS请求的超帧时隙的数量。
GTS方向(GTS Direction)字段为1表示仅接收GTS;为0表示仅发送GTS;GTS方向是相对于设备的数据帧传输方向定义的
特征类型(Characteristics Type)字段为1表示特性关于GTS分配;为0表示特征关于GTS解除分配

5. MAC常量和PIB属性

5.1 MAC常量

MAC常量定义了MAC层特征,详细如下

5.2 PIB属性

MAC PIB包括管理设备MAC层所需的属性,可以分别使用MLME-GET.request和MLME-SET.request原语来读取或写入这些属性,由于较多这里不列出,详细可参考规范

参考:
<IEEE 802.15.4 MAC Overview>

转载于:https://www.cnblogs.com/hzl6255/p/9846764.html

ZigBee MAC层(上)相关推荐

  1. 第4节:ZigBee MAC层介绍

    1.MAC层: 1):提供两种服务:通过MAC层管理实体接口(MLME SAP)向MAC层数据和MAC层管理提供服务 2):MAC层特征:信标管理,信道接入,时隙管理,发送确认帧,发送连接和断开请求, ...

  2. ZigBee学习之10——MAC层API解读

    ZigBee学习之10--MAC层API解读 其实也算不上什么解读拉,基本上是把官方的文档翻译了一下.在Zigbee中,是分层结构 的,这样做有很多的好处,每一层只负责自己的东西,数据传输更加透明和有 ...

  3. 第三章:zigbee学习笔记之物理层和mac层帧格式分析

    本文原地址:https://blog.csdn.net/tainjau/article/details/81634681 IEEE802.15.4工作组致力于无线个人区域网络(wireless per ...

  4. ZigBee学习之11——MAC层API解读2

    ZigBee学习之11--MAC层API解读2 回调函数事件 呵呵,名字很恐怖,其实就是用来应答请求函数的函数调用而已,不要想的太深奥哦! MAC_MLME_ASSOCIATE_IND 当MAC从其他 ...

  5. zigbee NWK层API解析

    NWK   层为更高层提供了如下功能:· ·   网络管理 ·   地址管理 ·   网络参数与功能函数 除了管理功能,NWK 还提供了应用程序没有的数据服务.应用程序可以通过 AF数据接口[AF_D ...

  6. zigbee各层作用简述

    物理层:主要进行无线数据的收发,同时定义了无线传输的信道以及频率. MAC层:使用CSMA-CA机制接入到无线信道,负责传输信标帧,保持同步和提供可靠的传输机制. 网络层:主要负责网络的建立以及网络地 ...

  7. 5G/4G:空口MAC层架构的简要变化。

    LTE发展之初到5G NR MAC架构的简单变化. MAC实体处理以下传输信道: 广播信道(BCH):下行共享信道(DL-SCH):寻呼信道(PCH):上行共享信道(UL-SCH):随机接入信道(RA ...

  8. TI CC2530的BasicRF与Zstack的同与异(重点讲了MAC层)

    TI CC2530的BasicRF与Zstack的同与异 博主我研究了BasicRF与Zstack协议栈的底层,现将其相同点与区别总结如下,以方便大家选择BasicRF还是Zstack进行研究与开发. ...

  9. CC2530-Zstack 协议栈MAC层中的mac_rx.c程序解读

    Zstack 协议栈中,MAC层最重要的一个文件是mac_rx.c,里面包含了Zstack中mac层是怎么处理接收到的数据帧的.我把我自己对MAC层接收过程的中文解读加在代码的注释里了. 主要的几个函 ...

最新文章

  1. 运维7年,对Linux的经验总结
  2. 复旦博士用130行代码搞定核酸统计,2分钟解决人工一小时工作量
  3. Transfer-Encoding: chunked
  4. tornado autoreload 模式
  5. 基于visual Studio2013解决C语言竞赛题之0405阶乘求和
  6. Edraw Office Viewer Component Crack
  7. 计算机视觉论文-2021-04-06
  8. 从校园到职场 - 谈谈艺多不压身
  9. TCP/IP、 IXP/SPX、 NetBEUI、 AppleTalk协议
  10. 论文翻译3-视频流SR技术分析
  11. 解读一个有趣的网站seo,论网站如何快速上词以及上量
  12. java数组列表和数组的区别_数组,集合,列表的使用与区别
  13. java麻将软件_dnf徽章加什么
  14. dlopen和dlsym
  15. java全栈系列之JavaSE-面向对象(super详解)036
  16. 谷歌开源的跨平台UI开发框架Flutter
  17. 企业微博营销平台营销模式是怎样的?
  18. m3u8及TS文件下载解密:用FFmpeg解密合并m3u8中ts文件(二)
  19. Pikachu系列——RCE
  20. 扫码支付吃个煎饼,街边摊支付的背后也要有大数据运营

热门文章

  1. ANDROID深度探索(卷1)HAL与驱动开发 第四章
  2. undefined reference to `jpeg_std_error(jpeg_error_mgr*)
  3. ZOJ 1729 Hidden Password
  4. BlogEngine.Net架构与源代码分析系列part12:页面共同的基类——BlogBasePage
  5. SilverLight明日起通过微软更新推送
  6. 直播课 | 三维人体扫描与AI测量
  7. 送书 | 一本针对零基础 AI 学习的书:Python入门到人工智能实战
  8. 一道微软Python面试题(文末附python教程丶电子书资料分享)
  9. Python虚拟环境你会用了吗?手把手教你
  10. CVPR 2021 Oral | Transformer!UP-DETR:无监督预训练检测器