Soluções Completas em Automação Industrial
Conteúdos e materiais
Neste post, você aprenderá sobre os diferentes tipos de mensagens usados no LoRaWAN 1.0.x e 1.1. Esses tipos de mensagens são usados para transportar comandos MAC e dados de aplicativos. O exame de certificação Things Fundamentals espera que você tenha conhecimento básico sobre os seguintes tópicos em relação aos tipos de mensagens:
Mensagens de uplink e downlink;
Tipos de mensagens MAC e seus usos;
Envio de comandos MAC no campo FOpts;
Envio de comandos MAC e dados de aplicação no campo FRMPayload;
Chaves usadas para criptografar cada campo que carrega comandos MAC e dados de aplicativos;
Chaves usadas para calcular o Código de Integridade da Mensagem (MIC) de cada mensagem.
As mensagens LoRa podem ser divididas em mensagens de uplink e downlink com base na direção em que viajam.
Mensagens de uplink
As mensagens de uplink são enviadas por dispositivos finais para o Network Server retransmitidas por um ou mais gateways. Se a mensagem de uplink pertencer ao Application Server ou ao Join Server, o servidor da rede a encaminhará para o receptor correto.
Mensagens de downlink
Cada mensagem de downlink é enviada pelo Network Server para apenas um dispositivo final e retransmitida por um único gateway. Isso inclui algumas mensagens iniciadas pelo Application Server e pelo Join Server também.
LoRaWAN define vários tipos de mensagens MAC. A tabela a seguir apresenta os tipos de mensagens MAC que podem ser encontrados no LoRaWAN 1.0.x e 1.1.
No LoRaWAN 1.0.x, dois tipos de mensagens MAC são usados pelo procedimento Over-The-Air-Activation (OTAA):
Solicitação de adesão Join-request
Aceite Join-accept
No LoRaWAN 1.1, três tipos de mensagens MAC são usados pelo procedimento Over-The-Air-Activation (OTAA) e para fins de roaming:
Solicitação de adesão Join-request
Aceite Join-accept
Solicitação de reingresso Rejoin-request
A mensagem de solicitação de adesão é sempre iniciada por um dispositivo final e enviada ao Network Server. Nas versões LoRaWAN anteriores a 1.0.4, a mensagem de solicitação de adesão é encaminhada pelo Network Server para o Application Server. No LoRaWAN 1.1 e 1.0.4+, o Network Server encaminha a mensagem de solicitação de ingresso para o servidor de ingresso do dispositivo. A mensagem de solicitação de adesão não é criptografada.
Nas versões LoRaWAN anteriores a 1.0.4, a mensagem Join-accept é gerada pelo Application Server. No LoRaWAN 1.1 e 1.0.4+ a mensagem Join-accept é gerada pelo Join Server. Em ambos os casos a mensagem passa pelo Network Server. Em seguida, o Network Server encaminha a mensagem Join-accept para o dispositivo final correto. A mensagem Join-accept é criptografada da seguinte maneira.
No LoRaWAN 1.0, a mensagem Join-accept é criptografada com AppKey.
No LoRaWAN 1.1, a mensagem Join-accept é criptografada com chaves diferentes, conforme mostrado na tabela abaixo.
A mensagem de solicitação de reingresso é sempre iniciada por um dispositivo final e enviada ao Network Server. Existem três tipos de mensagens de solicitação de reingresso: Tipo 0, 1 e 2. Esses tipos de mensagens são usados para inicializar o novo contexto de sessão para o dispositivo final. Para a mensagem de solicitação de reingresso, a rede responde com uma mensagem de aceitação de ingresso.
Existem 4 tipos de mensagens de dados usados no LoRaWAN 1.0.x e 1.1. Esses tipos de mensagens de dados são usados para transportar comandos MAC e dados de aplicativos que podem ser combinados em uma única mensagem. As mensagens de dados podem ser confirmadas ou não confirmadas. As mensagens de dados confirmadas devem ser reconhecidas pelo receptor, enquanto as mensagens de dados não confirmadas não precisam ser reconhecidas pelo receptor.
Uma mensagem de dados é construída conforme mostrado abaixo:
A carga útil MAC das mensagens de dados consiste em um cabeçalho (FHDR) seguido por um campo opcional de porta (FPort) e uma carga útil de opcional (FRMPayload).
O cabeçalho (FHDR) da carga útil MAC consiste dos seguintes campos:
O comprimento máximo do campo MAC Payload é específico da região e da taxa de dados e pode ser encontrado no post sobre Parâmetros Regionais.
Uma mensagem de dados pode conter qualquer sequência de comandos MAC. Uma mensagem de dados pode transportar comandos MAC e dados de aplicação simultaneamente em campos separados. Os comandos MAC podem ser enviados no campo (FOpts) ou no campo de carga útil (FRMPayload) de uma mensagem de dados, mas não ambos simultaneamente. Os dados do aplicativo podem ser enviados no campo de carga útil (FRMPayload) de uma mensagem de dados. O campo FRMPayload NÃO PODE conter comandos MAC e dados de aplicativos simultaneamente.
Os comandos MAC podem ser incluídos no campo FOpts de uma mensagem de dados para envio. O comprimento total dos comandos MAC NÃO DEVE exceder 15 bytes.
No LoRaWAN 1.0.x, esses comandos MAC acoplados são sempre enviados sem criptografia;
No LoRaWAN 1.1, esses comandos MAC acoplados são sempre enviados criptografados usando o NwkSEncKey.
O campo FRMPayload pode conter comandos MAC ou dados de aplicativos. Se o campo FRMPayload não estiver vazio, o campo FPort deverá estar presente. Se o campo FPort estiver presente, então:
O valor FPort=0 indica que o campo FRMPayload contém apenas comandos MAC. O comprimento total dos comandos MAC NÃO DEVE exceder o comprimento máximo do FRMPayload (específico da região);
O valor FPort=1 a 223 indica que o campo FRMPayload contém dados do aplicativo.
A tabela a seguir mostra os valores possíveis para o campo FPort dependendo do que ele carrega.
Se o campo FRMPaylod contiver comandos MAC ou dados de aplicativo, o campo FRMPayload deverá ser criptografado antes que o Código de Integridade da Mensagem (MIC) seja calculado. Isso garante a confidencialidade da mensagem. A tabela a seguir mostra qual chave é usada para criptografar o campo FRMPayload em diferentes versões LoRaWAN.
O Código de Integridade da Mensagem (MIC) garante a integridade e autenticidade de uma mensagem. O código de integridade da mensagem é calculado em todos os campos da mensagem e depois adicionado à própria mensagem. A lista a seguir mostra quais campos são usados para calcular o MIC para cada tipo de mensagem no LoRaWAN 1.0.x e 1.1.
A tabela a seguir apresenta qual chave é usada para calcular o MIC de cada tipo de mensagem no LoRaWAN 1.0.x e 1.1.
Quando um dispositivo LoRaWAN 1.1 é provisionado com um servidor de rede LoRaWAN 1.0.x, o MIC de cada mensagem é calculado conforme mostrado na tabela a seguir.