Passa al contenuto principale

22. Opzioni DHCP

22. Opzioni DHCP​

Le opzioni sono usate per trasportare informazioni e parametri aggiuntivi nei messaggi DHCP. Ciascuna opzione condivide un formato di base comune, come descritto nella sezione 22.1. Tutti i valori nelle opzioni sono rappresentati in network byte order (ordine dei byte di rete).

Questo documento descrive le opzioni DHCP definite come parte della specifica DHCP di base. Altre opzioni possono essere definite in futuro in documenti separati.

Se non diversamente indicato, ciascuna opzione può apparire solo nell'area delle opzioni di un messaggio DHCP e può apparire solo una volta. Se un'opzione compare più volte, ciascuna istanza è considerata separata e le aree dati delle opzioni NON DEVONO essere concatenate o altrimenti combinate.

22.1. Formato delle opzioni DHCP​

Il formato delle opzioni DHCP è:

 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| option-code | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| option-data |
| (option-len octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • option-code — Un intero senza segno che identifica il tipo di opzione specifica trasportata in questa opzione.
  • option-len — Un intero senza segno che dà la lunghezza del campo option-data in questa opzione, in ottetti.
  • option-data — I dati per l'opzione; il formato di questi dati dipende dalla definizione dell'opzione.

Le opzioni DHCPv6 sono scoperte (scoped) usando l'incapsulamento. Alcune opzioni si applicano generalmente al client, alcune sono specifiche di una IA, e alcune sono specifiche degli indirizzi all'interno di una IA. Questi ultimi due casi sono discussi nelle sezioni 22.4 e 22.6.

22.2. Opzione Client Identifier​

L'opzione Client Identifier è usata per trasportare un DUID (si veda la sezione 9) che identifica un client tra un client e un server. Il formato dell'opzione Client Identifier è:

 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_CLIENTID | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. DUID .
. (variable length) .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_CLIENTID (1).
  • option-len — Lunghezza del DUID in ottetti.
  • DUID — Il DUID per il client.

22.3. Opzione Server Identifier​

L'opzione Server Identifier è usata per trasportare un DUID (si veda la sezione 9) che identifica un server tra un client e un server. Il formato dell'opzione Server Identifier è:

 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_SERVERID | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. DUID .
. (variable length) .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_SERVERID (2).
  • option-len — Lunghezza del DUID in ottetti.
  • DUID — Il DUID per il server.

22.4. Opzione Identity Association for Non-temporary Addresses​

L'opzione Identity Association for Non-temporary Addresses (opzione IA_NA) è usata per trasportare una IA_NA, i parametri associati alla IA_NA e gli indirizzi non temporanei associati alla IA_NA.

Gli indirizzi che compaiono in un'opzione IA_NA non sono indirizzi temporanei (si veda la sezione 22.5).

Il formato dell'opzione IA_NA è:

 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_IA_NA | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IAID (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| T1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| T2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. IA_NA-options .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_IA_NA (3).
  • option-len — 12 + lunghezza del campo IA_NA-options.
  • IAID — L'identificatore univoco per questa IA_NA; l'IAID deve essere unico tra gli identificatori per tutte le IA_NA di questo client. Lo spazio di numerazione per gli IAID IA_NA è separato dallo spazio di numerazione per gli IAID IA_TA.
  • T1 — Il momento in cui il client contatta il server da cui gli indirizzi nella IA_NA sono stati ottenuti per estendere i tempi di vita degli indirizzi assegnati alla IA_NA; T1 è una durata temporale relativa al tempo corrente espressa in unità di secondi.
  • T2 — Il momento in cui il client contatta qualsiasi server disponibile per estendere i tempi di vita degli indirizzi assegnati alla IA_NA; T2 è una durata temporale relativa al tempo corrente espressa in unità di secondi.
  • IA_NA-options — Opzioni associate a questa IA_NA.

Il campo IA_NA-options incapsula quelle opzioni che sono specifiche di questa IA_NA. Per esempio, tutte le opzioni IA Address che trasportano gli indirizzi associati a questa IA_NA sono nel campo IA_NA-options.

Un'opzione IA_NA può apparire solo nell'area delle opzioni di un messaggio DHCP. Un messaggio DHCP può contenere multiple opzioni IA_NA.

Lo stato di qualsiasi operazione che coinvolge questa IA_NA è indicato in un'opzione Status Code nel campo IA_NA-options.

Si noti che una IA_NA non ha un proprio "tempo di vita" o "durata di lease" esplicito. Quando i tempi di vita validi di tutti gli indirizzi in una IA_NA sono scaduti, la IA_NA può essere considerata come scaduta. T1 e T2 sono inclusi per dare ai server il controllo esplicito su quando un client ricontatta il server circa una specifica IA_NA.

In un messaggio inviato da un client a un server, i valori nei campi T1 e T2 indicano la preferenza del client per quei parametri. Il client imposta T1 e T2 a 0 se non ha preferenza per quei valori. In un messaggio inviato da un server a un client, il client DEVE usare i valori nei campi T1 e T2 per i parametri T1 e T2, a meno che i valori in quei campi non siano 0. I valori nei campi T1 e T2 sono il numero di secondi fino a T1 e T2.

Il server seleziona i tempi T1 e T2 per consentire al client di estendere i tempi di vita di eventuali indirizzi nella IA_NA prima che i tempi di vita scadano, anche se il server non è disponibile per un breve periodo di tempo. I valori raccomandati per T1 e T2 sono rispettivamente .5 e .8 volte il più breve tempo di vita preferito degli indirizzi nella IA che il server è disposto a estendere. Se il tempo di vita preferito "più breve" è 0xffffffff ("infinito"), i valori raccomandati T1 e T2 sono anch'essi 0xffffffff. Se il momento in cui gli indirizzi in una IA_NA devono essere rinnovati è lasciato alla discrezione del client, il server imposta T1 e T2 a 0.

Se un server riceve una IA_NA con T1 maggiore di T2, e sia T1 che T2 sono maggiori di 0, il server ignora i valori non validi di T1 e T2 ed elabora la IA_NA come se il client avesse impostato T1 e T2 a 0.

Se un client riceve una IA_NA con T1 maggiore di T2, e sia T1 che T2 sono maggiori di 0, il client scarta l'opzione IA_NA ed elabora la restante parte del messaggio come se il server non avesse incluso l'opzione IA_NA non valida.

Si deve prestare attenzione nell'impostare T1 o T2 a 0xffffffff ("infinito"). Un client non tenterà mai di estendere i tempi di vita di alcun indirizzo in una IA con T1 impostato a 0xffffffff. Un client non tenterà mai di usare un messaggio Rebind per individuare un server diverso per estendere i tempi di vita di alcun indirizzo in una IA con T2 impostato a 0xffffffff.

22.5. Opzione Identity Association for Temporary Addresses​

L'opzione Identity Association for the Temporary Addresses (opzione IA_TA) è usata per trasportare una IA_TA, i parametri associati alla IA_TA e gli indirizzi associati alla IA_TA. Tutti gli indirizzi in questa opzione sono usati dal client come indirizzi temporanei, come definito in RFC 3041 [12]. Il formato dell'opzione IA_TA è:

 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_IA_TA | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| IAID (4 octets) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. IA_TA-options .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_IA_TA (4).
  • option-len — 4 + lunghezza del campo IA_TA-options.
  • IAID — L'identificatore univoco per questa IA_TA; l'IAID deve essere unico tra gli identificatori per tutte le IA_TA di questo client. Lo spazio di numerazione per gli IAID IA_TA è separato dallo spazio di numerazione per gli IAID IA_NA.
  • IA_TA-options — Opzioni associate a questa IA_TA.

Il campo IA_TA-Options incapsula quelle opzioni che sono specifiche di questa IA_TA. Per esempio, tutte le opzioni IA Address che trasportano gli indirizzi associati a questa IA_TA sono nel campo IA_TA-options.

Ciascuna IA_TA trasporta un solo "insieme" di indirizzi temporanei; cioè, al massimo un indirizzo da ciascun prefisso assegnato al link a cui il client è collegato.

Un'opzione IA_TA può apparire solo nell'area delle opzioni di un messaggio DHCP. Un messaggio DHCP può contenere multiple opzioni IA_TA.

Lo stato di qualsiasi operazione che coinvolge questa IA_TA è indicato in un'opzione Status Code nel campo IA_TA-options.

Si noti che una IA non ha un proprio "tempo di vita" o "durata di lease" esplicito. Quando i tempi di vita validi di tutti gli indirizzi in una IA_TA sono scaduti, la IA può essere considerata come scaduta.

Un'opzione IA_TA non include valori per T1 e T2. Un client PUÒ richiedere che i tempi di vita sugli indirizzi temporanei siano estesi includendo gli indirizzi in un'opzione IA_TA inviata in un messaggio Renew o Rebind a un server. Per esempio, un client richiederebbe un'estensione sul tempo di vita di un indirizzo temporaneo per consentire a un'applicazione di continuare a usare una connessione TCP stabilita.

Il client ottiene nuovi indirizzi temporanei inviando un'opzione IA_TA con un nuovo IAID a un server. Richiedere nuovi indirizzi temporanei dal server equivale a generare nuovi indirizzi temporanei come descritto in RFC 3041. Il server genererà nuovi indirizzi temporanei e li restituirà al client. Il client dovrebbe richiedere nuovi indirizzi temporanei prima che i tempi di vita sugli indirizzi precedentemente assegnati scadano.

Un server DEVE restituire lo stesso insieme di indirizzi temporanei per la stessa IA_TA (come identificata dall'IAID) finché tali indirizzi sono ancora validi. Dopo che i tempi di vita degli indirizzi in una IA_TA sono scaduti, l'IAID può essere riusato per identificare una nuova IA_TA con nuovi indirizzi temporanei.

Questa opzione PUÒ apparire in un messaggio Confirm se i tempi di vita sugli indirizzi temporanei nella IA associata non sono scaduti.

22.6. Opzione IA Address​

L'opzione IA Address è usata per specificare indirizzi IPv6 associati a una IA_NA o a una IA_TA. L'opzione IA Address deve essere incapsulata nel campo Options di un'opzione IA_NA o IA_TA. Il campo Options incapsula quelle opzioni che sono specifiche di questo indirizzo.

Il formato dell'opzione IA Address è:

 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_IAADDR | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| IPv6 address |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| preferred-lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| valid-lifetime |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. IAaddr-options .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_IAADDR (5).
  • option-len — 24 + lunghezza del campo IAaddr-options.
  • IPv6 address — Un indirizzo IPv6.
  • preferred-lifetime — Il tempo di vita preferito per l'indirizzo IPv6 nell'opzione, espresso in unità di secondi.
  • valid-lifetime — Il tempo di vita valido per l'indirizzo IPv6 nell'opzione, espresso in unità di secondi.
  • IAaddr-options — Opzioni associate a questo indirizzo.

In un messaggio inviato da un client a un server, i valori nei campi preferred e valid lifetime indicano la preferenza del client per quei parametri. Il client può inviare 0 se non ha preferenza per i tempi di vita preferito e valido. In un messaggio inviato da un server a un client, il client DEVE usare i valori nei campi preferred e valid lifetime per i tempi di vita preferito e valido. I valori nei tempi di vita preferito e valido sono il numero di secondi rimanenti in ciascun tempo di vita.

Un client scarta qualsiasi indirizzo per cui il tempo di vita preferito è maggiore del tempo di vita valido. Un server ignora i tempi di vita impostati dal client se il tempo di vita preferito è maggiore del tempo di vita valido e ignora i valori per T1 e T2 impostati dal client se tali valori sono maggiori del tempo di vita preferito.

Si deve prestare attenzione nell'impostare il tempo di vita valido di un indirizzo a 0xffffffff ("infinito"), il che equivale a un assegnazione permanente di un indirizzo a un client.

Un'opzione IA Address può apparire solo in un'opzione IA_NA o in un'opzione IA_TA. Più di un'opzione IA Address può apparire in un'opzione IA_NA o in un'opzione IA_TA.

Lo stato di qualsiasi operazione che coinvolge questo IA Address è indicato in un'opzione Status Code nel campo IAaddr-options.

22.7. Opzione Option Request​

L'opzione Option Request è usata per identificare un elenco di opzioni in un messaggio tra un client e un server. Il formato dell'opzione Option Request è:

 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_ORO | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| requested-option-code-1 | requested-option-code-2 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_ORO (6).
  • option-len — 2 * numero di opzioni richieste.
  • requested-option-code-n — Il codice di opzione per un'opzione richiesta dal client.

Un client PUÒ includere un'opzione Option Request in un messaggio Solicit, Request, Renew, Rebind, Confirm o Information-request per informare il server sulle opzioni che il client vuole che il server invii al client. Un server PUÒ includere un'opzione Option Request in un'opzione Reconfigure per indicare quali opzioni il client dovrebbe richiedere al server.

22.8. Opzione Preference​

L'opzione Preference è inviata da un server a un client per influenzare la selezione di un server da parte del client.

Il formato dell'opzione Preference è:

 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_PREFERENCE | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| pref-value |
+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_PREFERENCE (7).
  • option-len — 1.
  • pref-value — Il valore di preferenza per il server in questo messaggio.

Un server PUÒ includere un'opzione Preference in un messaggio Advertise per controllare la selezione di un server da parte del client. Si veda la sezione 17.1.3 per l'uso dell'opzione Preference da parte del client e l'interpretazione del valore dei dati dell'opzione Preference.

22.9. Opzione Elapsed Time​

 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_ELAPSED_TIME | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| elapsed-time |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_ELAPSED_TIME (8).
  • option-len — 2.
  • elapsed-time — La quantità di tempo trascorso da quando il client ha iniziato la sua transazione DHCP corrente. Questo tempo è espresso in centesimi di secondo (10^-2 secondi).

Un client DEVE includere un'opzione Elapsed Time nei messaggi per indicare da quanto tempo il client sta cercando di completare uno scambio di messaggi DHCP. Il tempo trascorso è misurato dal momento in cui il client ha inviato il primo messaggio nello scambio di messaggi, e il campo elapsed-time è impostato a 0 nel primo messaggio nello scambio di messaggi. I server e gli agenti di relay usano il valore dei dati in questa opzione come input alla politica che controlla come un server risponde a un messaggio di un client. Per esempio, l'opzione elapsed time consente a un server DHCP secondario di rispondere a una richiesta quando un server primario non ha risposto in un tempo ragionevole. Il valore del tempo trascorso è un intero senza segno a 16 bit. Il client usa il valore 0xffff per rappresentare qualsiasi valore di tempo trascorso maggiore del più grande valore temporale che può essere rappresentato nell'opzione Elapsed Time.

22.10. Opzione Relay Message​

L'opzione Relay Message trasporta un messaggio DHCP in un messaggio Relay-forward o Relay-reply.

Il formato dell'opzione Relay Message è:

 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_RELAY_MSG | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
. DHCP-relay-message .
. .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_RELAY_MSG (9)
  • option-len — Lunghezza di DHCP-relay-message
  • DHCP-relay-message — In un messaggio Relay-forward, il messaggio ricevuto, inoltrato verbatim al successivo agente di relay o server; in un messaggio Relay-reply, il messaggio da copiare e inoltrare all'agente di relay o al client il cui indirizzo è nel campo peer-address del messaggio Relay-reply

22.11. Opzione Authentication​

L'opzione Authentication trasporta informazioni di autenticazione per autenticare l'identità e il contenuto dei messaggi DHCP. L'uso dell'opzione Authentication è descritto nella sezione 21. Il formato dell'opzione Authentication è:

 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_AUTH | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| protocol | algorithm | RDM | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| |
| replay detection (64 bits) +-+-+-+-+-+-+-+-+
| | auth-info |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
. authentication information .
. (variable length) .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_AUTH (11)
  • option-len — 11 + lunghezza del campo delle informazioni di autenticazione
  • protocol — Il protocollo di autenticazione usato in questa opzione di autenticazione
  • algorithm — L'algoritmo usato nel protocollo di autenticazione
  • RDM — Il metodo di rilevamento della riproduzione (replay detection method) usato in questa opzione di autenticazione
  • Replay detection — Le informazioni di rilevamento della riproduzione per l'RDM
  • authentication information — Le informazioni di autenticazione, come specificate dal protocollo e dall'algoritmo usati in questa opzione di autenticazione

22.12. Opzione Server Unicast​

Il server invia questa opzione a un client per indicare al client che gli è permesso inviare messaggi in unicast al server. Il formato dell'opzione Server Unicast è:

 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_UNICAST | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
| server-address |
| |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_UNICAST (12).
  • option-len — 16.
  • server-address — L'indirizzo IP a cui il client deve inviare i messaggi consegnati usando l'unicast.

Il server specifica l'indirizzo IPv6 a cui il client deve inviare messaggi in unicast nel campo server-address. Quando un client riceve questa opzione, dove permesso e opportuno, il client invia messaggi direttamente al server usando l'indirizzo IPv6 specificato nel campo server-address dell'opzione.

Quando il server invia un'opzione Unicast a un client, alcuni messaggi dal client non saranno inoltrati dagli agenti di relay e non includeranno opzioni dell'agente di relay dagli agenti di relay. Pertanto, un server dovrebbe inviare un'opzione Unicast a un client solo quando gli agenti di relay non stanno inviando opzioni dell'agente di relay. Un server DHCP rifiuta qualsiasi messaggio inviato in modo non appropriato usando l'unicast per garantire che i messaggi siano inoltrati dagli agenti di relay quando le opzioni dell'agente di relay sono in uso.

I dettagli su quando il client può inviare messaggi al server usando l'unicast sono nella sezione 18.

22.13. Opzione Status Code​

Questa opzione restituisce un'indicazione di stato relativa al messaggio DHCP o all'opzione in cui appare. Il formato dell'opzione Status Code è:

 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_STATUS_CODE | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| status-code | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
. .
. status-message .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_STATUS_CODE (13).
  • option-len — 2 + lunghezza di status-message.
  • status-code — Il codice numerico per lo stato codificato in questa opzione. I codici di stato sono definiti nella sezione 24.4.
  • status-message — Una stringa di testo codificata in UTF-8 adatta alla visualizzazione a un utente finale, che NON DEVE essere terminata da null.

Un'opzione Status Code può apparire nel campo delle opzioni di un messaggio DHCP e/o nel campo delle opzioni di un'altra opzione. Se l'opzione Status Code non appare in un messaggio in cui l'opzione potrebbe apparire, lo stato del messaggio è assunto essere Success.

22.14. Opzione Rapid Commit​

L'opzione Rapid Commit è usata per segnalare l'uso dello scambio di messaggi a due messaggi per l'assegnazione di indirizzi. Il formato dell'opzione Rapid Commit è:

 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_RAPID_COMMIT | 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_RAPID_COMMIT (14).
  • option-len — 0.

Un client PUÒ includere questa opzione in un messaggio Solicit se il client è preparato a eseguire lo scambio di messaggi Solicit-Reply descritto nella sezione 17.1.1.

Un server DEVE includere questa opzione in un messaggio Reply inviato in risposta a un messaggio Solicit quando completa lo scambio di messaggi Solicit-Reply.

DISCUSSIONE:

Ciascun server che risponde con un Reply a un Solicit che include un'opzione Rapid Commit impegnerà gli indirizzi assegnati nel messaggio Reply al client, e non riceverà alcuna conferma che il client ha ricevuto il messaggio Reply. Pertanto, se più di un server risponde a un Solicit che include un'opzione Rapid Commit, alcuni server impegneranno indirizzi che non sono effettivamente usati dal client.

Il problema degli indirizzi non usati può essere minimizzato, per esempio, progettando il servizio DHCP in modo che solo un server risponda al Solicit o usando tempi di vita relativamente brevi per gli indirizzi assegnati.

22.15. Opzione User Class​

L'opzione User Class è usata da un client per identificare il tipo o la categoria di utente o applicazioni che rappresenta.

Il formato dell'opzione User Class è:

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_USER_CLASS | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. user-class-data .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_USER_CLASS (15).
  • option-len — Lunghezza del campo dati della user class.
  • user-class-data — Le user class trasportate dal client.

Le informazioni contenute nell'area dati di questa opzione sono contenute in uno o più campi opachi che rappresentano la o le user class di cui il client è membro. Un server seleziona le informazioni di configurazione per il client basandosi sulle classi identificate in questa opzione. Per esempio, l'opzione User Class può essere usata per configurare tutti i client delle persone nel reparto contabilità con una stampante diversa rispetto ai client delle persone nel reparto marketing. Le informazioni della user class trasportate in questa opzione DEVONO essere configurabili sul client.

L'area dati dell'opzione user class DEVE contenere una o più istanze di dati della user class. Ciascuna istanza dei dati della user class è formattata come segue:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+
| user-class-len | opaque-data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+

Il user-class-len è lungo due ottetti e specifica la lunghezza dei dati opachi della user class in network byte order.

Un server interpreta le classi identificate in questa opzione secondo la sua configurazione per selezionare le appropriate informazioni di configurazione per il client. Un server può usare solo quelle user class che è configurato per interpretare nella selezione delle informazioni di configurazione per un client e ignorare qualsiasi altra user class. In risposta a un messaggio contenente un'opzione User Class, un server include un'opzione User Class contenente quelle classi che sono state interpretate con successo dal server, così che il client possa essere informato delle classi interpretate dal server.

22.16. Opzione Vendor Class​

Questa opzione è usata da un client per identificare il fornitore che ha prodotto l'hardware su cui il client è in esecuzione. Le informazioni contenute nell'area dati di questa opzione sono contenute in uno o più campi opachi che identificano dettagli della configurazione hardware. Il formato dell'opzione Vendor Class è:

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_VENDOR_CLASS | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| enterprise-number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. vendor-class-data .
. . . . .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_VENDOR_CLASS (16).
  • option-len — 4 + lunghezza del campo dati della vendor class.
  • enterprise-number — Il numero Enterprise registrato del fornitore come registrato presso IANA [6].
  • vendor-class-data — La configurazione hardware dell'host su cui il client è in esecuzione.

Il vendor-class-data è composto da una serie di elementi separati, ciascuno dei quali descrive alcune caratteristiche della configurazione hardware del client. Esempi di istanze di vendor-class-data potrebbero includere la versione del sistema operativo su cui è in esecuzione il client o la quantità di memoria installata sul client.

Ciascuna istanza del vendor-class-data è formattata come segue:

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+
| vendor-class-len | opaque-data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-...-+-+-+-+-+-+-+

Il vendor-class-len è lungo due ottetti e specifica la lunghezza dei dati opachi della vendor class in network byte order.

22.17. Opzione Vendor-specific Information​

Questa opzione è usata da client e server per scambiare informazioni specifiche del fornitore.

Il formato dell'opzione Vendor-specific Information è:

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_VENDOR_OPTS | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| enterprise-number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. option-data .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_VENDOR_OPTS (17)
  • option-len — 4 + lunghezza del campo option-data
  • enterprise-number — Il numero Enterprise registrato del fornitore come registrato presso IANA [6].
  • option-data — Un oggetto opaco di option-len ottetti, interpretato da codice specifico del fornitore su client e server

La definizione delle informazioni trasportate in questa opzione è specifica del fornitore. Il fornitore è indicato nel campo enterprise-number. L'uso di informazioni specifiche del fornitore consente un funzionamento potenziato, utilizzando funzionalità aggiuntive nell'implementazione DHCP di un fornitore. Un client DHCP che non riceve le informazioni specifiche del fornitore richieste configurerà comunque lo stack IPv6 del dispositivo host per essere funzionale.

Il campo delle opzioni specifiche del fornitore incapsulate DEVE essere codificato come una sequenza di campi codice/lunghezza/valore di formato identico al campo delle opzioni DHCP. I codici di opzione sono definiti dal fornitore identificato nel campo enterprise-number e non sono gestiti da IANA. Ciascuna delle opzioni incapsulate è formattata come segue:

 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| opt-code | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. option-data .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • opt-code — Il codice per l'opzione incapsulata.
  • option-len — Un intero senza segno che dà la lunghezza del campo option-data in questa opzione incapsulata, in ottetti.
  • option-data — L'area dati per l'opzione incapsulata.

Multiple istanze dell'opzione Vendor-specific Information possono apparire in un messaggio DHCP. Ciascuna istanza dell'opzione è interpretata secondo i codici di opzione definiti dal fornitore identificato dal numero Enterprise in quell'opzione.

22.18. Opzione Interface-Id​

L'agente di relay PUÒ inviare l'opzione Interface-id per identificare l'interfaccia su cui il messaggio del client è stato ricevuto. Se un agente di relay riceve un messaggio Relay-reply con un'opzione Interface-id, l'agente di relay inoltra il messaggio al client attraverso l'interfaccia identificata dall'opzione.

Il formato dell'opzione Interface ID è:

 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_INTERFACE_ID | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. interface-id .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_INTERFACE_ID (18).
  • option-len — Lunghezza del campo interface-id.
  • interface-id — Un valore opaco di lunghezza arbitraria generato dall'agente di relay per identificare una delle interfacce dell'agente di relay.

Il server DEVE copiare l'opzione Interface-Id dal messaggio Relay-Forward nel messaggio Relay-Reply che il server invia all'agente di relay in risposta al messaggio Relay-Forward. Questa opzione NON DEVE apparire in alcun messaggio eccetto un messaggio Relay-Forward o Relay-Reply.

I server POSSONO usare l'Interface-ID per politiche di assegnazione dei parametri. L'Interface-ID DOVREBBE essere considerato un valore opaco, con politiche basate solo su corrispondenza esatta; cioè, l'Interface-ID NON DOVREBBE essere analizzato internamente dal server. Il valore Interface-ID per un'interfaccia DOVREBBE essere stabile e rimanere invariato, per esempio, dopo che l'agente di relay è riavviato; se l'Interface-ID cambia, un server non sarà in grado di usarlo in modo affidabile nelle politiche di assegnazione dei parametri.

22.19. Opzione Reconfigure Message​

Un server include un'opzione Reconfigure Message in un messaggio Reconfigure per indicare al client se il client risponde con un messaggio Renew o con un messaggio Information-request. Il formato di questa opzione è:

 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_RECONF_MSG | option-len |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| msg-type |
+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_RECONF_MSG (19).
  • option-len — 1.
  • msg-type — 5 per messaggio Renew, 11 per messaggio Information-request.

L'opzione Reconfigure Message può apparire solo in un messaggio Reconfigure.

22.20. Opzione Reconfigure Accept​

Un client usa l'opzione Reconfigure Accept per annunciare al server se il client è disposto ad accettare messaggi Reconfigure, e un server usa questa opzione per dire al client se accettare o meno messaggi Reconfigure. Il comportamento predefinito, in assenza di questa opzione, significa indisponibilità ad accettare messaggi Reconfigure, o istruzione di non accettare messaggi Reconfigure, rispettivamente per i messaggi del client e del server. La figura seguente dà il formato dell'opzione Reconfigure Accept:

 0                   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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTION_RECONF_ACCEPT | 0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • option-code — OPTION_RECONF_ACCEPT (20).
  • option-len — 0.