Le protocole IPv6

Mai 2015

Historique du protocole IP


Les jours du protocole IP dans sa forme actuelle (IPv4) sont comptés. Le réseau Internet était utilisé largement par les universités, les industries de pointe, et le gouvernement dès le milieu des années 1990, mais Internet intéresse de plus en plus les entreprises et les sociétés commerciales - il sera utilisé par un grand nombre d'individus et de systèmes exprimant les uns et les autres des besoins différents. Par exemple : avec la convergence imminente de l'ordinateur, des réseaux, de l'audiovisuel et de l'industrie des loisirs, chaque poste de télévision deviendra avant longtemps un équipement d'accès à Internet permettant à des milliards d'individus de pratiquer, par exemple, la vidéo à la demande, le télé-achat ou le commerce électronique. Dans ces circonstances, le protocole IPv6 (appelé également IPng pour IP new generation) doit offrir plus de flexibilité et d'efficacité, résoudre toute une variété de problèmes nouveaux et ne devrait jamais être en rupture d'adresses.

Les objectifs principaux de ce nouveau protocole furent de :

  • Supporter des milliards d'ordinateurs, en se libérant de l'inefficacité de l'espace des adresses IP actuelles,
  • Réduire la taille des tables de routage,
  • Simplifier le protocole, pour permettre aux routeurs de router les datagrammes plus rapidement,
  • Fournir une meilleure sécurité (authentification et confidentialité) que l'actuel protocole IP,
  • Accorder plus d'attention au type de service, et notamment aux services associés au trafic temps réel,
  • Faciliter la diffusion multi-destinataire en permettant de spécifier l'envergure,
  • Donner la possibilité à un ordinateur de se déplacer sans changer son adresse,
  • Permettre au protocole une évolution future,
  • Accorder à l'ancien et au nouveau protocole une coexistence pacifique.

Le protocole IPv6


Le protocole IPv6 répond raisonnablement aux objectifs édictés. Il maintient les meilleures fonctions d'IPv4, en écarte ou minimise les mauvaises, et en ajoute de nouvelles quand elles sont nécessaires.

En général, IPv6 n'est pas compatible avec IPv4, mais est compatible avec tous les autres protocoles Internet, dont TCP, UDP, ICMP, IGMP, OSPF, BGP et DNS ; quelque fois, de légères modifications sont requises (notamment pour fonctionner avec de longues adresses).

Les principales fonctions d'IPv6


La nouveauté majeure d'IPv6 est l'utilisation d'adresses plus longues qu'IPv4.
Elles sont codées sur 16 octets et permettent de résoudre le problème qui mit IPv6 à l'ordre du jour : procurer un ensemble d'adresses Internet quasi illimité.

Il est nécessaire d'être plus explicite sur cette notation d'adresses, mais il faut savoir qu'il y a un nombre important d'adresses sur 16 octets. Précisément, il en a 2^128, soit approximativement 3 x 10^38. Si la Terre entière (terre et eau confondues) était couverte d'ordinateurs, IPv6 pourrait allouer 7 x 10^23 adresses IP par m².

IPv4 permet d'adresser 2^32=4,29.10^9 adresses tandis que IPv6 permet d'en adresser 2^128=3,4.10^38 adresses.

L'amélioration majeure d'IPv6 est la simplification de l'en-tête des datagrammes. L'en-tête du datagramme de base IPv6 ne comprend que 7 champs (contre 14 pour IPv4). Ce changement permet aux routeurs de traiter les datagrammes plus rapidement et améliore globalement leur débit.

La troisième amélioration consiste à offrir plus de souplesse aux options. Ce changement est essentiel avec le nouvel en-tête, car les champs obligatoires de l'ancienne version sont maintenant devenus optionnels.
De plus, la façon dont les options sont représentées est différente ; elle permet aux routeurs d'ignorer plus simplement les options qui ne leur sont pas destinées. Cette fonction accélère le temps de traitement des datagrammes.

D'autre part IPv6 apporte une plus grande sécurité:
L'authentification et la confidentialité constituent les fonctions de sécurité majeures du protocole IPv6.

Finalement, une plus grande attention que par le passé a été accordée aux types de services. Bien que champ Type de services du datagramme IPv4 ne soit que très rarement utilisé, la croissance attendue du trafic multimédia dans le futur nécessite de s'y intéresser.

En-Tête de base des datagrammes


Voici ce à quoi ressemble un datagramme IPv6 :


32 bits
Version<td style="width:25%"> Classe de traffic Identificateur de flux
Longueur des données <td style="width:25%"> En-tête suivant Nombre de sauts
Adresse IP source
Adresse IP destination



Voici la signification des différents champs :

  • Le champ Version est toujours égal à 4 bits pour IPv6. Pendant la période de transition de IPv4 vers IPv6, les routeurs devront examiner ce champ pour savoir quel type de datagramme ils routent.
  • Le champ Classe de trafic (codé sur 8 bits) est utilisé pour distinguer les sources qui doivent bénéficier du contrôle de flux des autres. Des priorités de 0 à 7 sont affectées aux sources capables de ralentir leur débit en cas de congestion. Les valeurs 8 à 15 sont assignées au trafic temps réel (les données audio et vidéo en font partie) dont le débit est constant.

Cette distinction des flux permet aux routeurs de mieux réagir en cas de congestion. Dans chaque groupe prioritaire, le niveau de priorité le plus faible correspond aux datagrammes les moins importants.
  • Le champ Identificateur de flux contient un numéro unique choisi par la source qui a pour but de faciliter le travail des routeurs et de permettre la mise en oeuvre les fonctions de qualité de services comme RSVP (Resource reSerVation setup Protocol). Cet indicateur peut être considéré comme une marque pour un contexte dans le routeur. Le routeur peut alors faire un traitement particulier : choix d'une route, traitement en "temps-réel" de l'information, ...

Le champ identificateur de flux peut être rempli avec une valeur aléatoire qui servira à référencer le contexte. La source gardera cette valeur pour tous les paquets qu'elle émettra pour cette application et cette destination. Le traitement est optimisé puisque le routeur n'a plus à consulter que cinq champs pour déterminer l'appartenance d'un paquet. De plus, si une extension de confidentialité est utilisée, les informations concernant les numéros de port sont masquées aux routeurs intermédiaires.
  • Le champ Longueur des données utiles (en anglais payload) sur deux octets, ne contient que la taille des données utiles, sans prendre en compte la longueur de l'en-tête. Pour des paquets dont la taille des données serait supérieure à 65536 ce champ vaut 0 et l'option jumbogramme de l'extension de "proche en proche" est utilisée.
  • Le champ En-tête suivant a une fonction similaire au champ protocole du paquet IPv4 : Il identifie tout simplement le prochain en-tête (dans le même datagramme IPv6). Il peut s'agir d'un protocole (de niveau supérieur ICMP, UDP, TCP, ...) ou d'une extension.
  • Le champ Nombre de sauts remplace le champ "TTL" (Time-to-Live) en IPv4. Sa valeur (sur 8 bits) est décrémentée à chaque noeud traversé. Si cette valeur atteint 0 alors que le paquet IPv6 traverse un routeur, il sera rejeté avec l'émission d'un message ICMPv6 d'erreur. Il est utilisé pour empêcher les datagrammes de circuler indéfiniment. Il joue le même rôle que le champ Durée de vie d'IPv4, à savoir qu'il contient une valeur représentant le nombre de sauts ou de pas (hops) qui est décrémenté à chaque passage dans un routeur. En théorie, dans IPv4, il y a une notion de temps en seconde mais aucun routeur ne l'utilisant comme tel, le nom a changé pour refléter l'usage actuel.
  • Viennent ensuite les champs Adresse source et Adresse de destination.

Après de nombreuses discussions, il fut décidé que les adresses de longueur fixe égales à 16 octets constituaient le meilleur compromis.
Les premiers bits de l'adresse - le préfixe - définissent le type de l'adresse. Les adresses commençant par 8 zéros sont réservées, notamment pour les adresses IPv4. C'est ainsi que toutes les adresses commençant par 8 zéros sont réservées aux adresses IPv4. Deux variantes sont supportées ; elles se distinguent suivant les 16 bits suivant (soit 16 bits à 0 ou à 1).

Adresses Globales unicast : Découpage géographique grâce aux préfixes


L'utilisation de préfixes séparés pour les adresses affectées à un fournisseur et les adresses affectées à une zone géographique constitue un compromis entre deux différentes visions du futur réseau Internet. Chacun de ces fournisseurs dispose d'une fraction réservée de l'espace d'adressage (adresses unicast = 1/8 de cet espace). Les 5 premiers bits qui suivent le préfixe 0010 (2000::/3) sont utilisés pour indiquer dans quel " registre " se trouve le fournisseur d'accès. Actuellement, trois registres sont opérationnels, pour l'Amérique du nord, l'Europe et l'Asie. Jusqu'à 29 nouveaux registres pourront être ajoutés ultérieurement.

Chaque registre est libre de diviser les 15 octets restants comme il l'entend. Une autre possibilité est d'utiliser un octet pour indiquer la nationalité du fournisseur et de laisser toute liberté aux octets suivant pour définir une structure d'adresses spécifique.

Le modèle géographique est le même que celui du réseau Internet actuel, dans lequel les fournisseurs d'accès ne jouent pas un grand rôle. Dans ce cadre, IPv6 peut gérer 2 types d'adresses.

Les adresses unicast Locales (ULA)
utilisent le préfixe FC00::/7, elles sont destinées à l'équivalent des adresses ip privées IPV4 (RFC1918) .
Elles peuvent être réutilisées par d'autres organisations sans qu'il y ait de conflit. Elles ne peuvent pas être propagées hors des limites des organisations, ce qui les rend bien adaptées à celles qui utilisent des gardes-barrières pour protéger leur réseau privé du réseau Internet.
Si elles sont correctement générées (tirage aléatoire des 40 bits suivant le préfixe FD00::/8) elles permettront d'interconnecter des réseaux par vpn avec moins d'une chance sur mille milliards de conflit .

Les adresses de liens locaux (préfixe FE80::/10) n'ont qu'une spécification locale sur l'interface.

Toutes ces adresses , si elles utilisent la procédure de création automatique ont généralement 8 octets qui représentent le réseau et 8 octets représentant l'interface sur ce réseau .

Adresse multicast


préfixe FF00::/8

Les adresses de diffusion multidestinataire disposent d'un champ Drapeau (4 bits) et d'un champ Envergure (4 bits) à la suite du préfixe, puis d'un champ Identificateur de groupe (112 bits). L'un des bits du drapeau distingue les groupes permanents des groupes transitoires.

Le champ Envergure permet une diffusion limitée sur une zone

Adresse anycast


En plus de supporter l'adressage point à point classique (unicast) et l'adressage de diffusion multidestinataire (multicast) IPv6 supporte un nouveau type d'adressage de diffusion au premier vu (anycast).

Cette technique est similaire à la diffusion multidestinataire dans le sens ou l'adresse de destination est un groupe d'adresses, mais plutôt que d'essayer de livrer le datagramme à tous les membres du groupe, il essai de le livrer à un seul membre du groupe, celui le plus proche ou le plus à même de le recevoir.

La notation IPv6


Une nouvelle notation a été définie pour décrire les adresses IPv6 de 16 octets. Elle comprend 8 groupes de 4 chiffres hexadécimaux séparés avec le symbole deux-points. Par exemple :

8000:0000:0000:0000:0123:4567:89AB:CDEF



Puisque plusieurs adresses ont de nombreux zéros dans leur libellé, 3 optimisations ont été définies. Tout d'abord, les 1° zéro d'un groupe peuvent être omis, comme par exemple 0123 qui peut s'écrire 123. Ensuite, un ou plusieurs groupes de 4 zéros consécutifs peuvent être remplacés par un double deux-points. C'est ainsi que l'adresse ci-dessus devient :

8000::123:4567:89AB:CDEF


Particularité pour l'écriture des URL:
étant donné que le caractère" : " est utilisé pour séparer les groupes, il apporte la confusion dans une url car il y désigne alors la séparation adresse ip : port
il faut donc écrire l'adresse ipV6 entre crochets [ ] pour différencier l'adresse du port:
http://[2002:400:2A41:378::34A2:36]:8080 par exemple .


Enfin, les adresses IPv4 peuvent être écrites en utilisant la représentation de l'adresse en notation décimale pointée précédée d'un double deux-points, comme par exemple :

::192.31.254.46





Le champ Protocole est exclu parce que le champ En-tête suivant du dernier en-tête IP d'un datagramme précise le type de protocole (par exemple, UDP ou TCP).

Tous les champs relatifs à la fragmentation ont été retirés, parce qu'IPv6 a une approche différente de la fragmentation.
Pour commencer, tous les ordinateurs et routeurs conformes à IPv6 doivent supporter les datagrammes de 576 octets. Cette règle place la fragmentation dans un rôle secondaire. De plus, quand un ordinateur envoie un trop grand datagramme IPv6, contrairement à ce qu'il se passe avec la fragmentation, le routeur qui ne peut le transmettre retourne un message d'erreur à la source. Ce message précise à l'ordinateur source d'interrompre l'envoi de nouveaux datagrammes vers cette destination. Avoir un ordinateur qui transmette immédiatement des datagrammes à la bonne dimension est bien plus efficace que de voir les routeurs les fragmenter à la volée.

Enfin, le champ Total de contrôle n'existe plus car son calcul est trop réducteur de performance. En effet, la fiabilité des réseaux actuels, combinée avec le fait que les couches liaisons de données et transport effectuent leur propre contrôle, le gain en qualité d'un total d'un contrôle supplémentaire ne vaut pas le prix à payer pour le calculer.

En-tête d'extension


Cet en-tête fournit une information complémentaire de façon efficace. Chacun d'eux est optionnel. Si plus d'un en-tête est présent, ils doivent apparaître immédiatement après l'en-tête fixe, de préférence dans l'ordre de la liste.

Certains en-têtes ont un format fixe ; d'autres contiennent un nombre variable de champs variables. Pour cela, chaque item est codé sous forme d'un triplet (Type, Longueur, Valeur). Le Type est un champ d'un octet qui précise la nature de l'option. Les différents types ont été choisis de façon à ce que les 2 premiers bits disent quoi faire aux routeurs qui ne savent pas exécuter l'option.
Les choix sont :

  • sauter l'option
  • détruire le datagramme
  • retourner un message ICMP à la source
  • détruire le datagramme sans retourner de message ICMP s'il s'agit d'un datagramme multidestinataire (afin d'éviter un nombre trop important de rapport ICMP en retour).



La Longueur est un champ d'un octet. Elle indique la taille du champ Valeur (de 0 255) qui contient une information quelconque adressée au destinataire.

En-tête pas après pas


L'en-tête Pas-après-pas contient des informations destinées à tous les routeurs sur le chemin.

En-tête routage


L'en-tête Routage donne la liste d'un ou de plusieurs routeurs qui doivent être visités sur le trajet vers la destination. Deux formes de routage sont mises en oeuvre de façon combinée : le routage strict (la route intégrale est définie) et le routage lâche (seuls les routeurs obligatoires sont définis).

Les 4 premiers champs de l'en-tête d'extension Routage contiennent 4 entiers d'un octet :

  • le type d'en-tête suivant
  • le type de routage (couramment 0)
  • le nombre d'adresses présentes dans l'en-tête (1 à 24)
  • une adresse donnant la prochaine adresse à visiter.

Ce dernier champ commence à la valeur 0, il est incrémenté à chaque adresse visitée.

En-tête fragmentation


L'en-tête Fragmentation traite de la fragmentation de manière similaire à IPv4. L'en-tête contient l'identifiant de datagramme, le numéro de fragment et un bit précisant si d'autres fragments suivent. Dans IPv6, contrairement à IPv4, seul l'ordinateur source peut fragmenter le datagramme. Les routeurs sur le trajet ne le peuvent pas. Cela permet à l'ordinateur source de fragmenter le datagramme en morceaux et d'utiliser l'en-tête Fragmentation pour transmettre les morceaux.

Authentification


L'en-tête Authentification fournit un mécanisme permettant au destinataire d'un datagramme de s'assurer de l'identité de la source. Dans IPv4, aucune garantie semblable n'est offerte.

L'utilisation du chiffrement des données du datagramme (sa charge utile) renforce sa sécurité ; seul le vrai destinataire peut les lire.

Quand un émetteur et un récepteur veulent communiquer en toute sécurité, ils doivent tout d'abord se mettre d'accord sur une ou plusieurs clés secrètes connues d'eux seuls. Il est assigné un nombre clé de 32 bits à chacune des 2 clés.

Les nombres clés sont globaux de façon que, par exemple, si A utilise la clé 4 pour communiquer avec B, A ne peut pas utiliser cette clé pour communiquer avec C. D'autres paramètres sont associés à chaque nombre clé, tel que sa durée de vie, etc...

Pour envoyer un message authentifié, l'ordinateur source construit premièrement un datagramme contenant tous les en-têtes IP et la charge utile, puis il remplace les champs qui changent peut par des 0 (par exemple : le champ Nombre max. de sauts). Le datagramme est complété avec des 0 pour devenir un multiple de 16 octets. De façon similaire, la clé secrète utilisée est aussi complétée avec des 0 pour être un multiple de 16 octets. Puis, un total de contrôle chiffré est calculé après concaténation de la clé secrète complétée, du datagramme complété et, à nouveau, de la clé secrète complétée.

L'en-tête Authentification contient 3 parties. La première compte 4 octets précisant le numéro d'en-tête suivant, la longueur de l'en-tête d'authentification, et 16 bits à zéro. La seconde définit le nombre clé sur 32 bits. La troisième contient le total de contrôle chiffré (avec l'algorithme MD5 ou un autre).

Le destinataire utilise le nombre clé pour trouver la clé secrète. La valeur complétée de la clé secrète est ajoutée avant et après la charge utile elle-même complétée, les champs variables de l'en-tête sont vidés de leurs zéros, puis le total de contrôle chiffré est calculé. Si le résultat du calcul est égal au total de contrôle chiffré contenu dans l'en-tête Authentification, le destinataire est sûr que le datagramme vient bien de la source avec laquelle il partage la clé secrète. Il est également sûr que le datagramme n'a pas été falsifié à son insu en arrière plan.

Pour les datagrammes qui doivent être envoyés secrètement, il faut utiliser l'en-tête d'extension Charge utile chiffrée. Cet en-tête commence par un nombre clé de 32 bits, suivi par la charge utile chiffrée.

Option de destination


L'en-tête Option de destination est utilisé pour des champs qui n'ont besoin d'être interprétés et compris que par l'ordinateur destinataire. Dans la version originale d'IPv6, la seule option de destination qui a été définie est l'option nulle. Elle permet de compléter cet en-tête par des 0 pour obtenir un multiple de 8 octets. Cet en-tête ne sera pas utilisé dans un premier temps. Il a été défini pour s'assurer que les nouveaux logiciels de routage pourront le prendre en compte, au cas où quelqu'un envisagerait un jour une option de destination.

Plus d'informations


Pour plus d'informations sur le protocole IPv6, le mieux est de se reporter à la RFC 2460 expliquant de manière détaillée le protocole :




Article écrit par Nico VanHaute.

Pour une lecture illimitée hors ligne, vous avez la possibilité de télécharger gratuitement cet article au format PDF :
Le-protocole-ipv6 .pdf

Réalisé sous la direction de , fondateur de CommentCaMarche.net.

A voir également


IPv6 protocol
IPv6 protocol
Protocolo IPv6
Protocolo IPv6
Das Protokoll IPv6
Das Protokoll IPv6
Il protocollo IPv6
Il protocollo IPv6
O protocolo IPv6
O protocolo IPv6
Ce document intitulé «  Le protocole IPv6  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.