Adressage IPv6

Afficher la source sur GitHub

Examinons comment Thread identifie chaque appareil du réseau et quels types d'adresses il utilise pour communiquer entre eux.

Niveaux d'accès

Champs d'application OT

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 :

Topologie RLOC OT

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

OT RLOC16

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 :

OT RLOC

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 :

Topologie OT avec adresse

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 :

Topologie OT après modification

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.

EID qui identifie une interface Thread accessible par une seule transmission radio.
Exemplefe80::54db:881c:3845:57f4
IIDBasé sur l'adresse étendue 802.15.4
Scope (Portée)Liaison locale
Détails
  • Permet de découvrir les voisins, de configurer les liens et d'échanger des informations de routage
  • Adresse non routable
  • Le préfixe est toujours fe80::/16

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).
Exemplefde5:8dba:82e1:1:416:993c:8399:35ab
IIDAléatoire, choisi une fois la mise en service terminée
Scope (Portée)Mesh-Local
Détails
  • Ne change pas lorsque la topologie change
  • Doit être utilisé par les applications
  • A toujours un préfixe fd00::/8

Routing Locator (RLOC)

Identifie une interface Thread, en fonction de son emplacement dans la topologie du réseau.
Exemplefde5:8dba:82e1:1::ff:fe00:1001
IID0000:00ff:fe00:RLOC16
Scope (Portée)Mesh-Local
Détails
  • Généré lorsqu'un appareil se connecte à un réseau
  • Pour la diffusion de datagrammes IPv6 dans un réseau Thread
  • Modifications en fonction des changements de topologie
  • Généralement non utilisé par les applications

Anycast Locator (ALOC)

Identifie une interface Thread via la recherche RLOC, lorsque le RLOC d'une destination n'est pas connu.
Exemplefde5:8dba:82e1:1::ff:fe00:fc01
IID0000:00ff:fe00:fcXX
Scope (Portée)Mesh-Local
Détails
  • fcXX = destination ALOC, qui recherche le RLOC approprié
  • Généralement non utilisé par les applications

Adresse unicast globale (GUA)

Un EID qui identifie une interface Thread à l'échelle mondiale, au-delà d'un réseau Thread.
Exemple2000::54db:881c:3845:57f4
IID
  • SLAAC : adresse attribuée de manière aléatoire par l'appareil lui-même
  • DHCP : attribuée par un serveur DHCPv6
  • Manuelle : attribuée par la couche d'application
Scope (Portée)Monde
Détails
  • Une adresse IPv6 publique
  • Le préfixe est toujours 2000::/3

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 – 0xfc3f
0xfc4f – 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

Quels sont les trois niveaux utilisés pour l'adressage unicast dans un réseau Thread ?
Privé
Mauvaise réponse.
Interface-Local
Mauvaise réponse.
Liaison locale
Bonne réponse.
Site-Local
Mauvaise réponse.
Mesh-Local
Bonne réponse.
Monde
Bonne réponse.
Que signifie un ID enfant de 0 pour un appareil ?
L'appareil est un enfant.
Mauvaise réponse.
L'appareil est un appareil compatible avec la fonctionnalité d'extension.
Presque, mais pas tout à fait.
L'appareil est un répéteur Mesh.
Bonne réponse. Un répéteur Mesh a toujours un ID enfant de 0.
Une caméra, qui est un nœud sur un réseau Thread, reçoit un nouveau RLOC16 et un nouveau RLOC. Parmi les événements suivants, lequel peut être à l'origine de ce problème ?
Quelqu'un a téléchargé des images de la caméra à distance.
Mauvaise réponse. Cet événement n'aurait aucune incidence sur le réseau Thread.
Un répéteur Mesh a été déconnecté du réseau.
Bonne réponse. Lorsqu'un répéteur Mesh se déconnecte d'un réseau, la topologie du réseau change, ce qui peut entraîner la promotion de l'appareil en répéteur Mesh et l'obtention d'un nouveau RLOC.
La caméra est passée en mode veille, ce qui a modifié la topologie du réseau.
Mauvaise réponse. Le passage en mode veille n'entraîne pas nécessairement l'attribution d'une nouvelle adresse réseau à un appareil.
Un appareil sur un réseau Thread s'abonne à l'adresse de multidiffusion ff03::2. Qu'est-ce que cela nous indique sur l'appareil ?
Il s'agit d'un appareil final minimal (MED, Minimal End Device).
Mauvaise réponse.
Il s'agit d'un appareil final complet (FED, Full End Device).
Mauvaise réponse. (Indice : il peut s'agir ou non d'un Fichier d'échange de données.)
Il s'agit d'un appareil Thread minimal (MTD, Minimal Thread Device).
Mauvaise réponse.
Il s'agit d'un appareil Thread complet (FTD).
Bonne réponse. Seuls les appareils Thread complets s'abonnent à l'adresse multicast ff03::2. Ils le font dans le champ d'application Mesh-Local.
Quel type d'adressage et de routage Thread utilise-t-il pour transférer des données vers des groupes de nœuds ?
unicast
Mauvaise réponse.
anycast
Mauvaise réponse.
multicast
Bonne réponse.
annonce
Mauvaise réponse.
Quel type d'adressage et de routage un appareil Thread utilise-t-il lorsque le RLOC du destinataire prévu de son message est inconnu ?
unicast
Mauvaise réponse.
anycast
Bonne réponse. Anycast permet à un appareil d'atteindre un nœud dont le RLOC n'est pas connu, en adressant l'ALOC de l'appareil.
multicast
Mauvaise réponse.
annonce
Mauvaise réponse.