Thread ネットワーク データには、Thread ネットワークで利用可能なボーダー ルーターやその他のサーバーに関する情報が含まれています。ボーダー ルーターとサービスを提供するデバイスは、情報をリーダーに登録します。リーダーは、この情報を Thread ネットワーク データ内で収集して構造化し、その情報を Thread ネットワーク内のすべてのデバイスに配信します。
ボーダー ルーターは、Thread ネットワークに割り当てられたプレフィックスとルートを提供するプレフィックスを登録できます。サービスは、サービス自体に関連するすべての情報を登録できます。
ボーダー ルーターとサービス情報は、安定または一時的です。Stable Thread ネットワーク データは、Sleepy End デバイス(SED)を含むすべてのデバイスに配布されます。 一時的なネットワーク データは、SED を除くすべてのノードに分散されます。
ネットワーク データコマンド
netdata
コマンドのリストを表示するには、「help
」と入力します。
netdata help
help
full
length
maxlength
publish
register
show
steeringdata
unpublish
Done
full
コマンド
full
コマンドは、フラグ ステータスを報告するか、または「net data full」コールバックが呼び出されているかどうかを示すフラグ追跡を解除します。
このコマンドには、OPENTHREAD_CONFIG_BORDER_ROUTER_SIGNAL_NETWORK_DATA_FULL が必要です。
length
コマンドおよび maxlength
コマンド
length
コマンドは、スレッド ネットワーク データの現在の長さ(バイト数)を取得します。maxlength
コマンドは、観測された最大長を取得するか、追跡された最大長をリセットします。
publish
コマンド
ネットワーク データ パブリッシャーは、ネットワーク データをモニタリングし、エントリを追加または削除するタイミングを管理することで、Thread ネットワーク データ内の同様の Service と Prefix(オンメッシュ プレフィックスまたは外部ルート)のエントリの数を制限するメカニズムを備えています。
ニュース メディアには OPENTHREAD_CONFIG_NETDATA_PUBLISHER_ENABLE
が必要です。
ネットワークの形成と接頭辞の構成
新しいネットワーク構成を生成します。
dataset init new
Doneネットワーク構成を表示します。
dataset
Active Timestamp: 1 Channel: 13 Channel Mask: 0x07fff800 Ext PAN ID: d63e8e3e495ebbc3 Mesh Local Prefix: fd3d:b50b:f96d:722d::/64 Network Key: dfd34f0f05cad978ec4e32b0413038ff Network Name: OpenThread-8f28 PAN ID: 0x8f28 PSKc: c23a76e98f1a6483639b1ac1271e2e27 Security Policy: 0, onrcb Done新しいデータセットを、不揮発性ストレージのアクティブ オペレーション データセットに commit します。
dataset commit active
DoneThread インターフェースを有効にする
ifconfig up
Donethread start
DoneThread インターフェースに割り当てられた IPv6 アドレスを表示します。
ipaddr
fd3d:b50b:f96d:722d:0:ff:fe00:fc00 fd3d:b50b:f96d:722d:0:ff:fe00:dc00 fd3d:b50b:f96d:722d:393c:462d:e8d2:db32 fe80:0:0:0:a40b:197f:593d:ca61 DoneThread ネットワークに割り当てられた IPv6 プレフィックスを登録します。
prefix add fd00:dead:beef:cafe::/64 paros med
Donenetdata register
DoneThread ネットワーク データの表示。
netdata show
Prefixes: fd00:dead:beef:cafe::/64 paros med dc00 Routes: fd49:7770:7fc5:0::/64 s med 4000 Services: 44970 5d c000 s 4000 44970 01 9a04b000000e10 s 4000 Done接頭辞とルートには、引数マッピングと RLOC 値が含まれています。
サービス レコードには、
otServerConfig::mStable
を示すmEnterpriseNumber
、mServiceData
、otServerConfig::mServerData
、s
などの otServiceConfig 値が含まれます。RLOC はレコードの末尾にも追加されます。パーティションの Thread ネットワーク データの現在の長さ(バイト数)を表示します。
netdata length
23 DoneThread インターフェースに割り当てられた IPv6 アドレス(追加されたプレフィックスを含む)を表示します。
ipaddr
fd00:dead:beef:cafe:4da8:5234:4aa2:4cfa fd3d:b50b:f96d:722d:0:ff:fe00:fc00 fd3d:b50b:f96d:722d:0:ff:fe00:dc00 fd3d:b50b:f96d:722d:393c:462d:e8d2:db32 fe80:0:0:0:a40b:197f:593d:ca61 Done
既存のネットワークに接続
デバイスが Thread ネットワークに接続するには、ネットワーク キーのみが必要です。
必須ではありませんが、チャネルを指定することで、複数のチャネルにわたって検索する必要がなくなり、接続プロセスのレイテンシと効率の両方が向上します。
デバイスが Thread ネットワークに正常に接続されると、デバイスは完全なアクティブ運用データセットを取得します。
部分的なアクティブ運用データセットを作成する。
dataset networkkey dfd34f0f05cad978ec4e32b0413038ff
Donedataset commit active
DoneThread インターフェースを有効にします。
ifconfig up
Donethread start
Done既存のネットワークに接続した後、Thread ネットワーク データを表示します。
netdata show
Prefixes: fd00:dead:beef:cafe::/64 paros med dc00 Routes: Services: Doneパーティションの Thread ネットワーク データの現在の長さ(バイト数)を表示します。
netdata length
23 DoneThread インターフェースに割り当てられた IPv6 アドレスを表示します。
ipaddr
fd00:dead:beef:cafe:4da8:5234:4aa2:4cfa fd3d:b50b:f96d:722d:0:ff:fe00:fc00 fd3d:b50b:f96d:722d:0:ff:fe00:dc00 fd3d:b50b:f96d:722d:393c:462d:e8d2:db32 fe80:0:0:0:a40b:197f:593d:ca61 Done
デバッグと診断
ネットワーク データの上限は 254 バイトです。ボーダー ルーターがネットワーク データへのエントリ(プレフィックス、ルート、サービス エントリなど)を追加し続けると、フルステータスになる可能性があります。この場合、ボーダー ルーターからの新しいアイテムの追加リクエストは、リーダーによって拒否または無視されます。リーダーは、必ずしも拒否をボーダー ルーターに通知しないため、ボーダー ルーターはネットワーク データが満杯であるとすぐには認識しない可能性があります。ただし、ネットワーク データが満杯になったことを検出するメソッドもあります。
ボーダー ルーターとリーダーの両方に実装される検出メソッドは、コールバック API メカニズムを使用してネットワーク データがいっぱいになったときにユーザーに通知できるようにします。コールバックを使用すると、古いプレフィックスやサービスエントリを削除するなど、アクションを実行できます。netdata full
コマンドは、「net data full」コールバックが呼び出されたかどうかを追跡するフラグに使用されます。これらのコマンドでは、フラグのステータスを報告したり、フラグをリセットしたりできます。
Thread の典型的なユースケースでは、多数のボーダー ルーターがあり、すべてにルート プレフィックスが追加されている場合でも、ネットワーク データが満杯になる可能性は低くなります。
技術的にネットワーク データを取得することは可能ですが、多くの場合、構成ミスやボーダー ルーターの問題が原因として考えられます。netdata length
コマンドと netdata maxlength
コマンドを使用すると、ネットワーク データのエラーをすべてデバッグできます。length
はネットワーク データの現在の長さ(バイトとして取得)を、maxlength
は観測された最大長を取得し、追跡された最大長をリセットすることもできます。