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

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:

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):

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:

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

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:

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.
Link-Local-Adresse (LLA) |
|
---|---|
Eine EID, die eine Thread-Schnittstelle identifiziert, die über eine einzelne Funkübertragung erreichbar ist. | |
Beispiel | fe80::54db:881c:3845:57f4 |
IID | Basierend auf der 802.15.4-erweiterten Adresse |
Umfang | Link-Local |
Details |
|
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. | |
Beispiel | fde5:8dba:82e1:1:416:993c:8399:35ab |
IID | Zufällig, ausgewählt, nachdem die Inbetriebnahme abgeschlossen ist |
Umfang | Mesh-Lokal |
Details |
|
Routingsuche (RLOC) |
|
---|---|
Kennzeichnet eine Thread-Schnittstelle anhand ihres Speicherorts in der Netzwerktopologie. | |
Beispiel | fde5:8dba:82e1:1::ff:fe00:1001 |
IID | 0000:00ff:fe00:RLOC16 |
Umfang | Mesh-Lokal |
Details |
|
Anycast-Standortsuche (ALOC) |
|
---|---|
Gibt eine Thread-Schnittstelle über einen RLOC-Lookup an, wenn der RLOC eines Ziels nicht bekannt ist. | |
Beispiel | fde5:8dba:82e1:1::ff:fe00:fc01 |
IID | 0000:00ff:fe00:fcXX |
Umfang | Mesh-Lokal |
Details |
|
Global Unicast-Adresse (GUA) |
|
---|---|
Eine EID, die eine Thread-Schnittstelle auf globaler Ebene über das Thread-Netzwerk hinaus identifiziert. | |
Beispiel | 2000::54db:881c:3845:57f4 |
IID |
|
Umfang | Global |
Details |
|
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 |
0xfc38 –0xfc3f 0xfc4f –0xfcff |
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
ff03::2
. Was verrät uns das Gerät?ff03::2
. Das ist im Mesh-Local-Bereich möglich.