5. RPL インスタンス
所与の LLN 内には、複数の論理的に独立した RPL インスタンスが存在する場合があります。RPL ノードは複数の RPL インスタンスに属することができ、あるインスタンスではルーターとして機能し、他のインスタンスではリーフとして機能する場合があります。このドキュメントでは、単一のインスタンスがどのように動作するかについて説明します。
RPL インスタンスには、ローカルとグローバルの 2 種類があります。RPL は、RPLInstanceID の割り当てを調整されたものと一方的なものの両方を可能にするために、RPLInstanceID 空間をグローバルインスタンスとローカルインスタンスに分割します。グローバル RPL インスタンスは調整されており、1 つ以上の DODAG を持ち、通常は長寿命です。ローカル RPL インスタンスは常に単一の DODAG であり、その単一のルートが対応する DODAGID を所有し、一方的な方法でローカル RPLInstanceID を割り当てます。ローカル RPL インスタンスは、たとえば、将来のオンデマンドルーティングソリューションをサポートするための DODAG を構築するために使用できます。ローカル RPL インスタンスの動作モードは本仕様の範囲外であり、他の関連仕様で説明される場合があります。
RPL インスタンスの定義とプロビジョニングは、本仕様の範囲外です。ガイドラインはアプリケーションおよび実装に固有のものである可能性があり、将来の関連仕様で詳しく説明されることが期待されます。これらの操作は、RPL ネットワークの外部から来るデータパケットが少なくとも 1 つの RPL インスタンスに明確に関連付けられ、そのパケットに一致する任意のインスタンスを介して安全にルーティングされるようになることが期待されます。
RPL ネットワーク内の制御パケットとデータパケットは、それらがどの RPL インスタンスの一部であるかを明確に識別するためにタグ付けされます。
すべての RPL 制御メッセージには RPLInstanceID フィールドがあります。一部の RPL 制御メッセージは、以下で定義するようにローカル RPLInstanceID を参照する場合、DODAGID も含む場合があります。
RPL ネットワーク内を流れるデータパケットは、セクション 11.2 で詳しく説明されているように、RPL が必要とする RPL パケット情報の一部として RPLInstanceID を公開します。RPL ネットワークの外部から来るデータパケットの場合、入力ルーターは RPLInstanceID を決定し、それを RPL ネットワークに注入する結果のパケットに配置します。
5.1. RPL インスタンス ID
グローバル RPLInstanceID は、LLN 全体で一意でなければなりません(MUST)。グローバル RPLInstanceID を割り当ててプロビジョニングするメカニズムは、本仕様の範囲外です。ネットワーク全体で最大 128 のグローバルインスタンスが存在できます。ローカルインスタンスは常に DODAGID と組み合わせて使用され(DODAGID は場合によっては明示的または暗黙的に与えられます)、DODAGID ごとに最大 64 のローカルインスタンスをサポートできます。ローカルインスタンスは、以下でさらに詳しく説明するように、他のノードとの明示的な調整なしに、DODAGID を所有するノードによって割り当ておよび管理されます。
グローバル RPLInstanceID は、次のように RPLInstanceID フィールドでエンコードされます。
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|0| ID | Global RPLInstanceID in 0..127
+-+-+-+-+-+-+-+-+
Figure 4: RPLInstanceID Field Format for Global Instances
ローカル RPLInstanceID は、DODAGID を所有するノードによって自動構成され、その DODAGID に対して一意でなければなりません(MUST)。ローカル RPLInstanceID を構成するために使用される DODAGID は、ノードの到達可能な IPv6 アドレスでなければならず(MUST)、そのローカルインスタンス内のすべての通信のエンドポイントとして使用されなければなりません(MUST)。
ローカル RPLInstanceID は、次のように RPLInstanceID フィールドでエンコードされます。
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|1|D| ID | Local RPLInstanceID in 0..63
+-+-+-+-+-+-+-+-+
Figure 5: RPLInstanceID Field Format for Local Instances
ローカル RPLInstanceID の 'D' フラグは、RPL 制御メッセージでは常に 0 に設定されます。これは、DODAGID がパケットの送信元であるか宛先であるかを示すためにデータパケットで使用されます。'D' フラグが 1 に設定されている場合、IPv6 パケットの宛先アドレスは DODAGID でなければなりません(MUST)。'D' フラグがクリアされている場合、IPv6 パケットの送信元アドレスは DODAGID でなければなりません(MUST)。
たとえば、ローカル RPL インスタンスの DODAG ルートであり、ローカル RPLInstanceID を割り当てたノード A を考えます。定義上、そのローカル RPL インスタンスを通過するすべてのトラフィックは、ノード A で発生するか終了します。この場合、DODAGID はノード A の到達可能な IPv6 アドレスになります。すべてのトラフィックには、送信元アドレスまたは宛先アドレスのいずれかにノード A のアドレス、つまり DODAGID が含まれます。したがって、ローカル RPLInstanceID は、'D' フラグを適切に設定することにより、DODAGID が送信元アドレスまたは宛先アドレスのいずれかと等価であることを示すことができます。