OT CLI を使用した Service Registration Protocol(SRP)サーバー クライアント接続の設定

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 (enable,disable) で始まります。SRP クライアント コマンドは、srp client autostart (get) でアルファベット順で始まります。

Thread ボーダー ルーターの Codelab

OpenThread ボーダー ルーターの 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 host コマンドと srp 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
    >