3.2. Codifica dell'intestazione IPv6
I campi trasportati inline (in tutto o in parte) appaiono nello stesso ordine del formato dell'intestazione IPv6 [RFC2460]. Il campo Version è sempre omesso. Gli indirizzi IPv6 unicast possono essere compressi a 64 o 16 bit o completamente omessi. Gli indirizzi IPv6 multicast possono essere compressi a 8, 32 o 48 bit. Il campo IPv6 Payload Length DEVE (MUST) essere sempre omesso e dedotto dagli strati inferiori utilizzando l'intestazione di frammentazione 6LoWPAN o l'intestazione IEEE 802.15.4.
3.2.1. Compressione di Traffic Class e Flow Label
Il campo Traffic Class nell'intestazione IPv6 comprende 6 bit dell'estensione Diffserv [RFC2474] e 2 bit di Explicit Congestion Notification (ECN) [RFC3168]. Il campo TF nella codifica LOWPAN_IPHC indica se Traffic Class e Flow Label sono trasportati inline nell'intestazione IPv6 compressa. Quando Flow Label è incluso mentre Traffic Class è compresso, vengono inseriti 4 bit aggiuntivi per mantenere l'allineamento dei byte. Due dei 4 bit contengono i bit ECN dal campo Traffic Class.
Per garantire che i bit ECN appaiano nella stessa posizione in tutte le codifiche che li includono, il campo Traffic Class nell'intestazione IPv6 compressa viene ruotato a destra di 2 bit. Le codifiche sono mostrate di seguito:
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|ECN| DSCP | rsv | Flow Label |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figura 4: TF = 00: Traffic Class e Flow Label trasportati inline
1 2
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|ECN|rsv| Flow Label |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figura 5: TF = 01: Flow Label trasportato inline
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|ECN| DSCP |
+-+-+-+-+-+-+-+-+
Figura 6: TF = 10: Traffic Class trasportato inline
3.2.2. Derivazione delle IID dall'intestazione incapsulante
LOWPAN_IPHC omette le IID degli indirizzi sorgente o destinazione quando SAM = 3 o DAM = 3, rispettivamente. In questa modalità, l'IID viene derivato dall'intestazione incapsulante. Quando l'intestazione incapsulante trasporta indirizzi IPv6, i bit per gli indirizzi sorgente e destinazione vengono copiati dagli indirizzi sorgente e destinazione dell'intestazione IPv6 incapsulante.
Il resto di questa sezione definisce la mappatura dagli indirizzi del livello di collegamento IEEE 802.15.4 [IEEE802.15.4] alle IID sia per gli indirizzi IEEE 802.15.4 brevi che estesi. I bit IID che non sono coperti dalle informazioni di contesto POSSONO (MAY) essere omessi se corrispondono alla mappatura dell'indirizzo del livello di collegamento e NON DEVONO (MUST NOT) essere omessi se non lo fanno.
Un indirizzo esteso IEEE 802.15.4 ha la forma di un indirizzo IEEE EUI-64. La generazione di un IID da un indirizzo esteso è identica alla procedura definita nell'Appendice A di [RFC4291]. L'unica modifica necessaria per trasformare un identificatore IEEE EUI-64 in un identificatore di interfaccia consiste nell'invertire il bit Universal/Local.
Un indirizzo breve IEEE 802.15.4 è lungo 16 bit. Gli indirizzi brevi vengono mappati nello spazio ristretto degli indirizzi IEEE EUI-64 impostando i 16 bit centrali su 0xfffe, i 16 bit inferiori sull'indirizzo breve e tutti gli altri bit su zero. Di conseguenza, un IID generato da un indirizzo breve ha la forma:
0000:00ff:fe00:XXXX
dove XXXX trasporta l'indirizzo breve. Il bit Universal/Local è zero per indicare l'ambito (scope) locale.
Questa mappatura per identificatori non EUI-64 differisce da quella presentata nell'Appendice A di [RFC4291]. L'utilizzo dello spazio ristretto garantisce che non vi siano sovrapposizioni con IID generati da indirizzi IEEE EUI-64 non ristretti. Inoltre, l'inserimento di 0xfffe al centro dell'IID aiuta a evitare sovrapposizioni con altri IID gestiti localmente.
Questa mappatura da un indirizzo breve IEEE 802.15.4 a IID a 64 bit viene utilizzata anche per ricostruire qualsiasi parte di un IID non coperta dalle informazioni di contesto.
3.2.3. Compressione stateless degli indirizzi multicast
LOWPAN_IPHC supporta la compressione stateless degli indirizzi multicast quando M = 1 e DAC = 0. Un indirizzo multicast IPv6 può essere compresso a 48, 32 o 8 bit utilizzando la compressione stateless. Il formato supporta la compressione del Solicited-Node Multicast Address (ff02::1:ffXX:XXXX) così come qualsiasi indirizzo multicast IPv6 in cui i bit superiori dell'identificatore del gruppo multicast sono zero. La forma compressa a 8 bit trasporta solo i bit meno significativi dell'identificatore del gruppo multicast. Le forme compresse a 48 e 32 bit trasportano lo scope multicast e i flag inline, oltre ai bit meno significativi dell'identificatore del gruppo multicast.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags | Scope | Group Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Group Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figura 7: DAM = 01. Indirizzo multicast compresso a 48 bit
(ffFS::00GG:GGGG:GGGG)
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags | Scope | Group Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figura 8: DAM = 10. Indirizzo multicast compresso a 32 bit
(ffFS::00GG:GGGG)
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
| Group ID |
+-+-+-+-+-+-+-+-+
Figura 9: DAM = 11. Indirizzo multicast compresso a 8 bit (ff02::GG)
3.2.4. Compressione stateful degli indirizzi multicast
LOWPAN_IPHC supporta la compressione stateful degli indirizzi multicast quando M = 1 e DAC = 1. Questo documento definisce attualmente DAM = 00: compressione basata sul contesto degli indirizzi Multicast IPv6 basati su prefisso unicast [RFC3306][RFC3956]. In particolare, la lunghezza del prefisso e il prefisso di rete possono essere presi da un contesto. Di conseguenza, LOWPAN_IPHC può comprimere un indirizzo Multicast IPv6 basato su prefisso unicast a 6 ottetti trasportando solo i 4 bit Flags, 4 bit Scope, 8 bit Rendezvous Point Interface ID (RIID) e 32 bit Group Identifier inline.
1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flags | Scope | Rsvd / RIID | Group Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Group Identifier |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figura 10: DAM = 00. Compressione indirizzo Multicast IPv6
basato su prefisso unicast
Si noti che il campo Reserved DEVE (MUST) portare i bit riservati dal formato dell'indirizzo multicast come descritto in [RFC3306]. Quando un Rendezvous Point è codificato nell'indirizzo multicast come descritto in [RFC3956], il campo Reserved trasporta i bit RIID inline.