9. DHCP Unique Identifier (DUID) (Identificateur unique DHCP)
9. DHCP Unique Identifier (DUID) (Identificateur unique DHCP)
Chaque client et serveur DHCP a un DUID. Les serveurs DHCP utilisent le DUID pour identifier les clients afin de sélectionner les paramètres de configuration et dans l'association des IA avec les clients. Les clients DHCP utilisent le DUID pour identifier les serveurs dans les messages où l'identification du serveur est nécessaire. Pour la représentation du DUID dans les messages DHCP, voir les sections 22.2 et 22.3.
Les clients et serveurs doivent traiter le DUID comme une valeur opaque et ne comparer les DUID que pour l'égalité. Les clients et serveurs ne doivent pas interpréter le DUID de toute autre manière. Les clients et serveurs ne doivent pas limiter le DUID aux types définis dans ce document, car des types DUID supplémentaires peuvent être définis à l'avenir.
Le DUID est transporté dans une option car il peut être de longueur variable et n'est pas nécessaire dans tous les messages DHCP. Le DUID est conçu pour être unique parmi tous les clients et serveurs DHCP et stable pour tout client ou serveur particulier - c'est-à-dire que le DUID utilisé par un client ou un serveur ne doit pas changer dans le temps autant que possible; par exemple, le DUID d'un appareil ne doit pas changer à la suite de changements dans le matériel réseau de l'appareil.
La raison d'avoir plusieurs types de DUID est que le DUID doit être globalement unique et doit être facile à générer. Le type d'identificateur globalement unique qui est facile à générer pour un appareil donné peut varier considérablement. De plus, certains appareils peuvent ne pas contenir de stockage persistant. Il est impossible de conserver un DUID généré dans de tels appareils, donc le schéma DUID doit s'adapter à de tels appareils.
9.1. DUID Contents (Contenu DUID)
Le DUID est composé d'un code de type de deux octets représenté en ordre d'octets réseau, suivi d'un nombre variable d'octets constituant l'identificateur réel. La longueur du DUID ne peut pas dépasser 128 octets (hors code de type). Les types suivants sont actuellement définis:
- Adresse de couche de liaison plus temps
- ID unique assigné par le fournisseur basé sur le numéro d'entreprise
- Adresse de couche de liaison
Le format des champs variables du DUID pour chacun des types ci-dessus est illustré ci-dessous.
9.2. DUID Based on Link-layer Address Plus Time [DUID-LLT] (DUID basé sur l'adresse de couche de liaison plus le temps)
Ce type de DUID est composé d'un champ de type de deux octets contenant la valeur 1, d'un code de type de matériel de deux octets, de quatre octets contenant une valeur temporelle et de l'adresse de couche de liaison de n'importe quelle interface réseau connectée au dispositif DHCP au moment où le DUID est généré. La valeur temporelle est l'heure à laquelle le DUID a été généré, exprimée en secondes depuis le 1er janvier 2000 à minuit (UTC), modulo 2^32. Le type de matériel doit être un type de matériel valide assigné par l'IANA conformément à RFC 826 [14]. Le temps et le type de matériel sont tous deux stockés en ordre d'octets réseau. L'adresse de couche de liaison est stockée sous forme canonique, comme décrit dans RFC 2464 [2].
Le diagramme suivant illustre le format du 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 sélection de l'interface réseau peut être complètement arbitraire, tant que cette interface fournit une adresse de couche de liaison globalement unique pour le type de lien, et le même DUID-LLT doit être utilisé pour configurer toutes les interfaces réseau connectées à l'appareil, quelle que soit l'adresse de couche de liaison de l'interface utilisée pour générer le DUID-LLT.
Les clients et serveurs qui utilisent ce type de DUID doivent stocker le DUID-LLT dans un stockage stable et doivent continuer à utiliser ce DUID-LLT même si l'interface réseau utilisée pour générer le DUID-LLT est supprimée. Les clients et serveurs sans stockage stable ne doivent pas utiliser ce type de DUID.
Les clients et serveurs qui utilisent ce DUID devraient essayer de configurer le temps avant de générer le DUID si possible, et doivent utiliser une source de temps (par exemple, une horloge en temps réel) lors de la génération du DUID, même si cette source de temps ne peut pas être configurée avant de générer le DUID. L'utilisation d'une source de temps rend moins probable la génération de deux DUID-LLT identiques si une interface réseau est retirée d'un client et qu'un autre client utilise ensuite la même interface réseau pour générer un DUID-LLT. Même si l'horloge n'est pas configurée avant de générer le DUID, une collision entre deux DUID-LLT est très improbable.
Il est recommandé que tous les appareils informatiques à usage général (tels que les ordinateurs de bureau et les ordinateurs portables) et les appareils qui contiennent une forme de stockage non volatile inscriptible (tels que les imprimantes, les routeurs, etc.) utilisent cette méthode de génération de DUID.
Malgré nos meilleurs efforts, cet algorithme de génération de DUID peut toujours entraîner des collisions d'identifiants de client. Les clients DHCP qui utilisent ce mécanisme pour générer des DUID-LLT doivent fournir une interface de gestion pour remplacer un DUID-LLT existant par un DUID-LLT nouvellement généré.
9.3. DUID Assigned by Vendor Based on Enterprise Number [DUID-EN] (DUID assigné par le fournisseur basé sur le numéro d'entreprise)
Ce format de DUID est assigné par le fournisseur à l'appareil. Il est composé du numéro d'entreprise privé enregistré du fournisseur maintenu par l'IANA [6] et d'un identificateur unique assigné par le fournisseur. Le diagramme suivant résume la structure du 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 source de l'identifiant est déterminée par le fournisseur qui le définit, mais chaque partie d'identifiant de chaque DUID-EN doit être unique pour l'appareil qui l'utilise, et doit être assignée à l'appareil au moment de la fabrication de l'appareil et stockée sous une forme de stockage non volatile. Le DUID généré devrait être enregistré dans un stockage non effaçable. Le numéro d'entreprise est le numéro d'entreprise privé enregistré du fournisseur maintenu par l'IANA [IANA]. Le numéro d'entreprise est stocké comme un nombre non signé de 32 bits.
Un exemple de ce type de DUID pourrait ressembler à ceci:
+---+---+---+---+---+---+---+---+
| 0 | 2 | 0 | 0 | 0 | 9| 12|192|
+---+---+---+---+---+---+---+---+
|132|221| 3 | 0 | 9 | 18|
+---+---+---+---+---+---+
Cet exemple comprend le type de deux octets 2, le numéro d'entreprise (9), suivi de huit octets de données d'identifiant (0x0CC084D303000912).
9.4. DUID Based on Link-layer Address [DUID-LL] (DUID basé sur l'adresse de couche de liaison)
Ce type de DUID est composé de deux octets contenant le type DUID 3, d'un code de type de matériel réseau de deux octets et de l'adresse de couche de liaison de n'importe quelle interface réseau connectée de manière permanente au dispositif client ou serveur. Par exemple, un hôte avec une interface réseau implémentée sur une puce qui est peu susceptible d'être retirée et utilisée ailleurs peut utiliser DUID-LL. Le type de matériel doit être un type de matériel valide assigné par l'IANA conformément à RFC 826 [14]. Le type de matériel est stocké en ordre d'octets réseau. L'adresse de couche de liaison est stockée sous forme canonique, comme décrit dans RFC 2464 [2]. Le diagramme suivant illustre le format du 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 sélection de l'interface réseau peut être complètement arbitraire, tant que cette interface fournit une adresse de couche de liaison unique et est connectée de manière permanente à l'appareil qui génère le DUID-LL. Le même DUID-LL devrait être utilisé pour configurer toutes les interfaces réseau connectées à l'appareil, quelle que soit l'adresse de couche de liaison de l'interface utilisée pour générer le DUID.
Il est recommandé que les appareils qui ont des interfaces réseau avec des adresses de couche de liaison connectées de manière permanente et qui n'ont pas de stockage stable non volatile et inscriptible utilisent DUID-LL. Les clients ou serveurs DHCP qui ne peuvent pas déterminer si une interface réseau est connectée de manière permanente à l'appareil sur lequel le client DHCP s'exécute ne doivent pas utiliser DUID-LL.