Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

IPv6 アドレス指定

GitHub でソースを見る

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

スコープ

OT スコープ

スレッド ネットワークには、ユニキャスト アドレス指定用のスコープが 3 つあります。

  • リンクローカル - 単一の無線送信で到達可能なすべてのインターフェース
  • メッシュ ローカル - 同じスレッド ネットワーク内で到達可能なすべてのインターフェース
  • グローバル - スレッド ネットワークの外部から到達可能なすべてのインターフェース

最初の 2 つのスコープは、スレッド ネットワークによって指定された接頭辞に対応します。 Link-Local の接頭辞は fe80::/16 ですが、Mesh-Local の接頭辞は fd00::/8 です。

ユニキャスト

単一の Thread デバイスを識別する複数の IPv6 ユニキャスト アドレスがあります。それぞれに、スコープとユースケースによって異なる機能があります。

それぞれのタイプについて詳しくみる前に、ルーティング ロケータ(RLOC)と呼ばれる共通のタイプについて詳しく説明します。RLOC は、ネットワーク トポロジ内の位置に基づいてスレッド インターフェースを識別します。

ルーティング ロケータの生成方法

すべてのデバイスにルーター ID と子 ID が割り当てられます。各 Router はすべての子テーブルのテーブルを保持し、これらの子の組み合わせはトポロジ内のデバイスを一意に識別するものです。 たとえば、次のトポロジでハイライト表示されているノードについて考えてみましょう。ルーター(五角形)の番号はルーター ID、エンドデバイス(円)の番号は子 ID です。

OT RLOC トポロジ

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

たとえば、左上ノードの RLOC16 の計算方法は次のようになります(ルーター ID = 1、子 ID = 1)。

OT RLOC16

RLOC16 は、IPv6 アドレスの最後の 64 ビットに対応するインターフェース識別子(IID)の一部です。一部の IID は、スレッド インターフェースのタイプを識別するために使用できます。たとえば、RLOC の IID は常に次の形式になります。

0000:00ff:fe00:RLOC16

IID をメッシュ ローカル プレフィックスと組み合わせると、RLOC になります。たとえば、fde5:8dba:82e1:1::/64 のメッシュ ローカル プレフィックスを使用すると、RLOC16 = 0x401 のノードの RLOC は次のようになります。

OT RLOC

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

OT トポロジと住所の組み合わせ

ただし、RLOC はトポロジ内のノードの位置に基づいているため、トポロジの変化に応じてノードの RLOC が変わる可能性があります。

たとえば、ノード 0x400 が Thread ネットワークから削除されている可能性があります。ノード 0x4010x402 は異なる Router への新しいリンクを確立し、それぞれ新しい RLOC16 と RLOC が割り当てられます。

変更後の OT トポロジ

ユニキャスト アドレスタイプ

RLOC は、スレッド デバイスに割り当てられる IPv6 ユニキャスト アドレスの 1 つです。別のアドレスのカテゴリはエンドポイント ID(EID)と呼ばれ、スレッド ネットワーク パーティション内の一意のスレッド インターフェースを識別します。EID は Thread ネットワーク トポロジから独立しています。

一般的な unicast タイプについては、以下で詳しく説明します。

単一の無線送信で到達可能なスレッド インターフェースを識別する EID。
fe80::54db:881c:3845:57f4
IID802.15.4 拡張アドレスに基づく
スコープリンクローカル
詳細
  • 近隣ユーザーの検出、リンクの設定、ルーティング情報の交換に使用
  • ルーティング可能なアドレスではありません
  • 常に fe80::/16 のプレフィックスが付きます。

メッシュ ローカル EID(ML-EID)

ネットワーク トポロジから独立した、スレッド インターフェースを識別する EID。同じ Thread パーティション内の Thread インターフェースにアクセスするために使用されます。ユニーク ローカル アドレス(ULA)とも呼ばれます。
fde5:8dba:82e1:1:416:993c:8399:35ab
IIDランダム(試運転完了後に選択)
スコープメッシュ ローカル
詳細
  • トポロジが変更されても変更されない
  • アプリケーションで使用
  • 常に接頭辞 fd00::/8 が付加されます

ルーティング ロケータ(RLOC)

スレッド インターフェースを、ネットワーク トポロジ内の場所に基づいて識別します。
fde5:8dba:82e1:1::ff:fe00:1001
IID0000:00ff:fe00:RLOC16
スコープメッシュ ローカル
詳細
  • デバイスがネットワークに接続されると生成されます
  • スレッド ネットワーク内で IPv6 データグラムを配信する場合
  • トポロジの変化による変化
  • 通常はアプリケーションで使用しません

Anycast Locator(ALOC)

デスティネーションの RLOC が不明な場合、RLOC ルックアップを介してスレッド インターフェースを識別します。
fde5:8dba:82e1:1::ff:fe00:fc01
IID0000:00ff:fe00:fcXX
スコープメッシュ ローカル
詳細

グローバル ユニキャスト アドレス(GUA)

スレッド ネットワークを越えるグローバル スコープのスレッド インターフェースを識別する EID。
2000::54db:881c:3845:57f4
IID
  • SLAAC - デバイスによりランダムに割り当てられる
  • DHCP - DHCPv6 サーバーにより割り当て
  • 手動 - アプリケーション レイヤによって割り当てられる
スコープグローバル
詳細
  • パブリック IPv6 アドレス
  • 常に 2000::/3 のプレフィックスが付きます。

マルチキャスト

マルチキャストは、複数のデバイスに情報を一度に伝達するために使用されます。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 の形式です。

たとえば、0xfc010xfc0f の間の ALOC16 は、DHCPv6 エージェント用に予約されています。特定の DHCPv6 エージェント RLOC が不明な場合(ネットワーク トポロジが変更されている場合など)、DHCPv6 エージェント ALOC にメッセージを送信して RLOC を取得できます。

スレッドは、次の ALOC16 値を定義します。

16 タイプ
0xfc00 リーダー
0xfc010xfc0f DHCPv6 エージェント
0xfc100xfc2f サービス
0xfc300xfc37 コミッショナー
0xfc400xfc4e ネイバー ディスカバリー エージェント
0xfc380xfc3f
0xfc4f0xfcff
予約済み

内容のまとめ

学習した内容

  • スレッド ネットワークは、リンクローカル、メッシュローカル、グローバルの 3 つのスコープで構成されます。
  • スレッド デバイスには複数のユニキャスト IPv6 アドレスがあります
    • RLOC は、スレッド ネットワーク内のデバイスの位置を表すものです。
    • ML-EID はパーティション内のスレッド デバイスに固有であり、アプリケーションで使用する必要がある
  • スレッドがマルチキャストを使用してデータをノードとルーターのグループに転送する
  • 宛先の RLOC が不明な場合、スレッドはエニーキャストを使用します

スレッドの IPv6 アドレス指定の詳細については、スレッド仕様のセクション 5.2 および 5.3 をご覧ください。

理解度の確認

スレッド ネットワーク内のユニキャスト アドレス指定に使用されるスコープは次のどれですか。
限定公開
不正解です。
インターフェース ローカル
不正解です。
リンクローカル
正解です。
サイトローカル
不正解です。
メッシュ ローカル
正解です。
グローバル
正解です。
デバイスの子 ID が 0 である場合、これは何を意味しますか?
デバイスがお子様である。
不正解です。
デバイスが REED である。
不正解です。
デバイスがルーターである。
正解です。Router の子 ID は常に 0 です。
スレッド ネットワーク上のノードであるカメラが、新しい RLOC16 と RLOC を受け取ります。その原因となった可能性のあるイベントは次のうちどれですか。
誰かがカメラからリモートで画像をダウンロードしました。
不正解です。このイベントは Thread ネットワークに関係ありません。
ルーターがネットワークから切断されました。
正解です。ルーターがネットワークから切断されると、ネットワーク トポロジが変更され、デバイスがルーターに昇格して新しい RLOC を取得することがあります。
カメラがスリープモードに入り、ネットワーク トポロジが変化しました。
不正解です。スリープモードに入っても、デバイスが新しいネットワーク アドレスを受信するとは限りません。
スレッド ネットワーク上のデバイスは、ff03::2 マルチキャスト アドレスに登録します。デバイスについて何がわかりますか?
これは最小エンドデバイス(MED)です。
不正解です。
これはフルエンド デバイス(FED)です。
不正解です。(ヒント: FED であるとは限りません)。
最小スレッド デバイス(MTD)です。
不正解です。
フルスレッド デバイス(FTD)です。
正解です。ff03::2 マルチキャスト アドレスに登録できるのは、フルスレッド デバイスのみです。これを行うには、メッシュ ローカル スコープを使用します。
スレッドがノードとルーターのグループにデータを転送する際に使用するアドレス指定とルーティングの種類はどれですか。
ユニキャスト
不正解です。
エニーキャスト
不正解です。
マルチキャスト
正解です。
ブロードキャスト
不正解です。
意図されたメッセージ受信者の RLOC が不明な場合、スレッド デバイスはどのタイプのアドレス指定とルーティングを使用しますか?
ユニキャスト
不正解です。
エニーキャスト
正解です。エニーキャストを使用すると、デバイスの ALOC を送信することで、RLOC が不明のノードにデバイスからアクセスできます。
マルチキャスト
不正解です。
ブロードキャスト
不正解です。