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

Consulte o código-fonte no GitHub

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

Neste guia, apresentamos tarefas básicas que usam alguns dos comandos srp server e srp client mais comuns.

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 ver as descrições e a 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 (enable,disable). 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 do roteador de borda do OpenThread inclui informações sobre como configurar o dispositivo final do cliente SRP.

Visão geral de alguns comandos SRP básicos

Os comandos do servidor e do cliente SRP podem ser usados em sequência para executar tarefas típicas de 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 host automático ou define explicitamente a lista de endereços do cliente host.

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

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

  3. Verifique o status do serviço.

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

    • srp server host e srp server service fornecem 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 comandos do cliente

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

Iniciar 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 registre 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 o 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 e, em seguida, o cliente se inicia automaticamente.

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

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

    O servidor SRP que detecta 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 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 de 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 os comandos srp server host e srp server service, como no exemplo acima.

Remover o serviço

  1. Remova o serviço por meio do nó do cliente:

    srp client service remove my-service _ipps._tcp
    Done
    
  2. Confirme por meio do 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 é 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 dele:

    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
    >