IPv6

5. Tipos de Direcciones

5.5. Identificador de Interfaz de Red

EUI-64

La mayoría de los protocolos que trabajan en la capa 2 del modelo OSI usan una de las tres numeraciones manejadas por el IEEE:
  • MAC-48
  • EUI-48
  • EUI-6

Que se diseñan para ser globalmente únicos. Un equipo en la red se puede identificar mediante sus direcciones MAC e IP.

Las direcciones MAC son únicas a nivel mundial, puesto que son escritas directamente, en forma binaria, en el hardware en su momento de fabricación. Debido a esto, las direcciones MAC son a veces llamadas burned-in addresses, en inglés.

Todas las direcciones que utilizan los prefijos comprendidos entre 001 y 111 deben utilizar también un identificador de interfaz de 64 bits que está derivado de la dirección EUI-64.

La dirección EUI-64 de 64 bits fue definida por el Instituto de ingeniería eléctrica y electrónica (IEEE, Institute of Electrical and Electronic Engineers). Las direcciones EUI-64 se asignan a una tarjeta adaptadora de red o se derivan de direcciones IEEE 802.

En este documento se trata la derivación de los identificadores de interfaz de IPv6 según RFC 2373. Para tratar cuestiones relativas a la privacidad, se describe una derivación alternativa del identificador de interfaz de IPv6 que cambia con el tiempo en el borrador para Internet titulado "Privacy Extensions for Stateless Address Autoconfiguration in IPv6" (Extensiones de privacidad para la configuración automática de direcciones sin estado en IPv6).

Uno de los beneficios clave de IPv6 sobre IPv4 es su capacidad para abordar interfaz automática. Al implementar el formato de la IEEE de 64 bits extendido Identificador Único (EUI-64), un host puede asignar automáticamente sí mismo un identificador de interfaz IPv6 de 64 bits única sin necesidad de configuración manual o DHCP. Esto se logra en las interfaces Ethernet haciendo referencia a la dirección de 48 bits ya MAC única, y reformatear ese valor para que coincida con la especificación EUI-64.

RFC 2373 dicta el proceso de conversión, que se puede describir como que tiene dos pasos.

El primer paso es convertir la dirección MAC de 48 bits a un valor de 64 bits. Para ello, partimos de la dirección MAC en sus dos mitades de 24 bits: el punto de vista organizativo Unique Identifier (OUI) y la parte específica del NIC. Luego se inserta el 0xFFFE valor hexadecimal de 16 bits entre estas dos mitades para formar una dirección de 64 bits.

Dirección MAC EUI de 48 bits + 0xFFFE 16bits = 64 bits !

Figura 1: Proceso EUI-64

¿Por 0xFFFE?

Como se explica en las Directrices de la IEEE para EUI-64 autoridad de registro, este es un valor reservado que los fabricantes de equipos no pueden incluir en EUI-64 asignaciones de direcciones "reales". En otras palabras, cualquier dirección EUI-64 que tiene 0xFFFE inmediatamente después de su porción OUI puede ser reconocido por haber sido generado a partir de una dirección EUI-48 (conocida como MAC).
El segundo paso es invertir la bandera universales / local (U / L) (bit 7) en la porción OUI de la dirección.

OUI: Identificador único organizacional.

Globalmente direcciones únicas asignadas por el IEEE tienen originalmente este bit puesto a cero, lo que indica la singularidad mundial. Del mismo modo, direcciones creadas a nivel local, tales como los utilizados para las interfaces virtuales o una EUI-48,  configurada manualmente por un administrador, tendrán este bit puesto a uno.

El bit U / L se invierte cuando se utiliza una dirección EUI-64 como una interfaz ID IPv6.

En el formato EUI-64 modificado resultante, el bit "u" se establece en uno (1) para indicar alcance universal, y se establece en cero (0) para indicar  ámbito local.

Figura 2: Cambio de Bit.

Con esto tenemos 64 bits que sumados a los 64 bits que corresponden a la parte de Red de IPV6 forman los 128 bits de Direccionamiento de IPV6.

¿Por que se invierte el 7mo bit? . La justificación que se da en RFC4291 indica que esto tiene que ver con el caso que NO hay MAC por ejemplo para enlaces sobre vínculos seriales.

Veamos en un solo dibujo como es el proceso completo.

Veamos como se ve esto en una PC con Windows haciendo ipconfig /all



En la figura previa se pueden observar:

1) Reglas de simplificación de IPv6.

2) El agregado de FFFE entre medio de los 6 Hextetos de la MAC para EUI-64.

3) La inversión del 7mo bit para generar la ID de interfaz en IPV6 con EUI-64.


A modo de comentario, este procedimiento de asignación o creación de una dirección IEEE EUI-64, se usa en otros ambitos de manera similar.
Por ejemplo, en Sensores Inalámbricos de una red de Area Personal (WPAN)  sin posibiliad de correr IPv6 uitilizan un estandar conocido como 6LoWPAN, en este estandar los primeros 24 bits de la dirección de capa de enlace lógico se forman de la manera mencionada dejando algunos bits para casos especiales.

Figura 3: EUI-64 en 6LoWPN

En el caso de 6LoWPAN, los bits L se usan para diferenciar de dirección Local o Universal al igual que lo visto para IPV6.. y el M para Multicast.
Para el caso de 6LoWPAN, los 40 bits que se agregan son establecidos por el fabricante para cada dispositivo como una especie de nro. de serie, en este caso a diferencia de la implementación para IPV6/Ethernet no se precisa incluir 0xFFFE.
A modo de referencia el precio de los 24 bit de OUI eran de 1650u$ en 2009, esto sería el precio de los primeros 24 bits que corresponde a la organización.

Windows: ID de interfaz generadas aleatoriamente

Según el sistema operativo, un dispositivo puede utilizar una ID de interfaz generada aleatoriamente en lugar de utilizar la dirección MAC y el proceso EUI-64. 

Por ejemplo, comenzando con Windows Vista, Windows utiliza una ID de interfaz generada aleatoriamente en lugar de una ID de interfaz creada mediante EUI-64. Windows XP y sistemas operativos Windows anteriores utilizaban EUI-64.

La configuración automática de direcciones IPv6 en Windows 7/8/10 no se utiliza de la forma estándar, a partir de la dirección MAC en formato EUI-64, Microsoft ha decidido asignar direcciones temporales mediante la generación aleatoria. Esto decisión puede convertirse en una pesadilla para los administradores, y resulta bastante engorroso al asignar servidores de DNS.

Podemos cambiar este comportamiento con los siguientes comandos, deberán ser ejecutados en una ventana de consola en modo administrador:

netsh interface ipv6 set privacy state=disabled store=active
netsh interface ipv6 set privacy state=disabled store=persistent
netsh interface ipv6 set global randomizeidentifiers=disabled store=active
netsh interface ipv6 set global randomizeidentifiers=disabled store=persistent

También en alguna documentación se indica que se puede  cambiar para que utilice el proceso EUI-64  con

netsh interface ipv6 set global randomizeidentifiers=disabled
Luego ejecutar :

ipconfig /renew6


¿Y despues?

Después de que se establece una ID de interfaz, ya sea mediante el proceso EUI-64 o mediante la generación aleatoria, se puede combinar con un prefijo IPv6 para crear una dirección unicast global o una dirección link-local.

  • Dirección unicast global: al utilizar SLAAC, el dispositivo recibe su prefijo del mensaje de RA de ICMPv6 y lo combina con la ID de interfaz.
  • Dirección link-local: los prefijos link-local comienzan con FE80::/10. Los dispositivos suelen utilizar FE80::/64 como prefijo o duración de prefijo, seguido de la ID de interfaz.
Al utilizar SLAAC (SLAAC solamente o SLAAC con DHCPV6), los dispositivos reciben el prefijo y la duración de prefijo del mensaje de RA de ICMPv6. Debido a que el mensaje de RA designa el prefijo de la dirección, el dispositivo debe proporcionar únicamente la porción de ID de interfaz de su dirección. Como se indicó anteriormente, la ID de interfaz se puede generar de forma automática mediante el proceso EUI-64, o, según el OS, se puede generar de forma aleatoria.
Con la información del mensaje de RA y la ID de interfaz, el dispositivo puede establecer su dirección unicast global.
Después de que se asigna una dirección unicast global a una interfaz, el dispositivo con IPv6 habilitado genera la dirección link-local automáticamente. Los dispositivos con IPv6 habilitado deben tener, como mínimo, la dirección link-local. Recuerde que una dirección IPv6 link-local permite que un dispositivo se comunique con otros dispositivos con IPv6 habilitado en la misma subred.
Las direcciones IPv6 link-local se utilizan para diversos fines, incluidos los siguientes:
  • Los hosts utilizan la dirección link-local del router local para obtener la dirección IPv6 de gateway predeterminado.
  • Los routers intercambian mensajes de protocolo de enrutamiento dinámico mediante direcciones link-local.
  • Las tablas de enrutamiento de los routers utilizan la dirección link-local para identificar el router del siguiente salto al reenviar paquetes IPv6.
Las direcciones link-local se pueden establecer dinámicamente o se pueden configurar de forma manual como direcciones linklocal estáticas.
  • Dirección link-local asignada dinámicamente
  • La dirección link-local se crea dinámicamente mediante el prefijo FE80::/10 y la ID de interfaz.
De manera predeterminada, los routers en los que se utiliza Cisco IOS utilizan EUI-64 para generar la ID de interfaz para todas las direcciones link-local en las interfaces IPv6. Para las interfaces seriales, el router utiliza la dirección MAC de una interfaz Ethernet. Recuerde que una dirección link-local debe ser única solo en ese enlace o red. Sin embargo, una desventaja de utilizar direcciones link-local asignadas dinámicamente es su longitud, que dificulta identificar y recordar las direcciones asignadas.
Figura 4:ID gen. aleatoriamente