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

IPv6アドレッシング

GitHubでソースを表示

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

スコープ

OTスコープ

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

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

最初の2つのスコープは、スレッドネットワークによって指定されたプレフィックスに対応します。リンクローカルの接頭辞持っfe80::/16 、メッシュローカルがのプレフィックス持ちながら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 =ノードのRLOC 0x401

OT RLOC

これと同じロジックを使用して、上記のサンプルトポロジで強調表示されているすべてのノードのRLOCを決定できます。

アドレス付きOTトポロジ

ただし、RLOCはトポロジ内のノードの場所に基づいているため、トポロジの変更に応じてノードのRLOCが変更される可能性があります。

例えば、恐らくノード0x400スレッドネットワークから除去されます。ノード0x401および0x402異なるルータへの新しいリンクを確立し、その結果として、彼らはそれぞれの新しい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試運転が完了した後に選択されたランダム
範囲メッシュ-ローカル
詳細
  • トポロジが変更されても変更されません
  • アプリケーションで使用する必要があります
  • 常にはA接頭辞がある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マルチキャストアドレスを定義します。それはユニキャストメッシュローカルプレフィックス上に構築されているため、これらのマルチキャストアドレスは、スレッド・ネットワークによって異なります( RFC 3306をの詳細については、ユニキャストプレフィックスベースIPv6はアドレスをマルチキャスト)。

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

Anycast

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

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

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

ALOC16タイプ
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を参照スレッド仕様