Aller au contenu principal

4.2. Compression des en-têtes d'extension IPv6

Une propriété nécessaire du codage des en-têtes utilisant LOWPAN_NHC est que l'en-tête précédant immédiatement doit être codé à l'aide de LOWPAN_IPHC ou LOWPAN_NHC. En d'autres termes, tous les en-têtes codés à l'aide du format de codage 6LoWPAN défini dans ce document doivent être contigus. En conséquence, ce document définit un ensemble de codages LOWPAN_NHC pour des en-têtes d'extension IPv6 sélectionnés de telle sorte que la compression d'en-tête UDP définie dans la Section 4.3 puisse être utilisée en présence de ces en-têtes d'extension.

Les codages LOWPAN_NHC pour les en-têtes d'extension IPv6 sont composés d'un seul octet LOWPAN_NHC suivi de l'en-tête d'extension IPv6. Le format de l'octet LOWPAN_NHC est indiqué à la Figure 13. Les 7 premiers bits servent d'identifiant pour l'en-tête d'extension IPv6 suivant immédiatement l'octet LOWPAN_NHC. Le bit restant indique si l'en-tête suivant utilise ou non le codage LOWPAN_NHC.

                    0   1   2   3   4   5   6   7
+---+---+---+---+---+---+---+---+
| 1 | 1 | 1 | 0 | EID |NH |
+---+---+---+---+---+---+---+---+

Figure 13 : Codage d'en-tête d'extension IPv6

EID : IPv6 Extension Header ID (ID d'en-tête d'extension IPv6) :

  • 0: En-tête d'options saut par saut IPv6 [RFC2460]
  • 1: En-tête de routage IPv6 [RFC2460]
  • 2: En-tête de fragment IPv6 [RFC2460]
  • 3: En-tête d'options de destination IPv6 [RFC2460]
  • 4: En-tête de mobilité IPv6 [RFC6275]
  • 5: Réservé
  • 6: Réservé
  • 7: En-tête IPv6

NH : Next Header (En-tête suivant) :

  • 0: Les 8 bits complets pour l'en-tête suivant sont transportés en ligne.
  • 1: Le champ En-tête suivant est éludé et l'en-tête suivant est codé à l'aide de LOWPAN_NHC, qui est discuté dans la Section 4.1.

Pour la plupart, l'en-tête d'extension IPv6 est transporté sans modification dans les octets suivant immédiatement l'octet LOWPAN_NHC, avec deux exceptions importantes : le champ Longueur (Length) et le champ En-tête suivant (Next Header).

Le champ En-tête suivant contenu dans les en-têtes d'extension IPv6 est éludé lorsque le bit NH est défini dans l'octet de codage LOWPAN_NHC. Notez que cela permet à LOWPAN_NHC de n'utiliser pas plus de surcharge que l'en-tête d'extension IPv6 non codé.

Le champ Longueur contenu dans un en-tête d'extension IPv6 compressé indique le nombre d'octets qui concernent l'en-tête d'extension (compressé) suivant le champ Longueur. Notez que cela modifie la définition du champ Longueur dans la [RFC2460] qui indique la taille de l'en-tête en unités de 8 octets, sans inclure les 8 premiers octets. Changer le champ Longueur pour qu'il soit en unités d'octets supprime la fragmentation interne inutile.

Les en-têtes d'options saut par saut et de destination IPv6 peuvent utiliser un Pad1 ou PadN final pour obtenir un alignement de 8 octets. Lorsqu'il y a une seule option Pad1 ou PadN finale de 7 octets ou moins et que l'en-tête contenant est un multiple de 8 octets, l'option Pad1 ou PadN finale PEUT (MAY) être éludée par le compresseur. Un décompresseur DOIT (MUST) s'assurer que l'en-tête contenant est rempli jusqu'à un multiple de 8 octets de longueur, en utilisant une option Pad1 ou PadN si nécessaire. Notez que les options Pad1 et PadN qui apparaissent à des endroits autres que la fin DOIVENT (MUST) être transportées en ligne car elles sont utilisées pour aligner les options suivantes.

Notez que la spécification des unités en octets signifie que LOWPAN_NHC NE DOIT PAS (MUST NOT) être utilisé pour coder des en-têtes d'extension IPv6 qui ont plus de 255 octets suivant le champ Longueur après compression.

Lorsque l'en-tête suivant identifié est un en-tête IPv6 (EID=7), le bit NH du codage LOWPAN_NHC est inutilisé et DOIT (MUST) être mis à zéro. Les octets suivants DOIVENT (MUST) être codés à l'aide de LOWPAN_IPHC tel que défini dans la Section 3.