Adressage IPv6

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

Champs d'application OT

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:

Topologie RLOC OT

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

OT RLOC16

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:

P.É. RLOC

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:

OT Topology avec adresse

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:

Topologie OT après modification

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.

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

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.
Exemplefde5:8dba:82e1:1:416:993c:8399:35ab
IDISélection aléatoire, une fois la mise en service terminée
Scope (Portée)Réseau local maillé
Détails
  • Ne change pas à mesure que la topologie change
  • Les applications doivent l'utiliser
  • Contient toujours le préfixe fd00::/8

Outil de localisation d'itinéraires (RLOC)

Identifie une interface Thread en fonction de son emplacement dans la topologie du réseau.
Exemplefde5:8dba:82e1:1::ff:fe00:1001
IDI0000:00ff:fe00:RLOC16
Scope (Portée)Réseau local maillé
Détails
  • Généré une fois qu'un appareil est connecté à un réseau
  • Pour diffuser des datagrammes IPv6 dans un réseau Thread
  • Changements à mesure que la topologie change
  • Généralement non utilisée par les applications

Outil de localisation Anycast (ALOC)

Identifie une interface Thread via une recherche RLOC lorsque le RLOC d'une destination est inconnu.
Exemplefde5:8dba:82e1:1::ff:fe00:fc01
IDI0000:00ff:fe00:fcXX
Scope (Portée)Réseau local maillé
Détails
  • fcXX = destination ALOC, qui recherche le RLOC approprié
  • Généralement non utilisée par les applications

Adresse Global Unicast (GUA)

Un EID qui identifie une interface Thread au niveau mondial, au-delà d'un réseau Thread.
Exemple2000::54db:881c:3845:57f4
IDI
  • Contrat de niveau de service (SLAAC) : attribué aléatoirement par l'appareil
  • DHCP : attribué par un serveur DHCPv6
  • Manuel : attribué par la couche d'application
Scope (Portée)Global
Détails
  • Une adresse IPv6 publique
  • Le préfixe 2000::/3 est toujours défini

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
0xfc380xfc3f
0xfc4f0xfcff
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

Quels sont les trois champs d'application utilisés pour l'adressage unicast dans un réseau Thread ?
Privé
Mauvaise réponse.
Interface locale
Mauvaise réponse.
Lien local
Bonne réponse.
Site local
Mauvaise réponse.
Réseau local maillé
Bonne réponse.
Global
Bonne réponse.
Qu'est-ce que cela signifie lorsqu'un appareil a un ID enfant de 0 ?
L'appareil est un enfant.
Mauvaise réponse.
L'appareil est de type REED.
Presque, mais non.
L'appareil est un routeur.
Bonne réponse. L'ID enfant d'un routeur est toujours défini sur 0.
Une caméra, qui est un nœud d'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 à distance depuis l'appareil photo.
Mauvaise réponse. Cet événement n'aura aucune incidence sur le réseau Thread.
Un routeur a été déconnecté du réseau.
Bonne réponse. Lorsqu'un routeur quitte un réseau, la topologie du réseau change. L'appareil peut alors se transformer en routeur et obtenir un nouveau RLOC.
L'appareil photo est passé en mode veille, ce qui a modifié la topologie du réseau.
Mauvaise réponse. Activer le mode veille n'entraîne pas nécessairement la réception d'une nouvelle adresse réseau sur l'appareil.
Un appareil sur un réseau Thread s'abonne à l'adresse de multidiffusion ff03::2. Qu'est-ce que cela nous dit sur l'appareil ?
Il s'agit d'un MED (Minimal End Device).
Mauvaise réponse.
Il s'agit d'un appareil complet.
Mauvaise réponse. (Indice: il peut s'agir ou non d'un numéro FED.)
Il s'agit d'un dispositif à thread minimal (MTD).
Mauvaise réponse.
Il s'agit d'un appareil Full Thread (FTD).
Bonne réponse. Seuls les appareils Thread complets sont abonnés à l'adresse de multidiffusion ff03::2. Ils le font dans le champ d'application du maillage local.
Quel type d'adressage et de routage Thread utilise-t-il pour transférer des données vers des groupes de nœuds et de routeurs ?
unicast
Mauvaise réponse.
Anycast
Mauvaise réponse.
multidiffusion
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 du message est inconnu ?
unicast
Mauvaise réponse.
Anycast
Bonne réponse. Anycast permet à un appareil d'atteindre un nœud dont la RLOC n'est pas connue en traitant son ALOC.
multidiffusion
Mauvaise réponse.
annonce
Mauvaise réponse.