Настройка протокола регистрации служб (SRP) для соединения сервера и клиента с помощью OT CLI

Посмотреть исходный код на GitHub

OpenThread предлагает как серверную, так и клиентскую функциональность SRP, позволяя устройствам регистрировать службы на основе DNS с помощью стандартного обновления DNS, отправляемого в виде одноадресных пакетов. Эта функция обеспечивает обнаружение служб на основе DNS.

В этом руководстве представлены основные задачи, в которых используются некоторые наиболее распространенные команды srp server и srp 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 server (включить, отключить) . Команды клиента SRP начинаются в алфавитном порядке с автозапуска клиента srp (get) .

Кодовая лаборатория Thread Border Router

Лаборатория кода OpenThread Border Router содержит информацию о том, как настроить конечное устройство клиента SRP.

Обзоры некоторых основных команд SRP

Команды сервера и клиента SRP можно использовать последовательно для выполнения типичных задач SRP:

  1. Запустите сервер SRP .

    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 host и srp client service предоставляют статус о том, были ли клиентский хост и служба успешно зарегистрированы на клиентском узле.

    • srp server host и srp 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. Настройте сеть потоков, затем включите сервер SRP, выполнив команду 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
    

Запустите клиент SRP

  1. Запустите узел SRP Client:

    ./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 , чтобы включить режим автозапуска на клиенте. Клиент отслеживает сетевые данные, чтобы обнаружить доступные серверы SRP в сети Thread, после чего клиент автоматически запускается.

  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
    

    Убедитесь, что выходные данные показывают deleted: false как для srp server host , так и для команд srp server service , как в примере выше.

Удалить услугу

  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
    >