Passa al contenuto principale

9. Identificatore Unico DHCP (DUID)

Ogni client e server DHCP ha un DUID. I server DHCP utilizzano i DUID per identificare i client per la selezione dei parametri di configurazione e nell'associazione degli IA con i client. I client DHCP utilizzano i DUID per identificare un server nei messaggi in cui è necessario identificare un server. Vedere le sezioni 22.2 e 22.3 per la rappresentazione di un DUID in un messaggio DHCP.

I client e i server DEVONO (MUST) trattare i DUID come valori opachi e DEVONO (MUST) confrontare i DUID solo per l'uguaglianza. I client e i server NON DEVONO (MUST NOT) interpretare i DUID in alcun altro modo. I client e i server NON DEVONO (MUST NOT) limitare i DUID ai tipi definiti in questo documento, poiché in futuro potrebbero essere definiti tipi di DUID aggiuntivi.

Il DUID è trasportato in un'opzione perché può essere di lunghezza variabile e perché non è richiesto in tutti i messaggi DHCP. Il DUID è progettato per essere unico tra tutti i client e server DHCP e stabile per qualsiasi client o server specifico - cioè, il DUID utilizzato da un client o server NON DOVREBBE (SHOULD NOT) cambiare nel tempo, se possibile; ad esempio, il DUID di un dispositivo non dovrebbe cambiare a seguito di una modifica dell'hardware di rete del dispositivo.

La motivazione per avere più di un tipo di DUID è che il DUID deve essere globalmente unico e deve anche essere facile da generare. Il tipo di identificatore globalmente unico che è facile da generare per un dato dispositivo può variare notevolmente. Inoltre, alcuni dispositivi potrebbero non contenere alcuna memoria persistente. Conservare un DUID generato in un tale dispositivo non è possibile, quindi lo schema DUID deve accomodare tali dispositivi.

9.1. Contenuto del DUID

Un DUID consiste in un codice di tipo di due ottetti rappresentato in ordine di byte di rete, seguito da un numero variabile di ottetti che costituiscono l'identificatore effettivo. Un DUID non può essere più lungo di 128 ottetti (escluso il codice di tipo). I seguenti tipi sono attualmente definiti:

  • 1 - Indirizzo del livello di collegamento più tempo
  • 2 - ID univoco assegnato dal fornitore basato sul numero di impresa
  • 3 - Indirizzo del livello di collegamento

I formati per il campo variabile del DUID per ciascuno dei tipi sopra indicati sono mostrati di seguito.

9.2. DUID Basato sull'Indirizzo del Livello di Collegamento Più Tempo [DUID-LLT]

Questo tipo di DUID consiste in un campo di tipo di due ottetti contenente il valore 1, un codice di tipo hardware di due ottetti, quattro ottetti contenenti un valore temporale, seguiti dall'indirizzo del livello di collegamento di una qualsiasi interfaccia di rete connessa al dispositivo DHCP al momento in cui viene generato il DUID. Il valore temporale è il momento in cui viene generato il DUID, rappresentato in secondi da mezzanotte (UTC), 1 gennaio 2000, modulo 2^32. Il tipo hardware DEVE (MUST) essere un tipo hardware valido assegnato dall'IANA come descritto in RFC 826 [14]. Sia il tempo che il tipo hardware sono memorizzati in ordine di byte di rete. L'indirizzo del livello di collegamento è memorizzato in forma canonica, come descritto in RFC 2464 [2].

Il seguente diagramma illustra il formato di un DUID-LLT:

  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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 1 | hardware type (16 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| time (32 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. link-layer address (variable length) .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

La scelta dell'interfaccia di rete può essere completamente arbitraria, purché tale interfaccia fornisca un indirizzo del livello di collegamento globalmente unico per il tipo di collegamento, e lo stesso DUID-LLT DOVREBBE (SHOULD) essere utilizzato nella configurazione di tutte le interfacce di rete connesse al dispositivo, indipendentemente da quale indirizzo del livello di collegamento dell'interfaccia sia stato utilizzato per generare il DUID-LLT.

I client e i server che utilizzano questo tipo di DUID DEVONO (MUST) memorizzare il DUID-LLT in una memoria stabile e DEVONO (MUST) continuare a utilizzare questo DUID-LLT anche se l'interfaccia di rete utilizzata per generare il DUID-LLT viene rimossa. I client e i server che non hanno alcuna memoria stabile NON DEVONO (MUST NOT) utilizzare questo tipo di DUID.

I client e i server che utilizzano questo DUID DOVREBBERO (SHOULD) tentare di configurare il tempo prima di generare il DUID, se ciò è possibile, e DEVONO (MUST) utilizzare una qualche fonte di tempo (ad esempio, un orologio in tempo reale) nella generazione del DUID, anche se tale fonte di tempo non ha potuto essere configurata prima di generare il DUID. L'uso di una fonte di tempo rende improbabile che vengano generati due DUID-LLT identici se l'interfaccia di rete viene rimossa dal client e un altro client utilizza quindi la stessa interfaccia di rete per generare un DUID-LLT. Una collisione tra due DUID-LLT è molto improbabile anche se gli orologi non sono stati configurati prima di generare il DUID.

Questo metodo di generazione del DUID è raccomandato per tutti i dispositivi di elaborazione per scopi generali come computer desktop e laptop, e anche per dispositivi come stampanti, router, ecc., che contengono una qualche forma di memoria non volatile scrivibile.

Nonostante i nostri migliori sforzi, è possibile che questo algoritmo per la generazione di un DUID possa risultare in una collisione di identificatore client. Un client DHCP che genera un DUID-LLT utilizzando questo meccanismo DEVE (MUST) fornire un'interfaccia amministrativa che sostituisce il DUID esistente con un DUID-LLT appena generato.

9.3. DUID Assegnato dal Fornitore Basato sul Numero di Impresa [DUID-EN]

Questa forma di DUID è assegnata dal fornitore al dispositivo. Consiste nel numero di impresa privato registrato del fornitore come mantenuto dall'IANA [6], seguito da un identificatore univoco assegnato dal fornitore. Il seguente diagramma riassume la struttura di un DUID-EN:

  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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 2 | enterprise-number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| enterprise-number (contd) | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
. identifier .
. (variable length) .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

La fonte dell'identificatore è lasciata al fornitore che lo definisce, ma ogni parte identificatore di ogni DUID-EN DEVE (MUST) essere univoca per il dispositivo che la utilizza e DEVE (MUST) essere assegnata al dispositivo al momento della sua fabbricazione e memorizzata in una qualche forma di memoria non volatile. Il DUID generato DOVREBBE (SHOULD) essere registrato in una memoria non cancellabile. Il numero di impresa è il numero di impresa privato registrato del fornitore come mantenuto dall'IANA [6]. Il numero di impresa è memorizzato come un numero senza segno a 32 bit.

Un esempio di DUID di questo tipo potrebbe apparire così:

 +---+---+---+---+---+---+---+---+
| 0 | 2 | 0 | 0 | 0 | 9| 12|192|
+---+---+---+---+---+---+---+---+
|132|221| 3 | 0 | 9 | 18|
+---+---+---+---+---+---+

Questo esempio include i due ottetti di tipo 2, il numero di impresa (9), seguiti da otto ottetti di dati identificatore (0x0CC084D303000912).

9.4. DUID Basato sull'Indirizzo del Livello di Collegamento [DUID-LL]

Questo tipo di DUID consiste in due ottetti contenenti il tipo DUID 3, un codice di tipo hardware di rete di due ottetti, seguito dall'indirizzo del livello di collegamento di una qualsiasi interfaccia di rete che è permanentemente connessa al dispositivo client o server. Ad esempio, un host che ha un'interfaccia di rete implementata in un chip che è improbabile che venga rimosso e utilizzato altrove potrebbe utilizzare un DUID-LL. Il tipo hardware DEVE (MUST) essere un tipo hardware valido assegnato dall'IANA, come descritto in RFC 826 [14]. Il tipo hardware è memorizzato in ordine di byte di rete. L'indirizzo del livello di collegamento è memorizzato in forma canonica, come descritto in RFC 2464 [2]. Il seguente diagramma illustra il formato di un DUID-LL:

  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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 3 | hardware type (16 bits) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
. .
. link-layer address (variable length) .
. .
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

La scelta dell'interfaccia di rete può essere completamente arbitraria, purché tale interfaccia fornisca un indirizzo del livello di collegamento univoco e sia permanentemente collegata al dispositivo su cui viene generato il DUID-LL. Lo stesso DUID-LL DOVREBBE (SHOULD) essere utilizzato nella configurazione di tutte le interfacce di rete connesse al dispositivo, indipendentemente da quale indirizzo del livello di collegamento dell'interfaccia sia stato utilizzato per generare il DUID.

Il DUID-LL è raccomandato per i dispositivi che hanno un'interfaccia di rete permanentemente connessa con un indirizzo del livello di collegamento e non hanno memoria stabile non volatile e scrivibile. Il DUID-LL NON DEVE (MUST NOT) essere utilizzato da client o server DHCP che non possono determinare se un'interfaccia di rete è permanentemente collegata o meno al dispositivo su cui è in esecuzione il client DHCP.