IPv6 アドレス指定

<ph type="x-smartling-placeholder"></ph> GitHub のソースを表示

Thread がネットワーク内の各デバイスを識別する仕組みと、 異なる種類のアドレスが相互に通信するために使います。

スコープ

OT スコープ

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

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

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

Unicast

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

各タイプの詳細に入る前に、一般的なタイプである ルーティング ロケーター(RLOC)。RLOC は、Thread インターフェースの識別に ネットワークトポロジの中で 最も望ましいロケーションです

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

すべてのデバイスにルーター ID と子 ID が割り当てられます。各 Router は、 そのすべての子テーブルを一意に識別する トポロジ内のデバイスに適用されます。たとえば、スライドのハイライト表示されたノードについて考えてみましょう。 次のトポロジではルーター(五角形)の数字がルーター ID です。 エンドデバイスの数字(丸)が子 ID です。

OT RLOC トポロジ

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

例として、左上のノード(Router)の RLOC16 の計算方法は次のとおりです。 ID = 1 かつ子 ID = 1):

OT RLOC16

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

0000:00ff:fe00:RLOC16

IID とメッシュ ローカル プレフィックスを組み合わせることで、RLOC が生成されます。たとえば fde5:8dba:82e1:1::/64 のメッシュ ローカル接頭辞を使用します。この接頭辞は、 RLOC16 = 0x401 は:

OT RLOC

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

アドレス付き OT トポロジ

ただし、RLOC はトポロジ内のノードのロケーションに基づいているため、 ノードの RLOC はトポロジの変更に伴って変化する可能性があります。

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

変更後の OT トポロジ

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

RLOC は、Thread デバイスが持つ多くの IPv6 ユニキャスト アドレスの一つにすぎません。 アドレスのもう一つのカテゴリは、エンドポイント識別子(EID)と呼ばれ、 Thread ネットワーク パーティション内で一意の Thread インターフェースを識別します。EID は ネットワークトポロジに依存しません

一般的なユニキャスト タイプは次のとおりです。

単一の無線通信で到達可能なスレッド インターフェースを識別する 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 が付きます

Routing Locator(RLOC)

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

エニーキャスト ロケータ(ALOC)

宛先の RLOC が不明な場合、RLOC ルックアップによってスレッド インターフェースを識別します。
fde5:8dba:82e1:1::ff:fe00:fc01
IID0000:00ff:fe00:fcXX
範囲メッシュローカル
詳細
  • fcXX = 適切な RLOC を検索する ALOC の宛先
  • 通常はアプリケーションで使用されない

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

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

マルチキャスト

マルチキャストは、一度に複数のデバイスに情報を伝達するために使用されます。新しい スレッド ネットワーク。特定のアドレスは、マルチキャスト用に予約されており、 自動的にグループ化します。

IPv6 アドレス 範囲 配送先住所:
ff02::1 リンクローカル すべての FTD と MED
ff02::2 リンクローカル すべての FTD
ff03::1 メッシュローカル すべての FTD と MED
ff03::2 メッシュローカル すべての FTD

Sleepy End デバイス(SED)は、 マルチキャストの表に表示されます。Thread では、 リンクローカルおよびレルムローカル スコープのユニキャスト プレフィックス ベースの IPv6 マルチキャスト すべてのスレッド ノード(SED を含む)に使用されるアドレスです。これらのマルチキャストは、 Thread ネットワークはユニキャストに基づいて構築されているため、 Mesh-Local プレフィックス(RFC 3306 を参照) を参照してください)。

上記以外の任意のスコープも、Thread でサポートされます。 できます。

エニーキャスト

エニーキャストは、API 呼び出しの RLOC が 宛先が不明です。エニーキャスト ロケータ(ALOC)は、 複数のインターフェースを提供します。ALOC の最後の 16 ビットは (ALOC16)は 0xfcXX の形式です。 ALOC のタイプを表します。

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

Thread では、以下の ALOC16 値を定義しています。

ALOC16 タイプ
0xfc00 リーダー
0xfc010xfc0f DHCPv6 エージェント
0xfc100xfc2f サービス
0xfc300xfc37 コミッショナー
0xfc400xfc4e Neighbor Discovery Agent
0xfc380xfc3f
0xfc4f0xfcff
予約済み

内容のまとめ

学習した内容:

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

Thread の IPv6 アドレス指定について詳しくは、 Thread 仕様

理解度をチェックする

Thread ネットワークでユニキャスト アドレス指定に使用される 3 つのスコープはどれですか。
非公開
不正解です。
インターフェース ローカル
不正解です。
リンクローカル
正解です。
サイトローカル
不正解です。
メッシュローカル
正解です。
グローバル
正解です。
デバイスの子 ID が 0 の場合、どういう意味ですか?
デバイスが子どもである。
不正解です。
デバイスはリードです。
不正解です。
デバイスがルーターである。
正解です。Router の子 ID は常に 0 です。
Thread ネットワーク上のノードであるカメラが新しい RLOC16 を受け取ります。 使用できます。その原因として考えられるのは、次のうちどれですか。
誰かがカメラから画像をリモートでダウンロードしました。
不正解です。このイベントはスレッドとは関係ありません 接続します
ルーターがネットワークから切断されました。
正解です。ルーターがネットワークを切断すると、そのネットワークは 発生し、その結果、デバイスが異常な状態、 新しい RLOC を取得します。
カメラがスリープモードになり、ネットワーク トポロジが変更されています。
不正解です。おやすみモードに入っても、デバイスが 新しいネットワーク アドレスを受信します。
Thread ネットワーク上のデバイスが ff03::2 をサブスクライブする 割り振られます。このことから、デバイスについて何がわかりますか?
Minimal End Device(MED)である。
不正解です。
フルエンド デバイス(FED)である。
不正解です。(ヒント: FED の場合もあれば、そうでない場合もあります)。
これは Minimal Thread デバイス(MTD)です。
不正解です。
フルスレッド デバイス(FTD)である。
正解です。フルスレッドデバイスのみが ff03::2 マルチキャスト アドレス。これは、Mesh-Local あります。
Thread がデータを次の場所に転送するために使用するアドレス指定とルーティングの種類は、次のうちどれですか。 構成する必要がありますか?
ユニキャスト
不正解です。
エニーキャスト
不正解です。
マルチキャスト
正解です。
ブロードキャスト
不正解です。
Thread デバイスは、 目的のメッセージ受信者の RLOC が不明か?
ユニキャスト
不正解です。
エニーキャスト
正解です。エニーキャストを使用すると、デバイスは RLOC が適用されないノードに デバイスの ALOC に対処することで、既知の既知の脅威である
マルチキャスト
不正解です。
ブロードキャスト
不正解です。