Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。
このページは Cloud Translation API によって翻訳されました。
Switch to English

IPv6アドレッシング

GitHubでソースを表示

スレッドがネットワーク内の各デバイスを識別する方法と、それらが相互に通信するために使用するアドレスのタイプを見てみましょう。

スコープ

OTスコープ

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

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

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

ユニキャスト

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

各タイプについて詳しく説明する前に、ルーティングロケーター(RLOC)と呼ばれる一般的なタイプについて詳しく見ていきましょう。 RLOCは、ネットワークトポロジ内の場所に基づいて、スレッドインターフェイスを識別します。

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

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

OTRLOCトポロジ

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

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

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がスレッドネットワークから削除されている可能性があります。ノード0x4010x402は、異なるルーターへの新しいリンクを確立し、その結果、それぞれに新しいRLOC16とRLOCが割り当てられます。

変更後のOTトポロジ

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

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

一般的なユニキャストタイプの詳細を以下に示します。

単一の無線送信で到達可能なスレッドインターフェイスを識別するEID。
fe80::54db:881c:3845:57f4
IID 802.15.4拡張アドレスに基づく
範囲リンクローカル
詳細
  • ネイバーの検出、リンクの設定、およびルーティング情報の交換に使用されます
  • ルーティング可能なアドレスではありません
  • 常にfe80::/16プレフィックスがあります

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

ネットワークトポロジに関係なく、スレッドインターフェイスを識別するEID。同じスレッドパーティション内のスレッドインターフェイスに到達するために使用されます。一意のローカルアドレス(ULA)とも呼ばれます。
fde5:8dba:82e1:1:416:993c:8399:35ab
IID試運転が完了した後に選択されたランダム
範囲メッシュ-ローカル
詳細
  • トポロジが変更されても変更されません
  • アプリケーションで使用する必要があります
  • 常にプレフィックスfd00::/8

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

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

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

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

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

スレッドネットワークを超えて、グローバルスコープでスレッドインターフェイスを識別する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 Devices(SED)が受信者として含まれていないことに気付くかもしれません。代わりに、スレッドは、SEDを含むすべてのスレッドノードに使用されるリンクローカルおよびレルムローカルスコープのユニキャストプレフィックスベースのIPv6マルチキャストアドレスを定義します。これらのマルチキャストアドレスは、ユニキャストメッシュローカルプレフィックスに基づいて構築されているため、スレッドネットワークによって異なります(ユニキャストプレフィックスベースのIPv6マルチキャストアドレスの詳細については、 RFC 3306を参照してください)。

スレッドデバイスでは、すでにリストされている範囲を超える任意のスコープもサポートされています。

エニーキャスト

エニーキャストは、宛先のRLOCが不明な場合に、トラフィックをスレッドインターフェイスにルーティングするために使用されます。エニーキャストロケーター(ALOC)は、スレッドパーティション内の複数のインターフェイスの場所を識別します。 ALOC16呼ばALOCの最後の16ビットは、の形式である0xfc XX ALOCの種類を表します。

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

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

ALOC16タイプ
0xfc00盟主
0xfc010xfc0f DHCPv6エージェント
0xfc100xfc2fサービス
0xfc300xfc37コミッショナー
0xfc400xfc4e近隣探索エージェント
0xfc380xfc3f
0xfc4f0xfcff
予約済み

要約

あなたが学んだこと:

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

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