Sehen wir uns an, wie Thread jedes Gerät im Netzwerk identifiziert und welche Adressen sie zur Kommunikation verwenden.
Sucher
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:
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):
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:
Dieselbe Logik kann auch verwendet werden, um den RLOC für alle markierten Knoten in der obigen Beispieltopologie zu ermitteln:
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:
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.
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 erweiterten Adresse 802.15.4 |
Scope (Bereich) | Link-Local |
Details |
|
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. | |
Beispiel | fde5:8dba:82e1:1:416:993c:8399:35ab |
IID | Zufällig; wird nach Abschluss der Inbetriebnahme ausgewählt |
Scope (Bereich) | Mesh-Netzwerk (lokal) |
Details |
|
Routing-Locator (RLOC) |
|
---|---|
Kennzeichnet eine Thread-Schnittstelle basierend auf ihrem Standort in der Netzwerktopologie. | |
Beispiel | fde5:8dba:82e1:1::ff:fe00:1001 |
IID | 0000:00ff:fe00:RLOC16 |
Scope (Bereich) | Mesh-Netzwerk (lokal) |
Details |
|
Anycast-Ortung (ALOC) |
|
---|---|
Kennzeichnet eine Thread-Schnittstelle über RLOC-Lookup, wenn der RLOC eines Ziels nicht bekannt ist. | |
Beispiel | fde5:8dba:82e1:1::ff:fe00:fc01 |
IID | 0000:00ff:fe00:fcXX |
Scope (Bereich) | Mesh-Netzwerk (lokal) |
Details |
|
Globale Unicast-Adresse (GUA) |
|
---|---|
Eine EID, die eine Thread-Schnittstelle auf globaler Ebene außerhalb eines Thread-Netzwerks identifiziert. | |
Beispiel | 2000::54db:881c:3845:57f4 |
IID |
|
Scope (Bereich) | Global |
Details |
|
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 |
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 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
ff03::2
. Was verrät uns das über das Gerät?ff03::2
. Dies erfolgt im Mesh-Local-Bereich.