Entête IPv6
Par Sébastien FONTAINE (_SebF)
1 - Définition du
protocole
2 - Structure de l'entête
3 - Définition des différents champs
3.1 -
Version (Version)
3.2 -
Classe (Traffic Class)
3.3 -
Label (Flow Label)
3.4 -
Longueur (Payload Length)
3.5 -
Entête suivante (Next Header)
3.6 -
Saut maximum (Hop Limit)
3.7 -
Adresse source (Source Address)
3.8 -
Adresse destination
(Destination Address)
4 - Structure des options de
l'entête
4.1 -
Sauts après sauts (Hop-by-Hop)
4.2 - Routage
(Routing)
4.3 -
Fragmentation (Fragment)
4.4 -
Destination (Destination)
4.5 - AH
(Authentication)
4.6 - ESP
(Encapsulating Security Payload)
5 - Définition des
différentes champs des Options
5.1 -
Sauts après sauts (Hop-by-Hop)
5.2 -
Routage (Routing)
5.3 -
Fragmentation (Fragment)
5.4 -
Destination (Destination)
5.5 -
AH (Authentication)
5.6 -
ESP (Encapsulating Security
Payload)
6 - Discussion autour de la
documentation
7 - Suivi du document
Lorsque le protocole Internet IPv4 a été
lancé, Internet était minuscule est relativement privé.
Il semblait inimaginable d'atteindre les près de 4.300.000 adresses disponibles.
Aujourd'hui, Internet est victime de son succès et l'espace d'adressage d'IPv4
est incapable de répondre à la forte demande d'adresse à travers le monde. En
effet, personne n'imaginait à l'époque d'utiliser un jour une adresse IP pour
téléphoner, jouer, naviguer sur Internet avec un téléphone portable ou bien un
assistant personnel. On compte aujourd'hui plus d'objets intelligents connectés
que d'être humain sur Terre.
C'est à cette pénurie d'adresses que
doivent faire face aujourd'hui les RIR. Bien sûr des
solutions ont été développé, ce qui à considérablement ralentit le déploiement
industrielle d'IPv6. Voici la liste de ces solutions :
-
DHCP, Dynamic Host Configuration
Protocol, permet d'allouer dynamiquement les adresses seulement quand les
machines sont connectées.
-
HTTP 1.1, permettant,
principalement, d'héberger plusieurs site web avec une seule adresse IP.
-
NAT, Network Address Translation,
permet de réduire le nombre d'adresses publiques utilisées en proposant de
réaliser grâce à une fonction de routeur, la translation des adresses
privées d'un site.
Cet emploi généralisé des NAT a conduit
à une complexification de la gestion des réseaux et à un alourdissement des
mécanismes de routage. Cela nuit également au développement d'application
Peer to Peer temps réel comme la VoIP. De plus, associé à la sécurité et à la
mobilité, ces services sont des raisons supplémentaires au besoin d'IPv6.
IPv6 est définit par la
RFC 2460.
Voici la structure de l'entête IP basé
sur 40 octets.


L'entête qui était de 20 octets en IPv4
passe à 40 octets en IPv6. Certains champs d'IPv4 ont été supprimés, ou sont
maintenant optionnels, ceci afin de réduire le coût de traitement des paquets et
de bande passante des entêtes IPv6.
Le champ "Version" est codé sur 4 bits. Il représente le numéro de version du Protocole
Internet. Sa valeur est donc égale à 6 (0110 base 2). Ce champ est identique à
la pile IPV4, il sert justement à identifier le protocole de couche 3 du modèle OSI. Voici la liste des différent codes :
- 00 - Réservé
- 01 - Non assigné
- 02 - Non assigné
- 03 - Non assigné
- 04 - IP V4
- 05 - ST Datagram Mode
- 06 - IP V6
- 07 - Non assigné
- 08 - Non assigné
- 09 - Non assigné
- 10 - Non assigné
- 11 - Non assigné
- 12 - Non assigné
- 13 - Non assigné
- 14 - Non assigné
- 15 - Réservé
Le champ "Classe" est codé sur 8 bits. Il définit la
priorité du datagramme afin que des noeuds origines et des routeurs transmetteurs
puissent identifier et distinguer la classe ou la priorité du paquets IPv6 en
question.
Le champ "Label" est codé sur 20 bits.
Il peut être utilisé par une source pour nommer des séquences de paquets pour
lesquels un traitement spécial de la part des routeurs IPv6 est demandé. Ce
traitement spécial pourrait être une qualité de service différente du service
par défaut ou un service "temps réel".
Le champ "Longueur" est codé sur 16
bits. Le champ "Longueur" de l'entête IPV4 indiquait la longueur des données
incluant l'entête IPV4. Contrairement à cela, cette fois le champ "Longueur" de
l'entête IPv6 indique le nombre d'octet des données qui suivent cette entête
IPv6. Il faut noté que les options de l'entête IPv6 sont considérés comme de la
donnée et font donc partie du calcul du champ "Longueur".
Le champ "Entête suivante" est codé sur
8 bits. Il identifie le type de la Data ou de l'option qui se trouve derrière l'entête IPv6. Les
valeurs employées sont identiques au champ "Protocole" de l'entête IPV4. Vous
trouverez tous les détails des types de protocole dans la
RFC 1700 qui remplace désormais la
RFC 1340.
Voici la liste des protocoles les plus
connu :
- 01 - 00001 - ICMP
- 02 - 00010 - IGMP
- 06 - 00110 - TCP
- 17 - 10001 - UDP
Voici la liste des options de l'entête
IPv6 vues plus bas :
- 00 - Option Sauts après sauts
- 60 - Option Destination
- 43 - Option Routage
- 44 - Option Fragmentation
- 51 - Option AH
- 50 - Option ESP
Le champ "Saut maximum" est codé sur 8 bits. Il indique le nombre de routeur
maximum que le datagramme pourra traverser. Identiquement au champ "TTL" de
l'entête IPV4, il est décrémenté de 1 par chaque noeud que le paquet traverse.
Le champ "Adresse source" est codé sur
128 bits. Il représente l'adresse IP de l'émetteur.
Le champ "Adresse destination" est codé
sur 128 bits. Il représente l'adresse IP du destinataire.
Voici la structure de cette option basée
sur N octets.

4.2 - Routage (Routing)
Voici la structure de cette option basée
sur N octets.

Voici la structure de cette option basée
sur 8 octets.

Voici la structure de cette option basée
sur N octets.

4.5 - AH (Authentication)
Voici la structure de cette option basée
sur N octets.

4.6 - ESP (Encapsulating Security Payload)
Voici la structure de cette option basée
sur N octets.

Lors de l'utilisation de plusieurs
extensions, il est recommandé d'utiliser l'ordre suivant :
L'option "Sauts après sauts" est
utilisée pour transporter des informations optionnelles qui doivent être
examinées par chaque noeud le long du chemin emprunté par le paquet. Cette Option
est codé 0 et est définie par la
RFC 2460.
5.1.1 - Entête suivante (Next Header)
Le champ "Entête suivante" est codé sur
8 bits. Il identifie le type de la Data ou de l'option qui se trouve derrière
cette option de l'entête IPv6. tous les détails sont dans la définition du champ
"Entête suivante" de l'entête IPv6 en paragraphe 3.5.
5.1.2 - Longueur (Hdr Ext Len)
Le champ "Longueur" est codé sur 8 bits.
Il représente la taille de cette Option "Sauts après sauts". L'unité
de mesure est les mots de 8 octets sans compter les 8 premiers octets.
5.1.3 - Options (Options)
Le champ "Options" est codé sur N bits.
Il contient le contenu de l'option à spécifier.
L'option de "Routage" est utilisée par
une source IPv6 pour lister au moins un noeud intermédiaire à aller voir sur le
chemin emprunté par le paquet vers la destination. Cette fonction est très
similaire aux options de "Loose Source" ou "Record Route" de l'entête IPV4.
Cette Option est codé 43 et est définie par la
RFC 2460.
5.2.1 - Entête suivante (Next Header)
Le champ "Entête suivante" est codé sur
8 bits. Il identifie le type de la Data ou de l'option qui se trouve derrière
cette option de l'entête IPv6. tous les détails sont dans la définition du champ
"Entête suivante" de l'entête IPv6 en paragraphe 3.5.
5.2.2 - Longueur (Hdr Ext Len)
Le champ "Longueur" est codé sur 8 bits.
Il représente la taille de cette Option "Routage". L'unité de mesure
est les mots de 8 octets sans compter les 8 premiers octets.
5.2.3 - Type (Routing Type)
Le champ "Type" est codé sur 8
bits. Il identifie la variante particulière de l'entête de routage.
5.2.4 - Segment (Segments Left)
Le champ "segment" est codé sur 8 bits.
Il indique le nombre de segments de chemin restant. C'est à dire le nombre de
noeuds intermédiaires listés explicitement qu'il reste à traverser avant
d'atteindre la destination finale.
5.1.5 - Données (type-specific
data)
Le champ "Données" est codé sur N bits.
Il contient le contenu de l'option à spécifier.
L'option de "Fragmentation" est utilisée
par une source IPv6 pour envoyer un paquet plus large que celui qui tiendrait
dans le MTU vers la destination. Attention, contrairement à l'entête IPV4, la
fragmentation dans IPv6 n'est réalisée que par les noeuds sources et non par les
routeurs le long d'un chemin emprunté par le paquet. Cette Option est codé 44 et est définie par la
RFC 2460.
5.2.1 - Entête suivante (Next Header)
Le champ "Entête suivante" est codé sur
8 bits. Il identifie le type de la Data ou de l'option qui se trouve derrière
cette option de l'entête IPv6. tous les détails sont dans la définition du champ
"Entête suivante" de l'entête IPv6 en paragraphe 3.5.
5.2.2 - Réservé (Reserved)
Le champ "Réservé" est codé sur 8 bits.
Il est prévu pour des besoins futurs, en attendant, sa valeurs doit être
positionnée à 0 pour l'émission et il doit être ignoré pour la réception.
5.2.3 - Offset (Fragment Offset)
Le champ "Offset" est codé sur 13
bits. Il indique l'offset des données suivant cette entête, en nombre de mots de
8 octets, par rapport au début de la partie fragmentable du paquet original.
5.2.4 - Réservé (Res)
Le champ "Réservé" est codé sur 2 bits.
Il est prévu pour des besoins futurs, en attendant, sa valeurs doit être
positionnée à 0 pour l'émission et il doit être ignoré pour la réception.
5.2.5 - M (M)
Le champ "M" est codé sur 1 bit. Il
peux prendre deux valeurs. 0 pour indiquer que c'est le dernier fragment et 1
pour signifier que ce n'est pas terminé.
5.1.6 - Identification (Identification)
Le champ "Identification" est codé sur
32 bits. Pour chaque paquet devant être fragmenté, le noeud source génère une
valeur d'Identification. L'Identification doit être différente de tout autre
identification de paquet fragmenté envoyé récemment avec les mêmes Adresse
Source et Adresse Destination. Si un entête de routage est présent, l'Adresse
Destination concernée est celle de la destination finale.
L'option de "Destination" est utilisée
pour transporter des informations optionnelles qui ont besoin d'être examinées
uniquement par les noeuds destination du paquet. Cette Option est codé 60 et est définie par la
RFC 2460.
5.4.1 - Entête suivante (Next Header)
Le champ "Entête suivante" est codé sur
8 bits. Il identifie le type de la Data ou de l'option qui se trouve derrière
cette option de l'entête IPv6. tous les détails sont dans la définition du champ
"Entête suivante" de l'entête IPv6 en paragraphe 3.5.
5.4.2 - Longueur (Hdr Ext Len)
Le champ "Longueur" est codé sur 8 bits.
Il représente la taille de cette Option "Destination". L'unité de
mesure est les mots de 8 octets sans compter les 8 premiers octets.
5.4.3 - Options (Options)
Le champ "Options" est codé sur N bits.
Il contient le contenu de l'option à spécifier.
L'option "AH" est utilisée pour fournir
un mécanisme permettant au destinataire de s'assurer de l'identité de la source
et de l'intégrité des données. Cela fournit surtout une bonne protection contre
les rejeux et les spoofing IP. Cette Option est codé 51 et est définie par la
RFC 4302.
5.5.1 - Entête suivante (Next Header)
Le champ "Entête suivante" est codé sur
8 bits. Il identifie le type de la Data ou de l'option qui se trouve derrière
cette option de l'entête IPv6. tous les détails sont dans la définition du champ
"Entête suivante" de l'entête IPv6 en paragraphe 3.5.
5.5.2 - Longueur (Payload Len)
Le champ "Longueur" est codé sur 8 bits.
Il représente la taille de cette Option "AH". L'unité de mesure est
les mots de 4 octets avec une valeur minimale de 2.
5.5.3 - Réservé (Reserved)
Le champ "Réservé" est codé sur
16 bits.
Il est prévu pour des besoins futurs, en attendant, sa valeurs doit être
positionnée à 0 pour l'émission et il doit être ignoré pour la réception.
5.5.4 - SPI (Security Parameters Index)
Le champ "SPI" est codé sur 32 bits.
Il permet au destinataire d'identifier l'association de sécurité (SA) avec le
datagramme entrant.
5.5.5 - Séquence (Sequence Number Field)
Le champ "Séquence" est codé sur
32 bits.
Il contient le numéro de séquence du SA. Il est incrémenté à chaque datagramme.
5.5.6 - ICV (Integrity Check Value-ICV)
Le champ "ICV" est codé sur N bits.
Il contient la valeur du résultat d'un procédé cryptographique sur les données.
Cela permet de protéger et vérifier l'intégrité de celles-ci.
L'option "ESP" est utilisée
après l'entête IP et avant les données (l'entête de couche supérieur). Elle
complète l'option 'AH" afin d'offrir la confidentialité des données. Elle permet
en plus de chiffrer l'ensemble des paquets incluant ou pas l'entête IPv6. Cette
Option est codé 50 et est définie par la
RFC 4303.
5.6.1 - SPI (Security Parameters Index)
Le champ "SPI" est codé sur 32 bits.
Il permet au destinataire d'identifier l'association de sécurité (SA) avec le
datagramme entrant.
5.6.2 - Séquence (Sequence Number)
Le champ "Séquence" est codé sur
32 bits.
Il contient le numéro de séquence du SA. Il est incrémenté à chaque datagramme.
5.6.3 - Données utiles (Payload Data)
Le champ "Données utiles" est codé sur N bits.
Il contient les données chiffrées.
5.6.4 - Remplissage (Padding)
Le champ "Remplissage" est codé
sur N bits.
Il permet de combler l'entête de données non intéressante afin d'obtenir une taille
de multiple. La longueur maximum possible est 255
octets.
5.6.5 - Longueur (Pad Length)
Le champ "Longueur" est codé sur 8 bits.
Il représente la taille du champ "Remplissage".
5.6.6 - Entête suivante (Next Header)
Le champ "Entête suivante" est codé sur
8 bits. Il identifie le type de la Data ou de l'option qui se trouve derrière
cette option de l'entête IPv6. tous les détails sont dans la définition du champ
"Entête suivante" de l'entête IPv6 en paragraphe 3.5.
5.6.7 - ICV (Integrity Check Value)
Le champ "ICV" est codé sur N bits.
Il contient le Hash de l'entête ESP.
Vous pouvez poser toutes vos questions,
vos remarques et vos expériences à propos d'IPv6. Pour cela,
rendez-vous sur le TCPIP.
Le 10 Avril 2007, par Sébastien FONTAINE, création du document.
|