Aller au contenu principal

3.1. Format de codage LOWPAN_IPHC

Cette section spécifie le format du codage LOWPAN_IPHC qui décrit comment un en-tête IPv6 est compressé. Le codage peut être long de 2 octets pour le codage de base ou long de 3 octets lorsqu'un codage de contexte supplémentaire est présent. Les champs d'en-tête IPv6 qui ne sont pas entièrement éludés sont placés immédiatement après le LOWPAN_IPHC, soit sous une forme compressée si le champ est partiellement éludé, soit littéralement.

3.1.1. Format de base

    0                                       1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
| 0 | 1 | 1 | TF |NH | HLIM |CID|SAC| SAM | M |DAC| DAM |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

Figure 2 : Codage de base LOWPAN_IPHC

TF : Traffic Class, Flow Label (Classe de trafic, Étiquette de flux) : Comme spécifié dans la [RFC3168], le champ Classe de trafic IPv6 de 8 bits est divisé en deux champs : Notification explicite de congestion (ECN) de 2 bits et Point de code de services différenciés (DSCP) de 6 bits.

  • 00: ECN + DSCP + 4 bits de remplissage + Étiquette de flux (4 octets)
  • 01: ECN + 2 bits de remplissage + Étiquette de flux (3 octets), DSCP est éludé.
  • 10: ECN + DSCP (1 octet), l'étiquette de flux est éludée.
  • 11: La classe de trafic et l'étiquette de flux sont éludées.

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 compressé et l'en-tête suivant est codé à l'aide de LOWPAN_NHC, qui est discuté dans la Section 4.1.

HLIM : Hop Limit (Limite de saut) :

  • 00: Le champ Limite de saut est transporté en ligne.
  • 01: Le champ Limite de saut est compressé et la limite de saut est 1.
  • 10: Le champ Limite de saut est compressé et la limite de saut est 64.
  • 11: Le champ Limite de saut est compressé et la limite de saut est 255.

CID : Context Identifier Extension (Extension d'identifiant de contexte) :

  • 0: Aucune extension d'identifiant de contexte de 8 bits supplémentaire n'est utilisée. Si la compression basée sur le contexte est spécifiée dans la compression d'adresse source (SAC) ou la compression d'adresse de destination (DAC), le contexte 0 est utilisé.
  • 1: Un champ d'extension d'identifiant de contexte supplémentaire de 8 bits suit immédiatement le champ Mode d'adresse de destination (DAM).

SAC : Source Address Compression (Compression d'adresse source)

  • 0: La compression d'adresse source utilise une compression sans état.
  • 1: La compression d'adresse source utilise une compression avec état, basée sur le contexte.

SAM : Source Address Mode (Mode d'adresse source) :

Si SAC=0 :

  • 00: 128 bits. L'adresse complète est transportée en ligne.
  • 01: 64 bits. Les 64 premiers bits de l'adresse sont éludés. La valeur de ces bits est le préfixe lien-local rempli de zéros. Les 64 bits restants sont transportés en ligne.
  • 10: 16 bits. Les 112 premiers bits de l'adresse sont éludés. La valeur des 64 premiers bits est le préfixe lien-local rempli de zéros. Les 64 bits suivants sont 0000:00ff:fe00:XXXX, où XXXX sont les 16 bits transportés en ligne.
  • 11: 0 bits. L'adresse est entièrement éludée. Les 64 premiers bits de l'adresse sont le préfixe lien-local rempli de zéros. Les 64 bits restants sont calculés à partir de l'en-tête d'encapsulation (par exemple, 802.15.4 ou adresse source IPv6) comme spécifié dans la Section 3.2.2.

Si SAC=1 :

  • 00: L'adresse NON SPÉCIFIÉE (UNSPECIFIED), ::
  • 01: 64 bits. L'adresse est dérivée à l'aide des informations de contexte et des 64 bits transportés en ligne. Les bits couverts par les informations de contexte sont toujours utilisés. Tous les bits IID non couverts par les informations de contexte sont pris directement à partir des bits correspondants transportés en ligne. Tous les bits restants sont à zéro.
  • 10: 16 bits. L'adresse est dérivée à l'aide des informations de contexte et des 16 bits transportés en ligne. Les bits couverts par les informations de contexte sont toujours utilisés. Tous les bits IID non couverts par les informations de contexte sont pris directement à partir de leurs bits correspondants dans le mappage 16 bits vers IID donné par 0000:00ff:fe00:XXXX, où XXXX sont les 16 bits transportés en ligne. Tous les bits restants sont à zéro.
  • 11: 0 bits. L'adresse est entièrement éludée et est dérivée à l'aide des informations de contexte et de l'en-tête d'encapsulation (par exemple, 802.15.4 ou adresse source IPv6). Les bits couverts par les informations de contexte sont toujours utilisés. Tous les bits IID non couverts par les informations de contexte sont calculés à partir de l'en-tête d'encapsulation comme spécifié dans la Section 3.2.2. Tous les bits restants sont à zéro.

M : Multicast Compression (Compression multidiffusion)

  • 0: L'adresse de destination n'est pas une adresse multidiffusion.
  • 1: L'adresse de destination est une adresse multidiffusion.

DAC : Destination Address Compression (Compression d'adresse de destination)

  • 0: La compression d'adresse de destination utilise une compression sans état.
  • 1: La compression d'adresse de destination utilise une compression avec état, basée sur le contexte.

DAM : Destination Address Mode (Mode d'adresse de destination) :

Si M=0 et DAC=0 Ce cas correspond à SAC=0 mais pour l'adresse de destination :

  • 00: 128 bits. L'adresse complète est transportée en ligne.
  • 01: 64 bits. Les 64 premiers bits de l'adresse sont éludés. La valeur de ces bits est le préfixe lien-local rempli de zéros. Les 64 bits restants sont transportés en ligne.
  • 10: 16 bits. Les 112 premiers bits de l'adresse sont éludés. La valeur des 64 premiers bits est le préfixe lien-local rempli de zéros. Les 64 bits suivants sont 0000:00ff:fe00:XXXX, où XXXX sont les 16 bits transportés en ligne.
  • 11: 0 bits. L'adresse est entièrement éludée. Les 64 premiers bits de l'adresse sont le préfixe lien-local rempli de zéros. Les 64 bits restants sont calculés à partir de l'en-tête d'encapsulation (par exemple, 802.15.4 ou adresse de destination IPv6) comme spécifié dans la Section 3.2.2.

Si M=0 et DAC=1 :

  • 00: Réservé.
  • 01: 64 bits. L'adresse est dérivée à l'aide des informations de contexte et des 64 bits transportés en ligne. Les bits couverts par les informations de contexte sont toujours utilisés. Tous les bits IID non couverts par les informations de contexte sont toujours utilisés. Tous les bits IID non couverts par les informations de contexte sont pris directement à partir des bits correspondants transportés en ligne. Tous les bits restants sont à zéro.
  • 10: 16 bits. L'adresse est dérivée à l'aide des informations de contexte et des 16 bits transportés en ligne. Les bits couverts par les informations de contexte sont toujours utilisés. Tous les bits IID non couverts par les informations de contexte sont pris directement à partir de leurs bits correspondants dans le mappage 16 bits vers IID donné par 0000:00ff:fe00:XXXX, où XXXX sont les 16 bits transportés en ligne. Tous les bits restants sont à zéro.
  • 11: 0 bits. L'adresse est entièrement éludée et est dérivée à l'aide des informations de contexte et de l'en-tête d'encapsulation (par exemple 802.15.4 ou adresse de destination IPv6). Les bits couverts par les informations de contexte sont toujours utilisés. Tous les bits IID non couverts par les informations de contexte sont calculés à partir de l'en-tête d'encapsulation comme spécifié dans la Section 3.2.2. Tous les bits restants sont à zéro.

Si M=1 et DAC=0 :

  • 00: 128 bits. L'adresse complète est transportée en ligne.
  • 01: 48 bits. L'adresse prend la forme ffXX::00XX:XXXX:XXXX.
  • 10: 32 bits. L'adresse prend la forme ffXX::00XX:XXXX.
  • 11: 8 bits. L'adresse prend la forme ff02::00XX.

Si M=1 et DAC=1 :

  • 00: 48 bits. Ce format est conçu pour correspondre aux adresses multidiffusion IPv6 basées sur un préfixe unicast (Unicast-Prefix-based IPv6 Multicast Addresses) telles que définies dans la [RFC3306] et la [RFC3956]. L'adresse multidiffusion prend la forme ffXX:XXLL:PPPP:PPPP:PPPP:PPPP:XXXX:XXXX. où les X sont les quartets (nibbles) qui sont transportés en ligne, dans l'ordre dans lequel ils apparaissent dans ce format. P désigne les quartets utilisés pour coder le préfixe lui-même. L désigne les quartets utilisés pour coder la longueur du préfixe. Les informations de préfixe P et L sont prises à partir du contexte spécifié.
  • 01: réservé
  • 10: réservé
  • 11: réservé

3.1.2. Extension d'identifiant de contexte

Cette spécification s'attend à ce qu'un contexte conceptuel soit partagé entre le nœud qui compresse un paquet et le(s) nœud(s) qui doit/doivent le décompresser. La manière dont les contextes sont partagés et maintenus est hors de portée. Les informations contenues dans une information de contexte sont hors de portée. Les actions en réponse à des contextes inconnus et/ou invalides sont hors de portée. La spécification permet à un nœud d'utiliser jusqu'à 16 contextes. Le contexte utilisé pour coder l'adresse source ne doit pas nécessairement être le même que le contexte utilisé pour coder l'adresse de destination.

Si le champ CID est défini sur '1' dans le codage LOWPAN_IPHC, alors un octet supplémentaire étend le codage LOWPAN_IPHC après les bits DAM mais avant les champs d'en-tête IPv6 qui sont transportés en ligne. L'octet supplémentaire identifie la paire de contextes à utiliser lorsque l'adresse source et/ou de destination IPv6 est compressée. L'identifiant de contexte est de 4 bits pour chaque adresse, prenant en charge jusqu'à 16 contextes. Le contexte 0 est le contexte par défaut. Le codage est indiqué à la Figure 3.

    0   1   2   3   4   5   6   7
+---+---+---+---+---+---+---+---+
| SCI | DCI |
+---+---+---+---+---+---+---+---+

Figure 3 : Codage LOWPAN_IPHC

SCI : Source Context Identifier (Identifiant de contexte source). Identifie le préfixe qui est utilisé lorsque l'adresse source IPv6 est compressée avec état.

DCI : Destination Context Identifier (Identifiant de contexte de destination). Identifie le préfixe qui est utilisé lorsque l'adresse de destination IPv6 est compressée avec état.