Migration IPv4 vers IPv6

Après la journée mondiale de l’ IPv6 qui s’est déroulée hier (IPv6 Day – worldipv6day.org/) ou tout les grands noms de l’internet étaient joignables en IPv6, dont ipstudy.net ou encore Facebook ! (Pas NetworkLife.net car c’est un hébergement mutualisé…). Je vous propose un petit article de présentation des méthodes de migration de votre réseau IPv4 vers un réseau IPv6. Les ISP y ont déjà pensés, à nous de le mettre en place dorénavant en entreprise !

Sommaire:

  1. Introduction
  2. Présentation d’IPv6
  3. Méchanismes de transition IPv4 vers IPv6
    1. ISATAP
    2. TEREDO
    3. 6to4 Tunneling
  4. Routage IPv6
  5. Conclusion

I. Introduction

Le protocole de routage principalement utilisé aujourd’hui pour les communications Internet est le protocole IP (Internet Protocol). La version la plus utilisée du protocole IP est la version 4 (IPv4) et n’a fait l’objet d’aucune évolution majeure depuis la publication du document fondateur, la RFC 791. Le protocole IP dans sa version 4 s’est avéré assez robuste tout au long de l’essor de l’Internet. Cependant, un certain nombre de caractéristiques et d’évolutions n’ont pas été prises en compte, ce qui à conduit à la nécessité de l’élaboration d’un successeur au protocole IP actuel.

Parmi les évolutions actuelles mal considérées par IPv4, on peut citer :

  • la croissance rapide de l’Internet qui conduit rapidement à un épuisement des adresses IPv4 disponibles L’IANA à distribué les derniers ranges IPv4 récemment, voir mon dernier article sur IPv6 (Graphiques).
  • la multiplication des systèmes communiquant mobiles (PDAs, téléphones portables, …) ;
  • l’essor de nouveaux services de diffusion multimédia (Vidéoconférence, VoD, … ).

Le successeur naturel aurait pu logiquement être IPv5, mais cette version a été attribuée à un protocole expérimental : ST (Internet Stream Protocol) qui n’a jamais atteint le grand public. Le successeur fut donc choisi sous le nom de IPv6, également appelé IPng (IP Next Generation).

Les détails techniques du protocole s’appuient sur la RFC suivante:  [RFC3513].

II. Présentation d’IPv6

La différence majeure entre IPv4 et IPv6 est la taille des paquets, 32 bits pour IPv4 contre 128 bits pour IPv6. Cette modification est liée à la pénurie actuelle d’adresses IPv4. IPv6 augmente le nombre d’adresses disponibles, soit 667 millions de milliards d’adresses IP disponibles par mm² de la surface de la Terre.

On peut également notter les améliorations suivantes:

  • Des mécanismes de configuration et de renumérotation automatique.
  • IPsec, QoS et le multicast font partie de la spécification d’IPv6, au lieu d’être des ajouts ultérieurs comme en IPv4.
  • La simplification des en-têtes de paquets, qui facilite notamment le routage.

Composition d’une adresse IPv6

128bits, découpés en 8 octets dans sa forme canonique, soit 39 caractères: 1fff:0000:0a88:85a3:0000:0000:ac1f:8001.
Une grande série de 0 peuvent êtres remplacés une seule fois dans l’adresse par deux “semicolon” (::) ce qui donne 1fff:0000:0a88:85a3::ac1f:8001.
la notation décimale pointée est autorisée uniquement pour les 2 derniers blocs représentant les 32 derniers bits de l’adresse IPv6. Ainsi l’adresse ci-dessus est équivalente à 1fff:0000:0a88:85a3:0000:0000:172.31.128.1

Différence entre les entêtes (headers) IPv4 et IPv6

Pour commenter ce schéma, voici la description des éléments de l’entête (header) IPv6:

  • Version (4 bits) Toujours à 06, il représente le numéro de version du protocole Internet.
  • Traffic Class (8 bits) Définie la priorité du datagramme pour la QoS.
  • Flow Label (20 bits) Utilisé par une source lorsqu’un traitement spécial de la part des routeurs IPv6 est demandé. (optionnel)
  • Payload Length (16 bits) Longeur des données qui suivent l’entête IPv6 en octet
  • Next Header (8 bits) entête ou protocole qui suit (Ex: 88 -010011000 – EIGRP)
  • Hop Limit (8 bits) TTL (Time To Live) similaire à IPv4
  • Source Address (128 bits) Adresse IP source
  • Destination Address (128 bits) Adresse IP de destination

Les différents types d’adresses IPv6

  • Unicast – Communication vers un hôte
  • Multicast – Communication vers plusieurs hôtes
  • Anycast – Une adresse Multicast destinée à un seul membre d’un groupe Multicast

Les ranges spécifiques d’adresses IPv6

::/0 Default route
::/128 Unspecified
::1/128 Loopback
::FFFF:0:0/96 IPv4-mapped
2001::/32 Teredo
2001:DB8::/32 Documentation
2002::/16 6to4
FC00::/7 Unique local
FE80::/10 Link-local unicast
FF00::/8 Multicast

Méchanismes de transition IPv4 vers IPv6

Pendant la période de transition (actuelle) entre IPv4 et IPv6, il est nécessaire de pouvoir utiliser, (et ce pendant encore très longtemps) les deux types d’adresses.

Voici les principales méthodes

ISATAP

ISATAP définit un méthode pour générer un lien local IPv6 depuis une IPv4, et un mécanisme pour la découverte des voisins IPv4.

TEREDO

TEREDO définit une méthode permettant d’accéder à l’Internet IPv6 derrière un équipement réalisant du NAT. Il consiste à encapsuler les paquets IPv6 dans de l’UDP sur IPv4 entre le client et le relais Teredo, avec l’aide d’un serveur Teredo.

6to4 Tunneling

Encapsulation d’une adresse IPv6 dans un tunnel IPv4.

Fonctionnement

Suivons le chemin d’un paquet IPv6 depuis un hôte derrière R1 vers un hôte après R2. Le paquet commence normalement son chemin avec une source IPv6 et une destination IPv6. Ces adresses ne changent pas durant le parcours du paquet.

R1 reçois le paquet IPv6 et compare la destination IPv6 dans sa table de routage IPv6.

R1# show ipv6 route
IPv6 Routing Table - 7 entries
Codes: C - Connected, L - Local, S - Static, R - RIP, B - BGP
       U - Per-user Static route, M - MIPv6
       I1 - ISIS L1, I2 - ISIS L2, IA - ISIS interarea, IS - ISIS summary
       O - OSPF intra, OI - OSPF inter, OE1 - OSPF ext 1, OE2 - OSPF ext 2
       ON1 - OSPF NSSA ext 1, ON2 - OSPF NSSA ext 2
       D - EIGRP, EX - EIGRP external
C   2001:DB8:0:1::/64 [0/0]
     via ::, Loopback0
L   2001:DB8:0:1::1/128 [0/0]
     via ::, Loopback0
S   2001:DB8:0:2::/64 [1/0]
     via 2002:A00:201::
S   2001:DB8:0:3::/64 [1/0]
     via 2002:A00:301::
S   2002::/16 [1/0]
     via ::, Tunnel0
LC  2002:A00:101::/128 [0/0]
     via ::, Tunnel0
L   FF00::/8 [0/0]
     via ::, Null0

Le meilleur chemin est la route statique pour 2001:db8:0:2::/64, le prochain saut est 2002:a00:201::.

Cela force un recursive lookup pour 2002:a00:201::. La meilleure route est Tunnel0.

C’est ici que l’on commence à jouer avec du 6to4. Le paquet IPv6 est routé dans le tunnel 0, il est encapsulé dans un paquet IPv4. L’adresse IPv4 source est celle du tunnel. La destination est calculée en fonction de l’adresse de destination 2001:db8:0:2::/64; 2002:a00:201:: est convertie en 10.0.2.1.

Le paquet encapsulé est routé en IPv4 jusqu’à R2. Le header IPv4 est retiré quand il entre sur l’interface 10.0.2.1 de R2. Le paquet IPv6 qui reste est routé jusqu’à l’hôte B.

Cet exemple se base sur un routage statique, notez que les protocoles de routage (EIGRP, OSPFv3..) ne peuvent être utilisés au travers de tunnels 6to4 car les adresses IPv6 de type ‘link-local’ (requises pour former les adjacences) ne sont pas supportées. Seul BGP peut-être utilisé ici.

Malgré le réseau NBMA (Non Broadcast Multi Access), les tunnels 6to4 sont quand même des tunnels, ils requièrent chacun une interface IN et OUT en IPv6; elles ne peuvent pas être utilisées pour faire communiquer directement les hôtes IPv4 vers IPv6.

Benoit

Network engineer at CNS Communications. CCIE #47705, focused on R&S, Data Center, SD-WAN & Automation.

More Posts - Website

Follow Me:
TwitterLinkedIn

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *