Passa al contenuto principale

9. Identificatore univoco DHCP (DUID)

9. Identificatore univoco DHCP (DUID)

Ciascun client e server DHCP ha un DUID. I server DHCP usano i DUID per identificare i client ai fini della selezione dei parametri di configurazione e nell'associazione delle IA ai client. I client DHCP usano i DUID per identificare un server nei messaggi in cui è necessario identificare un server. Si vedano le sezioni 22.2 e 22.3 per la rappresentazione di un DUID in un messaggio DHCP.

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

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

Il motivo per avere più di un tipo di DUID è che il DUID deve essere univoco a livello globale e deve anche essere facile da generare. Il tipo di identificatore univoco globale facile da generare per un determinato dispositivo può differire 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 supportare tali dispositivi.

9.1. Contenuto del DUID

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

TipoDescrizione
1Indirizzo link-layer più tempo
2ID univoco assegnato dal fornitore basato sul numero Enterprise
3Indirizzo link-layer

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

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 link-layer di una qualsiasi interfaccia di rete collegata al dispositivo DHCP al momento in cui il DUID viene generato. Il valore temporale è il tempo in cui il DUID viene generato rappresentato in secondi a partire dalla mezzanotte (UTC) del 1° gennaio 2000, modulo 2^32. Il tipo hardware DEVE essere un tipo hardware valido assegnato da IANA come descritto in RFC 826 [14]. Sia il tempo che il tipo hardware sono memorizzati in network byte order. L'indirizzo link-layer è 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 del tutto arbitraria, purché tale interfaccia fornisca un indirizzo link-layer univoco a livello globale per il tipo di link, e lo stesso DUID-LLT DOVREBBE essere usato nella configurazione di tutte le interfacce di rete collegate al dispositivo, indipendentemente da quale indirizzo link-layer dell'interfaccia sia stato usato per generare il DUID-LLT.

I client e i server che usano questo tipo di DUID DEVONO memorizzare il DUID-LLT in memoria stabile e DEVONO continuare a usare questo DUID-LLT anche se l'interfaccia di rete usata per generare il DUID-LLT viene rimossa. I client e i server che non dispongono di alcuna memoria stabile NON DEVONO usare questo tipo di DUID.

I client e i server che usano questo DUID DOVREBBE tentare di configurare l'ora prima di generare il DUID, se possibile, e DEVONO usare una qualche fonte temporale (per esempio, un orologio in tempo reale) nel generare il DUID, anche se tale fonte temporale non potesse essere configurata prima di generare il DUID. L'uso di una fonte temporale rende improbabile che vengano generati due DUID-LLT identici se l'interfaccia di rete viene rimossa dal client e un altro client usa 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 calcolo a scopo generale come computer desktop e portatili, e anche per dispositivi quali stampanti, router e così via, che contengono una qualche forma di memoria non volatile scrivibile.

Nonostante i nostri migliori sforzi, è possibile che questo algoritmo per generare un DUID possa causare una collisione di identificatori client. Un client DHCP che genera un DUID-LLT usando questo meccanismo DEVE fornire un'interfaccia amministrativa che sostituisca il DUID esistente con un DUID-LLT appena generato.

9.3. DUID assegnato dal fornitore basato sul numero Enterprise [DUID-EN]

Questa forma di DUID è assegnata dal fornitore al dispositivo. Esso consiste nel Private Enterprise Number registrato del fornitore come mantenuto da 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 ciascuna parte identificatore di ciascun DUID-EN DEVE essere univoca per il dispositivo che la usa e DEVE essere assegnata al dispositivo al momento della sua fabbricazione e memorizzata in una qualche forma di memoria non volatile. Il DUID generato DOVREBBE essere registrato in memoria non cancellabile. L'enterprise-number è il Private Enterprise Number registrato del fornitore come mantenuto da IANA [6]. L'enterprise-number è memorizzato come numero unsigned a 32 bit.

Un esempio di DUID di questo tipo potrebbe essere il seguente:

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

Questo esempio include il tipo di due ottetti 2, l'Enterprise Number (9), seguito da otto ottetti di dati identificatore (0x0CC084D303000912).

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 link-layer di una qualsiasi interfaccia di rete permanentemente collegata al dispositivo client o server. Per esempio, un host che ha un'interfaccia di rete implementata in un chip improbabile da rimuovere e usata altrove potrebbe usare un DUID-LL. Il tipo hardware DEVE essere un tipo hardware valido assegnato da IANA, come descritto in RFC 826 [14]. Il tipo hardware è memorizzato in network byte order. L'indirizzo link-layer è 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 del tutto arbitraria, purché tale interfaccia fornisca un indirizzo link-layer univoco e sia permanentemente collegata al dispositivo su cui viene generato il DUID-LL. Lo stesso DUID-LL DOVREBBE essere usato nella configurazione di tutte le interfacce di rete collegate al dispositivo, indipendentemente da quale indirizzo link-layer dell'interfaccia sia stato usato per generare il DUID.

DUID-LL è raccomandato per i dispositivi che hanno un'interfaccia di rete permanentemente collegata con un indirizzo link-layer e non dispongono di memoria stabile non volatile scrivibile. DUID-LL NON DEVE essere usato da client o server DHCP che non possono stabilire se un'interfaccia di rete sia permanentemente collegata al dispositivo su cui il client DHCP è in esecuzione.