天天看點

IEEE 802.15.4協定完整中文版(6) 7 MAC子層規範

出處: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子層的元件和接口。 

  

IEEE 802.15.4協定完整中文版(6) 7 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 的可選項。 

  

IEEE 802.15.4協定完整中文版(6) 7 MAC子層規範

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 發出一條确認原語。