ノードのデータモデル(DM)は、オペレーションを実行できない場合は意味がありません。インタラクション モデル (IM )は、ノードの DM と他のノードの DM との関係を定義します。これは、DM 間の通信の共通言語です。
ノードは次の方法で相互にやり取りします。
- 属性とイベントの読み取りと登録
- 属性への書き込み
- コマンドの呼び出し
ノードが別のノードとの暗号化された通信シーケンスを確立すると、インタラクション 関係が確立されます。インタラクションは 1 つ以上の トランザクション で構成され、トランザクションは 1 つ以上の アクション で構成されます。アクションは、 ノード間の IM レベルのメッセージと見なすことができます。
トランザクションでは、他のノードから属性またはイベントをリクエストする読み取りリクエスト アクションや、そのレスポンスであるレポートデータ アクションなど、いくつかのアクションがサポートされています。レポートデータ アクションは、サーバーからクライアントに情報を返します。
イニシエータとターゲット
トランザクションを開始するノードはイニシエータ 、応答するノードは ターゲット です。通常、イニシエータはクライアント クラスタ、ターゲットはサーバー クラスタです。ただし、このパターンには例外があります。たとえば、このセクションで後述するサブスクリプション インタラクション などです。
グループ
Matter のノードは グループ に属している場合があります。デバイスのグループは、同じアクションで複数のデバイスに同時にアドレス指定してメッセージを送信するメカニズムです。グループ内のすべてのノードは、同じグループ ID(16 ビットの整数)を共有します。
グループレベルの通信(グループキャスト)を実現するために、 Matter は IPv6 Multicast メッセージを利用します。すべてのグループ メンバーは同じMulticast アドレスを持ちます。
パス
属性、イベント、コマンドを操作する場合は、このインタラクションのパス を指定する必要があります。これは、ノードのデータモデル階層内の属性、イベント、コマンドの場所です。パスでは、グループ またはワイルドカード演算子 を使用して、複数のノードまたはクラスタに同時にアドレス指定することもできます。これにより、これらのインタラクションが集約され、アクションの数が減ります。
このメカニズムは、通信の応答性を高めるために重要です。たとえば、ユーザーがすべての照明を消灯する場合、音声アシスタントは個々のインタラクションのシーケンスではなく、グループ内の複数の照明との単一のインタラクションを確立できます。イニシエータが各照明との個別のインタラクションを作成すると、デバイスの応答に人間が認識できる遅延が生じる可能性があります。この影響により、複数のデバイスがコマンドに反応する際に、デバイス間に目に見える遅延が生じます。これは「ポップコーン効果」と呼ばれることがよくあります。
Matter のパスは、次のいずれかのオプション を使用して組み立てることができます。
<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID> <cluster> <attribute | event | command>
これらのパスの構成要素内で、endpoint と cluster には、複数のノード インスタンスを選択するためのワイルドカード演算子を含めることもできます。
時間制限ありと時間制限なし
書き込みトランザクションまたは呼び出しトランザクションを実行する方法は、時間制限あり と時間制限なし の 2 つがあります。時間制限付きトランザクションでは、書き込み/呼び出しアクションを送信するための最大タイムアウト が設定されます。このタイムアウトの目的は、トランザクションに対する傍受攻撃 を防ぐことです。これは、ガレージの開閉装置やロックなど、アセットへのアクセスを制御するデバイスに特に有効です。
時間制限付きトランザクションを理解するには、傍受攻撃が発生する仕組みと、時間制限付きトランザクションが重要な理由を理解するとよいでしょう。
傍受攻撃
傍受攻撃には次のパターンがあります。
- アリスがボブに最初のメッセージ(書き込みリクエスト アクションなど)を送信します。
- 中間者であるイブがメッセージを傍受し、ボブがメッセージを受信できないようにします(電波妨害など)。
- ボブからレスポンスが届かないため、アリスは 2 つ目のメッセージを送信します。
- イブが再び傍受し、ボブがメッセージを受信できないようにします。
- イブは、アリスから送信されたかのように、最初に傍受したメッセージをボブに送信します。
- ボブはアリス(とイブ)にレスポンスを送信します。
- イブは、傍受した 2 つ目のメッセージを後で再生するために保持します。ボブはアリスから傍受した 2 つ目のメッセージを元のメッセージとして受信していないため、そのメッセージを受け入れます。このメッセージに「ロックを開ける」などのコマンドがエンコードされている場合、セキュリティ侵害となります。
このような攻撃を防ぐため、時間制限付きアクションでは、トランザクションの開始時にトランザクションの最大タイムアウトを設定します。イブが攻撃ベクトルの最初の 6 つのステップを実行できたとしても、トランザクションのタイムアウトが切れているため、ステップ 7 でメッセージを再生することはできません。
時間制限付きトランザクションでは、アクションの複雑さと数が増えます。そのため、すべてのトランザクションに推奨されるわけではありません。物理的または仮想的なセキュリティとプライバシー アセットを制御するデバイスの重要なオペレーションにのみ推奨されます。
SDK の抽象化
読み取りトランザクション、 書き込みトランザクション、および 呼び出しトランザクション のセクションでは、 SDK によって実行されるインタラクション モデル アクションの概要を説明します。
Matter SDK を使用するプロダクトを作成するデベロッパーは、通常、アクションを実行する呼び出しを直接行いません。アクションは インタラクションにカプセル化する SDK 関数によって抽象化されます。 ただし、IM アクションを理解することは、エンジニアが Matterの機能を十分に理解し、SDK 実装を細かく 制御するために重要です。