Les adresses ipv6 sont construites hiérarchiquement. Un premier niveau découpe l'adresse en deux parties logiques:
Pour les adresses unicast, à l'exception de l'adresse non spécifiée et de l'adresse de bouclage, la longueur de l’identifiant d'interface doit être de 64 bits. Cette taille permet d'approcher une probabilité de conflit quasi nulle. Initialement, pour des raisons d'auto-configuration, l'adresse d'interface était directement déduite de l'adresse matérielle. Ce n'est pas une obligation et cet usage tant à disparaître. Il existe plusieurs méthodes pour construire cette valeur de 64 bits (manuelle, dérivée d'adresses matérielles existantes, aléatoire, cryptographique).
Pour les serveurs critiques, il peut être intéressant de définir manuellement l'adresse de l'interface afin de la rendre facilement mémorisable et pouvoir contacter la machine même si le serveur DNS est HS.
L'avantage d'utiliser l'adresse matérielle de l'interface est que l'unicité de cette valeur est presque toujours assurée. Cette valeur est constante tant que la carte réseau de la machine n'est pas changée cependant ces valeurs sont difficilement mémorisables et peuvent fournir des informations (identification d'un utilisateur, de la marque, du modèle de l’hôte).
Les adresses unicast de lien-local sont en général construites en utilisant ce genre d' identifiant construit via l'adresse matérielle. Par contre pour les adresses unicast globales il est conseillé de n'utiliser cette méthode de construction que pour les machines clientes mais pas pour les serveurs.
L'IEEE à définit les identificateur:
Si l'hote possède un identificateur EUI-64, l'identifiant d'interface peut être construit par altération mineure sur les bits 7 et 8 de l'octet de poids fort.
Pour l'EUI-64, les 24 bits de poids fort désignent le constructeur et les 40 bits de poids faible le numéro de série. Parmi les bits de poids fort du constructeur, les bit 7 et 8 du premier octet ont une signification particulière:
bit 7 | noté u pour universal, vaut 0 si l'identificateur EUI-64 est de portée globale, 1 si la portée est locale. |
---|---|
bit 8 | noté g pour group, vaut 1 pour un identificateur EUI-64 de multicast ou 0 sinon. |
L'identifiant d'interface à 64 bits d'une adresse IPv6 peut être dérivé d'une adresse EUI-64 simplement en inversant la valeur du bit u. Pour la construction des adresses IPv6 on à préféré utiliser la valeur 1 pour marquer l'unicité mondiale (inversion de la sémantique par rapport à EUI-64) cela permet de garder la valeur 0 pour une numérotation manuelle, autorisant à numéroter simplement les interfaces locales à partir de 1
IEEE définit également des règles permettant de passer d'un identifiant EUI-48 à un identifiant d'interface:
L'identifiant basé sur des adresses matérielle défini initialement par IEEE peut poser des problèmes de respect de la vie privée car il identifie fortement la machine d'un utilisateur qui même s'il est nomade garde ce même identifiant. D'autres algorithmes de construction d'identifiant d'interface ont donc été proposés.: construction aléatoire ou par hachage d'adresse matérielle.
Des propositions sont également en cours pour lier l'identifiant d'interface à la clé publique de l'émetteur du paquet. Elle pourrait servir pour sécuriser les protocoles de découverte de voisinage ou pour la gestion de la multidomiciliation.
IPv6 généralise l'usage de multiples adresses sur une même interface:
Les adresses aléatoires respectueuses de la vie privée sont temporaires et sont renouvelées périodiquement. C'est le système d'exploitation gérant l'interface qui assure la cohérence notamment en passant une adresse dans l'état déprécié pour permettre la clôture des sessions et connexions existantes parallèlement à la procédure d'activation d'une nouvelle adresse valide pour les nouvelles connexions aux sessions applicatives.