IPv6 : Normes et définitions

I. Règles d’écriture

Suite à la pénurie d’adresse IP en IPv4, il a fallu imaginer un stratagème pour ne plus être limité et permettre un avenir étendu à Internet. L’adresse IPv6, au même titre que le protocole IPv4 est une adresse IP. Sa longueur est de 128bits, soient 16 octets. On dispose approximativement de 3,4x1038 adresses possibles.

La notation décimale pointée, utilisée par le protocole IPv4 est abandonnée au profit d’une écriture hexadécimale où les huit groupes de deux octets sont séparés par des caractères ‘:’.

Exemple : écriture d’une adresse IPv6

1987:0c02:0000:84c2:0000:0000:cf2a:9077

Mais, en ce qui concerne l’écriture de ce genre d’adresse, on peut omettre les zéro non significatifs (en tête d’octet). Ainsi, l’adresse en exemple, ci-dessus peut aussi s’écrire :

1987:c02:0:84c2:0:0:cf2a:9077

Ensuite, une suite unique de 1 à n groupes consécutifs de 16bits tous nuls peut être également omise, en conservant malgré tout les signes ‘:’, de chaque côté de la partie effacée. On peut donc abréger l’adresse IPv6 ci-dessus de la façon suivante :

1987:c02:0:84c2::cf2a:9077

IMPORTANT : étant donné que le caractère ":" est utilisé pour séparer les groupes d’octets, il apporte également de la confusion quant à l’écriture des url web. En effet, ce même caractère ":" désigne aussi la séparation de l’adresse IP et de son port de service. Pour palier à ce problème, il a donc été décidé d’écrire l’adresse IPv6 d’une url entre crochets.

Exemple : URL pour l’adresse IPv6 2002:400:2A41:378::34A2:36

http://[ 2002:400:2A41:378::34A2:36] :8080

L’expression des adresses IPv4, dans le formalisme IPv6, peuvent être écrites en utilisant la représentation décimale pointée, précédée de la chaîne "::" :

::192.168.1.5

ATTENTION : par contre, on ne peut en aucun cas supprimer une seconde série de bits à zéro. Il n’est autorisé d’en éliminer qu’une seule série. Ainsi, la séquence ‘::’ signifie qu’il faut combler tout ce qu’il manque par des zéro. Il existe ainsi plusieurs façons différentes de représenter une adresse IPv6. C’est la RFC5952 qui décrit  une représentation canonique.

II. Les types d’adresses IPv6

Une adresse IPv6 non spécifiée est alors abrégée en ::0.0.0.0 ou de façon canonisée en ::. Tout comme en IPv4, il existe plusieurs catégories d’adresses, chacune jouant des rôles particuliers, décrits au sein des RFC5156, RFC4291 et RFC3587.

A. Adresses réservées

Parmi les adresses réservées de cette classe, certaines sont assez particulières et se distinguent des autres par leurs rôles :

  • Adresse ::/128 : il s’agit d’une adresse non spécifiée qui n’est jamais assignée à un serveur, mais peut être utilisée comme adresse source en acquisition d’adresse IPv6.
  • Adresse ::1/128 : c’est l’adresse de loopback équivalent à l’adresse 127.0.0.1 du protocole IPv4.
  • Adresses 64:ff9b::/96 : il s’agit d’adresses réservées pour les traducteurs de protocoles définit dans la RFC6052.
  • Adresses ::ffff:0:0/96 : il s’agit d’une représentation d’adresses IPv4 dans une structure particulière d’IPv6. Ces adresses sont utilisées par des logiciels, mais elles ne doivent pas être présentes sur le réseau.
  • Adresses ::ffff:0:0:0/96 : ce sont des adresses IPv4 traduites pour un usage particulier, décrit par la RFC2765.

 

B. Adresses globales unicast

Ces adresses représentent 1/8ème de l’espace d’adressage total du protocole IPv6. Parmi ces adresses on distingue la plage d’adresses 2001::/16 qui sont celles ouvertes à la réservation depuis 1999. Ces adresses sont allouées par bloc /23 à /12 (on parle ici aussi de blocs, comme pour ceux de la notation CIDR), par l’IANA à un registre International régional.

REMARQUE : nombre d’expressions utilisées pour IPv4 vont se retrouvées aussi en IPv6, même si le sens n’est pas toujours tout à fait le même.

Ces blocs sont, pour la plupart sont réservés à des usages particuliers, parmi lesquels on peut citer :

  • 2001:2::/48 utilisées pour des tests de performance, décrits par la RFC5180.
  • 2001:db8::/32 réservées pour la documentation et décrit par la RFC3849.

Il y a également des adresses 2002::/16 qui permettent d’acheminer les flux IPv6 au travers d’un ou plusieurs réseaux IPv4. On verra un peu plus loin que ces adresses sont essentielles car elles participent à la transition IPv4/IPv6 afin de résoudre le crucial inconvénient de l’incompatibilité entre les adresses IPv4 et celles d’IPv6.

IMPORTANT : les autres adresses routables sont actuellement réservées à des usages ultérieurs. Cela représente environ les trois quarts de la plage d’adresses routables.

 

C. Adresses locales uniques

Ces adresses notifiées par fc00::/7, sont généralement utilisées pour des communications locales et ne sont pas routables, sauf sur les sites qui le souhaitent. C’est l’équivalent des adresses privées décrites par la RFC1918, de l’espace d’adressage IPv4, étendues à IPv6.

NOTE : Le 8ème bit est actuellement fixé à 1, ainsi cela donne le préfixe de plage d’adresses fd00::/8, permettant d’assigner cette plage d’adresses à un usage local. Cette adresse comprend alors un préfixe pseudo-aléatoire de 40bits afin d’éviter les conflits, lors de l’interconnexion à d’autres réseaux privés.

D. Adresses locales de lien

Ce type d’adresses, préfixées par fc00::/7, utilisable uniquement au sein d’un réseau local de niveau 2, sont non routables et appartiennent à la plage fe80::/64. Les adresses ne sont uniques que sur un lien et une machine peut donc disposer de plusieurs interfaces avec la même adresse locale de lien. Il suffit de préciser l’interface pour lever l’ambiguïté.

E. Adresses multicast

Il faut bien comprendre que, pour le protocole IPv6, il n’existe aucune adresse de broadcast. Cette notion est remplacée par des adresses multicast, propres à l’application associée. Cette plage est préfixée par ff00::/8. Parmi cette plage, il existe l’adresse ff02::1 qui est un peu particulière. Elle est limitée au lien local. Mais, son utilisation par les applications est dépréciée, voire même découragée.

Exemple : utilisation de l’adresse multicast ff02::1:ff00:0/104 par NDP*[2]

III. Périmètre des adresses

La portée d’une adresse IPv6 (on parle alors d’IPv6 Address Scope), est représentée à la fois par son domaine de validité et par son unicité. On distingue donc trois grandes familles d’adresses :

  • Les adresses unicast

Ce type d’adresses regroupe les adresses loopback, dont la portée est limitée à l’hôte, les adresses locales de lien et les adresses locales uniques (aussi appelées ULA). Ces dernières, ont une portée globale et possède le découpage suivant :

Cela signifie que les adresses sont uniques dans le monde, et peuvent être utilisées pour communiquer avec d’autres adresses également globalement uniques, ou avec des adresses locales de lien, pour des liens, bien évidemment, directement  connectés.

REMARQUE : le modèle géographique est le même que celui du réseau Internet actuel, dans lequel les fournisseurs n’interviennent guère. C’est dans ce cadre que le protocole IPv6 permet de gérer les deux types d’adresses : adresses unicast locales et adresses de liens locaux. Ces dernières ont le découpage ci-dessous :

Toutes ces adresses, lorsqu’elles passent par la procédure de création automatique, on t généralement 8 octets représentant le réseau et 8 autres octets décrivant l’interface utilisée sur ce réseau.

  • Les adresses anycast

Ce type d’adresse possède une portée identique à celle des adresses unicast globales ci-dessus. Cette technique est similaire à la diffusion multidestinataire multicast : l’adresse de destination est alors un groupe d’adresses. Mais, au lieu d’essayer de délivrer le datagramme à tous les membres du groupe, IPv6 tente de le livrer à un de ses membres, généralement le plus proche ou le plus à même de recevoir le paquet. Le découpage est le suivant :

  • Les adresses multicast

Pour cette catégorie, ce sont les 4 bits les moins significatifs du second octet (soit ff0<s>::) qui identifient la portée de l’adresse où <s> varie de la façon suivante :

Pour s=1, l’adresse multicast est locale à l’équipement.

Pour s=2, l’adresse est locale au lien.

Pour s=5, l’adresse est locale au site.

Pour s=8, l’adresse est locale à l’organisation.

Pour s=e, l’adresse devient globale.

Les adresses de diffusion multidestinataire possèdent un champ Flag (sur 4bits) et un champ concernant la portée (également sur 4bits) suivi d’un champ d’identification du groupe (sur 112 bits). C’est l’un des bits du champ Flag qui permet de distinguer les groupes permanents des groupes transitoires.

Références :

[1] Sur un réseau local, il faut utiliser le préfixe fd00::/8.
[2] NDP (Neighbor Discovery Protocol) est un protocole de niveau 3, responsable de la découverte des autres machines sur le même lien réseau.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Philippe PIERRE

A exercé de nombreuses années en tant qu'administrateur de base de données et comme administrateur Système Unix/Linux. Il a enseigné les réseaux au CNAM (Paris). Aujourd'hui, employé en tant qu'ingénieur infrastructure, au sein d'un laboratoire pharmaceutique et administrant un cluster de calculs HPC, il connaît parfaitement les environnements GNU/Linux dans le cadre d'une entreprise et des systèmes de haute disponibilité. Il aime partager son expérience.

philippe-pierre has 69 posts and counting.See all posts by philippe-pierre