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
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:
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):
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:
Dieselbe Logik kann verwendet werden, um den RLOC für alle hervorgehobenen Knoten in der Beispieltopologie oben zu bestimmen:
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:
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.
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 802.15.4-Adresse |
| Einsatzbereich | 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 innerhalb derselben Thread-Partition zu erreichen. Auch als eindeutige lokale Adresse (Unique Local Address, ULA) bezeichnet. | |
| Beispiel | fde5:8dba:82e1:1:416:993c:8399:35ab |
| IID | Zufällig, nach Abschluss der Inbetriebnahme ausgewählt |
| Einsatzbereich | Mesh-Local |
| Details |
|
Routing Locator (RLOC) |
|
|---|---|
| Gibt eine Thread-Schnittstelle anhand ihres Standorts in der Netzwerktopologie an. | |
| Beispiel | fde5:8dba:82e1:1::ff:fe00:1001 |
| IID | 0000:00ff:fe00:RLOC16 |
| Einsatzbereich | Mesh-Local |
| Details |
|
Anycast Locator (ALOC) |
|
|---|---|
| Identifiziert eine Thread-Schnittstelle über die RLOC-Suche, wenn der RLOC eines Ziels nicht bekannt ist. | |
| Beispiel | fde5:8dba:82e1:1::ff:fe00:fc01 |
| IID | 0000:00ff:fe00:fcXX |
| Einsatzbereich | Mesh-Local |
| Details |
|
Globale Unicast-Adresse (GUA) |
|
|---|---|
| Eine EID, die eine Thread-Schnittstelle global, also über ein Thread-Netzwerk hinaus, identifiziert. | |
| Beispiel | 2000::54db:881c:3845:57f4 |
| IID |
|
| Einsatzbereich | Global |
| Details |
|
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 – 0xfc3f0xfc4f – 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
ff03::2. Was sagt uns das über das Gerät?ff03::2. Das erfolgt im Mesh-Local-Bereich.