Formato do Quadro 802.15.4 No padrão 802.15.4, a estrutura geral da PDU do nível MAC (MPDU) foi projetada para ser flexível o bastante para acomodar as necessidades de diferentes aplicações e topologias de rede e, ao mesmo tempo, permitir a definição de um protocolo de nível MAC relativamente simples. O formato genérico de um quadro MAC (MPDU) e o seu encapsulamento na camada física são mostrados, respectivamente, nas Figuras 12 e 13. Como se vê, o MPDU é composto por um cabeçalho (MHR – MAC Header), por uma Unidade de Serviço de Dados (MSDU – MAC Service Data Unit) também referenciada de MAC Payload, e por um rodapé (MFR – MAC Footer). Figura 12 – Formato Genérico de uma MAC PDU Figura 13 – Encapsulamento de uma MAC PDU na Camada Física O cabeçalho contém informações sobre o tipo de quadro (a norma define quatro diferentes tipos de quadro, todos eles baseados no formato genérico), o número de sequência (que varia de acordo com o tipo de pacote enviado), as identificações de endereços (da rede PAN destinatária e remetente, e o endereço do dispositivo destinatário e remetente) e um campo que informa as opções de segurança utilizadas no quadro. O payload contém os dados provindos da camada acima e o rodapé (MFR) contém a sequência de verificação de erros do quadro. O primeiro campo do cabeçalho é o campo de controle de quadro (Frame Control). Este campo indica o tipo de quadro MAC sendo transmitido, define o formato do campo de endereço, e controla o reconhecimento (acknowledgment) de quadros. Em suma, o campo de controle determina como é o restante do frame e o que ele contém. O tamanho do campo de endereço pode variar entre 0 e 20 bytes. Por exemplo, um quadro de dados pode conter a informação de endereço fonte e de destino, enquanto que um quadro de acknowledgment não contém qualquer informação de endereço. Por outro lado, um quadro beacon pode conter apenas informação de endereço de origem. Além disso, endereços curtos ou endereços IEEE de 64 bits podem ser usados. Esta flexibilidade exibida pelo formato do quadro MAC ajuda a aumentar a eficiência do protocolo, mantendo os pacotes curtos. O cabeçalho MAC também trata das opções auxiliares de segurança usadas na transmissão do quadro. Para tanto é utilizado o padrão de criptografia avançado (AES), que descreve rotinas de segurança utilizando chaves com comprimento de 128, 192 ou 256 bits. O campo de payload possui tamanho variável; entretanto, observa-se que o tamanho total de quadro MAC não pode exceder 127 bytes de comprimento. Os dados contidos no campo de payload são dependentes do tipo de quadro. Outros campos do quadro MAC são o número de seqüência e a seqüência de verificação de quadro (FCS - Frame Sequence Check). Numa rede 802.15.4 uma transação só é considerada um sucesso quando o quadro de reconhecimento (ack) contém o mesmo número de seqüência do quadro recebido previamente. O FCS ajuda a verificar a integridade do quadro MAC. O FCS é implementado como uma verificação de redundância cíclica (CRC – Cyclic Redundancy Check) de 16-bit padronizado pelo do ITU-T. Campo: Frame Control O campo de controle do cabeçalho MAC possui o seguinte conteúdo: Figura 14 – Formato do Campo Frame Control Frame Type Apresenta os seguintes valores (a faixa entre 100 a 111 é considerada “Reserved”).: 000 – Beacon 001 – Data 010 – Ack 011 – Command Security Enabled Deve ter valor 1 se está protegido pelo MAC. Neste caso, o campo Auxiliary Security Header deve estar presente. Se 0, não há proteção no nível MAC. Frame Pending Deve ter o valor 1 se o dispositivo que está enviando o quadro tem mais dados para o receptor e zero caso contrário. Este campo só deve ser usado em quadros beacon ou em quadros transmitidos durante o CAP numa rede beacon-enabled, ou então a qualquer momento por dispositivos operando numa rede nonbeacon-enabled. Em todas as outras situações ele deve ter o valor 0 na transmissão e ignorado na recepção. Acknowledgment Request (AR) Especifica se um acknowledgment é requerido do receptor na recepção de um quadro de dados ou de comando. Se igual a 1 o receptor deve enviar o ack, mas somente se as condições estabelecidas para envio forem cumpridas (ex: o número de sequência incluído nos dados recebidos ou no comando MAC deve ser copiado para o campo de número de sequência do quadro reconhecido. Isso garante ao originador da transação saber que ele recebeu o a acknowledgment apropriado). PAN ID Compression Se igual a 1 e os endereços de origem e destino estão incluídos no quadro, indica que deve ser assumido que o campo Source PAN Identifier omitido do cabeçalho deve ser considerado igual ao campo Destination PAN Identifier. Destination Addressing Mode e Source Addressing Mode Podem assumir os seguintes valores (Figura 15): Figura 15 – Valores possíveis de Destination Addressing Mode e Source Addressing Mode Frame Version Especifica o número da versão do frame. O valor 0 indica compatibilidade com o padrão IEEE Std 802.15.4-2003. Campo: Sequence Number Especifica a sequência de identificação do quadro. Para quadros beacon, especifica um BSN. Para quadros do tipo data, acknowledgment ou command, o número de sequência DSN é usado para fazer o casamento (“match”) de um quadro de acknowledgment com um quadro de dados ou um quadro de comando. Campo: Destination PAN Identifier Quando presente, especifica o identificador único da PAN do receptor do quadro. Um valor de 0xFFFF representa o identificador de broadcast de PAN, que deve ser aceito como um identificador de PAN válido por todos os dispositivos correntemente ouvindo naquele canal. Campo: Destination Address Quando presente, define o endereço do receptor. Um valor de 0xFFFF representa o endereço curto de broadcast, que deve ser aceito como um endereço válido por todos os dispositivos correntemente ouvindo naquele canal. Campo: Source PAN Identifier Quando presente, especifica o identificador único da PAN do dispositivo transmissor do quadro. Este campo deve ser incluído no quadro apenas se o campo Source Addressing Mode é diferente de zero. O identificador da PAN de um dispositivo é inicialmente determinado durante o processo de associação do dispositivo à PAN mas pode mudar em decorrência de uma resolução de um conflito de identificadores de PAN. Campo: Source Address Quando presente, especifica o endereço do dispositivo transmissor do quadro. Campo: Auxiliary Security Header Especifica informação requerida para o processamento de segurança. O campo deve estar presente somente se o bit “Security Enabled” do campo de controle do cabeçalho estiver ligado. Campo: Frame Payload Contém informação específica do tipo de quadro. Se o bit “Security Enabled” cabeçalho estiver ligado o payload pode estar protegido por criptografia. Campo: FSC Frame Contém o resultado da aplicação do CRC de 16 bits do ITU-T sobre o cabeçalho e o payload. Tipos de Quadro MAC Como mencionado, o nível MAC define quatro tipos diferentes de quadros (frames). São eles: Beacon frame: usado pelo coordenador para transmitir beacons; Data frame: usado em todas as transferências de dados; Acknowledgment frame: usado para confirmar o sucesso na recepção de um quadro; Command frame: usado para controlar as transferências entre entidades MAC parceiras. Apenas os quadros de dados e os quadros beacon contém informações enviadas pelas camadas superiores; os quadros de reconhecimento e quadros de comandos MAC são quadros originados no próprio MAC e são usados para comunicação peer-to-per (subcamadas MAC parceiras). O Quadro de Sinalização (Beacon Frame) Quadros beacon se originam de dentro da camada MAC, a partir do nó coordenador, numa rede beacon-enabled. O beacon é sempre transmitido no início do slot 0 do superframe, sem fazer o uso de CSMA. A Figura 16 a ilustra o formato do quadro beacon. Figura 16 – Formato do Quadro Beacon O quadro beacon carrega várias informações importantes sobre a rede. Ele especifica, dentre outras coisas: a estrutura do superframe, a identificação do coordenador da PAN, informações sobre os campos GTS, quem tem dados pendentes no coordenador e se o coordenador está aceitando novos dispositivos, por exemplo. Campo: Superframe Specification Este campo, mostrado na Figura 16, define os principais parâmetros relacionados ao formato (tamanho) da estrutura do superframe: (i) Beacon Order (BO), que especifica o intervalo de transmissão entre beacons; (ii) Superframe Order (SO), que define o tamanho da parte ativa do superframe (isto é, estado de receiver habilitado), (iii) Final CAP Slot, que define qual é o slot final usado no CAP. A duração do CAP deve ser maior ou igual ao valor especificado pelo parâmetro aMinCAPLength. Além desses três campos, são ainda definidos três outros campos importantes. Um deles é o BatteryLifeExtension, que está relacionado à conservação da bateria. Se esse campo é assinalado como TRUE, todas as transações contention-based tem que começar dentro de um tempo igual a macBattLifeExtPeriods períodos de backoff (valor default 6) após o inter-frame space (IFS) do quadro de beacon. O IFS é um tempo necessário para a camada MAC processar o pacote recebido da camada física. Todo frame deve ser seguido de um período de IFS, cujo tamanho depende do tamanho do quadro transmitido. Figura 17 – IFS – Inter-Frame Space O campo PAN Coordinator informa quem está transmitindo o beacon: se o coordenador da PAN (valor igual a 1) ou não (valor igual a 0). Por último, o campo Association Permit define se o coordenador da PAN está atualmente aceitando novos pedidos de associação. É igual a 1 se o parâmetro macAssociationPermit é colocado em TRUE, significando que novas associações estão sendo aceitas. Campo: GTS O GTS é um campo de tamanho variável dentro do superframe e possui o seguinte formato: Figura 18 – Formato do Campo GTS GTS Specification O campo GTS Specification é formatado como na Figura 19. O campo GTS Descriptor Count define o número de GTS Descriptors existentes na GTS List. Se esse valor é igual a zero, os campos GTS Directions e GTS List do quadro beacon não existem. O campo GTS Permit indica se o coordenador da PAN está aceitando pedidos de GTS. É igual a 1 se o parâmetro macGTSPermit é TRUE; do contrário deve ser igual a 0. Figura 19 – Formato do Campo GTS Specification GTS Directions É formatado como mostrado na Figura 20. GTS Directions Mask é uma máscara que diz a direção de cada GTS no superframe, conforme definido pela GTS List. Cada bit da máscara deve ser colocado em 1 se o GTS é “receiver-only” ou em 0 se ele é “transmit-only”. A direção do GTS é definida relativamente à direção da transmissão do quadro de dados pelo dispositivo. Figura 20 – Formato do Campo GTS Directions GTS List Cada GTS Descriptor da GTS List possui as informações listadas na Figura 21. Como visto, o número de descritores da GTS List é especificada no campo GTS Specification, e é limitado a 7. Device Short Address contém o endereço curto do dispositivo para o qual o GTS está associado, GTS Starting Slot define o slot de início deste GTS dentro do superframe e GTS Length contém o número de slots contíguos do superframe daquele GTS. Figura 21 – Formato do Campo GTS List Campo: Pending Address O campo Pending Address possui o formato geral apresentado na Figura 22(a) e contém uma especificação básica sobre os endereços pendentes, além da lista destes endereços. O campo Pending Address Specification informa basicamente o número de endereços curtos e estendidos contidos no campo Address List. A Figura 22(b) mostra um detalhamento do campo Pending Address Specification. Figura 22(a) - Formato do campo Pending Address Figura 22(b) – Formato do campo Pending Address Specification O campo Address List, cujo tamanho é determinado pelos valores especificados no campo Pending Address Specification, contém os endereços dos dispositivos que possuem correntemente mensagens pendentes com o coordenador. A lista de endereços não deve conter o endereço broadcast curto. O número máximo de endereços pendentes é limitado a sete e pode compreender tanto endereços curtos como estendidos. Os endereços curtos devem aparecer primeiro na lista. Campo: Beacon Payload É uma sequência opcional de bytes de tamanho limitado a aMaxBeaconPayloadLength, especificada pela camada acima para ser transmistida no quadro beacon. O conjunto de bytes a ser transmitido no payload é copiado de macBeaconPayload.