Déploiement d'IPv6 et mécanismes d'intégration
From Livre IPv6
Plusieurs champs de déploiement d'IPv6 sont présentés dans la suite de ce chapitre : le déploiement d'IPv6 dans le coeur de réseau en premier lieu, dans les réseaux de fournisseurs d'accès ensuite, et pour finir, l'accès des réseaux d'entreprises et de particuliers à la connectivité IPv6.
Déploiement d'IPv6 dans le coeur du réseau
Double pile
Le mécanisme de double pile IP consiste à doter chaque équipement du réseau d'une double pile protocolaire (Dual Stack) et d'affecter une adresse IPv4 et/ou IPv6 à chaque interface réseau. Il s'applique à tous les segments d'un réseau. En contrepartie, ce mécanisme ne prend pas en compte les problèmes de pénurie d'adresses IPv4.
Tous les équipementiers de coeur de réseaux supportent ce mécanisme, qui permet rapidement d'acheminer du trafic IPv6 dans une infrastructure IPv4 existante. Le déploiement de ce mécanisme peut être progressif et ne concerner qu'une partie du coeur de réseau dans un premier temps. Lorsque le déploiement est partiel, une attention particulière doit être portée au protocole de routage utilisé. Dans ce cas en effet, l'activation de fonctions permettant de gérer plusieurs topologies peut s'avérer nécessaire (cf. IS-IS).
Pour les équipements terminaux, ce mécanisme de transition a été défini et a été très largement employé dès le début de la standardisation d'IPv6. De la même manière, il consiste à doter chaque équipement d'une double pile protocolaire et d'affecter une adresse IPv4 et/ou IPv6 à chaque inteface réseau. Cela ne résoud pas le problème de la pénurie d'adresses IPv4, mais permet dans un premier temps d'acheminer indifférement du trafic IPv4 ou IPv6 sur un équipement donné (station, routeur).
La figure Compatibilité grâce à la double pile illustre ce principe. La station B peut parler en IPv4 avec la station A et en IPv6 avec la station C. Le listing suivant donne un exemple de configuration d'une double pile dans un environnement Unix.
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet 192.108.119.134 netmask 0xffffff00 broadcast 192.108.119.255 inet6 3ffe:305:1002:1:2b0:d0ff:fe5c:4aee/64 inet6 fe80::2b0:d0ff:fe5c:4aee/64 ether 00:b0:d0:5c:4a:ee media: 10baseT/UTP <half-duplex> supported media: autoselect 100baseTX
Reste le problème des applications. Une application écrite avec l'API socket IPv6 (L'interface de programmation "socket" IPv6), utilisant en particulier des struct sockaddr_storage et la fonction getaddrinfo, peut dialoguer indifférement en IPv4 et en IPv6. Simplement, pour un serveur, deux sockets sont nécessaires, l'une pour IPv4 et l'autre pour IPv6. La station B devrait, dans l'exemple de la figure ci-dessus, posséder des serveurs pour chacune des versions de IP, ou au moins des serveurs écoutant sur plusieurs ports en parallèle. Cela peut être évité en utilisant des adresses mappées, qui permettent à une application de voir l'espace d'adresses IPv4 comme une partie de l'espace d'adressage IPv6.
Comme le montre la figure Adresse IPv4 mappée, l'adresse IPv4 est contenue dans l'adresse IPv6.
Quand la pile IPv4 d'un équipement reçoit un paquet et qu'une application s'est enregistrée via une socket IPv6 (famille de protocoles PF_INET6), les adresses IPv4 mappée source et destination sont construites à partir des informations contenues dans l'en-tête du paquet. Réciproquement quand une application IPv6 émet des paquets avec une adresse IPv4 mappée, ceux-ci sont aiguillés vers la pile IPv4.
L'exemple suivant illustre ce fonctionnement. Le client telnet, compilé en IPv6 peut contacter les équipements IPv4 en utilisant l'adresse mappée.
>telnet rhadamanthe Trying 3ffe:305:1002:1:2b0:d0ff:fe5c:4aee... Connected to rhadamanthe.ipv6.rennes.enst-bretagne.fr. Escape character is '^]'. FreeBSD/i386 (rhadamanthe.ipv6.rennes.enst-br) (ttyp3) login:^D >telnet bloodmoney Trying ::ffff:193.52.74.211... Connected to bloodmoney.rennes.enst-bretagne.fr. Escape character is '^]'. SunOS UNIX (bloodmoney) login:
Le mécanisme de double pile permet de résoudre tous les problèmes d'interopérabilité liés à l'introduction de la pile IPv6. Quand cela est possible, la communication se fait en utilisant la nouvelle version du protocole. Dès qu'un des éléments n'est pas compatible (réseau, système d'exploitation, application), le protocole IPv4 est utilisé. Le principal intérêt vient du fait qu'il est possible d'écrire des applications en IPv6 qui restent compatibles avec les applications IPv4 existantes. Pourtant ce mécanisme n'est pas suffisant :
- Il ne résout pas le problème de la pénurie d'adresses puisque chaque machine doit disposer d'une adresse IPv4 et d'une adresse IPv6. Cela complique aussi les mécanismes de configuration automatique.
- Il implique que tous les routeurs soient aussi configurés pour router les deux types de paquets.
- Les applications doivent être compilées pour IPv6, ce qui implique la disponibilité du code source et un "effort" de reprogrammation.
Les applications recompilées avec l'API IPv6 ne fonctionnent que sur des équipements pourvus d'un système récent (et d'une pile IPv6 si on utilise les adresses IPv4 mappées), ce qui peut poser des problèmes de compatibilité entre les différentes versions d'un système.