Comandos MAC

Os comandos MAC (Medium Access Control) são utilizados no gerenciamento da rede, sendo as mensagens trocadas entre o servidor de rede e os dispositivos finais. Esses comandos possuem diferentes funcionalidades e podem ser divididos nos seguintes tipos.

Com os comandos MAC é possível realizar diversas operações como:

  • Verificar a conexão: através das mensagens os dispositivos finais podem validar a conexão com o servidor de rede, que por sua vez utiliza a mensagem para confirmar a conexão e passar informações sobre o estado desta.
  • Modificar parâmetros da transmissão: Através dos comandos o servidor de rede pode requisitar que um dispositivo final realize um rate adaption
  • Ativação dos dispositivos na rede: Requisição e respostas realizadas entre os dispositivos finais e o servidor da rede relacionadas a iniciar o processo de ativação dos dispositivos na rede.
  • Proprietary: Implementação livre para mensagens em formatos diferentes do padrão.

Uma mensagem pode conter qualquer sequência de comandos MAC, podendo carregar comandos MAC e dados simultaneamente, desde que use diferentes campos para isso.

Checagem da conexão

Checagem de conexão em uma arquitetura LoRaWAN

Para um dispositivo final checar o estado de sua conexão ele deve enviar uma mensagem de LinkCheckReq para o servidor de rede, que pode ser recebida por este por um ou múltiplos gateways. O servidor de rede responde com um LinkCheckAns que é uma mensagem com apenas 2 bytes. O primeiro byte representa a margem de demodulação em dB da mensagem recebida pelo melhor gateway e o segundo byte é o contador de gateways que receberam a mensagem do dispositivo.

Mensagens de configuração dos parâmetros LoRa

O servidor de rede pode solicitar que um dispositivo final realize um rate adaption. Para isto, ele envia uma mensagem LinkADRReq. Nesta mensagem é requisitado um Data Rate e TX output power, a potência máxima de transmissão que o dispositivo deve operar, seguindo as especificações regionais. Além disso também pode ser requisitado a habilitação do uso dos canais através do campo ChMask, podendo habilitar qualquer um dos 16 canais para uplink. Para garantir maior qualidade de serviço o servidor de rede também pode definir um nível de redundância nas mensagens enviadas, controlando o número de retransmissões a serem realizadas.

Após o recebimento das mensagens e da tentativa das modificações o dispositivo final pode responder com um LinkADRAns explicitando o sucesso ou não das operações requisitadas.

Ativação dos dispositivos na rede LoRaWAN

Para participar da rede LoRaWAN os dispositivos finais devem ser personalizados e ativados. As ativações podem ser realizadas de duas maneiras: Over-The-Air e By Personalization. Um dispositivo final precisa implementar pelo menos uma das duas maneiras de ativação.

Nessas etapas são definidos um endereço do dispositivo (device address), uma chave de sessão na rede (NwkSKey) e uma chave de sessão da aplicação (AppSKey). O DevAddr serve para a identificação do dispositivo em sua respectiva rede e é alocado pelo servidor de rede. O NwkSKey é definido para ser utilizado pelo dispositivo final e no servidor de rede no processo de verificação do MIC (message integrity code). Por fim o AppSKey é a chave utilizada entre o dispositivo final e o servidor de aplicação para encriptação e decriptação, promovendo uma encriptação end-to-end entre eles.

Over-The-Air-Activation (OTAA)

Para realizar o processo de ativação o dispositivo final deve ter armazenado o Join-Server identifier (JoinEUI) antes de começar o procedimento. O procedimento envolve a troca de dois frames MAC.

Para começar o procedimento o dispositivo final envia um Join-Request contendo o identificador do join server, o seu próprio identificador (DevEUI) e um contador DevNonce que é incrementado a cada Join-Request.

A requisição é então encaminhada para o Join-Server que valida se o dispositivo pode ser ativado. Em caso da conexão ter sido aceita, deve ser encaminhado um Join-Accept para o dispositivo final. No Join-Accept estão contidos um nonce do Join-Server (JoinNonce) utilizado para a geração das chaves NwkSKey e AppSKey, um identificador da rede (NetID), um endereço do dispositivo final (DevAddr), configurações de downlink, o delay entre transmissão e recepção (RXDelay) e uma lista de parâmetros de rede opcionais. As demais informações geradas no Join-Server são encaminhadas para os outros elementos da rede.

Esquema da ativação Over-The-Air

Activation By Personalization (ABP)

Neste tipo de ativação o dispositivo final faz uma ligação diretamente com uma rede especifica, sem passar pelo processo de Join-Request e Join-Accept. Nessa configuração os parâmetros de DevAddr e as chaves NwkSKey e AppSKey são armazenadas diretamente no dispositivo final ao invés de serem processadas no Join-Server. Neste sentido, o equipamento deve estar preparado com todas as informações para participar da rede LoRaWAN assim que for iniciado. Esses valores pré configurados devem ser únicos, de forma que um possível comprometimento desses valores não comprometa o restante das conexões na rede.