MOOC:Compagnon Act42-s7

From Livre IPv6

Revision as of 21:17, 16 June 2015 by Panelli (Talk | contribs) (Conclusion)

> MOOC>Contenu>Séquence 4 > Activité 43


III/ Etablir la connectivité IPv6

Lorsqu'un réseau IPv6 veut joindre un autre réseau IPv6 séparé par un réseau en IPv4, le problème consiste à offrir une connectivité IPv6 entre ces 2 réseaux. La bonne solution serait de les interconnecter avec IPv6 uniquement, à savoir sans avoir recours à IPv4. Mais quand il n'existe pas cette possibilité la connectivité s'établit par des mécanismes de niveau réseau reposant sur le principe du tunnel. Ainsi, le tunnel est la solution pour utiliser une infrastructure IPv4 existante pour acheminer du trafic IPv6.

Les tunnels peuvent s'utiliser aussi bien pour la connectivité d'un site IPv6 avec l'Internet v6 (si le FAI n'offre pas cette connectivité) que pour l'intérieur d'un site en IPv4 si celui-ci comporte des parties en IPv6 non connexes. Par la suite nous allons décrire le fonctionnement d'un tunnel IPv6 sur IPv4 en montrant le principe du tunnel configuré et du tunnel automatique. De nombreuses techniques à base de tunnels existent comme le rappelle le RFC 7059, nous retiendrons la technique adaptée à une simple connectivité avec l'Internetv6 et celle pour établir des tunnels automatique à l'intérieur d'un site.


Principe du tunnel IPv6 sur IPv4

Le tunnel est un mécanisme bien connu dans le domaine des réseaux qui consiste à faire qu’une unité de transfert d'un protocole d'une couche se trouve encapsulé dans la charge utile de l'unité de transfert d’un autre protocole de la même couche. Ainsi des protocoles « transportés » peuvent circuler dans un réseau construit sur un protocole encapsulant. Dans le cas d'IPv6, cette technique a été définie dans le RFC 4213 et porte le nom de 6in4. L'encapsulation du paquet IPv6 dans le paquet IPv4 s'effectue comme illustré par la figure 1. Le champ protocol de l'en-tête IPv4 prend alors la valeur 41 pour indiquer IPv6. Les extrémités du tunnel peuvent être soient des hôtes ou soient des routeurs. Les extrémités du tunnel appelés des tunneliers peuvent configurées manuellement ou avoir une configuration dynamique.

43fig1.png
Figure 1: Encapsulation pour un tunnel

Le notion de tunnel équivaut alors à un câble virtuel bi-directionnel permettant d’assurer une liaison point à point entre deux nœuds IPv6 ou encore des ilôts IPv6 et fournir ainsi une connectivité comme l’illustre la figure 2.

43fig2.png
Figure 2: Tunnel entre ilôts IPv6

Tunnel configuré

La configuration d'un tunnel consiste à créer une interface réseau représentant l'extrémité du tunnel, indiquer les adresses IPv4 des extrémités, allouer un préfixe IPv6 pour ce lien point à point virtuel et spécifier les routes pour suivre ce tunnel.

Pour illustrer la configuration d'un tunnel, la figure 3 montre le cas d'un tunnel reliant un hôte avec un routeur. Dans cette situation, le fichier de configuration (ci-dessous) indique la création de l'interface nommée 6in4. Le point de sortie du tunnel est indiquée. Comme les paquets IPv6 sont encapsulés dans un paquet IPv4 celui doit avoir une adresse source et une adresse de destination. L'adresse de destination est celle du point de sortie du tunnel ici 192.0.3.1. L'interface 6in4 est configurée par l'adresse et le préfixe 2001:db8:caf:1::2/64. L'adresse IPv6 de l'interface 6in4 du coté du routeur ainsi que la route par défaut sont ensuite précisées.

auto 6in4
iface 6in4 inet6 v4tunnel
endpoint 192.0.3.1
address 2001:db8:caf:1::2
netmask 64
gateway 2001:db8:caf:1::1

up route -A inet6 add ::/0 dev 6in4

43-fig3.png
Figure 3: Cas d'un tunnel configuré

Les performances d'un tunnel vont dépendre de sa longueur. Pour éviter d'avoir des délais trop important, il convient de configuré un tunnel vers le point IPv6 le plus proche.

Tunnel automatique

Un tunnel configuré demande un travail de configuration, cela peut être vu comme un inconvénient. Des solutions d'automatisation ont été étudiées qui ont comme principe de contenir l'adresse IPv4 du tunnelier de destination dans l'adresse IPv6. Le technique de transition 6to4 décrite par le RFC 3056 suit ce principe. Elle vise à interconnecter entre eux des sites IPv6 isolés en créant des tunnels automatiques IPv6 dans IPv4 en fonction du destinataire des données. La figure 4 montre 2 ilôts IPv6 communicants entre eux via un tunnel automatique 6to4. Le point fort du mécanisme présenté ici est l'automatisation, où l'intervention de l'administrateur est réduite à une phase de configuration/ initialisation du service et non à une phase de configuration des tunnels.


43-fig4-2.png
Figure 4: 6to4


Comme 6in4, l'encapsulation des paquets IPv6 s'effectue directement dans les paquets IPv4. 6to4 profite d'un préfixe IPv6 2002::/ 16 réservé. Le préfixe IPv6 d'une adresse IPv6 d'un tunnelier est composée automatiquement en le préfixant par le préfixe réservé suivie par l'adresse IPV4 unicast globale de ce tunnelier comme montré par la figure 5. Ainsi un préfixe IPv6 de longueur 48 bits peut être aisément construit en utilisant l'adresse IPv4 du noeud en bordure des réseaux IPv4 et IPv6. Ce préfixe peut identifier un site IPv6. De cette manière 6to4 se suffit à lui-même pour créer un préfixe IPv6 pour un site en toute autonomie. On peut remarquer que ce plan d'adressage est conforme aux plans d'adressage globaux actuellement en vigueur, puisqu'il réserve 16 bits pour numéroter les réseaux du site et 64 bits pour les identifiants d'interface.

CS178.gif
Figure 5: Format d'une adresse 6to4

Par exemple, la figure 6 illustre le mécanisme de construction d'un préfixe. Le routeur 6to4 se trouve en bordure du réseau. Il est connecté à la fois à l'Internet v4 et à un site IPv6. C'est un noeud en double pile, il possède obligatoirement une adresse IPv4, 192.0.2.1 dans l'exemple. Il va s'en servir pour construire le prefixe 2001:c000:201::/48 (0xc0 = 192) . Ce préfixe de 48 bits va être utilisé par l'ensemble des noeuds IPv6 du site.

43-fig6.png
Figure 6: Construction d'un préfixe 6to4

Au niveau du routage, la figure 7 présente l'envoi d'un paquet IPv6 de l'hôte A vers l'hôte B. Il est important de noter ici que A et B sont des hôtes ayant une adresse IPv6 prise dans le plan d'adressage 6to4. Dans un premier temps, A interroge le DNS pour connaître l'adresse IPv6 de B. Dans notre exemple, la réponse est 2002:c000:301:1:20d:60ff:fe38:6d16. Dans un second temps, l'hôte A émet le paquet vers cette destination. Ce paquet IPv6 dont l'adresse de destination commence par le préfixe 2002::/16 doit passer par un tunnel 6to4. C'est au routeur 6to4 du site de A qu'il revient d'effectuer cette opération.
Ainsi le paquet doit suivre la route IPv6 2002::/16 pour atteindre ce routeur 6to4. Ce dernier analyse l'adresse IPv6 de destination et trouve l'adresse IPv4 de l'autre extrémité du tunnel (192.0.1.3 dans l'exemple). Il pourra alors effectuer la transmission en encapsulant le paquet IPv6 dans un paquet IPv4. C'est cette encaspulation qui forme le tunnel. Le routeur 6to4 du coté de B décapsule le paquet IPV6 et le route normalement vers sa destination finale B en utilisant le routage interne.

43-fig7.png
Figure 7: Acheminement d'un paquet IPv6 en 6to4

Si 6to4 est une technique intéressante pour relier deux nuages IPv6 à travers un nuage IPv4, elle se complique et n'est pas optimale lorsqu'il s'agit de communiquer avec une machine dont l'adresse est issue d'un plan de numérotation global. Car un site utilisant 6to4 n'est pas connecté à l'Internet v6. Dans ce cas le site 6to4 doit passer par un relais (ou routeur passerelle) qui est connecté à la fois à l'Internetv6 et à l'internetv4. Dans le RFC 3068, il a été proposé d'utiliser une adresse IPv4 qui soit commune à tous ces relais à travers le monde. Dans le contexte dérégulé de l'Internet actuel, aucun FAI n'a d'intérêt à offrir un tel service. Car il verra le trafic IPv6 des clients de ses concurrents charger son infrastructure au détriment de la qualité de service de ses propres clients. De plus, le relais pose aussi le problème de sa résistance au facteur d'échelle et de la qualité de sa connectivité. Comme il n'est pas possible de choisir le relais et que leur qualité varie fortement, ceci rend la communication passant par 6to4 très imprévisible. Enfin, le routage n'est pas optimal et presque assurément asymétrique :

  • le site 6to4 peut avoir choisi un routeur passerelle loin du destinataire,
  • le site ayant un plan d'adressage global envoie les paquets vers le routeur passerelle le plus proche au sens du routage IPv6.

Cette asymétrie peut se voir comme la figure 8. Le problème de l'asymétrie est qu'elle complique la tâche de recherche d'erreurs en cas de dysfonctionnement et surtout qu'elle est introduit des délais de propagation élevés due à la longueur des tunnels.


43-fig8.png
Figure 8: Routage asymétrique

L'analyse du service de connectivité en 6to4 montre une mauvaise qualité [1]. En effet, le taux de panne des communications passant par 6to4 est significativement élevé. Ceci a eu pour effet ralentir le déploiement d'IPv6. Bien que l'idée de tunnel automatique développée par 6to4 soit intéressante, sa mise en oeuvre est problématique. En Mai 2015, par la publication du Le RFC 7526 l'iETF prone l'abandon de cette technique. Nous verrons par la suite la déclinaison effective de 6to4 connu sous le nom de 6rd.

Connectivité d'un sité isolé : Tunnel Broker

La croissance du réseau IPv6 a commencé en s'appuyant sur l'infrastructure de communication d'IPv4. Les premiers tunnels étaient configurés manuellement et pouvaient être très longs (et donc peu performants). Pour des personnes non qualifiées, ceci reste complexe tant du point de vue technique que du point de vue du choix du point de sortie du tunnel. La constitution d'un tunnel a été simplifiée par l'introduction du tunnel broker (RFC 3053). Les tunnels broker représentent une méthode pour connecter un ilot IPv6 à l’Internetv6. L'idée du tunnel broker consiste à mettre en oeuvre une interaction de type client/serveur. La partie cliente est localisée côté utilisateur tandis que la partie serveur traite les demandes de tunnels. Le modèle du tunnel broker se représente par la figure 9

43-fig9.png
Figure 9: Modèle du Tunnel Broker

La création d'un tunnel à l'aide d'un tunnel broker fonctionne de la manière indiquée par la figure 10 à savoir :

  1. Une machine double pile de l'ilot IPv6 (typiquement un routeur) négocie avec le tunnel broker qui indique le préfixe délégué et d'autres caractéristiques du tunnel.
  2. Le tunnel broker configure le serveur de tunnel retenu
  3. Le tunnel broker envoie le script de configuration de la machine double pile de l'utilisateur
  4. La machine double pile va ensuite encapsuler ses paquets IPv6 dans de l'IPv4 à destination du serveur de tunnels, qui sert également de routeur. Ainsi une communication en IPv6 peut s'effectuer entre des noeuds dans un ilots isolés avec des noeuds de l'Internetv6.

CS181.gif
Figure 10: Création d'un tunnel

La négociation est opérée à l'aide du protocole TSP (Tunnel Set Up Protocol) (RFC 5572). En l'absence de TSP, la demande de connexion au tunnel broker est réalisée par une interface web dont l'URL est connue à l'avance. Par cette interface, les paramètres nécessaires à l'établissement du tunnel entre le noeud de l'utilisateur et le serveur de tunnels sont récupérés. Le protocole de négociation TSP automatise cet échange. Plus précisément, TSP traite les paramètres suivants:

  • L'authentification de l'utilisateur
  • le type de tunnel:
    • tunnel IPv6 sur IPv4 ( RFC 4213 )
    • tunnel IPv4 sur IPv6 ( RFC 2473 )
    • tunnel IPv6 sur UDP-IPv4 pour la traversée de NAT
  • les adresse IPv4 pour les deux extrémités du tunnel
  • l'adresse IPv6 assignée lorsque le client TSP est un terminal
  • le préfixe IPv6 alloué lorsque le client TSP est un routeur

TSP s'appuie sur l'échange de simples messages XML dont un exemple est donné ci-dessous. Cet exemple correspond à la demande de création d'un tunnel simple par un client TSP :

-- Successful TCP Connection --
C:VERSION=2.0.0 CR LF
S:CAPABILITY TUNNEL=V6V4 AUTH=ANONYMOUS CR LF
C:AUTHENTICATE ANONYMOUS CR LF
S:200 Authentication successful CR LF
C:Content-length: 123 CR LF
<tunnel action="create" type="v6v4">
<client>
<address type="ipv4">1.1.1.1</address>
</client>
</tunnel> CR LF
S: Content-length: 234 CR LF
200 OK CR LF
<tunnel action="info" type="v6v4" lifetime="1440">
<server>
<address type="ipv4">206.123.31.114</address>
<address type= "ipv6">3ffe:b00:c18:ffff:0000:0000:0000:0000</address>
</server>
<client>
<address type="ipv4">1.1.1.1</address>
<address type= "ipv6">3ffe:b00:c18:ffff::0000:0000:0000:0001</address>
<address type="dn">userid.domain</address>
</client>
</tunnel> CR LF
C: Content-length: 35 CR LF
<tunnel action="accept"></tunnel> CR LF

La connectivité offerte par Tunnel broker est en générale fournie à titre provisoire (soit en attendant que l'offre des FAI soit disponible soit pour faire des tests de validation, par exemple). Elle peut aussi être une première étape pour un prestataire de service pour procurer de la connectivité IPv6 à ses usagers. Afin de promouvoir le passage à IPv6, les tunnels broker sont souvent gratuits. La liste de ces brokers est en ligne sous ce lien [2].

Connectivité sur une infrastructure IPv4: 6rd

Le mécanisme 6rd (IPv6 Rapid Deployment) proposé par le RFC 5569, après son déploiement par Free, a été étendu pour devenir un standard par le RFC 5969. 6rd reprend le principe des tunnels automatiques du 6to4 mais apporte des modifications pour éviter les défauts de performances et de fiabilité observés sur 6to4. 6rd est destiné à un opérateur pour offrir une connectivité IPv6 alors que son infrastructure repose sur IPv4. Cet opérateur peut être aussi bien publique comme un FAI ou privé comme une entreprise ou une administration.

6rd est une variante de 6to4. La différence majeure se situe sur l'utilisation du préfixe IPv6 propre à l'opérateur plutôt que le préfixe communs à tous employé par 6to4 (2002::/16). La conséquence c'est que l'opérateur doit installer ses propres relais. En contre partie, il contrôle les tunnels pour joindre ses relais. Il peut ainsi garantir que la voie retour est symétrique à la voie aller. Les tunnels sont plus courts, ils servent à passer la section IPv4 de l'opérateur. En contrôlant les routes, les principaux défauts du déploiement de 6to4 comme les délais importants sont corrigés. Avec 6rd, on se retrouve dans le cas classique où les routeurs internes (dont le relais) traitent le trafic des noeuds internes. Comme 6to4, 6rd est sans état et les routeurs relais (noté 6rd BR dans la figure 11) peuvent utiliser une même adresse (techniquement que l'on qualifie d'anycast). En somme, l'idée de 6rd est de restreindre la technique 6to4 à un usage interne. L'architecture de 6rd peut se schématiser par la figure 11.


43fig6.png
Figure 11: Architecture de 6rd

Le format de l’adresse IPv6 utilise un préfixe 2000::/3 pris dans le plan d'adressage global unicast. Il devient alors difficile de différencier un trafic sortant d’un réseau 6rd d’un trafic IPv6 natif. Le préfixe IPv6 de l'opérateur est complété par tout ou partie de l'adresse IPv4 du routeur en double pile (appelé 6rd CE (Customer Edge) dans la figure 11) du réseau IPv6 à connecter pour former le préfixe IPv6 de ce réseau. L'adresse IPv4 du routeur 6rd CE est normalement publique, mais ce n’est pas obligatoire. L’organisation de l’adresse IPv6 est décrite par la figure 12. À noter que, qu'au sein d'un même opérateur, les adresses IPv4 s'aggrégent sur un préfixe commun, il n'est pas nécessaire d'encoder les 32 bits de l'adresse IPv4 dans le préfixe IPv6, ce qui libère des bits pour laisser une numérotation des liens internes au réseau IPv6 à connecter. Il est laissé le soin à chaque opérateur de définir le nombre de bits de l'adresse IPv4 à conserver. Il ne faut pas que le préfixe réseau ne dépasse /64


43fig7.png
Figure 12: Format d'une adresse 6-RD

Pour illustrer la figure, considérons tout d’abord que l’adresse IPv4 192.0.2.129 (c000:2f1 en hexadécimal) a été attribuée à l’interface d'un 6rd CE. Le FAI dispose du préfixe l'IPv6 2001:DB8::/32 pour son domaine 6rd. Les adresses de tous les 6rd CE s'agrégent sur le préfixe 192.0.0.0/8. L'opérateur doit garder 24 bits. Le préfixe IPv6 de chaque 6rd Ce aura donc une longueur de 56 bits correspondant à l'addition du préfixe du domaine avec la partie significative de l'adresse IPv4. Dans notre exemple, le préfixe IPv6 du pour ce 6rd CE sera 2001:db8:0002:f100::/56. il restera 8 bits au titre du SID pour la numérotation des liens du site connecté par le 6rd CE. A l’extérieur du site, ces adresses apparaîtront comme des adresses IPv6 natives mais au travers d’un tunnel entre les routeurs de bordures de l'opérateur et le 6rd CE.

Le transfert avec la technologie 6rd s'organise selon 3 cas :

  • Transfert inter-site Le trafic IPv6 arrive en mode natif sur l'interface LAN du 6rdCE. Si l’adresse IPv6 de destination est incluse dans le préfixe du domaine 6rd configuré localement il sera transmis directement à un autre routeur CE 6rd. L'adresses IPv4 des 6rdCE est extraite des adresses IPv6 pour constituer le tunnel. Le paquet IPv4, encapsulant le paquet IPv6 est transmis au 6rd CE de destination à travers l'infrastructure IPv4 de l'opérateur.
    Le routeur 6rdCE de destination reçoit le paquet IPv4. Il vérifie par mesure de sécurité, que l'adresse source de l'en-tête IPv4 correspond à celle intégrée dans l'adresse IPv6 source. Il désencapsule le paquet IPv6 et le transmet sur le lien local pour son acheminement à la destination IPv6.
  • Transfert du site vers l'Internetv6 : le trafic IPv6 est reçue en mode natif sur le 6rdCE. L'adresse de destination IPv6 ne correspond pas à un préfixe IPv6 du domaine de l'operateur ce qui signifie que la destination est extérieure au domaine de 6rd local. Dans ce cas, le paquet IPv6 doit être transmis à un routeur de bordure 6rd.
    Comme dans le cas du transfert inter-site, le paquet IPv6 est encapsulé dans un paquet IPv4, Cependant, la différence est que l'adresse IPv4 du routeur de bordure est obtenue de la table de routage. Le routeur de bordure reçoit le paquet IPv4 et supprime l'encapsulation IPv4. Après le contrôle de sécurité, le paquet IPv6 est transmis sur l'Internetv6.
  • Transfert de l'Internetv6 vers le site: Si un routeur de bordure reçoit un paquet IPv6 à destination d’une adresse IPv4 incluse dans le préfixe 6rd du domaine, il transmet le paquet au routeur 6rd CE correspondant en utilisant le même principe que le cas précédent.

Conclusion

Dans la démarche d'intégration d'IPv6, la meilleure solution est d'utiliser IPv6 nativement à savoir comme IPv4. Il n'est pas toujours possible de maintenir la connectivité IPv6 ou de trouver un opérateur offrant la connectivité IPv6. Dans ces situations, il faut se résoudre à utiliser des tunnels. Le RFC 7059 effectue un inventaire des techniques d'intégration reposant sur des tunnels. Toutes les techniques ne se valent du point de vues des performances et de leur fiabilité. Nous avons présentés dans cette activité les techniques les plus intéressantes pour établir une connectivité IPv6. Le tunnel broker représente une méthode pour tirer un simple tunnel entre un réseau IPv6 isolé et un point d'entrée de 'Internetv6. 6to4 et 6rd utilisent des tunnels automatiques au sein d'un réseau IPv4 d'un opérateur. Si l'idée de tunnel sans état de 6to4 est bonne, sa mise en oeuvre a été problématique. La variante 6rd corrige les défauts de 6to4. 6to4 et 6rd repose sur l'encapsulation directe, à savoir le paquet IPv6 est mis directement dans IPv4. Ce mode d'encapsulation ne passe pas les NAT. Les NAT ont pour la plupart que la capacité de traiter les protocoles de transport TCP et UDP. La technique de tunnel Teredo (RFC 4380) traite ce problème en encapsulant les paquets IPv6 dans UDP puis dans IPv4. Il a été reporté par l'article [3] des performances et une fibailité du service de connectivité qui était pire que celui rendu par 6to4. Pour conclure, nous rappelons la règle d'intégration d'IPv6 qui dit Dual stack where you can; tunnel where you must.

Personal tools