Difference between revisions of "MOOC:Verb43"

From Livre IPv6

(Created page with "Introduction ------------ Lorsque 2 réseaux IPv6 doivent s'interconnecter. La bonne solution est de le faire en IPv6 par un lien reliant les routeurs IPv6. Mais cela n'est p...")
 
(Activité 43 : Inter-opérer les applications par traduction)
 
(11 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Introduction
+
<!--
------------
+
> [[MOOC:Accueil|MOOC]] > [[MOOC:Contenu|Contenu]] >  [[MOOC:Verbatim|Verbatim]]
  
Lorsque 2 réseaux IPv6 doivent s'interconnecter. La bonne solution est de le faire en IPv6 par un lien reliant les routeurs IPv6.
+
----
Mais cela n'est pas toujours possible. Relier les 2 réseaux nécessite alors d'utiliser le réseau IPv4 qui les sépare.  Dans cette situation, un lien virtuel est établi. On parle alors de tunnel.
+
-->
 +
__NOTOC__
  
Principe du tunnel IPv6 sur IPv4
+
= Activité 43 : Interopérer les applications par traduction =
--------------------------------
+
Nous avons ici 2 réseaux IPv6 interconnectés par un réseau IPv4 au moyen d'un tunnel.
+
Lorsque la source IPv6 envoie un paquet IPv6 à la destination. Le paquet va arriver à un noeud de bordure au réseau IPv6. Pour traverser le réseau IPv4, un tunnel doit être emprunté.
+
Pour se faire, le noeud de bordure, que l'on appellera par la suite tunnelier, va encapsuler le paquet IPv6 dans un paquet IPv4. Cette opération consiste à mettre le paquet IPv6 dans la partie donnée du paquet IPv4.
+
Ensuite le tunnelier émet le paquet qui sera reçu à l'autre extrémité du tunnel, par un tunnelier lui aussi. Ce dernier désencapsule le paquet IPv6 du paquet IPv4. Le paquet continue sa route pour rejoindre sa destination.
+
  
Nous pouvons remarquer que les tunneliers sont des noeuds en double pile
+
==Contexte d'utilisation==
  
 +
<center>
 +
[[image:V43-1.png|400px|thumb|center|]]
 +
</center>
  
Architecture du tunnelier
+
La faible migration des nœuds IPv4 vers IPv6 oblige à avoir recours à une technique de traduction pour faire interopérer un noeud en IPv6, avec un noeud en IPv4.
------------------------
+
En effet, les nouveaux nœuds sont des clients en IPv6. La grande base des serveurs de l'Internet est restée en IPv4.
Un tunnelier est un noeud avec 2 interfaces réseau. Chaque interface réseau est configurée avec une adresse IPv6. La particularité du tunnelier c'est que l'interface au réseau IPv4 est une interface logique. Cette interface est crée. Cette interface materialise l'extrémité du tunnel.
+
La communication par traduction vise donc à permettre à ces clients IPv6 à accéder aux services de l'Internet IPv4.
  
Dans l'exemple précédent, les tunneliers jouaient un rôle de routeur. Le schéma  montre dans ce cas, la réception d'un paquet en IPv6 natif et son émission dans le tunnel
+
==Dispositif de traduction==
  
 +
<center>
 +
[[image:V43-2.png|400px|thumb|center|]]
 +
</center>
  
Tunnel configuré (configuration)
+
Lorsque le client envoie une requête en IPv6, le traducteur va intercepter les paquets pour les traduire, et les émettre dans la version du protocole IP du destinataire final
----------------
+
Et quand le serveur envoie la réponse en IPv4, le traducteur change la version du protocole IP, pour correspondre à celle du client.
Pour illustrer la configuration d'un tunnel, nous montrons le cas d'un tunnel reliant un hôte avec un routeur.
+
Ce dispositif est comparable au NAT des réseaux IPv4. Dans notre cas, ce dispositif n'effectue pas, une simple translation d'un plan d'adressage à un autre, mais une véritable traduction de l'en-tête IP. Un tel NAT est appelé NAT64.
La configuration du tunnel sur l'hôte consiste:
+
- à créer l'interface réseau logique au dessus d'IPv4
+
- puis à configurer cette interface avec l'adresse IPv6 sans oublier de  préciser la longueur du préfixe pour compléter la table de routage.
+
  
Ensuite  il reste à indiquer les informations de l'autre extrémité du tunnel à savoir l'adresse IPv4 et l'adresse IPv6.
+
==Principe de la traduction entre protocoles IP==
  
Soulignons que le tunnel est identifié par un préfixe réseau IPv6 qui lui est propre.
+
<center>
 +
[[image:V43-3.png|400px|thumb|center|]]
 +
</center>
  
Enfin, il ne reste plus qu'à ajouter la route par défaut qui dans notre exemple passe par le tunnel.
 
  
 +
La traduction entre protocoles IP comporte essentiellement 2 composants:
 +
* une transposition protocolaire et,
 +
* une traduction des adresses
  
Tunnel configuré (tunnel broker)
+
Dans notre exemple, lorsque le paquet IPv6 est reçu, les champs de l'en-tête IPv6 (à l'exception des adresses) sont transposés dans leur équivalent dans l'en-tête du paquet IPv4.
----------------
+
Cette transposition est faite uniquement avec les informations contenues dans le paquet IPv6.
Lorsque l'on veut créer un tunnel, il faut avoir un point de sortie et qui plus est  soit le plus proche possible. En effet  le tunnel doit être le plus court possible pour éviter de dégrader le service IPv6. Ces contraintes ne sont pas faciles à satisfaire.
+
On parle alors, de traduction sans état.
 +
Le paquet IPv4, une fois l'en-tête complète, et le champ de données chargé avec les données du paquet IPv6, est alors prêt à être émis pour atteindre la destination finale.
  
L'introduction des tunnels brokers vise à simplifier la tâche de configuration  du tunnel en offrant une solution de connectivité IPv6 pour les sites isolés.
 
  
Le tunnels broker propose une méthode de type client-serveur pour établir un tunnel:
+
La traduction d'adresse consiste à mettre en correspondance une adresse de l'espace d'adressage IPv6 avec une adresse de l'espace d'adressage IPv4, et vice et versa, à la fois pour l'adresse source, et pour l'adresse de destination du paquet reçu par le NAT64.
- le client ici une noeud double pile d'un réseau IPv6 isolé demande au tunnel broker les informations  pour configurer un tunnel.
+
Dans le réseau IPv6, la communication utilise l'adresse H6 et l'adresse N6. Ces adresses sont mises en correspondance, respectivement avec N4 et H4 pour les communications dans le réseau IPv4
- le tunnel broker  choisi un serveur de tunnel le plus proches possible  et le configure.
+
Ceci veut dire, que l'adresse N6 sert à identifier le noeud d'adresse H4, dans le réseau IPv6. Et de manière symétrique l'adresse N4 sert à identifier le noeud d'adresse H6, dans le réseau IPv4.
- Il envoie ensuite au client  un script de configuration.
+
- Ce dernier, en exécutant le script reçu, crée le tunnel.
+
  
Ainsi une communication en IPv6 peut s'effectuer entre des noeuds du réseau  IPv6 isolé avec des serveurs de l'Internet v6 au moyen d'un tunnel.
+
La correspondance entre une adresse IPv4 avec une adresse IPv6 est évidente lorsque l'adresse IPv6 embarque l'adresse IPv4. En effet, représenter une adresse IPv4 dans l’espace d’adressage IPv6 est simple, car ce dernier est assez grand pour contenir l’ensemble des adresses IPv4. Pour ce faire, une adresse IPv6 va être créée pour inclure l'adresse IPv4.  
  
Tunnel automatique (principe)
+
La méthode de création consiste, à inclure les 32 bits de l'adresse IPv4, à la suite d'un préfixe IPv6, qui dans notre schéma est un préfixe réservé à l'usage de la traduction.
----------------------------
+
Une traduction d'adresse, qui utilise une adresse IPv6 embarquant une adresse IPv4, s'effectue '''sans état'''.
Un tunnel configuré se crée par anticipation, à savoir avant de traiter le trafic utilisateur.
+
Un tunnel peut aussi se créer dynamiquement c'est à dire  à réception d'un paquet IPv6.
+
Pour cela , il faut que les adresses IPv4 des tunneliers soient dans les adresses IPv6. C'est le principe retenu par les techniques de tunnel automatique comme 6to4.
+
  
L'adresse IPv4 publique du tunnelier préfixée par le préfixe spécifique 2002::/16 va servir à créer un préfixe IPv6 unique. Car l'adresse IPv4 du tunnelier est elle-même unique.
+
Lorsque l'adresse IPv6 n'embarque pas l'adresse IPv4, alors mettre en correspondance une adresse IPv6 avec une adresse IPv4, demande une traduction d'adresse '''avec état'''.  
Le préfixe de 48 bits va identifier le site IPv6 et va servir à définir un plan d'adressage conforme au plan d'adressage global.
+
Des adresses IPv6 peuvent être ensuite allouées aux noeuds de ce site.
+
  
Tunnel automatique (fonctionnement)
+
La mise en correspondance de l'adresse IPv6 avec une adresse IPv4 est faite dynamiquement, par le traducteur.  
-----------------------------------
+
Comme, il n'y aura pas assez d'adresses IPv4 pour les nœuds IPv6, le traducteur utilise, en plus le numéro de port pour reconnaitre les nœuds IPv6.  
Lorsque 2 noeuds ayant des adresses prises dans un plan d'adressage 6to4 communiquent comme A et B. Le paquet IPv6 émis par la source arrive au tunnelier. Ce dernier extrait  des adresses IPv6 source et destination les adresses IPv4 contenues.
+
Ces adresses vont servir à constituer l'en-tête du paquet IPv4 qui va encapsuler le paquet IPv6 reçu.
+
C'est cette encaspulation qui forme le tunnel. Le paquet IPv4 est émis. Le tunnelier en réception désencapsule le paquet IPv6 et ce dernier continue sa route vers sa destination finale.
+
  
Tunnel automatique (limitation des tunnels 6to4)
+
Le traducteur retient, dans un état, cette association d'adresses, et de ports entre IPv4, et IPv6.
--------------------------------------
+
Si 6to4 est une technique intéressante pour relier 2 réseaux IPv6 isolés. Elle souffre de limitations quand il s'agit de relier un site IPv6 avec l'Internetv6 c'est à dire l'Internet utilisant le plan d'adressage globale.
+
  
- Dans ce cas, un relais ayant une connectivité avec l'internetv6 doit être rejoint.
+
==Fonctionnement de NAT64/DNS64==
- Ces relais ne sont pas choisis car ils sont adressés par une adresse anycast commune à  tous les relais. Le paquet  à destination d'un adresses Anycast est routé vers le relais le plus proche en terme de routage.
+
- Comme les relais ne sont pas choisis et que la qualité de leur connectivité à l'Internetv6 varie fortement. Ceci rend la communication passant par 6to4 très imprévisible.
+
- Le routage est presque assurèment asymétrqiue, le relais le plus proche est propre à chaque espace d'adressage et donc il n'y a pas de raison qu'en IPv6 et IPv4 que ce soit le même.  Cette asymétrie rend l'identification du dysfonctionnement difficile en cas d’erreur.
+
  
 +
<center>
 +
[[image:V43-4.png|400px|thumb|center|]]
 +
</center>
  
Tunnel automatique (principe du 6rd)
+
Nous allons voir ici un exemple de l'utilisation de NAT64 dans un réseau de mobiles.  Le réseau de mobiles a été déployé avec IPv6 uniquement.
-----------------------------------
+
* Un client, ici, un mobile souhaite accéder à un service qui est resté en IPv4.
 +
* Le mobile envoie, au  serveur DNS local, ici, DNS64, une requête de résolution du serveur old.org.
 +
* Le DNS64 demande l'adresse IPv4 au système DNS.
 +
* Il obtient en réponse l'adresse IPv4 demandée.
 +
* Le DNS64 se charge de transformer, cette adresse, en une adresse IPv6, et l'envoie au client.
 +
* A cet instant, le mobile connait l'adresse du serveur old.org. Il l'a connait  au moyen d'une adresse IPv6 embarquant l'adresse IPv4. Maintenant, le client IPv6 est en mesure d'envoyer sa requête.
 +
* Cette requête va être acheminée jusqu'au NAT64, qui va traduire le paquet IPv6 en un paquet IPv4.
 +
* La requête continue son acheminement en IPv4 pour atteindre le serveur demandé.
  
- 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.
+
==Conclusion==
  
-6rd reprend le principe de l’encapsulation d’une adresse IPv4 dans une adresse IPv6 similaire à 6to4 mais il utilise un préfixe obtenu du plan d’adressage global et propre au site.
+
<center>
 +
[[image:V43-5.png|400px|thumb|center|]]
 +
</center>
  
- Ainsi l'interconnexion avec l’internet V6 s'effectue par un relais propre au site. L'installation de ce relais permet de corriger les principaux défauts de 6t04.
+
La solution de traduction NAT64 trouve son intérêt pour  des nœuds IPv6. Ils peuvent accéder à des contenus  accessibles uniquement en IPv4.
  
Tunnel automatique (Fonctionnement du 6rd)
+
Il peut paraitre contradictoire d'utiliser IPv6 pour se passer de la traduction, pour en fait retrouver des traducteurs dans les communications.  Il est important de noter, que cette solution se veut transitoire, au contraire d'IPv4.
------------------------------------------
+
  
Le transfert avec la technique 6rd s'organise selon 3 cas :
+
Le NAT64 est le composant de migration.
 +
En effet, il est intéressant aujourd'hui de pouvoir déployer des réseaux  IPv6 uniquement à la place de réseaux IPv4 privés.
 +
C'est le choix qu'ont fait certains opérateurs de réseaux de mobiles.
  
- dans le cas d'un transfert entre réseau IPv6 à l'intérieur du site. L'adresse IPv4 contenu dans le préfixe de A et B va servir à établir le tunnel paur traverser le réseau IPv4 relaint les 2 tunneliers
+
L'utilisation de NAT64 a montré, que c'était une solution fonctionnelle.  
 
+
Ça marche, sauf pour les applications, qui font référence à l'adresse IPv4.
- dans le cas d'un transfert entre un réseau Ipv6 et un noeud de l'Internet  V6  c'est à dire entre A et C. Le tunnelier du réseau de A va envoyer le paquet par un tunnel au relais  dont l'adresse est obtenue par la table de routage.
+
 
+
- enfin comme A à un préfixe issue de l'adressage globale, la voie retour c'est à dire de C à A va passer par le même relais. Ainsi la communication s'effectue en umpruntant la même route à l'aller et au retour.  
+
 
+
Conclusion
+
-----------
+
 
+
- Dans la démarche d'intégration d'IPv6, la meilleure solution est d’avoir des liens IPv6
+
 
+
- Lorsqu'il n'est pas possible de maintenir la connectivité en IPv6 nativement, il faut se résoudre à établir des tunnels IPv6. On distingue 2 types de tunnel:
+
  - le tunnel configuré pour lequel un lien virtuel est établi statiquement
+
  - le tunnel  automatique pour lequel le lien virtuel s'établit à la demande.
+
 
+
- On peut rappeler que la réduction de la MTU conduit à des problèmes de connectivité. C'est pour cette raison qu'il faut appliquer la règle habituelle qui dit "double-pile quand on peut, tunnel quand on n'a pas le choix".
+
 
+
 
+
-----------------
+
 
+
Pour la connectivité, la règle habituelle s'applique : « double-pile quand on peut, tunnel quand on n'a pas le choix ». La double-pile (IPv4 et IPv6 sur tous les équipements) est la solution la plus simple pour la gestion du réseau. Le tunnel, fragile et faisant dépendre IPv6 d'IPv4, sert pour les cas où on est coincé à n'utiliser que des systèmes antédiluviens.
+

Latest revision as of 11:20, 4 March 2022


Activité 43 : Interopérer les applications par traduction

Contexte d'utilisation

V43-1.png

La faible migration des nœuds IPv4 vers IPv6 oblige à avoir recours à une technique de traduction pour faire interopérer un noeud en IPv6, avec un noeud en IPv4. En effet, les nouveaux nœuds sont des clients en IPv6. La grande base des serveurs de l'Internet est restée en IPv4. La communication par traduction vise donc à permettre à ces clients IPv6 à accéder aux services de l'Internet IPv4.

Dispositif de traduction

V43-2.png

Lorsque le client envoie une requête en IPv6, le traducteur va intercepter les paquets pour les traduire, et les émettre dans la version du protocole IP du destinataire final Et quand le serveur envoie la réponse en IPv4, le traducteur change la version du protocole IP, pour correspondre à celle du client. Ce dispositif est comparable au NAT des réseaux IPv4. Dans notre cas, ce dispositif n'effectue pas, une simple translation d'un plan d'adressage à un autre, mais une véritable traduction de l'en-tête IP. Un tel NAT est appelé NAT64.

Principe de la traduction entre protocoles IP

V43-3.png


La traduction entre protocoles IP comporte essentiellement 2 composants:

  • une transposition protocolaire et,
  • une traduction des adresses

Dans notre exemple, lorsque le paquet IPv6 est reçu, les champs de l'en-tête IPv6 (à l'exception des adresses) sont transposés dans leur équivalent dans l'en-tête du paquet IPv4. Cette transposition est faite uniquement avec les informations contenues dans le paquet IPv6. On parle alors, de traduction sans état. Le paquet IPv4, une fois l'en-tête complète, et le champ de données chargé avec les données du paquet IPv6, est alors prêt à être émis pour atteindre la destination finale.


La traduction d'adresse consiste à mettre en correspondance une adresse de l'espace d'adressage IPv6 avec une adresse de l'espace d'adressage IPv4, et vice et versa, à la fois pour l'adresse source, et pour l'adresse de destination du paquet reçu par le NAT64. Dans le réseau IPv6, la communication utilise l'adresse H6 et l'adresse N6. Ces adresses sont mises en correspondance, respectivement avec N4 et H4 pour les communications dans le réseau IPv4 Ceci veut dire, que l'adresse N6 sert à identifier le noeud d'adresse H4, dans le réseau IPv6. Et de manière symétrique l'adresse N4 sert à identifier le noeud d'adresse H6, dans le réseau IPv4.

La correspondance entre une adresse IPv4 avec une adresse IPv6 est évidente lorsque l'adresse IPv6 embarque l'adresse IPv4. En effet, représenter une adresse IPv4 dans l’espace d’adressage IPv6 est simple, car ce dernier est assez grand pour contenir l’ensemble des adresses IPv4. Pour ce faire, une adresse IPv6 va être créée pour inclure l'adresse IPv4.

La méthode de création consiste, à inclure les 32 bits de l'adresse IPv4, à la suite d'un préfixe IPv6, qui dans notre schéma est un préfixe réservé à l'usage de la traduction. Une traduction d'adresse, qui utilise une adresse IPv6 embarquant une adresse IPv4, s'effectue sans état.

Lorsque l'adresse IPv6 n'embarque pas l'adresse IPv4, alors mettre en correspondance une adresse IPv6 avec une adresse IPv4, demande une traduction d'adresse avec état.

La mise en correspondance de l'adresse IPv6 avec une adresse IPv4 est faite dynamiquement, par le traducteur. Comme, il n'y aura pas assez d'adresses IPv4 pour les nœuds IPv6, le traducteur utilise, en plus le numéro de port pour reconnaitre les nœuds IPv6.

Le traducteur retient, dans un état, cette association d'adresses, et de ports entre IPv4, et IPv6.

Fonctionnement de NAT64/DNS64

V43-4.png

Nous allons voir ici un exemple de l'utilisation de NAT64 dans un réseau de mobiles. Le réseau de mobiles a été déployé avec IPv6 uniquement.

  • Un client, ici, un mobile souhaite accéder à un service qui est resté en IPv4.
  • Le mobile envoie, au serveur DNS local, ici, DNS64, une requête de résolution du serveur old.org.
  • Le DNS64 demande l'adresse IPv4 au système DNS.
  • Il obtient en réponse l'adresse IPv4 demandée.
  • Le DNS64 se charge de transformer, cette adresse, en une adresse IPv6, et l'envoie au client.
  • A cet instant, le mobile connait l'adresse du serveur old.org. Il l'a connait au moyen d'une adresse IPv6 embarquant l'adresse IPv4. Maintenant, le client IPv6 est en mesure d'envoyer sa requête.
  • Cette requête va être acheminée jusqu'au NAT64, qui va traduire le paquet IPv6 en un paquet IPv4.
  • La requête continue son acheminement en IPv4 pour atteindre le serveur demandé.

Conclusion

V43-5.png

La solution de traduction NAT64 trouve son intérêt pour des nœuds IPv6. Ils peuvent accéder à des contenus accessibles uniquement en IPv4.

Il peut paraitre contradictoire d'utiliser IPv6 pour se passer de la traduction, pour en fait retrouver des traducteurs dans les communications. Il est important de noter, que cette solution se veut transitoire, au contraire d'IPv4.

Le NAT64 est le composant de migration. En effet, il est intéressant aujourd'hui de pouvoir déployer des réseaux IPv6 uniquement à la place de réseaux IPv4 privés. C'est le choix qu'ont fait certains opérateurs de réseaux de mobiles.

L'utilisation de NAT64 a montré, que c'était une solution fonctionnelle. Ça marche, sauf pour les applications, qui font référence à l'adresse IPv4.

Personal tools