Descoberta e formação de redes

Ver código-fonte no GitHub

Redes Thread

As redes Thread são identificadas por três identificadores exclusivos:

  • ID de rede pessoal (PAN ID) de 2 bytes
  • ID de rede pessoal estendido (XPAN ID) de 8 bytes
  • Um nome de rede legível

Por exemplo, uma rede Thread pode ter os seguintes identificadores:

Identificador Valor
ID PAN 0xBEEF
ID XPAN 0xBEEF1111CAFE2222
Nome da rede yourThreadCafe
Varredura ativa de OT

Ao criar uma nova rede Thread ou procurar uma rede para participar, um dispositivo Thread realiza uma verificação ativa de redes 802.15.4 dentro do alcance do rádio:

  1. O dispositivo transmite uma solicitação de beacon 802.15.4 em um canal específico.
  2. Em troca, todos os dispositivos com capacidade de repetidor (ECDs, na sigla em inglês) dentro do alcance transmitem um beacon que contém o ID PAN, o ID XPAN e o nome da rede Thread.
  3. O dispositivo repete as duas etapas anteriores para cada canal.

Depois que um dispositivo Thread descobre todas as redes dentro do alcance, ele pode se conectar a uma rede existente ou criar uma nova se nenhuma rede for descoberta.

O Thread usa o protocolo de estabelecimento de link de malha (MLE, na sigla em inglês) para configurar links e disseminar informações sobre a rede para dispositivos Thread.

Na configuração de links, o MLE é usado para:

  • Descobrir links para dispositivos vizinhos
  • Determinar a qualidade dos links para dispositivos vizinhos
  • Estabelecer links para dispositivos vizinhos
  • Negociar parâmetros de link (tipo de dispositivo, contadores de frames, tempo limite) com os pares

O MLE dissemina os seguintes tipos de informações para dispositivos que querem estabelecer links:

  • Dados do líder (RLOC do líder, ID da partição, peso da partição)
  • Dados de rede (prefixos na malha, configuração automática de endereços, rotas mais específicas)
  • Propagação de rotas

A propagação de rotas no Thread funciona de maneira semelhante ao protocolo de informações de roteamento (RIP, na sigla em inglês), um protocolo de roteamento de vetor de distância.

Criar uma nova rede

Se o dispositivo optar por criar uma nova rede, ele vai selecionar o canal menos ocupado e um ID PAN que não esteja em uso por outras redes. Em seguida, ele se torna um repetidor de malha e se elege como líder. Esse dispositivo envia mensagens de anúncio MLE para outros dispositivos 802.15.4 para informar o estado do link e responde a solicitações de beacon de outros dispositivos Thread que realizam uma verificação ativa.

Participar de uma rede existente

Se o dispositivo optar por participar de uma rede existente, ele vai configurar o canal, o ID PAN, o ID XPAN e o nome da rede para corresponder à rede de destino usando o comissionamento do Thread. Em seguida, ele passa pelo processo de conexão MLE para se conectar como um dispositivo filho (dispositivo final). Esse processo é usado para links filho-pai.

  1. O filho envia uma solicitação multicast Parent Request para todos os dispositivos com capacidade de repetidor vizinhos na rede de destino.
  2. Todos os repetidores de malha vizinhos (e ECDs em espera, se a máscara de verificação de solicitação principal incluir ECDs em espera) enviam respostas principais com informações sobre eles.
  3. O filho escolhe um dispositivo pai e envia uma solicitação de ID filho para ele.
  4. O pai envia uma resposta de ID filho para confirmar o estabelecimento do link.

1. Solicitação principal

Uma solicitação principal é uma solicitação multicast do dispositivo de conexão que é usada para descobrir dispositivos com capacidade de repetidor vizinhos na rede de destino.

OT MLE Attach Parent Request
Conteúdo da mensagem de solicitação principal
Moda Descreve o dispositivo de conexão
Desafio Testa a pontualidade da resposta principal para evitar ataques repetidos
Máscara de verificação Limita a solicitação apenas a repetidores de malha ou a todos os dispositivos com capacidade de repetidor

2. Resposta principal

Uma resposta principal é uma resposta unicast a uma solicitação principal que fornece informações sobre um dispositivo com capacidade de repetidor ao dispositivo de conexão.

OT MLE Attach Parent Response
Conteúdo da mensagem de resposta principal
Versão Versão do protocolo Thread
Resposta Cópia do desafio de solicitação principal
Contador de frames de link Contador de frames 802.15.4 no dispositivo com capacidade de repetidor
Contador de frames MLE Contador de frames MLE no dispositivo com capacidade de repetidor
Origem Endereço RLOC16 do dispositivo com capacidade de repetidor
Margem de link Qualidade do sinal de recebimento do dispositivo com capacidade de repetidor
Conectividade Descreve o nível de conectividade do dispositivo com capacidade de repetidor
Dados do líder Informações sobre o líder do dispositivo com capacidade de repetidor
Desafio Testa a pontualidade da solicitação de ID filho para evitar ataques repetidos

3. Solicitação de ID filho

Uma solicitação de ID filho é uma solicitação unicast do dispositivo de conexão (filho) que é enviada ao dispositivo com capacidade de repetidor (pai) para estabelecer um link filho-pai. Se a solicitação for enviada a um dispositivo com capacidade de repetidor em espera, ele será atualizado para um repetidor de malha antes de aceitar a solicitação.

OT MLE Attach Child ID Request
Conteúdo da mensagem de solicitação de ID filho
Versão Versão do protocolo Thread
Resposta Cópia do desafio de resposta principal
Contador de frames de link Contador de frames 802.15.4 no filho
Contador de frames MLEContador de frames MLE no filho
Moda Descreve o filho
Tempo limite Duração da inatividade antes que o pai remova o filho
Registro de endereço (somente MEDs e SEDs) Registrar endereços IPv6

4. Resposta de ID filho

Uma resposta de ID filho é uma resposta unicast do pai que é enviada ao filho para confirmar que um link filho-pai foi estabelecido.

OT MLE Attach Child ID Response
Conteúdo da mensagem de resposta de ID filho
Endereço de origem RLOC16 do pai
Address16 RLOC16 do filho
Dados do líder Informações sobre o líder do pai (RLOC, ID da partição, peso da partição )
Dados de rede Informações sobre a rede Thread (prefixos na malha, configuração automática de endereços, rotas mais específicas)
Rota (somente ECDs em espera) Propagação de rotas
Tempo limite Duração da inatividade antes que o pai remova o filho
Registro de endereço (somente MEDs e SEDs) Confirmar endereços registrados

Recapitulação

O que você aprendeu:

  • Um dispositivo Thread realiza uma verificação ativa de redes existentes
  • O Thread usa o estabelecimento de link de malha para configurar links e disseminar informações sobre dispositivos de rede
  • As mensagens de anúncio MLE informam outros dispositivos Thread sobre a rede e o estado do link de um dispositivo
  • O processo de conexão MLE estabelece links filho-pai

Teste seu conhecimento

Qual identificador não é usado para identificar uma rede Thread?
Um ID de rede pessoal (PAN ID) de 2 bytes.
Incorreto. Uma rede Thread é identificada, em parte, por um ID PAN.
Um ID de rede pessoal estendido (XPAN ID) de 8 bytes.
Incorreto. Uma rede Thread é identificada, em parte, por um ID XPAN.
Um nome de rede legível.
Incorreto. Uma rede Thread é identificada, em parte, por um nome de rede legível.
Um SSID de 32 caracteres.
Correto. Ao contrário de uma rede Wi-Fi 802.11, os identificadores de rede Thread não usam um SSID.
Para que uma solicitação principal é usada?
Para descobrir dispositivos com capacidade de repetidor vizinhos na rede de destino.
Correto. Uma solicitação principal é emitida por um dispositivo que quer se conectar a uma rede.
Para anunciar que um dispositivo com capacidade de repetidor está se tornando um pai.
Incorreto. Um repetidor de malha não inicia um relacionamento pai-filho com outro dispositivo de rede. Em vez disso, um dispositivo de rede seleciona um dispositivo com capacidade de repetidor para se tornar o pai.
Para solicitar que um dispositivo com capacidade de repetidor seja promovido a um repetidor de malha.
Incorreto.
Que tipo de endereço uma solicitação principal usa?
unicast
Incorreto.
anycast
Incorreto.
multicast
Correto.
transmissão
Incorreto.
Quando um dispositivo é conectado inicialmente a uma rede Thread, qual é a classificação dele?
Dispositivo filho (dispositivo final)
Correto. Um dispositivo que participa de uma rede Thread sempre começa como um dispositivo final nessa rede.
FTD (dispositivo Thread completo)
Incorreto.
Repetidor de malha
Incorreto.