IEEE 802.15.4协议完整中文版(6)

出处:http://blog.csdn.net/tidyjiang/article/details/51534510

7 MAC子层规范

  本条款指定了本标准的MAC子层规范。MAC子层处理所有对物理无线信道的访问控制,并负责下面的任务: 
   
  —— 如果设备是协调器,产生网络信标 
  —— 与网络信标同步 
  —— 支持与PAN网络关联和解关联 
  —— 设备安全支持 
  —— 采用CSMA/CA机制访问信道 
  —— 处理和维护 GTS机制 
  —— 在两个对等MAC实体间提供可靠链路 
   
  在本条款中,MAC子层指定和维护的常量和属性以斜体文本存在。常量通常带有前缀“a”,比如aBaseSlotDuration,且被列举在表85中(7.4.1节)。属性通常带有前缀“mac”,比如macAckWaitDuration, 且被列举在表86中(7.4.2节)。安全相关属性被列举在表88中(7.6.1节)。

7.1 MAC子层服务规范

  MAC子层在SSCS和物理层之间提供了一个接口。从概念上讲,MAC子层包含了一个叫做MLME的管理实体。该实体提供了服务接口,通过服务接口,可以调用层管理函数。MLME也为MAC子层附属的被管理目标维护一个数据库。这个数据库被叫做MAC子层PIB。 
   
  图29描述了MAC子层的组件和接口。 
  

这里写图片描述

  MAC子层通过访问SAP提供两种服务: 
  —— MAC数据服务,通过 MAC 公共部分子层服务访问点(MAC common part sublayer SAP, MCPS-SAP)提供,主要完成数据的通信。 
  —— MAC 管理服务,通过MLME-SAP访问。 
  这两个服务通过 PD-SAP 和 PLME-SAP 的接口提供了位于 SSCS 和物理层之间的接口(图 6.2)。除了这些外部接口,在 MLME 和 MCPS 之间还存在隐藏的接口,以使 MLME 能够使用 MAC 数据服务。

7.1.1 MAC 数据服务

  MCPS-SAP 支持在对等 SSCS 实体之间传输 SSCS 协议数据单元(SPDU)。表 40 列举了 MCPS-SAP 所支持的原语。用菱形♦标记的原语属于 RFD 的可选项。 
  

这里写图片描述

7.1.1.1 MCPS-DATA.request

  MCPS-DATA.request 原语请求从本地 SSCS 实体向对等 SSCS 实体传输一个 SSCS 协议数据单元(也就是)MAC服务数据单元。

7.1.1.1.1 服务原语的语义

  MCPS-DATA.request 原语的语义如下: 
  

<code class="hljs avrasm has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">MCPS-DATA<span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box;">.request</span> (
                  SrcAddrMode,
                  DstAddrMode,
                  DstPANId,
                  DstAddr,
                  msduLength,
                  msdu,
                  msduHandle,
                  TxOptions,
                  SecurityLevel,
                  KeyIdMode,
                  KeySource,
                  KeyIndex
                  )</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li></ul><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li></ul>

  表 41 指定了 MCPS-DATA.request 原语的参数。 
  

名称 类型 变化范围 描述
SrcAddrMode 整型 0x00–0x03 该原语和随后的MPDU的源地址模式:
0x00 = 无地址(地址字段被省略,详见7.2.1.1.8)
0x01 = 保留
0x02 = 16bit短地址 
0x03 = 64bit扩展地址
DstAddrMode 整型 0x00–0x03 该原语和随后的MPDU的目标地址模式:
0x00 = 无地址(地址字段被省略,详见7.2.1.1.6)
0x01 = 保留
0x02 = 16bit短地址 
0x03 = 64bit扩展地址
DstPANId 整型 0x0000-0xffff MAC服务数据单元将要发送到的实体的16bit PAN标识符
DstAddr 设备地址 参数DstAddrMode所指定的 MAC服务数据单元将要送到的设备的地址
msduLength 整型 ≤ aMaxMACPayloadSize MAC字层实体将要传输的服务数据单元中包含的字节数
msdu Set of octets —— MAC字层实体将要传输的服务数据单元的set of octets
msduHandle 整型 0x00-0xff MAC子层实体将要传输的服务数据单元
TxOptions Bitmap 3bit的范围 MAC服务数据单元的传输选项
对于b0,1 = 被确认的传输;
     0 = 未被确认的传输
对于b1, 1 = GTS传输;
     0 = 信标模式的PAN中的CAP传输
对于b2, 1 = 间接传输;
     0 = 直接传输
对于非信标模式的PAN,比特b1总被设为0
SecurityLevel 整型 0x00-0x07 使用的安全等级(看7.6.2.2.1中的表95)
KeyIdMode 整型 0x00-0x03 由于表示密钥的模式(看7.6.2.2.2中的表96)。如果参数SecurityLevel被设为0,改参数将被忽略
KeySource Set of 0,4, or 8 octets 由参数KeyIdMOde指定 密钥的源。如果参数SecurityLevel被设为0,改参数将被忽略
KeyIndex 整型 0x01-0xff 密钥的索引。如果参数SecurityLevel被设为0,改参数将被忽略
7.1.1.1.2 使用时机

  当本地SSCS实体一个MAC服务数据单元传输到对等SSCS实体时,将产生一个MCPS-DATA.request原语。

7.1.1.1.3 接收后的处理

  接收到MCPS-DAT.request原语后,MAC字层实体将传输MAC服务数据单元。 
   
  MAC子层根据提供的参数构造服务数据单元。参数SrcAddrMode和DstAddrMode中的标志与帧控制字段中的地址一致,用于构建MAC头部的帧控制字段和地址字段。如果参数SrcAddrMode和DstAddrMode都被设为0x00(也就是说地址字段被忽略),MAC字层将使用 INVALID_ADDRESS状态发出确认原语MCPS-DATA.confirm。 
   
  如果参数msduLength比aMaxMACSafePayloadSize大,MAC字层将把帧控制字段中的帧版本设为1。 
   
  参数TxOptions表示MAC子层服务数据是如何传输服务数据单元的。如果TxOptions指定传输需要确认,帧控制字段的确认请求将被设为1(看7.5.6.4)。 
   
  如果TxOptions指定需要GTS传输,MAC子层将查看自己是否有有效的GTS(GTS的使用规则,情况7.5.7.3)。如果不能找到有效的GTS,MAC子层将使用状态 INVALID_GTS发送确认原语MCPS-DATA.confirm。如果找到了有效GTS,MAC子层将根据需要延迟(知道GTS)。如果TxOptions指定不需要GTS传输,MAC子层将在信标模式的PAN网络中的竞争接入阶段使用实现CSMA/CA传输服务数据单元,或者在非信标模式的PAN网络中使用非时隙的CSMA/CA传输服务数据单元。在TxOptions中指定GTS传输将覆盖一条间接传输请求。 
   
  如果参数 TxOptions 指定需要间接传输,并且该原语被协调器的 MAC 字层所接收,那么被发送的数据帧将采用间接传输方式。也就是说,数据被添加到协调器所存储的挂起处理列表中,设备使用 7.5.6.3 中的方法自由处理报文。如果目的地址是一个胳膊地址,将使用 7.2.1.1.3 中的机制处理。如果目的地址是一个单播地址,将使用 7.5.6.3 中的方法自由处理。如果协调器没有能力存储报文,MAC 子层将丢弃该服务数据单元,并使用状态 TRANSACTION_OVERFLOW 发出一条确认原语。如果协调器有能力存储数据,它就会将信息添加大列表中去。如果在macTransactionPersistenceTime时间段 内都没有处理该报文,MAC 子层将丢弃该报文,并使用状态 TRANSACTION_EXPIRED 发出一条确认原语。7.5.5 描述了报文处理流程。 如果参数 TxOptions 指定指定为间接传输,但是原语的接收设备不是协调器,或者目的地址不存在,或者参数中同时还指定了 GTS 传输,该间接传输选项将会被忽略。 
   
  如果参数 TxOptions 指定不需要间接传输,MAC子层将在信标模式的PAN网络中的竞争介入阶段使用CSMA/CA机制传输服务数据单元,或者在非信标模式的PAN网络中直接能够CSMA/CA机制传输服务数据单元。如果参数 TxOptions 指定需要直接传输,且 MAC 子层在 macMaxFrameRetries 时间段内一直没接收到确认消息(7.5.6.4),将丢弃服务数据单元,并使用状态 NO_ACK 发送一条确认语句。 
   
  如果参数 SecurityLevel 被设置为 0x00 以外的有效值, 表示该帧需要安全机制, MAC 子层将会设置帧控制字段的安全使能位为1。MAC 子层将基于参数 DstAddr、SecurityLevel、KeyIdMode、KeySource 和 KeyIndex 封装发送帧(7.5.8.2.1)。如果在封装发出帧的时候产生了如何错误,MAC 子层将会丢弃该帧,并使用帧封装过程中返回的错误状态发出一条确认原语。 
   
  如果请求的报文太长,大于 CAP 或者 GTS,MAC 子层将丢弃该帧并使用状态 FRAME_TOO_LONG 发出一条确认原语。 
   
  如果使用 CSMA/CA 算法发出的消息失败(由于信道状态不好),并且参数 TxOptions 指定需要直接传输,MAC 子层将丢弃服务数据单元,并使用状态 CHANNEL_ACCESS_FAILURE 发送一条确认语句。 
   
  如果 MAC 协议数据单元被成功传输,且(如果需要)接收到确认消息,MAC 子层将使用状态 SUCCESS 发出一起确认原语。 
   
  如果原语 MCPS-DATA.request 的任何传输不被支持,或者超出范围,MAC 子层将使用状态 INVALID_PARAMETER 发出一条确认原语。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值