MOOC:Verb21
From Livre IPv6
Script 21: En-tête IPv6
Jean-Pierre Rioual, ingénieur conseil réseaux, EUREKOM.
-Dans cette deuxième séquence du MOOC "IPv6", nous aborderons les différents aspects du protocole IPv6.
Dans cette première activité, nous allons passer en revue le format de l'en-tête des paquets IPv6.
Version
Commençons par les premiers champs.
Chaque ligne représentée sur ce schéma représente 32 bits de codage.
Le premier champ de l'en-tête IPv6, codé sur 4 bits, représente la version du protocole : 6 pour IPv6.
Evident. Facile à retenir.
Le deuxième champ, codé sur 8 bits, représente la classe de trafic et sert à contrôler la qualité de service. Ce champ est décomposé en deux blocs.
Le premier, codé sur 6 bits, le DSCP, "Differentiated Services Code Point".
Puis sur 2 bits nous trouvons l'ECN, "Explicit Congestion Notification".
"Flow Label"
Vient ensuite le codage des 20 bits du champ "Flow Label".
Ce champ est conçu pour accélérer le traitement de la QoS.
En effet, le traitement de la qualité de service nécessite la reconnaissance de plusieurs champs disséminés dans les en-têtes IP et transport, comme adresse source et destination, protocole de transport, numéro de port, origine, destination.
Pour une suite de paquets, la source choisira une valeur aléatoire de Flow Label afin de faciliter et de soulager le traitement des routeurs intermédiaires.
Pour la gestion de ce flux identifié, le traitement est optimisé, le routeur n'ayant plus à consulter cinq champs pour déterminer l'appartenance d'un paquet.
"Payload Length"
Passons à la deuxième ligne.
Voici le codage sur 16 bits du champ "Payload Length".
Ce champ indique la longueur de la charge utile du paquet, jusqu'à 65 535 octets.
En IPv6, on ne prend pas en compte la longueur de l'en-tête.
Pour des tailles de paquets supérieures à 64 ko, le codage du champ sera mis à zéro.
Et l'option jumbogramme de l'extension de proche en proche pourra être utilisée.
Dans ce cas, la taille de la charge utile peut être portée à 4 Go.
À condition, évidemment, de disposer au niveau inférieur de tailles de trame adaptées.
"Next Header"
Vient ensuite le codage des 8 bits du champ "Next Header".
Ce champ identifie le prochain en-tête de protocole porté par ce paquet.
Classiquement, on retrouve les flux ICMPv6 ou les flux utilisant des couches transport TCP, UDP, d'autres cas particuliers de tunnels IPv4 ou IPv6, voire des en-têtes sécurisés et des mécanismes d'extension que l'on détaillera plus tard.
"Hop Limit"
Voici le codage sur 8 bits du champ "Hop Limit".
Certaines implémentations prennent actuellement la valeur conseillée pour IPv6 : 64. La valeur par défaut peut être dynamiquement attribuée aux équipements par les annonces des routeurs.
On peut donc la modifier en fonction de l'évolution de la topologie du réseau.
Comme il s'agit d'un nombre de sauts, lors de la traversée d'un routeur, la décrémentation est toujours de 1.
Dans cette animation, nous voyons que les paquets issus de A disposent d'une valeur Hop Limit de 64 au départ.
Cette valeur est décrémentée lors de la traversée de chaque routeur intermédiaire.
Si un paquet atteint un routeur avec une valeur Hop Limit à 1, ce routeur le détruit.
Et il va renvoyer à la source un message ICMPv6 de type 3, "Time Exceeded", ce qui permet d'identifier un problème de routage pour cette destination.
"IP Address"
Enfin, voici les champs "adresse" sur 128 bits.
16 octets pour l'adresse IP source, 16 octets pour l'adresse IP destination.
Moralité : les champs "adresse" occupent 32 octets sur les 40 octets minimums nécessaires à un en-tête IPv6.
D'autres mécanismes, comme les extensions, viendront éventuellement gonfler l'encapsulation. On en reparlera.
"Décodage"
Enfin, voyons le décodage détaillé d'un premier paquet IPv6 par le fameux outil Wireshark.
L'affichage est décomposé en trois zones résumées, détaillées, et en codage hexadécimal ASCII.
Nous voyons ici que l'analyseur a bien détecté une trame Ethernet transportant le protocole IPv6 grâce au champ "EtherType" 0x86DD.
Voyons le codage détaillé des champs.
Version : 6.
IPv6.
Traffic Class : 00.
Donc, c'est un paquet qui ne bénéficiera pas d'un traitement de QoS.
C'est la classe "Best effort".
ECN-Capable Transport : 00.
Donc, pas d'aide à la résolution de congestion.
Flow Label : 00.
Donc, pas de prise en charge d'aide à la QoS.
Taille de la charge utile : 8 octets.
Next Header : en-tête ESP.
Hop Limit : 63.
Donc, ce paquet a probablement déjà traversé un routeur.
Vient ensuite l'adresse source sur 16 octets.
Adresse destination, sur 16 octets.
Au niveau supérieur, nous voyons le décodage de l'en-tête ESP.
"Conclusion"
Nous venons donc de parcourir le décodage détaillé du protocole IPv6.
Observons que dans ce standard, les efforts ont porté sur la nécessité d'optimiser le traitement des paquets lors de la traversée des réseaux et du transport.
Les traitements particuliers optionnels seront traités grâce à des extensions.
Contrairement à IPv4, il n'y a pas de calcul de CRC au niveau 3.