4.2 Options
Les deux en-têtes d'extension actuellement définis — le Hop-by-Hop Options header et le Destination Options header — transportent un nombre variable d'« options (options) » encodées en type-length-value (TLV, type-longueur-valeur), au format suivant :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
| Option Type | Opt Data Len | Option Data
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
Option Type (type d'option) — Identifiant de type d'option sur 8 bits.
Opt Data Len (longueur des données d'option) — Entier non signé sur 8 bits. Longueur du champ Option Data de cette option, en octets.
Option Data (données d'option) — Champ de longueur variable. Données spécifiques au type d'option.
La séquence d'options dans un en-tête DOIT être traitée strictement dans l'ordre où elles apparaissent dans l'en-tête ; par exemple, un récepteur NE DOIT PAS parcourir l'en-tête à la recherche d'un type particulier d'option et traiter cette option avant d'avoir traité toutes les options précédentes.
L'encodage interne des identifiants Option Type est tel que leurs deux bits de poids fort spécifient l'action qui DOIT être entreprise si le nœud IPv6 traitant ne reconnaît pas le Option Type :
00 - Ignorer cette option et continuer le traitement de l'en-tête.
01 - Rejeter le paquet.
10 - Rejeter le paquet et, que l'adresse Destination Address du paquet
soit ou non une adresse multicast, envoyer un message ICMP
Parameter Problem, Code 2, à l'adresse Source Address du paquet,
pointant vers le Option Type non reconnu.
11 - Rejeter le paquet et, uniquement si l'adresse Destination Address
du paquet n'est pas une adresse multicast, envoyer un message ICMP
Parameter Problem, Code 2, à l'adresse Source Address du paquet,
pointant vers le Option Type non reconnu.
Le troisième bit de poids fort du Option Type indique si les données Option Data de l'option peuvent changer en transit jusqu'à la destination finale du paquet. Lorsqu'un Authentication header est présent dans le paquet, pour toute option dont les données peuvent changer en transit, son champ Option Data entier DOIT être traité comme des octets de valeur zéro lors du calcul ou de la vérification de la valeur d'authentification du paquet.
0 - Option Data ne change pas en transit
1 - Option Data peut changer en transit
Ces trois bits de poids fort DOIVENT être traités comme faisant partie du Option Type, et non indépendamment de lui. C'est-à-dire qu'une option particulière est identifiée par le Option Type complet sur 8 bits, et non uniquement par les 5 bits de poids faible du Option Type.
Le Hop-by-Hop Options header et le Destination Options header utilisent le même espace de numérotation des Option Type. Cependant, la spécification d'une option particulière peut restreindre son utilisation à l'un seulement de ces deux en-têtes.
Les options individuelles peuvent avoir des exigences d'alignement spécifiques, pour s'assurer que les valeurs multi-octets dans les champs Option Data tombent sur des frontières naturelles. L'exigence d'alignement d'une option est spécifiée à l'aide de la notation xn+y, signifiant que le Option Type DOIT apparaître à un multiple entier de x octets plus y octets depuis le début de l'en-tête. Par exemple :
2n signifie tout décalage de 2 octets depuis le début de l'en-tête.
8n+2 signifie tout décalage de 8 octets depuis le début de l'en-tête, plus 2 octets.
Il existe deux options de rembourrage (padding), utilisées lorsque des options suivantes doivent être alignées et pour rembourrer l'en-tête contenant à un multiple de 8 octets de longueur. Toutes les implémentations IPv6 DOIVENT reconnaître ces options de rembourrage :
Option Pad1 (alignement requis : aucun)
+-+-+-+-+-+-+-+-+
| 0 |
+-+-+-+-+-+-+-+-+
Note ! Le format de l'option Pad1 est un cas particulier — elle n'a pas de champ longueur ni de champ valeur.
L'option Pad1 est utilisée pour insérer un octet de rembourrage dans la zone Options d'un en-tête. Si plus d'un octet de rembourrage est nécessaire, l'option PadN décrite ci-dessous DEVRAIT être utilisée plutôt que plusieurs options Pad1.
Option PadN (alignement requis : aucun)
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
| 1 | Opt Data Len | Option Data
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
L'option PadN est utilisée pour insérer deux octets ou plus de rembourrage dans la zone Options d'un en-tête. Pour N octets de rembourrage, le champ Opt Data Len contient la valeur N-2, et le champ Option Data est composé de N-2 octets de valeur zéro.
L'annexe B contient des directives de formatage pour la conception de nouvelles options.