IPv6-Adressen

Quelle auf GitHub ansehen

Sehen wir uns nun an, wie Thread die einzelnen Geräte im Netzwerk identifiziert und welche Adressen sie zur Kommunikation miteinander 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 im selben Thread-Netzwerk erreichbar sind
  • Global – alle Schnittstellen, die außerhalb eines Thread-Netzwerks erreichbar sind

Die ersten beiden Bereiche entsprechen den Präfixen eines Thread-Netzwerks. Link-Local hat die Präfixe fe80::/16, während Mesh-Local Präfixe von fd00::/8 hat.

Unicast

Mehrere IPv6-Unicast-Adressen identifizieren ein einzelnes Thread-Gerät. Jede Funktion hat je nach Umfang und Anwendungsfall eine andere Funktion.

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

So wird eine Routingsuche generiert

Allen Geräten werden eine Router-ID und eine untergeordnete ID zugewiesen. Jeder Router verwaltet eine Tabelle aller untergeordneten Elemente, von der jedes Gerät ein Gerät innerhalb der Topologie eindeutig identifiziert. Sehen Sie sich zum Beispiel die hervorgehobenen Knoten in der folgenden Topologie an, 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 jedes untergeordneten Elements entspricht seinem übergeordneten Element (Router). Da es sich bei einem Router nicht um ein untergeordnetes Element handelt, ist die untergeordnete ID für einen Router 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 Bits des RLOC darstellt.

So wird beispielsweise der 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 einige Arten von Thread-Schnittstellen zu identifizieren. Die IID für RLOCs hat beispielsweise immer das folgende Format:

0000:00ff:fe00:RLOC16

Die IID ergibt in Kombination mit einem Mesh-Local-Präfix den RLOC. Beispielsweise verwendet ein Mesh-Local-Präfix fde5:8dba:82e1:1::/64 den RLOC für einen Knoten, bei dem RLOC16 = 0x401 so ist:

OT RLOC

Mit derselben Logik können Sie den RLOC für alle markierten Knoten in der obigen Beispieltopologie 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.

Vielleicht wird der Knoten "0x400" beispielsweise aus dem Thread-Netzwerk entfernt. Die Knoten 0x401 und 0x402 stellen neue Verknüpfungen mit verschiedenen Routern her. Daher erhalten sie jeweils ein neues RLOC16 und RLOC:

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 ist die Endpunkt-ID (Endpoint Identifier, EID). Sie identifiziert eine eindeutige Thread-Schnittstelle innerhalb einer Thread-Netzwerkpartition. EIDs sind unabhängig von der Thread-Netzwerktopologie.

Die häufigsten Unicast-Typen werden unten beschrieben.

Eine EID, die eine Thread-Schnittstelle identifiziert, die über eine einzelne Funkübertragung erreichbar ist.
Beispielfe80::54db:881c:3845:57f4
IDBasierend auf der erweiterten Adresse 802.15.4
UmfangLink-Local
Details
  • Dient zum Erkennen von Nachbarn, zum Konfigurieren von Links und zum Austauschen von Routinginformationen
  • Keine routingfähige Adresse
  • Hat immer das Präfix fe80::/16

Mesh-Local-EID (ML-EID)

Eine EID, die unabhängig von der Netzwerktopologie eine Thread-Schnittstelle identifiziert. Wird verwendet, um eine Thread-Schnittstelle innerhalb derselben Thread-Partition zu erreichen. Auch als Unique Local Address (ULA) bezeichnet.
Beispielfde5:8dba:82e1:1:416:993c:8399:35ab
IDZufällig, nach Abschluss der Inbetriebnahme ausgewählt
UmfangMesh-Netzwerk-Lokal
Details
  • Verändert sich nicht, wenn sich die Topologie ändert.
  • Sollte von Anwendungen verwendet werden
  • Hat immer das Präfix fd00::/8

Routing Locator (RLOC)

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

Anycast-Locator (ALOC)

Identifiziert eine Thread-Schnittstelle über einen RLOC-Lookup, wenn der RLOC eines Ziels nicht bekannt ist.
Beispielfde5:8dba:82e1:1::ff:fe00:fc01
ID0000:00ff:fe00:fcXX
UmfangMesh-Netzwerk-Lokal
Details
  • fcXX = ALOC-Ziel, das das entsprechende RLOC sucht
  • Wird in der Regel nicht von Anwendungen verwendet

Globale Unicast-Adresse (GUA)

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

Multicast

Multicast wird verwendet, um Informationen an mehrere Geräte gleichzeitig zu übertragen. In einem Thread-Netzwerk sind bestimmte Adressen, je nach Umfang, für die Multicast-Nutzung bei verschiedenen Gerätegruppen 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

Möglicherweise stellen Sie fest, dass Sleepy End Devices (SEDs) in der obigen Multicast-Tabelle nicht als Empfänger enthalten sind. Stattdessen definiert Thread die Link-Local- und Realm-Local-Bereichs-Unicode-Präfix-basierte IPv6-Multicast-Adresse, die für alle Thread-Knoten verwendet wird, einschließlich SEDs. Diese Multicast-Adressen variieren je nach Thread-Netzwerk, da es auf dem Unicast-Mesh-Local-Präfix basiert (siehe RFC 3306 für weitere Informationen zum Unicast-Präfix-basierten IPv6-Multicast). Adressen).

Beliebige, bereits aufgeführte Bereiche 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 Speicherort mehrerer Schnittstellen in einer Thread-Partition. Die letzten 16 Bits eines ALOC, der sogenannten ALOC16, haben das Format 0xfcXX, was den Typ des ALOCs repräsentiert.

Ein ALOC16 zwischen 0xfc01 und 0xfc0f ist beispielsweise für DHCPv6-Agents reserviert. Wenn das spezifische RLOC des DHCPv6-Agents nicht bekannt ist, z. B. weil sich die Netzwerktopologie geändert hat, kann eine Nachricht an den 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 Discovery-Agent für Nachbarn
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 für ein Thread-Gerät innerhalb einer Partition eindeutig und sollte von Anwendungen verwendet werden
  • Thread verwendet Multicast, um Daten an Knotengruppen und Router 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.

Wissen testen

Welche drei Bereiche werden für die Unicast-Adressierung in einem Thread-Netzwerk verwendet?
Privat
Falsch.
Lokal/Lokal
Falsch.
Link-Local
Korrekt.
Standortlokal
Falsch.
Mesh-Netzwerk-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 eine untergeordnete ID von 0.
Eine Kamera, die ein Knoten in einem Thread-Netzwerk ist, empfängt ein neues RLOC16 und RLOC. Welche der folgenden Ereignisse haben dieses Problem verursacht?
Jemand hat Bilder aus der Ferne von der Kamera heruntergeladen.
Falsch. Dieses Ereignis hatte keine Auswirkungen auf das Thread-Netzwerk.
Ein Router ist vom Netzwerk getrennt.
Korrekt. Wenn ein Router ein Netzwerk abbricht, ändert sich die Netzwerktopologie, was dazu führen kann, dass sich das Gerät selbst zu einem Router hochstuft und ein neues RLOC erhält.
Die Kamera hat in den Ruhemodus gewechselt, wodurch sich die Netzwerktopologie geändert hat.
Falsch. Wird ein Ruhemodus aktiviert, erhält ein Gerät nicht unbedingt eine neue Netzwerkadresse.
Ein Gerät in einem Thread-Netzwerk abonniert die Multicast-Adresse ff03::2. Was sagen wir über das Gerät?
Es ist ein minimales Endgerät (MED).
Falsch.
Es ist ein Full End Device (FED).
Falsch. (Hinweis: Es kann eine FED sein oder nicht.)
Es ist ein Minimal-Thread-Gerät.
Falsch.
Es ist ein Full Thread Device (FTD).
Korrekt. Nur Vollthread-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 Knotengruppen und Router weiterzuleiten?
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. Mit Anycast kann ein Gerät durch Ansprechen des ALOC des Geräts einen Knoten erreichen, dessen RLOC nicht bekannt ist.
Multicast
Falsch.
übertragen
Falsch.