Adressage IPv6

Voir la source sur GitHub

Découvrons comment Thread identifie chaque appareil du réseau et examine les types d'adresses qu'il utilise pour communiquer entre eux.

Niveaux d'accès

Champs d'application OT

Dans un réseau Thread, trois champs d'application sont disponibles pour l'adressage monocast:

  • Lien local : toutes les interfaces accessibles via 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 premières habilitations correspondent à des préfixes désignés par un réseau Thread. Le préfixe Link-Local est associé au préfixe fe80::/16, tandis que le réseau maillé local est associé au préfixe fd00::/8.

Unicast

Plusieurs adresses Unicode IPv6 identifient un seul appareil Thread. La fonction et le cas d'utilisation de chacun d'entre eux sont différents.

Avant d'expliquer chaque type, examinons plus en détail un outil courant, appelé "localisateur de routage". Le RLOC identifie une interface Thread, en fonction de son emplacement dans la topologie du réseau.

Comment un outil de localisation de routage est-il généré ?

Un ID de routeur et un ID enfant sont attribués à tous les appareils. Chaque routeur gère une table de tous ses enfants, dont la combinaison identifie un appareil de manière unique dans la topologie. Prenons l'exemple des nœuds mis en surbrillance dans la topologie suivante, où le nombre d'un routeur (pentagone) correspond à l'ID de routeur, et celui d'un appareil de fin (cercle) est l'ID enfant:

OT RLOC Topology

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 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 de routeur = 1 et ID enfant = 1):

OT RLOC16

Le 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'identifiant publicitaire pour les RLOC se présente toujours sous la forme suivante:

0000:00ff:fe00:RLOC16

L'IID, combiné à un préfixe de réseau maillé local, génère le RLOC. Par exemple, à l'aide du préfixe Local-Mesh de fde5:8dba:82e1:1::/64, le RLOC pour un nœud où RLOC16 = 0x401 est:

OT RLOC

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

OT Topology avec adresse

Toutefois, étant donné que 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 peut être supprimé du réseau Thread. Les nœuds 0x401 et 0x402 établissent des liens vers différents routeurs. Par conséquent, ils reçoivent chacun de nouvelles RLOC16 et RLOC:

OT Topology après le changement

Types d'adresses Unicast

Le RLOC est l'une des nombreuses adresses unicast IPv6 qu'un appareil Thread peut. Une autre catégorie d'adresses est appelée les identifiants de point de terminaison (EID), qui identifient une interface de thread unique au sein d'une partition réseau Thread. Les EID sont indépendants de la topologie du réseau Thread.

Les types monocasts 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
IdentifiantBasé sur l'adresse 802.15.4.
Scope (Portée)Liaison locale
Détail
  • Permet de trouver des voisins, de configurer des liens et d'échanger des informations sur les itinéraires
  • Adresse n'étant pas routable
  • Contient toujours le préfixe fe80::/16

EID du réseau maillé local (ML-EID)

Un EID qui identifie une interface Thread, quelle que soit la topologie du réseau. Permet d'accéder à une interface Thread au sein d'une même partition Thread. Également appelée "Local Local Address" (ULA).
Exemplefde5:8dba:82e1:1:416:993c:8399:35ab
IdentifiantAléatoire, sélectionné une fois la mise en service terminée
Scope (Portée)Réseau maillé local
Détail
  • Ne change pas au fur et à mesure que la topologie change
  • Doit être utilisé par les applis
  • 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
Identifiant0000:00ff:fe00:RLOC16
Scope (Portée)Réseau maillé local
Détail
  • Généré quand un appareil est connecté à un réseau
  • Fournir des datagrammes IPv6 dans un réseau Thread
  • Elle évolue à mesure que la topologie évolue.
  • Généralement non utilisée par les applications

Locator 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
Identifiant0000:00ff:fe00:fcXX
Scope (Portée)Réseau maillé local
Détail
  • fcXX = destination ALOC, qui recherche le RLOC approprié
  • Généralement non utilisée par les applications

Adresse globale unifiée (GUA)

Un EID qui identifie une interface Thread à l'échelle mondiale, au-delà d'un réseau Thread.
Exemple2000::54db:881c:3845:57f4
Identifiant
  • Contrat de niveau de service : attribué aléatoirement par l'appareil lui-même
  • DHCP : attribué par un serveur DHCPv6
  • Manuel : attribué par la couche d'application
Scope (Portée)Un emplacement mondial
Détail
  • Une adresse IPv6 publique
  • Contient toujours le préfixe 2000::/3

Multicast

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 multicast avec différents groupes d'appareils, en fonction du champ d'application.

Adresse IPv6 Niveau d'accès Adresse de livraison
ff02::1 Liaison locale Tous les FTD et MED
ff02::2 Liaison locale Tous les FTD
ff03::1 Réseau maillé local Tous les FTD et MED
ff03::2 Réseau maillé local Tous les FTD

Vous remarquerez peut-être que les appareils de fin de sommeil (SED) ne sont pas inclus dans le tableau des multidiffusions ci-dessus. À la place, Thread définit une adresse multidiffusion IPv6 basée sur le préfixe un lien local et du domaine local, utilisée pour tous les nœuds de thread Thread, y compris les SED. Ces adresses de multicast varient en fonction du réseau Thread, car elle est basée sur le préfixe unicast-Mesh-Local (consultez la RFC 3306 pour en savoir plus sur les adresses multicast basées sur unicast-prefix).

Les champs d'application arbitraires autres que ceux déjà répertoriés sont également compatibles avec les appareils Thread.

Anycast

Anycast permet d'acheminer le trafic vers une interface Thread lorsque le RLOC d'une destination n'est pas connu. L'alocator Anycast identifie l'emplacement de plusieurs interfaces dans une partition Thread. Les 16 derniers bits d'un ALOC, appelé ALOC16, sont au format 0xfcXX, qui représente le type d'ALOC.

Par exemple, une valeur ALOC16 entre 0xfc01 et 0xfc0f est réservée aux agents DHCPv6. Si l'agent RLOC DHCPv6 spécifique est inconnu (peut-être parce que la topologie du réseau a changé), un message peut être envoyé à un agent ALOC DHCPv6 pour obtenir l'ordre.

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 Discovery Neighbor
0xfc380xfc3f
0xfc4f0xfcff
Réservées

Récapitulatif

Voici ce que vous avez appris:

  • Un réseau Thread se compose de trois champs d'application: Link-Local, Mesh-Local et Global.
  • Un appareil Thread possède plusieurs adresses IPv6 unicast
    • Une RLOC représente l'emplacement d'un appareil dans le réseau Thread
    • Un ML-EID est unique à un appareil Thread au sein d'une partition et doit être utilisé par les applications
  • Thread utilise le mode multicast pour transférer des données vers des groupes de nœuds et de routeurs
  • Le 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 monocast dans un réseau Thread ?
Privé
Pas tout à fait.
Interface locale
Pas tout à fait.
Liaison locale
Bonne réponse.
Local – Site
Pas tout à fait.
Réseau maillé local
Bonne réponse.
Un emplacement mondial
Bonne réponse.
Que signifie l'ID enfant de 0 ?
L'appareil est un enfant.
Pas tout à fait.
L'appareil est un REED.
Fermer, mais incorrecte.
L'appareil est un routeur.
Bonne réponse. L'ID enfant est toujours défini sur 0.
Une caméra, qui est un nœud d'un réseau Thread, reçoit les nouvelles RLOC16 et RLOC. Quels sont les événements qui ont pu en être la cause ?
Quelqu'un a téléchargé des images à distance depuis la caméra.
Pas tout à fait. Cet événement n'aura aucune incidence sur le réseau Thread.
Un routeur a coupé le réseau.
Bonne réponse. Lorsqu'un routeur perd un réseau, la topologie du réseau est modifiée, ce qui peut entraîner l'affichage de l'appareil sur un routeur 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.
Pas tout à fait. Le fait d'activer le mode Sommeil n'entraîne pas nécessairement la réception d'une nouvelle adresse réseau pour l'appareil.
Un appareil d'un réseau Thread s'abonne à l'adresse de multidiffusion ff03::2. Informations sur l'appareil
C'est un appareil final minimal.
Pas tout à fait.
C'est un appareil FED (Full End Device).
Pas tout à fait. (Indice: il peut s'agir ou non d'une FED.)
Il s'agit d'un périphérique Thread minimal.
Pas tout à fait.
C'est un appareil FTD (Full Thread Device).
Bonne réponse. Seuls les appareils dotés de fils de discussion complets s'abonnent à l'adresse multicast ff03::2. Pour ce faire, ils le font dans le champ d'application Local-Mesh.
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
Pas tout à fait.
Anycast
Pas tout à fait.
multicast
Bonne réponse.
diffuser
Pas tout à fait.
Quel type d'adressage et de routage un appareil Thread utilise-t-il lorsque le RLOC du destinataire du message est inconnu ?
unicast
Pas tout à fait.
Anycast
Bonne réponse. Anycast permet à un appareil d'atteindre un nœud dont la RLOC n'est pas connue, en adressant l'ALOC de l'appareil.
multicast
Pas tout à fait.
diffuser
Pas tout à fait.