L’adressage IPv6

To the non-french speaker, note that you can translate the articles using the Google Trad widget situated at the bottom of all pages.


Comme vous le savez, l’adressage IPv4 ne permet d’utiliser que 2³² adresses différentes soit 4 294 967 296 d’adresses. Bien évidemment ce n’est pas suffisant pour pallier l’expansion de l’Internet.

Du coup de nombreux protocoles ont vu le jour pour tenter de combler ce manque d’adresses IP. Le seul qui a été retenu : c’est IPv6. Alors pourquoi IPv6 ? Pourquoi pas IPv5 ? Eh bien tout simplement parce que IPv5 existe déjà mais est très peu connu !

Dans cet article nous allons voir quels sont les changements entre IPv4 et IPv6 et du coup comment est structuré ce protocole.

I/ La base d’IPv6

La première chose à noter c’est que le protocole IPv6 utilise des adresses IP codées sur 16 octets soit quatre fois la taille des adresses IPv4. Par conséquent, avec IPv6 on dispose de 2¹²⁸ adresses soit 340282366920938463463374607431768211456 adresses. 😮😮

Une adresse IPv6 est composée de 8 groupes de 4 chiffres hexadécimaux.

Pour rappel les chiffres hexadécimaux sont les suivants : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A(10), B(11), C(12), D(13), E(14), F(15).

Du coup une adresse hexadécimale ça ressemble à ça :

1234 : 5678 : ABC1 : 0000 : 0000 : 9865 : 000F : 1111

C’est plutôt long… Et quand il faut retenir cette valeur eh bah … C’est mort. Pour faciliter l’utilisation de ces adresses il existe quelques règles qui permettent de raccourcir une IPv6.

La première, c’est que si une adresse IPv6 contient plusieurs blocs de 0 consécutifs alors on peut les compresser. Si on reprend l’adresse ci-dessus, on peut la contracter ainsi :

1234 : 5678 : ABC1 :: 9865 : 000F : 1111

La deuxième règle dit que l’on peut omettre entre 1 et 3 zéros par blocs de l’adresse. Par conséquent on peut encore raccourcir l’adresse :

1234 : 5678 : ABC1 :: 9865 : 000F : 1111

En :

1234 : 5678 : ABC1 :: 9865 : F : 1111

C’est toujours autant galère pour s’en rappeler mais c’est déjà plus court !

Avant de nous intéresser à la structure d’IPv6, il est nécessaire d’avoir une bonne compréhension des différents types d’adresses car les adresses IPv6 seront différentes en fonction de leurs types.

II/ Les types d’adresse IPv6

Il existe trois types d’adresses IPv6 : les adresses unicast, multicast et anycast.

  • Adresse unicast :

On dit d’une communication qu’elle est unicast quand elle permet à un émetteur de communiquer avec un et un seul récepteur. Quand on accède à une ressource sur le web on contacte un serveur qui nous l’envoie sous forme de paquets à nous et nous seul.

Schématiquement on aurait ceci :

unicast

  • Adresse Multicast :

Les adresses multicast permettent de communiquer avec un ensemble d’hôtes qui font partie d’un groupe de réception. Généralement, pour faire partie du groupe de réception il faut être abonné à un service.

Inconsciemment quand vous regardez la télévision vous utilisez un adressage multicast. En effet vous êtes abonnés à un service (SFR, Orange etc…) qui vous transmet des données à vous ainsi qu’aux autres personnes abonnées au service.

multicast.png

  • Adresse Anycast

Anycast fonctionne comme multicast dans le sens où plusieurs serveurs sont joignables via une adresse IP. La seule différence ici c’est que vous n’allez pas initier une connexion avec chacun des serveurs mais seulement avec celui qui vous répond le plus rapidement.

Analogiquement c’est un peu comme un appel d’offre : imaginez un particulier qui vend son appartement de 150m² en plein milieu de paris pour 500€, pleins de personnes vont être intéressées mais seulement une (la plus rapide) pourra l’acheter.

Si j’ai pris la peine de détailler rapidement les différents types d’adresses, c’est parce que avec IPv6 chaque type d’adresse IPv6 utilisera un préfixe différent. Et bien évidemment il faut les connaître par cœur.

III/ Les préfixes IPv6

Le préfixe d’une adresse IPv6 correspond aux quatre premiers blocs :

xxxx : xxxx : xxxx : xxxx : xxxx : xxxx : xxxx : xxxx

Et il est différent suivant le type d’adresse que vous utilisez. Pour vous situer un peu dans quel bourbier on se trouve avec IPv6 je vous propose ce petit schéma sorti tout droit de mes cours de réseau :

hierarchie.png

Voici une petite description succinctes de ces différents types.

  • Loopback/Unspecified :

Commençons par les plus simples : les adresses de loopback et de réseau. L’adresse loopback est utilisée quand un hôte souhait discuter avec lui même.

L’adresse dites « Unspecified » est une adresse un peu particulière. Le seul moment où on s’en sert c’est quand on démarre une machine et que cette dernière n’a pas encore connaissance de son adresse IP.

Voici les équivalents IPv4/IPv6 de ces deux types d’adresse :

Adresses IPv4 IPv6
Loopback 127.0.0.1/8 ::1/128
Unspecified 0.0.0.0/0 ::/128
  • Link-Local :

Les adresses Link-Local sont les équivalentes des adresses APIPA d’IPv4. Pour rappel, APIPA (Automatic Private Internet Protocol Addressing) est un protocole qui permet à une machine de s’attribuer automatiquement une adresse IP quand le serveur DHCP n’est pas joignable ou hors service.

Par défaut tous matériel est capable de s’attribuer une adresse Link-Local. Du coup tout matériel sur un réseau local est en capacité de communiquer même si le serveur DHCP est non fonctionnel.

Le préfixe d’une adresse de type Link-Local est FE80::/10 (les 10 premiers bits sont : 1111 1110 10). Chez moi, mon serveur DHCP n’utilise pas IPv6 du coup mon adresses IPv6 est de types Link-Local :

fe80.png

Ces adresses ne sont par contre pas routables.

  • Site-Local :

Les adresses de type Site-Local sont l’équivalents IPv6 des adresses privées Ipv4 (10.0.0.0/8, 172.16.0.0/12, 192.18.0.0/16). Leurs préfixes est le suivant : FC00::/7 (les sept premiers bits sont 1111 110)

Ces adresses peuvent être attribuées par un serveur DHCP IPv6 mais elles ne sont toujours pas routables.

  • Global Link :

Les adresses Globales Link, à l’inverse des Link-Local et Site-Local, sont des adresses routables sur Internet. C’est donc l’équivalent IPv6 des adresses publiques IPv4. Toutes les adresses de type global link commencent par le préfixe 2000::/3 (jusqu’à 3fff:) (les trois premiers bits sont 001).

  • Multicast :

Les adresses Multicast permettent de communiquer avec un groupe de machines. Ces adresses utilisent le préfixe ff00::/8 (les 8 premiers bits valent 1111 1111).

Comme vous avez pu le constater, le changement entre IPv4 et IPv6 est monstrueux (la complexité aussi en passant -.- ). Du coup pour permettre aux entreprises de déployer IPv6 sereinement, les concepteurs d’IPv6 ont développé des « mécanismes de traduction » permettant aux machines parlant IPv4 de communiquer avec des machines parlant IPv6 et vis vers ça.

  • Adresse IPv4 mappée :

Les adresses IPv4 mappées permettent d’utiliser la double pile de protocoles IPv4 et IPv6 et donc de communiquer sur le réseau Internet en général. Pour que cela fonctionne il faut tout simplement concaténer le préfixe de ce type d’adresse (::ffff/96) à l’adresse IPv4.

Une adresse IPv6 mappée IPv4 pourrait donc être : :: ffff : 15.45.67.9

Tout ça, ça concernait les préfixe mais comme je vous l’ai dit il y a une deuxième partie qui est la partie identification d’hôte et qui est elle aussi particulière.

IV/Identification d’hôtes

Le plus simple pour la partie identification d’hôtes c’est d’utiliser une version élargie de l’adresse MAC de la machine. Pour rappel, une adresse MAC est composé de 6 nombres hexadécimaux soit 48 bits.

xx : xx : xx : xx : xx : xx

Sur ces 48 bits, les 24 premiers représentent l’identificateur du constructeur  tandis que les 24 derniers correspondent au numéro de série. Mais du coup l’adresse MAC est codée sur 48 bits et nous, on en a besoin de 64.

Ce qu’on va faire, c’est qu’on va ajouter entre les deux bloc de 24 bits la valeur fffe :

xx : xx : xx : fffe : xx : xx : xx

Ensuite il va falloir procéder à l’inversion du bit Universale. Ce bit Universal correspond au deuxième bit du premier nombre hexadécimal. Par exemple, si le premier numéro hexadécimal est : a8, le deuxième bit de ce nombre vaut 0 puisque a8 en hexadécimal se traduit par 1010 1000 en binaire). Tout ce qu’on a à faire c’est de le passer à 1 et du coup de modifier la valeur du nombre hexadécimal qui deviendra : 170.

A savoir que si le bit avait été à 1, on aurait du le mettre à 0 et donc enlever 2 au nombre hexadécimal.

Dernière étape : regrouper par bloc de quatre les nombres de notre adresse MAC :

xxxx : xxff : fexx : xxxx

On retombe bien sur les quatre blocs qui constituent l’identificateur d’hôte et qui a une taille de 64 bits. Ce n’est pas la seule méthode (il y a notamment la configuration manuelle) mais c’est la plus classe selon moi.


Voilà voilà 😉 ! J’espère ne pas avoir dit trop de bêtises (normalement non, j’ai pris le temps de vérifier eheh). Si cet article sort un jour sachez quand même que j’ai longuement hésité avant de le publier. La raison première c’est qu’IPv6 est plutôt compliqué à prendre en main et que les ressources disponibles sur le web ne sont pas forcément des plus claires.

Si vous avez repéré des erreurs n’hésitez pas à faire un tour sur ma page Facebook et m’en avertir 😉 !

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l'aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s