Thread がネットワーク内の各デバイスを識別する仕組みと、相互に通信に使用するアドレスの種類を見てみましょう。
スコープ

スレッド ネットワークには、ユニキャスト アドレス指定用のスコープが 3 つあります。
- リンクローカル - 単一の無線送信で到達可能なすべてのインターフェース
- メッシュ ローカル - 同じスレッド ネットワーク内で到達可能なすべてのインターフェース
- グローバル - スレッド ネットワークの外部から到達可能なすべてのインターフェース
最初の 2 つのスコープは、スレッド ネットワークによって指定された接頭辞に対応します。
Link-Local の接頭辞は fe80::/16
ですが、Mesh-Local の接頭辞は fd00::/8
です。
ユニキャスト
単一の Thread デバイスを識別する複数の IPv6 ユニキャスト アドレスがあります。それぞれに、スコープとユースケースによって異なる機能があります。
それぞれのタイプについて詳しくみる前に、ルーティング ロケータ(RLOC)と呼ばれる共通のタイプについて詳しく説明します。RLOC は、ネットワーク トポロジ内の位置に基づいてスレッド インターフェースを識別します。
ルーティング ロケータの生成方法
すべてのデバイスにルーター ID と子 ID が割り当てられます。各 Router はすべての子テーブルのテーブルを保持し、これらの子の組み合わせはトポロジ内のデバイスを一意に識別するものです。 たとえば、次のトポロジでハイライト表示されているノードについて考えてみましょう。ルーター(五角形)の番号はルーター ID、エンドデバイス(円)の番号は子 ID です。

それぞれの子のルーター ID が親(ルーター)に対応しています。Router は子ではないため、Router の子 ID は常に 0 になります。これらの値は合わせて、スレッド ネットワーク内のデバイスごとに一意であり、RLOC の最後の 16 ビットを表す RLOC16 を作成するために使用されます。
たとえば、左上ノードの RLOC16 の計算方法は次のようになります(ルーター ID = 1、子 ID = 1)。

RLOC16 は、IPv6 アドレスの最後の 64 ビットに対応するインターフェース識別子(IID)の一部です。一部の IID は、スレッド インターフェースのタイプを識別するために使用できます。たとえば、RLOC の IID は常に次の形式になります。
0000:00ff:fe00:RLOC16
IID をメッシュ ローカル プレフィックスと組み合わせると、RLOC になります。たとえば、fde5:8dba:82e1:1::/64
のメッシュ ローカル プレフィックスを使用すると、RLOC16 = 0x401
のノードの RLOC は次のようになります。

同じロジックを使用して、上記のサンプル トポロジでハイライト表示されたすべてのノードの RLOC を決定できます。

ただし、RLOC はトポロジ内のノードの位置に基づいているため、トポロジの変化に応じてノードの RLOC が変わる可能性があります。
たとえば、ノード 0x400
が Thread ネットワークから削除されている可能性があります。ノード 0x401
と 0x402
は異なる Router への新しいリンクを確立し、それぞれ新しい RLOC16 と RLOC が割り当てられます。

ユニキャスト アドレスタイプ
RLOC は、スレッド デバイスに割り当てられる IPv6 ユニキャスト アドレスの 1 つです。別のアドレスのカテゴリはエンドポイント ID(EID)と呼ばれ、スレッド ネットワーク パーティション内の一意のスレッド インターフェースを識別します。EID は Thread ネットワーク トポロジから独立しています。
一般的な unicast タイプについては、以下で詳しく説明します。
リンクローカル アドレス(LLA) |
|
---|---|
単一の無線送信で到達可能なスレッド インターフェースを識別する EID。 | |
例 | fe80::54db:881c:3845:57f4 |
IID | 802.15.4 拡張アドレスに基づく |
スコープ | リンクローカル |
詳細 |
|
メッシュ ローカル EID(ML-EID) |
|
---|---|
ネットワーク トポロジから独立した、スレッド インターフェースを識別する EID。同じ Thread パーティション内の Thread インターフェースにアクセスするために使用されます。ユニーク ローカル アドレス(ULA)とも呼ばれます。 | |
例 | fde5:8dba:82e1:1:416:993c:8399:35ab |
IID | ランダム(試運転完了後に選択) |
スコープ | メッシュ ローカル |
詳細 |
|
ルーティング ロケータ(RLOC) |
|
---|---|
スレッド インターフェースを、ネットワーク トポロジ内の場所に基づいて識別します。 | |
例 | fde5:8dba:82e1:1::ff:fe00:1001 |
IID | 0000:00ff:fe00:RLOC16 |
スコープ | メッシュ ローカル |
詳細 |
|
Anycast Locator(ALOC) |
|
---|---|
デスティネーションの RLOC が不明な場合、RLOC ルックアップを介してスレッド インターフェースを識別します。 | |
例 | fde5:8dba:82e1:1::ff:fe00:fc01 |
IID | 0000:00ff:fe00:fcXX |
スコープ | メッシュ ローカル |
詳細 |
|
グローバル ユニキャスト アドレス(GUA) |
|
---|---|
スレッド ネットワークを越えるグローバル スコープのスレッド インターフェースを識別する EID。 | |
例 | 2000::54db:881c:3845:57f4 |
IID |
|
スコープ | グローバル |
詳細 |
|
マルチキャスト
マルチキャストは、複数のデバイスに情報を一度に伝達するために使用されます。Thread ネットワークでは、範囲に応じて、特定のアドレスを複数のデバイス グループによるマルチキャスト用に予約します。
IPv6 アドレス | 範囲 | 配送先住所: |
---|---|---|
ff02::1 |
リンクローカル | すべての FTD と MED |
ff02::2 |
リンクローカル | すべての FTD |
ff03::1 |
メッシュ ローカル | すべての FTD と MED |
ff03::2 |
メッシュ ローカル | すべての FTD |
上記のマルチキャスト テーブルには、Sleepy End Devices(SED)が受信者として含まれていない場合があります。代わりに、Thread は、SED を含むすべてのスレッドノードに使用されるリンクローカルおよびレルムローカル スコープのユニキャスト接頭辞ベースの IPv6 マルチキャスト アドレスを定義します。これらのマルチキャスト アドレスは、ユニキャストのメッシュ ローカル プレフィックスに基づいて構築されているため、スレッド ネットワークによって異なります(ユニキャスト接頭辞ベースの IPv6 マルチキャストの詳細については、RFC 3306 をご覧ください)。 。
Thread デバイスでは、すでに一覧表示されているもの以外の任意のスコープもサポートされています。
エニーキャスト
エニーキャストは、宛先の RLOC が不明なときにトラフィックをスレッド インターフェースにルーティングするために使用されます。エニーキャスト ロケータ(ALOC)は、スレッド パーティション内の複数のインターフェースの位置を特定します。ALOC16 と呼ばれる、ALOC の最後の 16 ビットは、ALOC のタイプを表す 0xfcXX
の形式です。
たとえば、0xfc01
と 0xfc0f
の間の ALOC16 は、DHCPv6 エージェント用に予約されています。特定の DHCPv6 エージェント RLOC が不明な場合(ネットワーク トポロジが変更されている場合など)、DHCPv6 エージェント ALOC にメッセージを送信して RLOC を取得できます。
スレッドは、次の ALOC16 値を定義します。
16 | タイプ |
---|---|
0xfc00 |
リーダー |
0xfc01 ~0xfc0f |
DHCPv6 エージェント |
0xfc10 ~0xfc2f |
サービス |
0xfc30 ~0xfc37 |
コミッショナー |
0xfc40 ~0xfc4e |
ネイバー ディスカバリー エージェント |
0xfc38 ~0xfc3f 0xfc4f ~0xfcff |
予約済み |
内容のまとめ
学習した内容
- スレッド ネットワークは、リンクローカル、メッシュローカル、グローバルの 3 つのスコープで構成されます。
- スレッド デバイスには複数のユニキャスト IPv6 アドレスがあります
- RLOC は、スレッド ネットワーク内のデバイスの位置を表すものです。
- ML-EID はパーティション内のスレッド デバイスに固有であり、アプリケーションで使用する必要がある
- スレッドがマルチキャストを使用してデータをノードとルーターのグループに転送する
- 宛先の RLOC が不明な場合、スレッドはエニーキャストを使用します
スレッドの IPv6 アドレス指定の詳細については、スレッド仕様のセクション 5.2 および 5.3 をご覧ください。
理解度の確認
ff03::2
マルチキャスト アドレスに登録します。デバイスについて何がわかりますか?ff03::2
マルチキャスト アドレスに登録できるのは、フルスレッド デバイスのみです。これを行うには、メッシュ ローカル スコープを使用します。