Chez Ptit Gars

Accueil > Informatique > IPV6

IPV6

samedi 3 mars 2007, par Pti Gars

Introduction :

Pour communiquer entre 2 ordinateurs il est nécessaire que chacun des ordinateur possède une adresse IP (Internet Protocole) en version 4 actuellement (IPV4). Une adresse IPV4 se présente sous la forme a.b.c.d (ie. 193.252.150.140) - 4 nombres compris entre 0 et 255, separés par des points ces 4 nombres sont encodés sur une adresse 32 bits (unité de mesure en informatique représantant 0 ou 1, système binaire). Ce qui représnte 232 Adresses.
IPv4 a été conçu il y a déjà un certain de temps (à partir de janvier 1980), et, dès le début, il y a eu de nombreuses demandes pour accroître la quantité d’adresses disponible et augmenter les capacités. Du faite du nombre de demandent, actuellement on arrive en pénurie d’adresse.
C’est principalement en raison de cette pénurie, mais également pour résoudre quelques-uns des problèmes révélés par l’utilisation à vaste échelle d’IPv4, qu’a commencé en 1995 la transition vers Ipv6 (Internet Protocol Version 6), la version 5 ayant déjà été attribuée à un protocole expérimental. Parmi les nouveautés essentielles, on peut citer :
- l’augmentation de 232 à 2128 du nombre d’adresses disponibles ;
- des mécanismes de configuration et de renumérotation automatique ;
- la simplification des en-têtes de paquets, qui facilite notamment le routage.

1 L’adressage

Une adresse IPv6 est un mot de 128 bits. La taille d’une adresse IPv6 est le quadruple de celle d’une adresse IPv4. Ce qui correspond à plusieurs milliers d’adresses au m² de surface terrestre.

1.1 Structuration des adresses et agrégation
Un des problèmes majeurs d’IPv4 est la croissance incontrôlée des tables de routage. Ce phénomène est dû à une mauvaise agrégation des adresses dans les tables. Il faudrait être capable de router des ensembles de réseaux identifiés par un seul descripteur. Les adresses IPv4 sont trop courtes pour permettre une bonne structuration, et il faut surtout assumer le coût du passé avec les adresses déjà allouées.
Attribuer une adresse à un équipement est un processus complexe, basé sur un compromis entre la facilité d’attribution et la facilité de gestion. Idéalement, pour minimiser la taille de routage, le réseau devrait avoir une topologie en arbre, cela rendrait l’adressage hiérarchique très efficace. Dans la réalité pour des raisons économiques, techniques, géographiques ou de performances, le réseau est beaucoup plus complexe
En 2000, la progression linéaire de cette table a semblé compromise du fait :
- de la baisse du coût des liaisons longues distances, permettant une multi-domiciliation des sites pour des raisons de fiabilité , de performances,
- le manque d’adresses IPv4 qui force les opérateurs à allouer des préfixes de plus en plus long.
Depuis, les opérateurs ont fortement aggrégé pour revenir à une progression linéaire de la table, et la gestion des tables de routage dans le coeur du réseau s’en trouve améliorée.
Si un plan d’adressage hiérarchique semble actuellement le plus adapté, d’autres règles de numérotation pourraient être utilisées dans le futur, comme par exemple, les coordonnées géographiques de l’équipement. Ces techniques ne sont actuellement utilisées que dans quelques laboratoires de recherche, mais il reste assez de place dans l’espace d’adressage pour prendre en compte ces nouveaux types de réseaux si un jour ils se généralisent.
Le choix d’un plan d’adressage a fait l’objet de nombreux débats à l’IETF. Il a été beaucoup plus difficile à définir que le format du paquet IPv6 présenté au chapitre suivant. Plusieurs plans ont été proposés puis abandonnés.

1.2 Plans d’adressage

Durée de vie des adresses
IPv6 généralisant le plan d’adressage CIDR 1, les préfixes restent dans tous les cas la propriété des opérateurs. Il ne peuvent plus être attribués "à vie" aux équipements. Pour faciliter la renumérotation d’une machine l’attribution d’une adresse à une interface est faite temporairement, les adresses IPv6 ne sont pas données mais prêtées. Une durée de vie est associée à l’adresse qui indique le temps pendant lequel l’adresse appartient à l’interface. La valeur par défaut de la durée de vie d’une adresse est de 30 jours, mais cette durée peut être prolongée, ou portée à l’infini. L’adresse lien-local a une durée de vie illimitée.
La renumérotation d’une interface d’une machine consiste à passer d’une adresse à une autre. Lors d’une renumérotation, il n’est pas souhaitable de changer brusquement d’adresse, sinon toutes les communications TCP, qui l’utilisent comme identificateur de connexion, seraient immédiatement coupées. Ceci entraînerait des perturbations importantes au niveau des applications.
Pour faciliter cette transition, un mécanisme d’obsolescence est donc mis en place pour invalider progressivement une adresse. Ce mécanisme s’appuie sur la capacité d’affectation de plusieurs adresses valides à une même interface.

Notation
La représentation textuelle d’une adresse IPv6 se fait en découpant le mot de 128 bits de l’adresse en 8 mots de 16 bits séparés par le caractère « :», chacun d’eux étant représenté en hexadécimal. Par exemple : FEDC:BA98:7654:3210:EDBC:A987:6543:210F
Naturellement, pour éviter toute ambiguïté, l’abréviation « : :» ne peut apparaître qu’une fois au plus dans une adresse.

Type des adresses
IPv6 reconnaît trois types d’adresses : unicast, multicast et anycast.
Le premier de ces types, le type unicast, est le plus simple. Une adresse de ce type désigne une interface unique. Un paquet envoyé à une telle adresse, sera donc remis à l’interface ainsi identifiée.
Une adresse de type multicast désigne un groupe d’interfaces qui en général appartiennent à des noeuds différents pouvant être situés n’importe où dans l’Internet. Lorsqu’un paquet a pour destination une adresse de type multicast, il est acheminé par le réseau à toutes les interfaces membres de ce groupe.
Le dernier type, anycast, est une officialisation de propositions faites pour IPv4. Comme dans le cas du multicast, une adresse de type anycast désigne un groupe d’interfaces, la différence étant que lorsqu’un paquet a pour destination une telle adresse, il est acheminé à un des éléments du groupe et non pas à tous.

Adressage global : plan d’adressage agrégé
Ce plan précise la structure d’adressage IPv6 en précisant les tailles de chacun des blocs. Une adresse intègre trois niveaux de hiérarchie :
- Une topologie publique codé sur 48 bits, allouée par le fournisseur d’accès ;
- Une topologie de site codé sur 16 bits. Ce champ permet de coder les numéros de sous réseau du site ;
- Un identifiant d’interface(64 bits) distinguant les différentes machines sur le lien.

1.3 Identifiant d’interface
Les types d’adresses global ou lien-local utilisent un identifiant sur 64 bits pour désigner une interface connectée sur un lien. Cette longueur bénéficie d’un fort consensus car elle permet de garantir facilement une unicité sur le lien et par conséquent de faciliter l’auto-configuration des équipements.
Plusieurs techniques ont été élaborées. La plus répandue est basée sur l’utilisation d’une valeur unique par construction comme l’adresse MAC de la machine. Mais l’on peut également choisir une valeur aléatoire pour garantir plus de confidentialité ou au contraire la dériver d’une clé publique pour mieux authentifier l’émétteur du message. La taille de 64 bits permet de réduire à une valeur proche de zéro la probabilité de conflits. Enfin dans certains cas l’affectation manuelle de cette valeur peut se justifier.

2 Ipv6 le datagramme

Hormis la modification de la taille des adresses, ce qui conduit à une taille d’en-tête de 40 octets, le protocole IP a subi un toilettage reprenant l’expérience acquise au fil des ans avec IPv4. Le format des en-têtes IPv6 est simplifié et permet aux routeurs de meilleures performances dans leurs traitements :
- L’en-tête ne contient plus le champ checksum, qui devait être ajusté par chaque routeur en raison de la décrémentation du champ durée de vie. Par contre, pour éviter qu’un paquet dont le contenu est erroné ne se glisse dans une autre communication, tous les protocoles de niveau supérieur doivent mettre en œuvre un mécanisme de checksum de bout en bout incluant un pseudo-en-tête qui prend en compte les adresses source et destination. Le checksum d’UDP, facultatif pour IPv4, devient ainsi obligatoire. Pour ICMPv6, le checksum intègre le pseudo-en-tête.
- La taille des en-têtes est fixe. Le routeur peut facilement déterminer où commence la zone de données utiles.
- Les options ont été retirées de l’en-tête et remplacées par de nouveaux en-têtes appelés extensions qui peuvent être facilement ignorées par les routeurs intermédiaires.
- Les champs sont alignés sur des mots de 64 bits, ce qui optimise leur traitement, surtout avec les nouvelles architectures à 64 bits.
- La taille minimale des MTU : Maximum Transmission Unit est de 1 280 octets. Le choix de 1 280 comme MTU minimal en IPv6 permet le tunnelage de paquets IPv6. En effet, la taille de 1 500 octets est généralement admise car elle correspond à la valeur imposée par Ethernet. La majorité des autres réseaux offrent une taille supérieure. La valeur de 576 octets retenue pour IPv4 permettait de prendre en compte des réseaux comme Appletalk. Pour ces réseaux, une couche d’adaptation devra être mise en oeuvre pour pouvoir transporter les paquets IPv6.
- La fonction de fragmentation a été retirée des routeurs. Les champs qui s’y reportent ont été supprimés. Normalement les algorithmes de découverte du PMTU (Path MTU) évitent d’avoir recours à la fragmentation. Si celle-ci s’avère nécessaire, une extension est prévue.
Format d’un datagramme Ipv6

Version

Le champ version est le seul champ qui occupe la même place dans le paquet IPv6 et dans le paquet IPv4. Sa valeur est 6.

Classe de trafic
Le champ classe de trafic est aussi appelé dans les paquets IPv4 octet DiffServ (DS), il prend la place du champ ToS, initialement défini dans la spécification d’IPv4. Le champ DS est découpé en deux parties. Le sous-champ DSCP (DiffServ Code Point) contient les valeurs des différents comportements (priorité du paquet,. Les deux derniers bits du champ sont actuellement non utilisés, mais devraient servir aux routeurs pour indiquer un risque de congestion.

Pour l’instant deux types de comportement sont standardisés :
- Assured Forwarding : Ce comportement définit quatre classes de services et trois priorités suivant que l’utilisateur respecte son contrat, le dépasse légèrement ou est largement en dehors. Les classes sont donc choisies par l’utilisateur et restent les mêmes tout au long du trajet dans le réseau. La priorité, par contre, peut être modifiée dans le réseau par les opérateurs en fonction du respect ou non des contrats.
- Explicit Forwarding : Ce comportement est comparable à un circuit à débit constant établi dans le réseau. Le trafic est mis en forme à l’entrée du réseau, en retardant l’émission des paquets qui sont hors contrat.

Identificateur de flux
Ce champ contient un numéro unique choisi par la source, qui a pour but de faciliter le travail des routeurs et la mise en oeuvre des fonctions de qualité de service

Longueur des données utiles
Contrairement à IPv4, ce champ, 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 à 65 535 ce champ vaut 0 et l’option jumbogramme de l’extension de "proche-en-proche" est utilisée. Cette option est utilisée quand le champ longueur des données du paquet IPv6 n’est pas suffisant pour coder la taille du paquet. Cette option est essentiellement prévue pour la transmission à grand débit entre deux équipements. Si l’option jumbogramme est utilisée, le champ longueur des données utiles dans l’en-tête IPv6 vaut 0. Noter que le type commence par la séquence binaire 11, ce qui permet au routeur ne traitant pas les jumbogrammes d’en informer la source.

En-tête suivant
Ce champ a une fonction similaire au champ protocole du paquet IPv4. Il identifie le prochain en-tête. Il peut s’agir d’un protocole (de niveau supérieur ICMP, UDP, TCP...) ou de la désignation d’extensions (0 : Proche en proche, 43 : routage, 44 : Fragmentation,...).

Nombre de sauts
Il est décrémenté à chaque noeud traversé. Un datagramme retransmis par un routeur est rejeté avec l’émission d’un message d’erreur ICMPv6 vers la source si la valeur après décrémentation atteint 0.

2.1 Les extensions
Les extensions d’IPv6 peuvent être vues comme un prolongement de l’encapsulation d’IP dans IP. À part l’extension de proche-en-proche traitée par tous les routeurs intermédiaires, les autres extensions ne sont prises en compte que par les équipements destinataires du paquet.
Une extension a une longueur multiple de 8 octets. Elle commence par un champ en-tête suivant d’un octet qui définit le type de données qui suit l’extension : une autre extension ou un protocole de niveau 4. Pour les extensions à longueur variable, l’octet suivant contient la longueur de l’extension en mots de 8 octets, le premier n’étant pas compté (une extension de 16 octets a un champ longueur de 1).
L’extention de proche en proche est décomposé en quatres option :
- Pad1 (type 0). Cette option est utilisée pour introduire un octet de bourrage.
- Padn (type 1). Cette option est utilisé plus de 2 octets de bourrage.
- Jumbogramme. Cette option est utilisée quand le champ longueur des données du paquet IPv6 n’est pas suffisant pour coder la taille du paquet. Cette option est essentiellement prévue pour la transmission à grand débit entre deux équipements.
- L’option Router Alert demande à un routeur d’examiner le contenu des données qu’il relaie (Router Alert existe également en IPv4). En principe, le processus de relayage (recopier le paquet sur une interface de sortie en fonction de l’adresse destination et des tables de routage) doit être le plus rapide possible. Mais pour des protocoles comme la gestion des groupes de multicast avec MLD (Multicast Listener Discovery) ou la signalisation des flux avec RSVP, tous les routeurs intermédiaires doivent tenir compte des données.
L’extention Destination, dont le format est identique à l’extension de proche-en-proche, contient des options qui sont traitées par l’équipement destinataire. Pour l’instant, la seule utilité concerne le tunnelage dans des paquets IPv6. Cette option permet de limiter le niveau d’encapsulation dans des tunnels des paquets Ipv6.

L’extention Routage permet d’imposer à un paquet une route différente de celle offerte par les politiques de routage présentes sur le réseau.

L’extention Fragmentation permet de découper l’information à transmettre en fragment.En IPV6, la fragmentation se fait chez l ’emmetteur, et le réassemblage chez le recépteur.

L’extention de sécurité par autentification AH (Authentification Header) et confidentialité ESP (Encapsulating Security Payload) permettent de protéger les communications passés sur les réseaux Ipv6 en assurant les services de confidentialité, authentification et d’ intégrité.

2.2 Checksum au niveau transport
Parmi les différences existant entre les datagrammes IPv4 et IPv6, il y a la disparition du checksum dans les en-têtes IP

3 ICMPv6

Le protocole de contrôle d’IP a été revu. Dans IPv4, ICMP (Internet Message Control Protocol) sert à la détection d’erreurs, au test, à la configuration automatique des équipements. Ces trois fonctions ont été mieux définies dans IPv6. De plus ICMPv6 intègre les fonctions de gestion des groupes de multicast (MLD : Multicast Listener Discovery) qui sont effectuées par le protocole IGMP (Internet Group Message Protocol) dans IPv4. ICMPv6 reprend aussi les fonctions du protocole ARP utilisé par IPv4.

Format générique d’un message ICMP
Le protocole se voit attribuer le numéro 58.
- Le champ type code la nature du message ICMPv6. Les valeurs inférieures à 127 sont réservées aux messages d’erreur. Les autres valeurs réservées aux messages d’information.
- Le champ code précise la cause du message ICMPv6.
- Le champ checksum permet de vérifier l’intégrité du paquet ICMP.
Les messages ICMPv6 de compte rendu d’erreur contiennent dans la partie données le paquet IPv6 ayant provoqué l’erreur. Pour éviter des problèmes de fragmentation la longueur du message ICMPv6 est limitée à 1 280 octets et par conséquent le contenu du paquet IPv6 peut être tronqué.

Conclusion :

IPV6 n’est qu’a ses débuts, peu d’équipements utilisent actuellement ce protocole.Vue l’évolution d’internet aujourd’hui, il sera nécessaire d’y venir, même si IPV4 à encore de beau et long jour devant lui. Une cohabitation entre IPV4 et IPV6 sera nécéssaire le temps de la migration.

livre.point6.net
fr.wikipedia.org
rfc-editor.org
commentcamarche.net
abcdrfc.free.fr
iana.org
eberre.fbone.net