IPv6-Adressierung

Quelle auf GitHub ansehen

Sehen wir uns an, wie Thread jedes Gerät im Netzwerk identifiziert und welche Arten von Adressen für die Kommunikation zwischen den Geräten verwendet werden.

Bereiche

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 sind innerhalb desselben Thread-Netzwerks erreichbar.
  • 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 werden. Link-Local-Adressen haben das Präfix fe80::/16, Mesh-Local-Adressen das Präfix fd00::/8.

Unicast

Es gibt mehrere IPv6-Unicast-Adressen, die ein einzelnes Thread-Gerät identifizieren. Die Funktion der jeweiligen Schaltfläche hängt vom Umfang und Anwendungsfall ab.

Bevor wir auf die einzelnen Typen eingehen, sehen wir uns einen häufigen Typ an, den sogenannten Routing Locator (RLOC). Der RLOC identifiziert eine Thread-Schnittstelle anhand ihrer Position in der Netzwerktopologie.

So wird ein Routing-Locator generiert

Allen Geräten wird eine Router-ID und eine untergeordnete ID zugewiesen. Jedes übergeordnete Gerät verwaltet eine Tabelle aller untergeordneten Geräte, deren Kombination ein Gerät innerhalb der Topologie eindeutig identifiziert. Betrachten Sie beispielsweise die hervorgehobenen Knoten in der folgenden Topologie. Die Zahl in einem Mesh-Extender (Fünfeck) ist die Router-ID und die Zahl in einem Endgerät (Kreis) ist die untergeordnete ID:

OT-RLOC-Topologie

Die Router-ID jedes untergeordneten Geräts entspricht der des übergeordneten Geräts (Mesh-Repeater). Da ein Mesh-Extender kein untergeordnetes Gerät ist, ist die untergeordnete ID für einen Mesh-Extender immer 0. Zusammen sind diese Werte für jedes Gerät im Thread-Netzwerk eindeutig und werden verwendet, um den RLOC16 zu erstellen, der die letzten 16 Bit des RLOC darstellt.

Hier ist ein Beispiel für die Berechnung von RLOC16 für den Knoten oben links (Router-ID = 1 und untergeordnete ID = 1):

OT RLOC16

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

0000:00ff:fe00:RLOC16

Die IID ergibt zusammen mit einem Mesh-Local Prefix den RLOC. Wenn Sie beispielsweise das Mesh-Local-Präfix fde5:8dba:82e1:1::/64 verwenden, lautet der RLOC für einen Knoten mit RLOC16 = 0x401:

OT RLOC

Dieselbe Logik kann verwendet werden, um den RLOC für alle hervorgehobenen Knoten in der Beispieltopologie oben zu bestimmen:

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.

Möglicherweise wird beispielsweise der Knoten 0x400 aus dem Thread-Netzwerk entfernt. Die Knoten 0x401 und 0x402 stellen neue Verbindungen zu verschiedenen Mesh-Extendern her. Daher wird ihnen jeweils ein neuer RLOC16 und RLOC zugewiesen:

OT-Topologie nach der Änderung

Unicast-Adresstypen

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

Häufige Unicast-Typen sind unten 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 802.15.4-Adresse
EinsatzbereichLink-Local
Details
  • Wird verwendet, um Nachbarn zu erkennen, Links zu konfigurieren und Routinginformationen auszutauschen.
  • Keine routbare Adresse
  • Hat immer das Präfix fe80::/16

Mesh-Local 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. Auch als eindeutige lokale Adresse (Unique Local Address, ULA) bezeichnet.
Beispielfde5:8dba:82e1:1:416:993c:8399:35ab
IIDZufällig, nach Abschluss der Inbetriebnahme ausgewählt
EinsatzbereichMesh-Local
Details
  • Ändert sich nicht, wenn sich die Topologie ändert
  • Sollte von Anwendungen verwendet werden
  • Hat immer das Präfix fd00::/8

Routing Locator (RLOC)

Gibt eine Thread-Schnittstelle anhand ihres Standorts in der Netzwerktopologie an.
Beispielfde5:8dba:82e1:1::ff:fe00:1001
IID0000:00ff:fe00:RLOC16
EinsatzbereichMesh-Local
Details
  • Wird generiert, sobald ein Gerät mit einem Netzwerk verbunden ist
  • Zum Übertragen von IPv6-Datagrammen in einem Thread-Netzwerk
  • Änderungen bei Änderungen der Topologie
  • Wird in der Regel nicht von Anwendungen verwendet

Anycast Locator (ALOC)

Identifiziert eine Thread-Schnittstelle über die RLOC-Suche, wenn der RLOC eines Ziels nicht bekannt ist.
Beispielfde5:8dba:82e1:1::ff:fe00:fc01
IID0000:00ff:fe00:fcXX
EinsatzbereichMesh-Local
Details
  • fcXX = ALOC-Ziel, das den entsprechenden RLOC sucht
  • Wird in der Regel nicht von Anwendungen verwendet

Globale Unicast-Adresse (GUA)

Eine EID, die eine Thread-Schnittstelle global, also über ein Thread-Netzwerk hinaus, identifiziert.
Beispiel2000::54db:881c:3845:57f4
IID
  • SLAAC – wird vom Gerät selbst zufällig zugewiesen
  • DHCP – Vom DHCPv6-Server zugewiesen
  • Manuell: Von der Anwendungsebene zugewiesen
EinsatzbereichGlobal
Details
  • Eine öffentliche IPv6-Adresse
  • Hat immer das Präfix 2000::/3

Multicast

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

IPv6-Adresse Bereich Zugestellt an
ff02::1 Link-Local Alle FTDs und MEDs
ff02::2 Link-Local Alle FTDs
ff03::1 Mesh-Local Alle FTDs und MEDs
ff03::2 Mesh-Local Alle FTDs

Möglicherweise haben Sie bemerkt, dass Sleepy End Devices (SEDs) in der obigen Multicast-Tabelle nicht als Empfänger aufgeführt sind. Stattdessen wird in Thread ein linklokales und ein realm-lokales Unicast-Präfix-basiertes IPv6-Multicast-Präfix für alle Thread-Knoten, einschließlich SEDs, definiert. Diese Multicast-Adressen variieren je nach Thread-Netzwerk, da sie auf dem Mesh-Local-Unicast-Präfix basieren. Weitere Informationen zu IPv6-Multicast-Adressen, die auf Unicast-Präfixen basieren, finden Sie in RFC 3306.

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

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, ALOC16 genannt, haben das Format 0xfcXX, das den Typ des ALOC darstellt.

Beispiel: Ein ALOC16 zwischen 0xfc01 und 0xfc0f ist für DHCPv6-Agents reserviert. Wenn der spezifische DHCPv6-Agent-RLOC unbekannt ist (vielleicht weil sich die Netzwerktopologie geändert hat), kann eine Nachricht an einen DHCPv6-Agent-ALOC gesendet werden, um den RLOC zu erhalten.

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
0xfc38 – 0xfc3f
0xfc4f – 0xfcff
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 für ein Thread-Gerät innerhalb einer Partition eindeutig und sollte von Anwendungen verwendet werden.
  • Thread verwendet Multicast, um Daten an Knotengruppen 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.

Dein Wissen wird getestet

Welche drei Bereiche werden für die Unicast-Adressierung in einem Thread-Netzwerk verwendet?
Privat
Falsch.
Schnittstellenlokal
Falsch.
Link-Local
Richtig.
Site-Local
Falsch.
Mesh-Local
Richtig.
Global
Richtig.
Was bedeutet es, wenn ein Gerät die Kinder-ID 0 hat?
Das Gerät ist ein untergeordnetes Gerät.
Falsch.
Das Gerät ist ein Extender-kompatibles Gerät.
Fast, aber leider nicht richtig.
Das Gerät ist ein Mesh-Extender.
Richtig. Ein Mesh-Extender hat immer die untergeordnete ID 0.
Eine Kamera, die ein Knoten in einem Thread-Netzwerk ist, erhält eine neue RLOC16 und einen neuen RLOC. Welche der folgenden Ereignisse könnten die Ursache dafür sein?
Jemand hat Bilder von der Kamera heruntergeladen.
Falsch. Dieses Ereignis hat keine Auswirkungen auf das Thread-Netzwerk.
Ein Mesh-Repeater wurde vom Netzwerk getrennt.
Richtig. Wenn ein Mesh-Extender aus einem Netzwerk entfernt wird, ändert sich die Netzwerktopologie. Das kann dazu führen, dass sich das Gerät selbst zu einem Mesh-Extender hochstuft und einen neuen RLOC erhält.
Die Kamera ist in den Ruhemodus gewechselt, wodurch sich die Netzwerktopologie geändert hat.
Falsch. Wenn ein Gerät in den Ruhemodus wechselt, erhält es nicht unbedingt eine neue Netzwerkadresse.
Ein Gerät in einem Thread-Netzwerk abonniert die Multicast-Adresse ff03::2. Was sagt uns das über das Gerät?
Es handelt sich um ein Minimal End Device (MED).
Falsch.
Es ist ein Full End Device (FED).
Falsch. (Hinweis: Es kann sich um eine FED handeln oder nicht.)
Es handelt sich um ein Minimal Thread Device (MTD).
Falsch.
Es ist ein Full Thread Device (FTD).
Richtig. Nur Geräte mit vollständigem Thread-Gerät abonnieren die Multicast-Adresse ff03::2. Das erfolgt im Mesh-Local-Bereich.
Welche Art von Adressierung und Routing verwendet Thread, um Daten an Knotengruppen 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. Anycast ermöglicht es einem Gerät, einen Knoten zu erreichen, dessen RLOC nicht bekannt ist, indem es die ALOC des Geräts adressiert.
Multicast
Falsch.
Nachricht an alle
Falsch.