Passa al contenuto principale

3.1. Formato di codifica LOWPAN_IPHC

Questa sezione specifica il formato della codifica LOWPAN_IPHC, che descrive come viene compressa un'intestazione IPv6. La codifica può essere lunga 2 ottetti per la codifica di base o 3 ottetti se è presente una codifica di contesto aggiuntiva. I campi dell'intestazione IPv6 che non vengono completamente omessi vengono posizionati immediatamente dopo LOWPAN_IPHC, in forma compressa se il campo è parzialmente omesso, o letteralmente.

3.1.1. Formato 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 |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+

Figura 2: Codifica base LOWPAN_IPHC

TF: Traffic Class, Flow Label (Classe di traffico, Etichetta di flusso): Come specificato in [RFC3168], il campo IPv6 Traffic Class a 8 bit è diviso in due campi: 2 bit Explicit Congestion Notification (ECN) e 6 bit Differentiated Services Code Point (DSCP).

  • 00: ECN + DSCP + 4 bit Pad + Flow Label (4 byte)
  • 01: ECN + 2 bit Pad + Flow Label (3 byte), DSCP è omesso.
  • 10: ECN + DSCP (1 byte), Flow Label è omesso.
  • 11: Traffic Class e Flow Label sono omessi.

NH: Next Header (Intestazione successiva):

  • 0: Tutti gli 8 bit per Next Header sono trasportati inline.
  • 1: Il campo Next Header è compresso e l'intestazione successiva è codificata utilizzando LOWPAN_NHC, che viene discusso nella Sezione 4.1.

HLIM: Hop Limit (Limite di hop):

  • 00: Il campo Hop Limit è trasportato inline.
  • 01: Il campo Hop Limit è compresso e l'Hop Limit è 1.
  • 10: Il campo Hop Limit è compresso e l'Hop Limit è 64.
  • 11: Il campo Hop Limit è compresso e l'Hop Limit è 255.

CID: Context Identifier Extension (Estensione dell'identificatore di contesto):

  • 0: Non viene utilizzata alcuna estensione dell'identificatore di contesto a 8 bit aggiuntiva. Se la compressione basata sul contesto è specificata in Source Address Compression (SAC) o Destination Address Compression (DAC), viene utilizzato il contesto 0.
  • 1: Un campo di estensione dell'identificatore di contesto a 8 bit aggiuntivo segue immediatamente il campo Destination Address Mode (DAM).

SAC: Source Address Compression (Compressione dell'indirizzo sorgente)

  • 0: La compressione dell'indirizzo sorgente utilizza la compressione stateless.
  • 1: La compressione dell'indirizzo sorgente utilizza la compressione stateful basata sul contesto.

SAM: Source Address Mode (Modalità dell'indirizzo sorgente):

Se SAC=0:

  • 00: 128 bit. L'intero indirizzo è trasportato inline.
  • 01: 64 bit. I primi 64 bit dell'indirizzo sono omessi. Il valore di questi bit è il prefisso link-local riempito con zeri. I restanti 64 bit sono trasportati inline.
  • 10: 16 bit. I primi 112 bit dell'indirizzo sono omessi. Il valore dei primi 64 bit è il prefisso link-local riempito con zeri. I seguenti 64 bit sono 0000:00ff:fe00:XXXX, dove XXXX sono i 16 bit trasportati inline.
  • 11: 0 bit. L'indirizzo è completamente omesso. I primi 64 bit dell'indirizzo sono il prefisso link-local riempito con zeri. I restanti 64 bit sono calcolati dall'intestazione incapsulante (ad es. 802.15.4 o indirizzo sorgente IPv6) come specificato nella Sezione 3.2.2.

Se SAC=1:

  • 00: L'indirizzo UNSPECIFIED (non specificato), ::
  • 01: 64 bit. L'indirizzo è derivato utilizzando le informazioni di contesto e i 64 bit trasportati inline. I bit coperti dalle informazioni di contesto sono sempre utilizzati. Qualsiasi bit IID non coperto dalle informazioni di contesto è preso direttamente dai corrispondenti bit trasportati inline. Eventuali bit rimanenti sono zero.
  • 10: 16 bit. L'indirizzo è derivato utilizzando le informazioni di contesto e i 16 bit trasportati inline. I bit coperti dalle informazioni di contesto sono sempre utilizzati. Qualsiasi bit IID non coperto dalle informazioni di contesto è preso direttamente dai corrispondenti bit nella mappatura da 16 bit a IID data da 0000:00ff:fe00:XXXX, dove XXXX sono i 16 bit trasportati inline. Eventuali bit rimanenti sono zero.
  • 11: 0 bit. L'indirizzo è completamente omesso e derivato utilizzando le informazioni di contesto e l'intestazione incapsulante (ad es. 802.15.4 o indirizzo sorgente IPv6). I bit coperti dalle informazioni di contesto sono sempre utilizzati. Qualsiasi bit IID non coperto dalle informazioni di contesto è calcolato dall'intestazione incapsulante come specificato nella Sezione 3.2.2. Eventuali bit rimanenti sono zero.

M: Multicast Compression (Compressione multicast)

  • 0: L'indirizzo di destinazione non è un indirizzo multicast.
  • 1: L'indirizzo di destinazione è un indirizzo multicast.

DAC: Destination Address Compression (Compressione dell'indirizzo di destinazione)

  • 0: La compressione dell'indirizzo di destinazione utilizza la compressione stateless.
  • 1: La compressione dell'indirizzo di destinazione utilizza la compressione stateful basata sul contesto.

DAM: Destination Address Mode (Modalità dell'indirizzo di destinazione):

Se M=0 e DAC=0 Questo caso corrisponde a SAC=0 ma per l'indirizzo di destinazione:

  • 00: 128 bit. L'intero indirizzo è trasportato inline.
  • 01: 64 bit. I primi 64 bit dell'indirizzo sono omessi. Il valore di questi bit è il prefisso link-local riempito con zeri. I restanti 64 bit sono trasportati inline.
  • 10: 16 bit. I primi 112 bit dell'indirizzo sono omessi. Il valore dei primi 64 bit è il prefisso link-local riempito con zeri. I seguenti 64 bit sono 0000:00ff:fe00:XXXX, dove XXXX sono i 16 bit trasportati inline.
  • 11: 0 bit. L'indirizzo è completamente omesso. I primi 64 bit dell'indirizzo sono il prefisso link-local riempito con zeri. I restanti 64 bit sono calcolati dall'intestazione incapsulante (ad es. 802.15.4 o indirizzo di destinazione IPv6) come specificato nella Sezione 3.2.2.

Se M=0 e DAC=1:

  • 00: Riservato.
  • 01: 64 bit. L'indirizzo è derivato utilizzando le informazioni di contesto e i 64 bit trasportati inline. I bit coperti dalle informazioni di contesto sono sempre utilizzati. Qualsiasi bit IID non coperto dalle informazioni di contesto è preso direttamente dai corrispondenti bit trasportati inline. Eventuali bit rimanenti sono zero.
  • 10: 16 bit. L'indirizzo è derivato utilizzando le informazioni di contesto e i 16 bit trasportati inline. I bit coperti dalle informazioni di contesto sono sempre utilizzati. Qualsiasi bit IID non coperto dalle informazioni di contesto è preso direttamente dai corrispondenti bit nella mappatura da 16 bit a IID data da 0000:00ff:fe00:XXXX, dove XXXX sono i 16 bit trasportati inline. Eventuali bit rimanenti sono zero.
  • 11: 0 bit. L'indirizzo è completamente omesso e derivato utilizzando le informazioni di contesto e l'intestazione incapsulante (ad es. 802.15.4 o indirizzo di destinazione IPv6). I bit coperti dalle informazioni di contesto sono sempre utilizzati. Qualsiasi bit IID non coperto dalle informazioni di contesto è calcolato dall'intestazione incapsulante come specificato nella Sezione 3.2.2. Eventuali bit rimanenti sono zero.

Se M=1 e DAC=0:

  • 00: 128 bit. L'intero indirizzo è trasportato inline.
  • 01: 48 bit. L'indirizzo ha la forma ffXX::00XX:XXXX:XXXX.
  • 10: 32 bit. L'indirizzo ha la forma ffXX::00XX:XXXX.
  • 11: 8 bit. L'indirizzo ha la forma ff02::00XX.

Se M=1 e DAC=1:

  • 00: 48 bit. Questo formato è progettato per corrispondere agli indirizzi Multicast IPv6 basati su prefisso unicast come definito in [RFC3306] e [RFC3956]. L'indirizzo multicast ha la forma ffXX:XXLL:PPPP:PPPP:PPPP:PPPP:XXXX:XXXX. dove le X sono i nibble trasportati inline, nell'ordine in cui appaiono in questo formato. P indica i nibble utilizzati per codificare il prefisso stesso. L indica i nibble utilizzati per codificare la lunghezza del prefisso. Le informazioni sul prefisso P e L sono prese dal contesto indicato.
  • 01: riservato
  • 10: riservato
  • 11: riservato

3.1.2. Estensione dell'identificatore di contesto

Questa specifica prevede che un contesto concettuale sia condiviso tra il nodo che comprime un pacchetto e il/i nodo/i che deve/devono espanderlo. Il modo in cui i contesti vengono condivisi e mantenuti esula dall'ambito. Quali informazioni siano contenute in un'informazione di contesto esula dall'ambito. Le azioni in risposta a contesti sconosciuti e/o non validi esulano dall'ambito. La specifica consente a un nodo di utilizzare fino a 16 contesti. Il contesto utilizzato per codificare l'indirizzo sorgente non deve necessariamente essere lo stesso utilizzato per codificare l'indirizzo di destinazione.

Quando il campo CID nella codifica LOWPAN_IPHC è impostato su '1', un ottetto aggiuntivo estende la codifica LOWPAN_IPHC dopo i bit DAM, ma prima dei campi dell'intestazione IPv6 trasportati inline. L'ottetto aggiuntivo identifica la coppia di contesti da utilizzare quando l'indirizzo IPv6 sorgente e/o destinazione è compresso. L'identificatore di contesto è di 4 bit per ciascun indirizzo, supportando fino a 16 contesti. Il contesto 0 è il contesto predefinito. La codifica è mostrata nella Figura 3.

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

Figura 3: Codifica LOWPAN_IPHC

SCI: Source Context Identifier (Identificatore di contesto sorgente). Identifica il prefisso utilizzato quando l'indirizzo IPv6 sorgente è compresso in modo stateful.

DCI: Destination Context Identifier (Identificatore di contesto destinazione). Identifica il prefisso utilizzato quando l'indirizzo IPv6 destinazione è compresso in modo stateful.