Configurar a conectividade servidor-cliente do protocolo de registro de serviço (SRP) com a CLI OT

Veja o código-fonte no GitHub

O OpenThread oferece funcionalidades de servidor SRP e cliente, permitindo que os dispositivos registrar serviços baseados em DNS usando a atualização de DNS padrão enviada como unicast pacotes. Essa funcionalidade ativa a descoberta de serviços baseada em DNS.

Este guia apresenta tarefas básicas que usam alguns dos recursos mais comuns do srp server e os comandos srp client.

Comandos do servidor SRP

Para ver uma lista de comandos srp server, digite help:

srp server help
addrmode
auto
disable
domain
enable
help
host
lease
seqnum
service
state
Done

Comandos do cliente SRP

Para ver uma lista de comandos srp client, digite help:

srp client help
autostart
callback
help
host
keyleaseinterval
leaseinterval
service
start
state
stop
ttl
Done

Referência de comandos da CLI

Para descrições e sintaxe de todos os comandos, consulte a referência de comandos da CLI. Os comandos do servidor SRP começam em ordem alfabética com srp server (ativar,desativar). Os comandos do cliente SRP começam em ordem alfabética com srp client autostart (get).

Codelab do roteador de borda do Thread

O codelab sobre roteador de borda do OpenThread inclui informações sobre como configurar o dispositivo final do cliente SRP.

Visão geral de alguns comandos básicos do SRP

Os comandos do servidor SRP e do cliente podem ser usados em sequência para executar tarefas típicas do SRP:

  1. Inicie o servidor SRP.

    srp server enable ativa o servidor SRP depois que você cria a rede Thread.

  2. Inicie o cliente SRP.

    • srp client host name define o nome do host a ser usado pelo cliente.

    • srp client host address (set) ativa o modo de endereço do cliente do host automático ou define explicitamente a lista de endereços de clientes host.

    • srp client service add adiciona um serviço com um determinado nome de instância, service nome e número da porta.

    • srp client autostart enable ativa o modo de início automático. Também é possível fazer isso manualmente Execute srp client start para iniciar o cliente.

  3. Verifique o status do serviço.

    • srp client host e srp client service mostram se o host do cliente e o serviço foram registrados com sucesso no nó do cliente.

    • srp server host e srp server service indicam o status do host e do serviço no nó do servidor.

  4. Remova o serviço.

    srp client service remove remove um serviço, mas mantém o nome do serviço.

  5. Remova os nomes de host e serviço.

    srp client host remove remove o host e todos os serviços registrados.

Exemplos de uso do servidor SRP e de comando do cliente

Esses exemplos usam comandos básicos da CLI para configurar uma rede Thread, iniciar servidor SRP e cliente, verificar o status do servidor e remover um serviço. Dados de amostra é usado para fins ilustrativos.

Inicie o servidor SRP

  1. Inicie o nó do servidor SRP:

    ./output/simulation/bin/ot-cli-ftd 1
    
  2. Configure uma rede Thread e ative o servidor SRP executando o comando srp server enable:

    dataset init new
    Done
    dataset
    Active Timestamp: 1
    Channel: 22
    Channel Mask: 0x07fff800
    Ext PAN ID: 8d6ed7a05a28fb3b
    Mesh Local Prefix: fded:5114:8263:1fe1::/64
    Network Key: 7fcbae4153cc2955c28440c15d4d4219
    Network Name: OpenThread-f7af
    PAN ID: 0xf7af
    PSKc: b658e40f174e3a11be149b302ef07a0f
    Security Policy: 672, onrc
    Done
    dataset commit active
    Done
    ifconfig up
    Done
    thread start
    Done
    state
    leader
    Done
    ipaddr
    fded:5114:8263:1fe1:0:ff:fe00:fc00
    fded:5114:8263:1fe1:0:ff:fe00:c000
    fded:5114:8263:1fe1:68bc:ec03:c1ad:9325
    fe80:0:0:0:a8cd:6e23:df3d:4193
    Done
    srp server enable
    Done
    

Iniciar o cliente SRP

  1. Inicie o nó do cliente SRP:

    ./output/simulation/bin/ot-cli-ftd 2
    
  2. Participe da rede Thread, defina o nome e o endereço do host do cliente e registrar um serviço:

    dataset networkkey 7fcbae4153cc2955c28440c15d4d4219
    Done
    dataset commit active
    Done
    ifconfig up
    Done
    thread start
    Done
    state
    child
    Done
    ipaddr
    fded:5114:8263:1fe1:0:ff:fe00:c001
    fded:5114:8263:1fe1:44f9:cc06:4a2d:534
    fe80:0:0:0:38dd:fdf7:5fd:24e
    Done
    srp client host name my-host
    Done
    srp client host address fded:5114:8263:1fe1:44f9:cc06:4a2d:534
    Done
    srp client service add my-service _ipps._tcp 12345
    Done
    srp client autostart enable
    Done
    

    Conforme mostrado acima, use o comando srp client autostart enable para ativar modo de início automático no cliente. O cliente monitora os dados de rede para descobrir os servidores SRP disponíveis na rede Thread, o cliente inicia automaticamente.

  3. Se você iniciar o cliente manualmente, execute o seguinte comando e inclua o endereço SRP e a porta:

    srp client start fded:5114:8263:1fe1:68bc:ec03:c1ad:9325 49154
    Done
    

    O servidor SRP que escuta a porta UDP é c002(49154) no exemplo acima.

Verificar o status do serviço

  1. Verifique se o host e o serviço foram registrados com êxito no nó do cliente:

    srp client host
    name:"my-host", state:Registered, addrs:[fded:5114:8263:1fe1:44f9:cc06:4a2d:534]
    Done
    srp client service
    instance:"my-service", name:"_ipps._tcp", state:Registered, port:12345, priority:0, weight:0
    Done
    

    Verifique se a saída mostra state:Registered para os comandos de host e serviço. como no exemplo acima.

  2. Verifique o host e o serviço no nó do servidor:

    srp server host
    my-host.default.service.arpa.
    deleted: false 
    addresses: [fded:5114:8263:1fe1:44f9:cc06:4a2d:534]
    Done
    srp server service
    my-service._ipps._tcp.default.service.arpa.
    deleted: false
    port: 12345
    priority: 0
    weight: 0
    ttl: 7200
    lease: 7200
    key-lease: 1209600
    TXT: []
    host: my-host.default.service.arpa.
    addresses: [fded:5114:8263:1fe1:44f9:cc06:4a2d:534]
    Done
    

    Verifique se a saída mostra deleted: false para srp server host e srp server service, como no exemplo acima.

Remover o serviço

  1. Remova o serviço pelo nó do cliente:

    srp client service remove my-service _ipps._tcp
    Done
    
  2. Confirme pelo nó do servidor se o serviço foi removido:

    srp server service
    my-service._ipps._tcp.default.service.arpa.
    deleted: true
    Done
    

    A entrada de serviço está listada na saída porque o nome do serviço é não removido.

Remova os nomes de host e serviço

  1. Remova o host e todos os serviços registrados:

    srp client host remove 1
    Done
    
  2. Confirme no nó do servidor se nenhuma entrada de host ou serviço está listada:

    srp server host
    Done
    srp server service
    Done
    >