Passa al contenuto principale

4.2 Options (Opzioni)

Le due intestazioni di estensione attualmente definite, Hop-by-Hop Options header e Destination Options header, trasportano un numero variabile di "options (opzioni)" codificate come type-length-value (TLV, tipo-lunghezza-valore), nel formato seguente:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
| Option Type | Opt Data Len | Option Data
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -

Option Type (tipo di opzione) - Identificatore del tipo di opzione a 8 bit.

Opt Data Len (lunghezza dei dati dell'opzione) - Intero senza segno a 8 bit. Lunghezza, in ottetti, del campo Option Data di questa opzione.

Option Data (dati dell'opzione) - Campo di lunghezza variabile. Dati specifici del tipo di opzione.

La sequenza di opzioni all'interno di un'intestazione deve essere elaborata rigorosamente nell'ordine in cui le opzioni appaiono nell'intestazione. Per esempio, il destinatario non deve scandire l'intestazione alla ricerca di un particolare tipo di opzione e processarla prima di aver elaborato tutte le opzioni precedenti.

La codifica interna dell'identificatore Option Type fa sì che i suoi due bit più significativi specifichino l'azione da intraprendere quando un nodo IPv6 che elabora l'opzione non riconosce quel Option Type:

00 - saltare questa opzione e continuare l'elaborazione dell'intestazione.

01 - scartare il pacchetto.

10 - scartare il pacchetto e, indipendentemente dal fatto che il Destination
Address del pacchetto sia un indirizzo multicast, inviare al Source
Address del pacchetto un messaggio ICMP Parameter Problem, Code 2,
che punta all'Option Type non riconosciuto.

11 - scartare il pacchetto e, solo se il Destination Address del pacchetto
non è un indirizzo multicast, inviare al Source Address del pacchetto
un messaggio ICMP Parameter Problem, Code 2, che punta all'Option Type
non riconosciuto.

Il terzo bit più significativo di Option Type specifica se il Option Data dell'opzione può cambiare lungo il percorso verso la destinazione finale del pacchetto. Quando nel pacchetto è presente una Authentication header, per qualsiasi opzione i cui dati possano cambiare lungo il percorso, l'intero campo Option Data deve essere trattato come ottetti a valore zero durante il calcolo o la verifica del valore di autenticazione del pacchetto.

0 - Option Data non cambia lungo il percorso

1 - Option Data può cambiare lungo il percorso

I tre bit di ordine alto descritti sopra devono essere trattati come parte di Option Type, non come indipendenti da esso. In altre parole, una particolare opzione è identificata dall'intero Option Type a 8 bit, non solo dai 5 bit di ordine basso di Option Type.

Hop-by-Hop Options header e Destination Options header usano lo stesso spazio di numerazione Option Type. Tuttavia, la specifica di una particolare opzione può limitarne l'uso a una sola di queste due intestazioni.

Le singole opzioni possono avere requisiti di allineamento specifici, per assicurare che i valori multi-ottetto all'interno del campo Option Data cadano sui propri confini naturali. Il requisito di allineamento di un'opzione è specificato con la notazione xn+y, che significa che Option Type deve apparire a un offset pari a un multiplo intero di x ottetti più y ottetti dall'inizio dell'intestazione. Per esempio:

2n    indica qualsiasi offset di 2 ottetti dall'inizio dell'intestazione.
8n+2 indica qualsiasi offset di 8 ottetti dall'inizio dell'intestazione,
più 2 ottetti.

Esistono due opzioni di padding, usate quando è necessario allineare le opzioni successive e riempire l'intestazione contenente fino a un multiplo di 8 ottetti di lunghezza. Tutte le implementazioni IPv6 devono riconoscere queste opzioni di padding:

Pad1 option (opzione Pad1) (requisito di allineamento: nessuno)

+-+-+-+-+-+-+-+-+
| 0 |
+-+-+-+-+-+-+-+-+

Nota: il formato dell'opzione Pad1 è un caso speciale. Non contiene campi lunghezza e valore.

L'opzione Pad1 viene usata per inserire un ottetto di padding nell'area Options di un'intestazione. Se è richiesto padding per più di un ottetto, deve essere usata l'opzione PadN descritta di seguito, invece di più opzioni Pad1.

PadN option (opzione PadN) (requisito di allineamento: nessuno)

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -
| 1 | Opt Data Len | Option Data
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- - - - - - - - -

L'opzione PadN viene usata per inserire due o più ottetti di padding nell'area Options di un'intestazione. Per N ottetti di padding, il campo Opt Data Len contiene il valore N-2 e Option Data è composto da N-2 ottetti a valore zero.

L'Appendice B contiene linee guida di formattazione per la progettazione di nuove opzioni.