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 sono0000:00ff:fe00:XXXX, doveXXXXsono 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 da0000:00ff:fe00:XXXX, doveXXXXsono 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 sono0000:00ff:fe00:XXXX, doveXXXXsono 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 da0000:00ff:fe00:XXXX, doveXXXXsono 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 formaffXX::00XX:XXXX:XXXX.10: 32 bit. L'indirizzo ha la formaffXX::00XX:XXXX.11: 8 bit. L'indirizzo ha la formaff02::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 formaffXX: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: riservato10: riservato11: 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.