使用 OT CLI 设置服务注册协议 (SRP) 服务器-客户端连接

查看 GitHub 上的源代码

OpenThread 同时提供 SRP 服务器和客户端功能,使设备能够使用作为单播数据包发送的标准 DNS 更新来注册基于 DNS 的服务。此功能可启用基于 DNS 的服务发现。

本指南介绍了使用一些更常用的 srp serversrp client 命令的基本任务。

SRP 服务器命令

如需查看 srp server 命令列表,请输入 help

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

SRP 客户端命令

如需查看 srp client 命令列表,请输入 help

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

CLI 命令参考文档

如需了解所有命令的说明和语法,请参阅 CLI 命令参考文档。SRP 服务器命令以 srp 服务器 (enable,disable) 的字母顺序开头。SRP 客户端命令以字母顺序 srp client autostart (get) 开头。

Thread Border Router Codelab

OpenThread Border Router Codelab 介绍了如何设置 SRP 客户端终端设备。

一些基本 SRP 命令的概览

可按顺序使用 SRP 服务器和客户端命令执行典型的 SRP 任务:

  1. 启动 SRP 服务器

    在您创建 Thread 网络后,srp server enable 会启用 SRP 服务器。

  2. 启动 SRP 客户端

    • srp client host name 设置客户端要使用的主机名。

    • srp client host address (set) 会启用自动主机客户端地址模式,或明确设置主机客户端地址列表。

    • srp client service add 添加具有给定实例名称、服务名称和端口号的服务。

    • srp client autostart enable 表示启用自动启动模式。您也可以通过运行 srp client start 手动启动客户端。

  3. 验证服务状态

    • srp client hostsrp client service 提供了有关客户端主机和服务是否已在客户端节点上成功注册的状态。

    • srp server hostsrp server service 提供服务器节点上的主机和服务状态。

  4. 移除该服务

    srp client service remove 会移除服务,但会保留服务名称。

  5. 移除主机和服务名称

    srp client host remove 移除主机和所有已注册的服务。

SRP 服务器和客户端命令用法示例

这些示例使用基本 CLI 命令来设置 Thread 网络、启动 SRP 服务器和客户端、验证服务器状态以及移除服务。示例数据仅作说明之用。

启动 SRP 服务器

  1. 启动 SRP 服务器节点:

    ./output/simulation/bin/ot-cli-ftd 1
    
  2. 设置 Thread 网络,然后通过运行 srp server enable 命令启用 SRP 服务器:

    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
    

启动 SRP 客户端

  1. 启动 SRP 客户端节点:

    ./output/simulation/bin/ot-cli-ftd 2
    
  2. 加入 Thread 网络,设置客户端主机名和地址,然后注册服务:

    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
    

    如上所示,使用 srp client autostart enable 命令在客户端上启用自动启动模式。客户端会监控网络数据以发现 Thread 网络中可用的 SRP 服务器,然后客户端会自动启动。

  3. 如果手动启动客户端,请运行以下命令,并在其中包含 SRP 地址和端口:

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

    在上述示例中,监听 UDP 端口的 SRP 服务器为 c002(49154)

验证服务状态

  1. 检查主机和服务是否已成功在客户端节点上注册:

    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
    

    确保输出结果中主机和服务命令均显示 state:Registered,如上例所示。

  2. 检查服务器节点上的主机和服务:

    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
    

    确保输出结果中 srp server hostsrp server service 命令的均显示 deleted: false,如上例所示。

移除服务

  1. 通过客户端节点移除服务:

    srp client service remove my-service _ipps._tcp
    Done
    
  2. 通过服务器节点确认该服务已被移除:

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

    由于服务名称未移除,因此服务条目列在输出中。

移除主机名和服务名称

  1. 移除主机及其所有已注册的服务:

    srp client host remove 1
    Done
    
  2. 在服务器节点上确认未列出主机或服务条目:

    srp server host
    Done
    srp server service
    Done
    >