Exibir e gerenciar dados de rede com CLI OT

Veja o código-fonte no GitHub

Os dados da rede Thread contêm informações sobre roteadores de borda e outros servidores disponíveis na rede Thread. Os roteadores de borda e os dispositivos que oferecem serviços registram as informações com o líder. O líder coleta e estrutura essas informações nos dados da rede Thread e as distribui para todos os dispositivos na rede Thread.

Os roteadores de borda podem registrar prefixos atribuídos à rede Thread e prefixos para os quais oferecem rotas. Os serviços podem registrar qualquer informação relevante para o próprio serviço.

O roteador de borda e as informações de serviço podem ser estáveis ou temporárias. Os dados da rede de linhas de execução estáveis são distribuídos para todos os dispositivos, incluindo os SEDs. Os dados de rede temporários são distribuídos para todos os nós, exceto SEDs.

Comandos de dados de rede

Para ver uma lista de comandos netdata, digite help:

netdata help
help
full
length
maxlength
publish
register
show
steeringdata
unpublish
Done

full commands

Os comandos full informam o status da sinalização ou exibem novamente o rastreamento dela para saber se o callback "net data full" foi invocado.

Este comando requer OPENTHREAD_CONFIG_BORDER_ROUTER_SIGNAL_NETWORK_DATA_FULL.

Comandos length e maxlength

O comando length recebe o comprimento atual dos dados da rede Thread, relatado como o número de bytes. Os comandos maxlength recebem o comprimento máximo observado ou redefinem o comprimento máximo rastreado.

publish commands

O Network Data Publisher oferece mecanismos para limitar o número de entradas de serviço e prefixo semelhantes (prefixo da malha ou rota externa) nos dados de rede da linha de execução monitorando os dados de rede e gerenciando quando adicionar ou remover entradas.

O editor requer OPENTHREAD_CONFIG_NETDATA_PUBLISHER_ENABLE.

Rede de formulários e configuração do prefixo

  1. Gere uma nova configuração de rede.

    dataset init new
    Done
    
  2. Exibe a configuração de rede.

    dataset
    Active Timestamp: 1
    Channel: 13
    Channel Mask: 0x07fff800
    Ext PAN ID: d63e8e3e495ebbc3
    Mesh Local Prefix: fd3d:b50b:f96d:722d::/64
    Network Key: dfd34f0f05cad978ec4e32b0413038ff
    Network Name: OpenThread-8f28
    PAN ID: 0x8f28
    PSKc: c23a76e98f1a6483639b1ac1271e2e27
    Security Policy: 0, onrcb
    Done
    
  3. Confirmar o novo conjunto de dados no conjunto de dados operacional ativo em armazenamento não volátil.

    dataset commit active
    Done
    
  4. Ativar a interface do Thread

    ifconfig up
    Done
    thread start
    Done
    
  5. Exibe endereços IPv6 atribuídos à interface da Thread.

    ipaddr
    fd3d:b50b:f96d:722d:0:ff:fe00:fc00
    fd3d:b50b:f96d:722d:0:ff:fe00:dc00
    fd3d:b50b:f96d:722d:393c:462d:e8d2:db32
    fe80:0:0:0:a40b:197f:593d:ca61
    Done
    
  6. Registre um prefixo IPv6 atribuído à rede Thread.

    prefix add fd00:dead:beef:cafe::/64 paros med
    Done
    netdata register
    Done
    
  7. Exibir dados da rede Thread.

    netdata show
    Prefixes:
    fd00:dead:beef:cafe::/64 paros med dc00
    Routes:
    fd49:7770:7fc5:0::/64 s med 4000
    Services:
    44970 5d c000 s 4000
    44970 01 9a04b000000e10 s 4000
    Done
    

    Os prefixos e rotas incluem mapeamentos de argumento e o valor de RLOC.

    Os registros de serviço incluem valores de otServiceConfig, incluindo mEnterpriseNumber, mServiceData, otServerConfig::mServerData e s para indicar otServerConfig::mStable. O RLOC também é anexado ao final do registro.

  8. Exibe o comprimento atual, em número de bytes, dos dados da rede Thread da partição.

    netdata length
    23
    Done
    
  9. Exibe endereços IPv6 atribuídos à interface Thread, incluindo o prefixo adicionado.

    ipaddr
    fd00:dead:beef:cafe:4da8:5234:4aa2:4cfa
    fd3d:b50b:f96d:722d:0:ff:fe00:fc00
    fd3d:b50b:f96d:722d:0:ff:fe00:dc00
    fd3d:b50b:f96d:722d:393c:462d:e8d2:db32
    fe80:0:0:0:a40b:197f:593d:ca61
    Done
    

Anexar à rede existente

Somente a chave de rede é necessária para que um dispositivo seja conectado a uma rede Thread.

Embora não seja obrigatório, especificar o canal evita a necessidade de pesquisar em vários canais, melhorando a latência e a eficiência do processo de anexação.

Depois que um dispositivo é anexado a uma rede Thread, ele recupera o conjunto de dados operacional completo completo.

  1. Crie um conjunto de dados operacional ativo parcial.

    dataset networkkey dfd34f0f05cad978ec4e32b0413038ff
    Done
    dataset commit active
    Done
    
  2. Ative a interface do Thread.

    ifconfig up
    Done
    thread start
    Done
    
  3. Depois de anexar à rede existente, exiba os dados da rede Thread.

    netdata show
    Prefixes:
    fd00:dead:beef:cafe::/64 paros med dc00
    Routes:
    Services:
    Done
    
  4. Exibe o comprimento atual, em número de bytes, dos dados da rede Thread da partição.

    netdata length
    23
    Done
    
  5. Exibe endereços IPv6 atribuídos à interface da Thread.

    ipaddr
    fd00:dead:beef:cafe:4da8:5234:4aa2:4cfa
    fd3d:b50b:f96d:722d:0:ff:fe00:fc00
    fd3d:b50b:f96d:722d:0:ff:fe00:dc00
    fd3d:b50b:f96d:722d:393c:462d:e8d2:db32
    fe80:0:0:0:a40b:197f:593d:ca61
    Done
    

Depuração e diagnóstico

Os dados de rede têm um tamanho limitado de 254 bytes. Se os roteadores de borda continuarem adicionando entradas (por exemplo, prefixos, rotas ou entradas de serviço) aos dados de rede, elas podem ficar cheias. Quando isso acontece, as novas solicitações de um roteador de borda para adicionar novos itens são rejeitadas ou ignoradas pelo líder. Como o líder não indica necessariamente a rejeição para o roteador de borda, ele pode não perceber imediatamente que os dados de rede estão cheios. No entanto, há um método disponível para detectar quando os dados de rede estão cheios.

O método de detecção, implementado nos roteadores de borda e no líder, usa um mecanismo de API de callback e permite que os usuários sejam notificados quando os dados de rede estão cheios. O callback pode ser usado para realizar ações, como remover prefixos desatualizados ou entradas de serviço. Os comandos netdata full são usados para a sinalização que rastreia se o callback "net data full" foi invocado. Esses comandos podem relatar ou redefinir o status da sinalização.

Para os casos de uso típicos do Thread, é improvável que os dados de rede fiquem cheios, mesmo quando há muitos roteadores de borda e todos adicionam prefixos de rota.

Tecnicamente, é possível que os dados de rede fiquem cheios. No entanto, isso geralmente ocorre por causa de uma configuração incorreta ou de um problema no roteador de borda. Os comandos netdata length e netdata maxlength podem ajudar a depurar erros completos de dados de rede. length recebe o comprimento atual dos dados de rede, relatados como bytes, e maxlength recebe o comprimento máximo observado e também pode redefinir o comprimento máximo rastreado.