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_OVERFLOW TRANSACTION_EXPIRED、CHANNEL_ACCESS_FAILURE INVALID_GTS、NO_ACK、UNAVAILABLE_KEY FRAME_TOO_LONG、FAILED_SECURITY_CHECK INVALID_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原語來讀取或寫入這些屬性,由於較多這里不列出,詳細可參考規范