Examinons comment Thread identifie chaque appareil du réseau et quels types d'adresses il utilise pour communiquer entre eux.
Niveaux d'accès
Dans un réseau Thread, il existe trois niveaux d'adresses unicast :
- Lien local : toutes les interfaces accessibles par une seule transmission radio
- Mesh-Local : toutes les interfaces accessibles au sein du même réseau Thread
- Global : toutes les interfaces accessibles depuis l'extérieur d'un réseau Thread
Les deux premiers champs d'application correspondent à des préfixes désignés par un réseau Thread.
Les adresses de liaison locale ont un préfixe fe80::/16, tandis que celles de réseau local maillé ont un préfixe fd00::/8.
Unicast
Il existe plusieurs adresses IPv6 de monodiffusion qui identifient un seul appareil Thread. Chacune a une fonction différente en fonction du champ d'application et du cas d'utilisation.
Avant de détailler chaque type, découvrons-en un courant, appelé Routing Locator (RLOC). Le RLOC identifie une interface Thread en fonction de son emplacement dans la topologie du réseau.
Comment un localisateur de routage est-il généré ?
Un ID de routeur et un ID enfant sont attribués à tous les appareils. Chaque parent conserve un tableau de tous ses enfants, dont la combinaison identifie de manière unique un appareil dans la topologie. Par exemple, prenons les nœuds mis en évidence dans la topologie suivante, où le nombre dans un répéteur Mesh (pentagone) correspond à l'ID du routeur, et le nombre dans un appareil final (cercle) correspond à l'ID enfant :
L'ID de routeur de chaque enfant correspond à celui de son parent (extendeur Mesh). Comme un répéteur Mesh n'est pas un enfant, son ID enfant est toujours défini sur 0. Ensemble, ces valeurs sont uniques pour chaque appareil du réseau Thread et sont utilisées pour créer le RLOC16, qui représente les 16 derniers bits du RLOC.
Par exemple, voici comment le RLOC16 est calculé pour le nœud en haut à gauche (ID du routeur = 1 et ID de l'enfant = 1) :
RLOC16 fait partie de l'identifiant d'interface (IID), qui correspond aux 64 derniers bits de l'adresse IPv6. Certains IID peuvent être utilisés pour identifier certains types d'interfaces Thread. Par exemple, l'IID des RLOC est toujours au format suivant :
0000:00ff:fe00:RLOC16
L'IID, combiné à un préfixe Mesh-Local, donne le RLOC. Par exemple, en utilisant un préfixe local de maillage de fde5:8dba:82e1:1::/64, le RLOC d'un nœud où RLOC16 = 0x401 est le suivant :
La même logique peut être utilisée pour déterminer le RLOC de tous les nœuds mis en évidence dans l'exemple de topologie ci-dessus :
Toutefois, comme le RLOC est basé sur l'emplacement du nœud dans la topologie, il peut changer à mesure que la topologie évolue.
Par exemple, le nœud 0x400 peut être supprimé du réseau Thread. Les nœuds 0x401 et 0x402 établissent de nouveaux liens vers différents répéteurs Mesh. Par conséquent, un nouveau RLOC16 et un nouveau RLOC leur sont attribués :
Types d'adresses unicast
Le RLOC n'est qu'une des nombreuses adresses de monodiffusion IPv6 qu'un appareil Thread peut posséder. Une autre catégorie d'adresses est appelée "identifiants de point de terminaison" (EID, Endpoint Identifiers). Ils identifient une interface Thread unique dans une partition de réseau Thread. Les EID sont indépendants de la topologie du réseau Thread.
Les types d'unicast courants sont détaillés ci-dessous.
Adresse link-local (LLA) |
|
|---|---|
| EID qui identifie une interface Thread accessible par une seule transmission radio. | |
| Exemple | fe80::54db:881c:3845:57f4 |
| IID | Basé sur l'adresse étendue 802.15.4 |
| Scope (Portée) | Liaison locale |
| Détails |
|
EID local du réseau maillé (ML-EID) |
|
|---|---|
| Un EID qui identifie une interface Thread, indépendamment de la topologie du réseau. Utilisé pour accéder à une interface Thread au sein de la même partition Thread. Également appelée adresse locale unique (ULA). | |
| Exemple | fde5:8dba:82e1:1:416:993c:8399:35ab |
| IID | Aléatoire, choisi une fois la mise en service terminée |
| Scope (Portée) | Mesh-Local |
| Détails |
|
Routing Locator (RLOC) |
|
|---|---|
| Identifie une interface Thread, en fonction de son emplacement dans la topologie du réseau. | |
| Exemple | fde5:8dba:82e1:1::ff:fe00:1001 |
| IID | 0000:00ff:fe00:RLOC16 |
| Scope (Portée) | Mesh-Local |
| Détails |
|
Anycast Locator (ALOC) |
|
|---|---|
| Identifie une interface Thread via la recherche RLOC, lorsque le RLOC d'une destination n'est pas connu. | |
| Exemple | fde5:8dba:82e1:1::ff:fe00:fc01 |
| IID | 0000:00ff:fe00:fcXX |
| Scope (Portée) | Mesh-Local |
| Détails |
|
Adresse unicast globale (GUA) |
|
|---|---|
| Un EID qui identifie une interface Thread à l'échelle mondiale, au-delà d'un réseau Thread. | |
| Exemple | 2000::54db:881c:3845:57f4 |
| IID |
|
| Scope (Portée) | Monde |
| Détails |
|
Multicast
Le multicast permet de communiquer des informations à plusieurs appareils à la fois. Dans un réseau Thread, des adresses spécifiques sont réservées à l'utilisation du multicast avec différents groupes d'appareils, en fonction de la portée.
| Adresse IPv6 | Champ d'application | Distribué à |
|---|---|---|
ff02::1 |
Liaison locale | Tous les FTD et MED |
ff02::2 |
Liaison locale | Tous les FTD |
ff03::1 |
Mesh-Local | Tous les FTD et MED |
ff03::2 |
Mesh-Local | Tous les FTD |
Vous remarquerez peut-être que les appareils finaux en veille (SED) ne sont pas inclus en tant que destinataires dans le tableau de multidiffusion ci-dessus. Au lieu de cela, Thread définit l'adresse de multidiffusion IPv6 basée sur le préfixe unicast de portée link-local et realm-local utilisée pour tous les nœuds Thread, y compris les SED. Ces adresses multicast varient en fonction du réseau Thread, car elles sont basées sur le préfixe Mesh-Local unicast (consultez la RFC 3306 pour en savoir plus sur les adresses multicast IPv6 basées sur un préfixe unicast).
Les champs d'application arbitraires au-delà de ceux déjà listés sont également compatibles avec les appareils Thread.
Anycast
Anycast est utilisé pour acheminer le trafic vers une interface Thread lorsque le RLOC d'une destination n'est pas connu. Un localisateur Anycast (ALOC) identifie l'emplacement de plusieurs interfaces dans une partition Thread. Les 16 derniers bits d'un ALOC, appelés ALOC16, sont au format 0xfcXX, qui représente le type d'ALOC.
Par exemple, un ALOC16 entre 0xfc01 et 0xfc0f est réservé aux agents DHCPv6. Si le RLOC de l'agent DHCPv6 spécifique est inconnu (par exemple, parce que la topologie du réseau a changé), un message peut être envoyé à un ALOC de l'agent DHCPv6 pour obtenir le RLOC.
Thread définit les valeurs ALOC16 suivantes :
| ALOC16 | Type |
|---|---|
0xfc00 |
Leader |
0xfc01 – 0xfc0f |
Agent DHCPv6 |
0xfc10 – 0xfc2f |
Service |
0xfc30 – 0xfc37 |
Commissaire |
0xfc40 – 0xfc4e |
Agent de découverte du voisinage |
0xfc38 – 0xfc3f0xfc4f – 0xfcff |
Réservée |
Récapitulatif
Connaissances acquises :
- Un réseau Thread se compose de trois portées : Link-Local, Mesh-Local et Global.
- Un appareil Thread possède plusieurs adresses IPv6 de monodiffusion.
- Un RLOC représente l'emplacement d'un appareil dans le réseau Thread.
- Un ML-EID est unique à un appareil Thread dans une partition et doit être utilisé par les applications.
- Thread utilise le multicast pour transférer des données vers des groupes de nœuds.
- Thread utilise l'anycast lorsque le RLOC d'une destination est inconnu
Pour en savoir plus sur l'adressage IPv6 de Thread, consultez les sections 5.2 et 5.3 de la spécification Thread.
Vérifiez vos connaissances
ff03::2. Qu'est-ce que cela nous indique sur l'appareil ?ff03::2. Ils le font dans le champ d'application Mesh-Local.