Entête IPv6

Entête IPv6

1 – Définition du protocole IPv6

Pourquoi le protocole IPv6, en fait, 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.

2 – Structure de l’entête IPv6

Voici la structure de l’entête IPv6 basé sur 40 octets.

entete-ipv6 entete ipv6 partie 1

entete-ipv6 entete ipv6 partie 2

3 – Définition des différents champs

L’entête IPv4 qui était de 20 octets 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.

3.1 – Version (Version)

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é

3.2 – Classe (Traffic Class)

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.

3.3 – Label (Flow Label)

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 ».

3.4 – Longueur (Payload Length)

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 elle même. 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 ».

3.5 – 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 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 – 00000001 – ICMP
  • 02 – 00000010 – IGMP
  • 06 – 00000110 – TCP
  • 17 – 00010001 – UDP
  • 58 – 00111010 – ICMPV6

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

3.6 – Saut maximum (Hop Limit)

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.

3.7 – Adresse source (Source Address)

Le champ « Adresse source » est codé sur 128 bits. Il représente l’adresse IP de l’émetteur.

3.8 – Adresse destination (Destination Address)

Le champ « Adresse destination » est codé sur 128 bits. Il représente l’adresse IP du destinataire.

4 – Structure des options de l’entête

4.1 – Sauts après sauts (Hop-by-Hop)

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

entete-ipv6 entete ipv6 option sauts

4.2 – Routage (Routing)

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

entete-ipv6 entete ipv6 option routage

4.3 – Fragmentation (Fragment)

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

entete-ipv6 entete ipv6 option fragmentation

4.4 – Destination (Destination)

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

entete-ipv6 entete ipv6 option destination

4.5 – AH (Authentication)

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

entete-ipv6 entete ipv6 option authentification

4.6 – ESP (Encapsulating Security Payload)

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

entete-ipv6 entete ipv6 option encapsulation charge utile securisee

5 – Définition des différentes champs des Options

Lors de l’utilisation de plusieurs extensions, il est recommandé d’utiliser l’ordre suivant :

  • Entête IPv6

  • Option Sauts après sauts

  • Option Destination

  • Option Routage

  • Option Fragmentation

  • Option AH

  • Option ESP

  • Option Destination

  • Entête de couche supérieure

5.1 – Sauts après sauts (Hop-by-Hop)

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.

5.2 – Routage (Routing)

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.

5.3 – Fragmentation (Fragment)

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.

5.4 – Destination (Destination)

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.

5.5 – AH (Authentication)

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.

5.6 – ESP (Encapsulating Security Payload)

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.

6 – Suivi du document

Création et suivi de la documentation par _SebF

7 – Discussion autour de l’entête IPv6

Vous pouvez poser toutes vos questions, faire part de vos remarques et partager vos expériences à propos de l’entête IPv6. Pour cela, n’hésitez pas à laisser un commentaire ci-dessous :

Commentaire et discussion

Laisser un commentaire

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