IPv6-Adressierung

Quelle auf GitHub ansehen

Sehen wir uns an, wie in Thread die einzelnen Geräte im Netzwerk identifiziert werden und welche Arten von Adressen sie miteinander kommunizieren.

Sucher

OT-Bereiche

Es gibt drei Bereiche in einem Thread-Netzwerk für 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 das Präfix fe80::/16, während Mesh-Local das Präfix fd00::/8 hat.

Unicast

Es gibt mehrere IPv6-Unicast-Adressen, die ein einzelnes Thread-Gerät identifizieren. Die Funktionsweise ist in Abhängigkeit vom Umfang und Anwendungsfall abhängig.

Bevor wir die verschiedenen Typen genauer erläutern, sehen wir uns jetzt einen gängigen Typ namens Routing Locator (RLOC) an. Der RLOC identifiziert eine Thread-Schnittstelle anhand seines Standorts 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 ein Gerät in der Topologie eindeutig identifiziert. Nehmen wir als Beispiel die hervorgehobenen Knoten in der folgenden Topologie. Dabei ist die Zahl in einem Router (Fünfeck) die Router-ID und die Zahl in einem Endgerät (Kreis) die untergeordnete ID:

OT RLOC-Topologie

Jede untergeordnete Router-ID entspricht der übergeordneten Router-ID (Router). Da ein Router kein untergeordneter Router ist, ist die untergeordnete ID 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.

Hier ist ein Beispiel, wie der RLOC16 für den oberen linken Knoten berechnet wird (Router-ID = 1 und untergeordnete ID = 1):

OT RLOC16

Der RLOC16 ist Teil der Schnittstellenkennung (IID), die den letzten 64 Bit der IPv6-Adresse entspricht. Einige IIDs können verwendet werden, um einige Arten von Thread-Schnittstellen zu identifizieren. Die IID für RLOCs gibt es beispielsweise immer in folgendem Format:

0000:00ff:fe00:RLOC16

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

OT-LOC

Dieselbe Logik kann zum Ermitteln des RLOC für alle markierten Knoten in der obigen Topologie verwendet werden:

OT-Topologie mit Adresse

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

Vielleicht wurde der Knoten 0x400 beispielsweise aus dem Thread-Netzwerk entfernt. Die Knoten 0x401 und 0x402 stellen neue Verknüpfungen mit verschiedenen Routern her. Dadurch werden ihnen neue RLOC16- und RLOC-Werte zugewiesen:

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 die Endpunkt-IDs (EIDs), die eine eindeutige Thread-Schnittstelle in einer Thread-Netzwerkpartition identifizieren. EIDs sind von der Thread-Netzwerktopologie unabhängig.

Unten finden Sie eine Beschreibung der gängigen Unicast-Typen.

Eine EID, die eine Thread-Schnittstelle identifiziert, die über eine einzelne Funkübertragung erreichbar ist.
Beispielfe80::54db:881c:3845:57f4
IIDBasierend auf der 802.15.4-erweiterten Adresse
UmfangLink-Local
Details
  • Wird verwendet, um Nachbarn zu finden, Links zu konfigurieren und Informationen zur Weiterleitung auszutauschen
  • Keine routingfähige 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 in derselben Thread-Partition zu erreichen. Wird auch als „Unique Local Address“ (ULA) bezeichnet.
Beispielfde5:8dba:82e1:1:416:993c:8399:35ab
IIDZufällig, ausgewählt, nachdem die Inbetriebnahme abgeschlossen ist
UmfangMesh-Lokal
Details
  • bleibt gleich, während sich die Topologie ändert
  • Sollte von Anwendungen verwendet werden
  • Hat immer ein Präfix fd00::/8

Routingsuche (RLOC)

Kennzeichnet eine Thread-Schnittstelle anhand ihres Speicherorts in der Netzwerktopologie.
Beispielfde5:8dba:82e1:1::ff:fe00:1001
IID0000:00ff:fe00:RLOC16
UmfangMesh-Lokal
Details
  • Wird generiert, sobald ein Gerät mit einem Netzwerk verbunden wird
  • Zum Bereitstellen von IPv6-Datagramm in einem Thread-Netzwerk
  • Änderungen bei der Topologie ändern
  • Wird normalerweise nicht von Anwendungen verwendet

Anycast-Standortsuche (ALOC)

Gibt eine Thread-Schnittstelle über einen RLOC-Lookup an, wenn der RLOC eines Ziels nicht bekannt ist.
Beispielfde5:8dba:82e1:1::ff:fe00:fc01
IID0000:00ff:fe00:fcXX
UmfangMesh-Lokal
Details
  • fcXX = ALOC-Ziel, das den entsprechenden RLOC anzeigt
  • Wird normalerweise nicht von Anwendungen verwendet

Global Unicast-Adresse (GUA)

Eine EID, die eine Thread-Schnittstelle auf globaler Ebene über das Thread-Netzwerk hinaus identifiziert.
Beispiel2000::54db:881c:3845:57f4
IID
  • SLAAC – nach dem Zufallsprinzip vom Gerät selbst zugewiesen
  • DHCP – zugewiesen von einem DHCPv6-Server
  • Manuell – von der Anwendungsebene zugewiesen
UmfangGlobal
Details
  • Eine öffentliche IPv6-Adresse
  • Hat immer das Präfix 2000::/3

Multicast

Multicast wird verwendet, um Informationen mit mehreren Geräten gleichzeitig zu kommunizieren. In einem Thread-Netzwerk sind bestimmte Adressen für die Multicast-Verwendung mit verschiedenen Gerätegruppen abhängig vom Bereich reserviert.

IPv6-Adresse Umfang Zugestellt:
ff02::1 Link-Local Alle FTDs und MEDS
ff02::2 Link-Local Alle FTDs
ff03::1 Mesh-Lokal Alle FTDs und MEDS
ff03::2 Mesh-Lokal Alle FTDs

Möglicherweise stellen Sie fest, dass Sleepy End Devices (SEDs) nicht in der Multicast-Tabelle oben als Empfänger enthalten sind. Stattdessen definiert Thread eine unicast-Präfix-universal-IPv6-Multicast-Adresse, die für alle Thread-Knoten verwendet wird, einschließlich SEDs. Diese Multicast-Adressen variieren je nach Thread-Netzwerk, da sie auf dem Unicast-Mesh-Local-Präfix basieren (siehe RFC 3306 für weitere Informationen zu unicast-Präfix-basierten IPv6-Multicast-Adressen).

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

Anycast

Anycast wird zum Weiterleiten von Traffic an eine Thread-Schnittstelle verwendet, wenn der RLOC eines Ziels nicht bekannt ist. Eine Anycast-Locator (ALOC) identifiziert den Speicherort mehrerer Schnittstellen innerhalb einer Thread-Partition. Die letzten 16 Bit eines ALOCs (ALOC16) haben das Format 0xfcXX und stellen den Typ des ALOC dar.

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 einen DHCPv6-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

Was Sie gelernt haben:

  • Ein Thread-Netzwerk besteht aus drei Bereichen: Link-Local, Mesh-Local und Global
  • Ein Thread-Gerät hat mehrere Unicast-IPv6-Adressen.
    • Ein RLOC ist der Standort eines Geräts im Thread-Netzwerk.
    • Eine ML-EID ist eine eindeutige ID 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
Korrekt.
Website (lokal)
Falsch.
Mesh-Lokal
Korrekt.
Global
Korrekt.
Was bedeutet es, wenn ein Gerät die untergeordnete ID 0 hat?
Das Gerät ist ein Kind.
Falsch.
Das Gerät ist ein REED.
Schließen, aber falsch.
Das Gerät ist ein Router.
Korrekt. Ein Router hat immer die untergeordnete ID 0.
Eine Kamera, die ein Knoten in einem Thread-Netzwerk ist, erhält einen neuen RLOC16- und RLOC-Wert. Welches der folgenden Ereignisse könnte dies verursacht haben?
Jemand hat Bilder von der Kamera per Fernzugriff heruntergeladen.
Falsch. Diese Veranstaltung hat keine Auswirkungen auf das Thread-Netzwerk.
Ein Router hat das Netzwerk verlassen.
Korrekt. Wenn ein Router die Verbindung zum Netzwerk trennt, ändert sich die Netzwerktopologie, was dazu führen kann, dass das Gerät einen Router hochfährt und einen neuen RLOC erhält.
Die Kamera wechselte in den Ruhemodus, was die Netzwerktopologie geändert hat.
Falsch. In den Schlafmodus würde es nicht unbedingt gehen, dass ein Gerät eine neue Netzwerkadresse erhält.
Ein Gerät in einem Thread-Netzwerk abonniert die Multicast-Adresse ff03::2. Was verrät uns das Gerät?
Es handelt sich dabei um ein minimales Endgerät (MED).
Falsch.
Es ist ein Full End Device (FED).
Falsch. Tipp: Es kann sich um einen FED handeln.
Es ist ein Minimum-Thread-Gerät (MTD).
Falsch.
Es handelt sich um ein Full Thread-Gerät (FTD).
Korrekt. Nur Full Thread-Geräte abonnieren die Multicast-Adresse ff03::2. Das ist im Mesh-Local-Bereich möglich.
Welche Art von Adressierung und Routing verwendet Thread zum Weiterleiten von Daten an Gruppen von Knoten und Routern?
Unicast
Falsch.
Anycast
Falsch.
Multicast
Korrekt.
übertragen
Falsch.
Welche Art von Adressierung und Routing verwendet ein Thread-Gerät, wenn der RLOC des beabsichtigten Nachrichtenempfängers unbekannt ist?
Unicast
Falsch.
Anycast
Korrekt. Anycast ermöglicht es einem Gerät, einen Knoten zu erreichen, dessen RLOC nicht bekannt ist. Dazu wird der ALOC des Geräts adressiert.
Multicast
Falsch.
übertragen
Falsch.