Afficher le code source sur GitHub
Voyons comment Thread identifie chaque appareil du réseau et quels types d'adresses ils utilisent pour communiquer entre eux.
Niveaux d'accès

Un réseau Thread comporte trois champs d'application pour l'adressage unicast:
- Link-Local : toutes les interfaces accessibles via une seule transmission radio
- Réseau maillé 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 aux préfixes désignés par un réseau Thread.
Les liens locaux ont le préfixe fe80::/16
, tandis que le maillage maillé local est fd00::/8
.
Unicast
Plusieurs adresses unicast IPv6 identifient un appareil Thread unique. Chaque fonction a une fonction différente selon le champ d'application et le cas d'utilisation.
Avant de détailler chaque type, examinons plus en détail un outil commun, appelé outil de localisation des itinéraires (RLOC, Router Locator). Le RLOC identifie une interface Thread en fonction de son emplacement dans la topologie du réseau.
Comment un outil de localisation d'itinéraires est-il généré ?
Un identifiant de routeur et un identifiant enfant sont attribués à tous les appareils. Chaque routeur gère une table de tous ses enfants, dont la combinaison identifie de manière unique un appareil dans la topologie. Prenons l'exemple des nœuds mis en surbrillance dans la topologie suivante, où le numéro d'un routeur (pentagon) correspond à l'ID de routeur et le numéro d'un appareil de fin (cercle) correspond à l'ID enfant:

L'ID de routeur de chaque enfant correspond à son parent (routeur). Étant donné qu'un routeur n'est pas un enfant, l'ID enfant d'un routeur est toujours 0. Ensemble, ces valeurs sont uniques pour chaque appareil du réseau Thread et permettent de 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 supérieur gauche (ID de routeur = 1 et ID enfant = 1):

RLOC16 fait partie de l'identifiant d'interface (IID), qui correspond aux 64 derniers bits de l'adresse IPv6. Certains IDI peuvent être utilisés pour identifier certains types d'interfaces Thread. Par exemple, l'IID pour les RLOC se présente toujours sous la forme suivante:
0000:00ff:fe00:RLOC16
Associé à un préfixe de maillage local, l'IID génère le RLOC. Par exemple, si vous utilisez le préfixe de maillage local fde5:8dba:82e1:1::/64
, le RLOC pour un nœud où RLOC16 = 0x401
est:

Cette même logique peut être utilisée pour déterminer le RLOC pour tous les nœuds en surbrillance dans l'exemple de topologie ci-dessus:

Toutefois, comme le RLOC est basé sur l'emplacement du nœud dans la topologie, celui-ci peut changer à mesure que la topologie change.
Par exemple, le nœud 0x400
est peut-être supprimé du réseau Thread. Les nœuds 0x401
et 0x402
établissent de nouvelles liaisons vers différents routeurs. Par conséquent, chacun se voit attribuer de nouveaux RLOC16 et RLOC:

Types d'adresses Unicast
Le RLOC n'est qu'une des nombreuses adresses unicast IPv6 qu'un appareil Thread peut avoir. Une autre catégorie d'adresses est celle des identifiants de point de terminaison (EID), qui identifient une interface Thread unique au sein d'une partition réseau Thread. Les EID sont indépendants de la topologie du réseau Thread.
Les types de monodiffusions courants sont détaillés ci-dessous.
Adresse locale du lien (LLA) |
|
---|---|
Un EID qui identifie une interface Thread accessible par une seule transmission radio. | |
Exemple | fe80::54db:881c:3845:57f4 |
IDI | Basé sur l'adresse étendue 802.15.4 |
Scope (Portée) | Lien local |
Détails |
|
EID local du maillage (ML-EID) |
|
---|---|
Un EID qui identifie une interface Thread, indépendamment de la topologie du réseau. Permet d'accéder à une interface Thread dans la même partition Thread. Également appelée adresse locale unique. | |
Exemple | fde5:8dba:82e1:1:416:993c:8399:35ab |
IDI | Sélection aléatoire, une fois la mise en service terminée |
Scope (Portée) | Réseau local maillé |
Détails |
|
Outil de localisation d'itinéraires (RLOC) |
|
---|---|
Identifie une interface Thread en fonction de son emplacement dans la topologie du réseau. | |
Exemple | fde5:8dba:82e1:1::ff:fe00:1001 |
IDI | 0000:00ff:fe00:RLOC16 |
Scope (Portée) | Réseau local maillé |
Détails |
|
Outil de localisation Anycast (ALOC) |
|
---|---|
Identifie une interface Thread via une recherche RLOC lorsque le RLOC d'une destination est inconnu. | |
Exemple | fde5:8dba:82e1:1::ff:fe00:fc01 |
IDI | 0000:00ff:fe00:fcXX |
Scope (Portée) | Réseau local maillé |
Détails |
|
Adresse Global Unicast (GUA) |
|
---|---|
Un EID qui identifie une interface Thread au niveau mondial, au-delà d'un réseau Thread. | |
Exemple | 2000::54db:881c:3845:57f4 |
IDI |
|
Scope (Portée) | Global |
Détails |
|
Multidiffusion
La multidiffusion est utilisée pour communiquer des informations à plusieurs appareils à la fois. Dans un réseau Thread, des adresses spécifiques sont réservées à l'utilisation multicast avec différents groupes d'appareils, en fonction du champ d'application.
Adresse IPv6 | Portée | Adresse de livraison |
---|---|---|
ff02::1 |
Lien local | Tous les FTD et les MED |
ff02::2 |
Lien local | Tous les FTD |
ff03::1 |
Réseau local maillé | Tous les FTD et les MED |
ff03::2 |
Réseau local maillé | Tous les FTD |
Vous remarquerez peut-être que les appareils de fin de sommeil (SED) ne sont pas inclus en tant que destinataires dans le tableau de multidiffusion ci-dessus. Au lieu de cela, Thread définit une adresse de multicast IPv6 basée sur le préfixe de liaison locale et la portée unicast locale, utilisée pour tous les nœuds de thread, y compris les SED. Ces adresses de multidiffusion varient en fonction du réseau Thread, car elles sont basées sur le préfixe unicast maillé local (consultez la RFC 3306 pour plus d'informations sur les adresses de multicast IPv6 unicast).
Les champs d'application arbitraires autres que 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 outil de localisation Anycast (ALOC) identifie l'emplacement de plusieurs interfaces dans une partition de 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 la RLOC de l'agent DHCPv6 spécifique est inconnue (peut-être parce que la topologie du réseau a changé), un message peut être envoyé à un ALOC d'agent DHCPv6 pour obtenir la RLOC.
Thread définit les valeurs ALOC16 suivantes:
ALOC16 | Type |
---|---|
0xfc00 |
En tête |
0xfc01 – 0xfc0f |
Agent DHCPv6 |
0xfc10 – 0xfc2f |
Service |
0xfc30 – 0xfc37 |
Commissaire |
0xfc40 – 0xfc4e |
Agent de découverte Neighbor |
0xfc38 – 0xfc3f 0xfc4f – 0xfcff |
Réservés |
Résumé
Connaissances acquises :
- Un réseau Thread comprend trois champs d'application: lien local, maillé local et global.
- Un appareil Thread possède plusieurs adresses IPv6 unicast
- Un RLOC représente la position d'un appareil dans le réseau Thread
- Un ML-EID unique à un appareil Thread dans une partition doit être utilisé par les applications
- Thread utilise la multidiffusion pour transférer des données vers des groupes de nœuds et de routeurs
- Thread utilise Anycast lorsque le RLOC d'une destination est inconnu
Pour en savoir plus sur l'adressage IPv6 Thread, consultez les sections 5.2 et 5.3 de la spécification Thread.
Testez vos connaissances
ff03::2
. Qu'est-ce que cela nous dit sur l'appareil ?ff03::2
. Ils le font dans le champ d'application du maillage local.