IPv6-Adressierung

Quelle auf GitHub ansehen

Sehen wir uns an, wie Thread jedes Gerät im Netzwerk identifiziert und welche Adressen sie zur Kommunikation verwenden.

Sucher

OT-Bereiche

In einem Thread-Netzwerk gibt es drei Bereiche für die Unicast-Adressierung:

  • Link-Local – alle Schnittstellen, die über eine einzelne Funkübertragung erreichbar sind
  • Mesh-Local – alle Schnittstellen, die innerhalb desselben Thread-Netzwerks erreichbar sind
  • Global: alle Schnittstellen, die von außerhalb eines Thread-Netzwerks erreichbar sind

Die ersten beiden Bereiche entsprechen Präfixen, die von einem Thread-Netzwerk festgelegt wurden. Link-Local hat die Präfixe fe80::/16, Mesh-Local hat das Präfix fd00::/8.

Unicast

Es gibt mehrere IPv6-Unicast-Adressen, die ein einzelnes Thread-Gerät identifizieren. Je nach Umfang und Anwendungsfall hat jede eine andere Funktion.

Bevor wir die einzelnen Typen genauer beschreiben, sehen wir uns zuerst einen allgemeinen Typ an, den Routing Locator (RLOC). Der RLOC identifiziert eine Thread-Schnittstelle basierend auf ihrem Standort in der Netzwerktopologie.

So wird eine Routingsuche generiert

Allen Geräten wird eine Router-ID und eine untergeordnete ID zugewiesen. Jeder Router unterhält eine Tabelle mit allen untergeordneten Elementen, die jeweils ein Gerät innerhalb der Topologie eindeutig identifizieren. Betrachten Sie beispielsweise die hervorgehobenen Knoten in der folgenden Topologie, wobei die Zahl in einem Router (Fünfeck) die Router-ID und die Zahl in einem Endgerät (Kreis) die untergeordnete ID ist:

OT RLOC-Topologie

Die Router-ID der einzelnen Kinder entspricht der übergeordneten ID (Router). Da ein Router kein untergeordnetes Gerät ist, lautet die untergeordnete ID eines Routers immer 0. Zusammen sind diese Werte für jedes Gerät im Thread-Netzwerk eindeutig und werden zum Erstellen des RLOC16 verwendet, der die letzten 16 Bit des RLOC darstellt.

So wird z. B. RLOC16 für den Knoten oben links berechnet (Router-ID = 1 und untergeordnete ID = 1):

OT RLOC16

Der RLOC16 ist Teil des Interface Identifier (IID), der den letzten 64 Bit der IPv6-Adresse entspricht. Einige IIDs können verwendet werden, um bestimmte Typen von Thread-Schnittstellen zu identifizieren. Die IID für RLOCs hat beispielsweise immer dieses Format:

0000:00ff:fe00:RLOC16

Die IID ergibt in Kombination mit einem Mesh-Local-Präfix das RLOC. Wenn Sie beispielsweise das Mesh-Local-Präfix fde5:8dba:82e1:1::/64 verwenden, entspricht der RLOC für einen Knoten, bei dem RLOC16 = 0x401 ist:

UT RLOC

Dieselbe Logik kann auch verwendet werden, um den RLOC für alle markierten Knoten in der obigen Beispieltopologie zu ermitteln:

OT-Topologie mit Adresse

Da der RLOC jedoch auf dem Standort des Knotens in der Topologie basiert, kann sich der RLOC eines Knotens ändern, wenn sich die Topologie ändert.

Beispiel: Knoten 0x400 wird vielleicht aus dem Thread-Netzwerk entfernt. Die Knoten 0x401 und 0x402 stellen neue Verknüpfungen mit verschiedenen Routern her und erhalten daher neue RLOC16- und RLOC-Werte:

OT-Topologie nach Änderung

Unicast-Adresstypen

Der RLOC ist nur eine von vielen IPv6-Unicast-Adressen, die ein Thread-Gerät haben kann. Eine weitere Kategorie von Adressen sind Endpunkt-IDs (EIDs), die eine eindeutige Thread-Schnittstelle innerhalb einer Thread-Netzwerkpartition identifizieren. EIDs sind von der Thread-Netzwerktopologie unabhängig.

Nachfolgend sind gängige Unicast-Typen aufgeführt.

Eine EID, die eine Thread-Schnittstelle identifiziert, die über eine einzelne Funkübertragung erreichbar ist.
Beispielfe80::54db:881c:3845:57f4
IIDBasierend auf der erweiterten Adresse 802.15.4
Scope (Bereich)Link-Local
Details
  • Wird verwendet, um Nachbarn zu finden, Links zu konfigurieren und Routinginformationen auszutauschen
  • Keine routingfähige Adresse
  • Hat immer das Präfix fe80::/16

Lokales Mesh-Netzwerk-EID (ML-EID)

Eine EID, die eine Thread-Schnittstelle unabhängig von der Netzwerktopologie identifiziert. Wird verwendet, um eine Thread-Schnittstelle innerhalb derselben Thread-Partition zu erreichen. Wird auch als „Local Local Address“ (ULA) bezeichnet.
Beispielfde5:8dba:82e1:1:416:993c:8399:35ab
IIDZufällig; wird nach Abschluss der Inbetriebnahme ausgewählt
Scope (Bereich)Mesh-Netzwerk (lokal)
Details
  • Keine Veränderung der Topologie
  • Sollte von Anwendungen verwendet werden
  • Hat immer das Präfix fd00::/8

Routing-Locator (RLOC)

Kennzeichnet eine Thread-Schnittstelle basierend auf ihrem Standort in der Netzwerktopologie.
Beispielfde5:8dba:82e1:1::ff:fe00:1001
IID0000:00ff:fe00:RLOC16
Scope (Bereich)Mesh-Netzwerk (lokal)
Details
  • Wird generiert, wenn ein Gerät mit einem Netzwerk verbunden wird
  • Für die Bereitstellung von IPv6-Datagrammen innerhalb eines Thread-Netzwerks
  • Änderungen bei Topologieänderungen
  • Wird normalerweise nicht von Anwendungen verwendet

Anycast-Ortung (ALOC)

Kennzeichnet eine Thread-Schnittstelle über RLOC-Lookup, wenn der RLOC eines Ziels nicht bekannt ist.
Beispielfde5:8dba:82e1:1::ff:fe00:fc01
IID0000:00ff:fe00:fcXX
Scope (Bereich)Mesh-Netzwerk (lokal)
Details
  • fcXX = ALOC-Ziel, das den entsprechenden RLOC abruft
  • Wird normalerweise nicht von Anwendungen verwendet

Globale Unicast-Adresse (GUA)

Eine EID, die eine Thread-Schnittstelle auf globaler Ebene außerhalb eines Thread-Netzwerks identifiziert.
Beispiel2000::54db:881c:3845:57f4
IID
  • SLAAC – nach dem Zufallsprinzip vom Gerät selbst zugewiesen
  • DHCP: von einem DHCPv6-Server zugewiesen
  • Manuell – von der Anwendungsebene zugewiesen
Scope (Bereich)Global
Details
  • Eine öffentliche IPv6-Adresse
  • Hat immer das Präfix 2000::/3

Multicast

Multicast wird verwendet, um Informationen an mehrere Geräte gleichzeitig zu kommunizieren. In einem Thread-Netzwerk sind bestimmte Adressen für die Multicast-Nutzung mit verschiedenen Gerätegruppen je nach Bereich reserviert.

IPv6-Adresse Umfang Zugestellt:
ff02::1 Link-Local Alle FTDs und MEDs
ff02::2 Link-Local Alle FTDs
ff03::1 Mesh-Netzwerk (lokal) Alle FTDs und MEDs
ff03::2 Mesh-Netzwerk (lokal) Alle FTDs

Sie werden möglicherweise feststellen, dass Sleepy End-Geräte (SEDs) nicht als Empfänger in der Multicast-Tabelle oben aufgeführt sind. Stattdessen definiert Thread die Link-Local- und Realm-Local-Unicast-Präfix-basierte IPv6-Multicast-Adresse, die für alle Thread-Knoten einschließlich SEDs verwendet wird. Diese Multicast-Adressen variieren je nach Thread-Netzwerk, da sie auf dem Uncast-Mesh-Local-Präfix basieren. Weitere Informationen zu Unicast-Präfix-basierten IPv6-Multicast-Adressen finden Sie unter RFC 3306.

Beliebige Bereiche, die über die bereits aufgeführten hinausgehen, werden auch für Thread-Geräte unterstützt.

Anycast

Anycast wird verwendet, um Traffic an eine Thread-Schnittstelle weiterzuleiten, wenn der RLOC eines Ziels nicht bekannt ist. Ein Anycast Locator (ALOC) identifiziert den Standort mehrerer Schnittstellen innerhalb einer Thread-Partition. Die letzten 16 Bit eines ALOC, das ALOC16, hat das Format 0xfcXX, das den Typ von ALOC darstellt.

Ein ALOC16 zwischen 0xfc01 und 0xfc0f ist beispielsweise für DHCPv6-Agents reserviert. Wenn der spezifische DHCPv6-Agent-RLOC unbekannt ist (z. B. weil sich die Netzwerktopologie geändert hat), kann eine Nachricht an die DOCPv6-Agent-ALOC gesendet werden, um den RLOC abzurufen.

Thread definiert die folgenden ALOC16-Werte:

ALOC16 Typ
0xfc00 Beste Variante
0xfc01 – 0xfc0f DHCPv6-Agent
0xfc10 – 0xfc2f Dienst
0xfc30 – 0xfc37 Commissioner
0xfc40 – 0xfc4e Neighbor Discovery-Agent
0xfc380xfc3f
0xfc4f0xfcff
Reserviert

Zusammenfassung

Das haben Sie gelernt:

  • Ein Thread-Netzwerk besteht aus drei Bereichen: Link-Local, Mesh-Local und Global.
  • Ein Thread-Gerät hat mehrere Unicast-IPv6-Adressen.
    • Ein RLOC stellt den Standort eines Geräts im Thread-Netzwerk dar
    • Eine ML-EID ist einzigartig für ein Thread-Gerät innerhalb einer Partition und sollte von Anwendungen verwendet werden.
  • Thread verwendet Multicast, um Daten an Gruppen von Knoten und Routern weiterzuleiten
  • Thread verwendet Anycast, wenn der RLOC eines Ziels unbekannt ist

Weitere Informationen zur IPv6-Adressierung von Thread finden Sie in den Abschnitten 5.2 und 5.3 der Thread-Spezifikation.

Wissenstest

Welche drei Bereiche werden für die Unicast-Adressierung in einem Thread-Netzwerk verwendet?
Privat
Falsch.
Schnittstelle – Lokal
Falsch.
Link-Local
Richtig!
Website (lokal)
Falsch.
Mesh-Netzwerk (lokal)
Richtig!
Global
Richtig!
Was bedeutet es, wenn ein Gerät die Kinder-ID 0 hat?
Das Gerät ist ein Kind.
Falsch.
Das Gerät ist ein REED.
Fast, aber falsch.
Das Gerät ist ein Router.
Richtig! Ein Router hat immer eine untergeordnete ID von 0.
Eine Kamera, die ein Knoten in einem Thread-Netzwerk ist, empfängt einen neuen RLOC16- und einen RLOC-Wert. Woran kann das liegen?
Jemand hat Bilder per Remotezugriff von der Kamera heruntergeladen.
Falsch. Dieses Ereignis hätte keine Auswirkungen auf das Thread-Netzwerk.
Ein Router hat das Netzwerk verlassen.
Richtig! Wenn ein Router das Netzwerk verlässt, ändert sich die Netzwerktopologie. Dies kann dazu führen, dass das Gerät sich selbst zu einem Router hochstuft und ein neues RLOC erhält.
Die Kamera wechselt in den Ruhemodus. Dadurch hat sich die Netzwerktopologie geändert.
Falsch. Der Eintritt in den Ruhemodus führt nicht unbedingt dazu, dass ein Gerät eine neue Netzwerkadresse empfängt.
Ein Gerät in einem Thread-Netzwerk abonniert die Multicast-Adresse ff03::2. Was verrät uns das über das Gerät?
Es ist ein Minimal-Endgerät (MED).
Falsch.
Es ist ein Full End Device (FED).
Falsch. (Tipp: Es kann ein FED sein.)
Es ist ein Minimal Thread Device (MTD).
Falsch.
Es handelt sich um ein Full-Thread-Gerät (FTD).
Richtig! Nur Full-Thread-Geräte abonnieren die Multicast-Adresse ff03::2. Dies erfolgt im Mesh-Local-Bereich.
Welche Art von Adressierung und Routing verwendet Thread, um Daten an Gruppen von Knoten und Routern weiterzuleiten?
Unicast
Falsch.
Anycast
Falsch.
Multicast
Richtig!
Nachricht an alle
Falsch.
Welche Art von Adressierung und Routing verwendet ein Thread-Gerät, wenn der RLOC des beabsichtigten Nachrichtenempfängers unbekannt ist?
Unicast
Falsch.
Anycast
Richtig! Mit Anycast kann ein Gerät einen Knoten erreichen, dessen RLOC nicht bekannt ist, indem es an die ALOC des Geräts adressiert.
Multicast
Falsch.
Nachricht an alle
Falsch.