IPv6 Address
1. La Gran Pregunta: ¿Por qué necesitamos IPv6?
La razón principal es simple y alarmante: ¡simplemente no hay suficientes direcciones IPv4 disponibles!
IPv4, que ha sido el pilar de internet durante décadas, utiliza un sistema de 32 bits, lo que permite un total de 2^32 direcciones IP únicas. Cuando IPv4 fue diseñado hace más de 30 años, los creadores no tenían idea del crecimiento exponencial de internet que vemos hoy.
A lo largo de los años, se han implementado diversas soluciones a corto plazo para conservar el espacio de direcciones IPv4, como:
- VLSM (Variable Length Subnet Masking): Permite un uso más eficiente de las direcciones al dividir las redes en subredes de diferentes tamaños.
- Direcciones IP privadas: Rangos de direcciones que no son ruteables en internet y pueden ser reutilizadas en múltiples redes privadas.
- NAT (Network Address Translation): Permite que múltiples dispositivos en una red privada compartan una única dirección IP pública.
Sin embargo, estas son solo soluciones temporales. La cruda realidad es que las asignaciones de direcciones IPv4 están controladas por la IANA (Autoridad de Números Asignados de Internet), quien distribuye bloques a RIRs (Registros Regionales de Internet).
Desde hace varios años, los registros regionales de Internet han anunciado el agotamiento de las direcciones IPv4, marcando un punto crítico en la evolución de la red. Estos hechos reflejan la necesidad de avanzar hacia una solución sostenible y a largo plazo: la adopción de IPv6, el protocolo diseñado para garantizar el crecimiento continuo y la conectividad global de Internet.
2. IPv6 en Detalle: Un Universo de Posibilidades
IPv6 es una dirección de 128 bits. Esto es un salto monumental en comparación con IPv4. Para ponerlo en perspectiva:
- Si IPv4 nos daba 4.3 mil millones de direcciones, ¡IPv6 nos da 340 sextillones de sextillones de direcciones!
- Más precisamente, 2^128 direcciones IP. Es un número tan grande que es difícil de concebir.
2.1 Representación de IPv6 en Binario y Hexadecimal
Una dirección IPv6 consta de ocho grupos de 16 bits cada uno, separados por dos puntos (:). Cada grupo se representa en hexadecimal.
- Ejemplo de dirección IPv6 en binario:
0010000100001101:0011100000001000:0000000000000000:0000000000000000:0000000000000000:0000000000000000:0000000000000001:0000000000000001
- El mismo ejemplo en hexadecimal (la forma en que normalmente las vemos):
2001:3808:0000:0000:0000:0000:0001:0001
2.2 Acortando (Abreviando) Direcciones IPv6
Debido a su longitud, las direcciones IPv6 pueden abreviarse para facilitar su lectura y escritura. Existen dos reglas principales:
-
Omisión de ceros iniciales: Los ceros al principio de cada grupo de 16 bits pueden ser omitidos.
2001:0db8:8b00:0000:0000:0000:0001:0001se convierte en2001:db8:8b00:0:0:0:1:1
-
Doble dos puntos (::): Una secuencia consecutiva de uno o más grupos de ceros puede ser reemplazada por un doble dos puntos (
::). ¡Importante! Esto solo se puede hacer una vez por dirección.-
2001:db8:8b00:0:0:0:1:1puede abreviarse a2001:db8:8b00::1:1 -
Si tuviéramos
300d:00f2:0b34:2100:0000:0000:1200:0001/56, podríamos abreviarlo a300d:f2:b34:2100::1200:1/56. Aquí, los dos grupos de0000se reemplazan por::. -
Otro ejemplo de un caso con múltiples secuencias de ceros:
2001:0db8:8b00:0000:0011:0000:0000:0000/93- Si aplicamos la regla del
::en la secuencia más corta de ceros:2001:db8:8b00::11:0:0:0/93(no es la mejor abreviación) - Si se usa en la secuencia mas larga:
2001:db8:8b00:0:11::/93
Lo más común es elegir la secuencia más larga de ceros. Si hay dos secuencias de la misma longitud, se suele elegir la primera.
- Si aplicamos la regla del
-
2.3 Encontrando el Prefijo IPv6 (Global Unicast Addresses)
Un prefijo IPv6 se indica con una barra (/) seguida de un número, similar a la notación CIDR en IPv4. Este número indica cuántos bits del lado izquierdo de la dirección representan el prefijo de red.
Para una dirección global unicast, la estructura típica es:
- 48 bits de prefijo de enrutamiento global: Asignado por el ISP.
- 16 bits de identificador de subred: Utilizado por la empresa para crear subredes.
- 64 bits de identificador de interfaz: La porción de host de la dirección.
Ejemplo:
2001:0db8:8b00:0001:0000:0000:0000:0001/64
2001:0db8:8b00:Es el prefijo de enrutamiento global (48 bits).0001:Es el identificador de subred (16 bits).0000:0000:0000:0001Es el identificador de interfaz (64 bits).
En este ejemplo, el /64 indica que los primeros 64 bits forman el prefijo de la red.
2.4 Configurando Direcciones IPv6 en Routers
Configurar IPv6 en un router es un proceso sencillo. Aquí hay un ejemplo usando la interfaz de línea de comandos (CLI) de Cisco:
R1(config)#int g0/0
R1(config-if)#ipv6 address 2001:db8:8:0::1/64
R1(config-if)#no shutdown
Después de la configuración, podemos verificar las direcciones IPv6 con el comando show ipv6 interface brief.
R1#show ipv6 interface brief
GigabitEthernet0/0 [up/up]
FE80::C808:A0FF:FE08:A000
2001:DB8:8:0::1
GigabitEthernet0/1 [up/up]
FE80::C808:A0FF:FE08:A001
2001:DB8:8:1::1
GigabitEthernet0/2 [up/up]
FE80::C808:A0FF:FE08:A002
2001:DB8:8:2::1
GigabitEthernet0/3 [administratively down/down]
unassigned
Observa que, además de las direcciones unicast configuradas, aparecen automáticamente las direcciones Link-Local (fe80:).
2.5 EUI-64 (Extended Unique Identifier - 64-bit)
EUI-64 es un método para generar el identificador de interfaz (la porción de 64 bits de la dirección IPv6 de host) a partir de una dirección MAC (48 bits). Es un mecanismo que garantiza la unicidad del identificador de interfaz dentro de un enlace.
Pasos para convertir una dirección MAC a un identificador de interfaz EUI-64:
-
Divide la dirección MAC en dos mitades de 24 bits.
Ejemplo MAC:
0c18.2236.8500—>0c18.22 - 36.8500 -
Inserta el valor hexadecimal FFFE en el medio.
0C18.22 - 36.8500—>0c18.22ff.fe36.8500 -
Invierte el 7º bit del primer byte.
El primer byte de
0Ces00001100en binario. El7ºbit (contando de derecha a izquierda, empezando por0) es el1. Al invertirlo,00001100se convierte en00001110, que es0een hexadecimal.
✨ La dirección EUI-64 final sería: 0e18.22ff.fe36.8500
Configuración de EUI-64 en un router:
R1(config)#int g0/0
R1(config-if)#ipv6 address 2001:db8:8:0::/64 eui-64
R1(config-if)#no shutdown
Al usar eui-64, el router automáticamente generará la porción de host de la dirección IPv6 utilizando su dirección MAC de la interfaz.
R1#show ipv6 interface brief
GigabitEthernet0/0 [up/up]
FE80::AE0C:38FF:FE10:1A00
2001:DB8:8:0:AE0C:38FF:FE10:1A00
Aquí, AE0C:38FF:FE10:1A00 es el identificador de interfaz generado por EUI-64.
3. Tipos de Direcciones IPv6
IPv6 categoriza las direcciones en varios tipos, cada uno con un propósito específico:
- Direcciones Unicast Globales (Global Unicast Addresses):
Son direcciones públicas que se pueden usar en internet.
Generalmente empiezan con 2000::/3 (es decir, 2000 a 3fff).
Se asignan de manera única a una interfaz y son globalmente únicas.
- Estructura:
Prefijo de enrutamiento global (48 bits): Asignado por el ISP.
ID de subred (16 bits): Utilizado para subredes dentro de la organización.
ID de interfaz (64 bits): Identifica el host dentro de la subred.
Ejemplo:
2001:0db8:8b00:0001:0000:0000:0000:0001/64
- Direcciones Unicast Locales Únicas (Unique Local Addresses - ULA):
Son direcciones privadas para uso interno, no enrutables en internet. Equivalentes a las direcciones IP privadas en IPv4 (RFC 1918). Deben comenzar con fc00::/7 (es decir, fc00 a fdff). Un prefijo de actualización posterior estableció que los dos primeros dígitos deben ser fd para garantizar que el bit 8 sea 1. El ID global debe generarse aleatoriamente para minimizar colisiones si las redes se fusionan.
Estructura:
fd (8 bits): Indica que es una dirección ULA.
ID global (40 bits): Generado aleatoriamente.
ID de subred (16 bits): Para subredes dentro del dominio ULA.
ID de interfaz (64 bits): Identifica el host.
Ejemplo:
fd45:93ac:8a8f:0001:0000:0000:0000:0001/64
- Direcciones Link-Local (Link-Local Addresses):
Se generan automáticamente en interfaces habilitadas para IPv6. Solo son válidas en el enlace local (un segmento de red). No son enrutables fuera del enlace. Comienzan con fe80::/10 (de fe80 a febf). Los 54 bits después de fe80::/10 deben ser ceros. El identificador de interfaz se genera usando EUI-64 o aleatoriamente. Los routers no enrutarán paquetes con direcciones link-local fuera del enlace.
Usos comunes de direcciones link-local:
- Comunicación automática: Dispositivos en el mismo segmento de red pueden comunicarse.
- Protocolos de enrutamiento: OSPFv3 utiliza direcciones link-local para adyacencias de vecinos.
- Descubrimiento de vecinos (NDP): El reemplazo de ARP en IPv6 utiliza link-local.
Ejemplo:
fe80::e0a2:b1ff:fe2c:33d0
- Direcciones Multicast:
Envían un paquete a un grupo de interfaces. Comienzan con ff00::/8. IPv6 no usa broadcast. En su lugar, utiliza multicast para la funcionalidad de difusión.
Rangos importantes de multicast IPv6:
| Dirección | Alcance (Scope) | Descripción |
|---|---|---|
ff01::/8 |
Interface-Local | Los paquetes se quedan en el dispositivo. |
ff02::/8 |
Link-Local | Los paquetes se quedan en el segmento local. |
ff05::/8 |
Site-Local | Los paquetes se quedan dentro de la organización. |
ff08::/8 |
Organization-Local | Posible para enrutar dentro de una organización, sin límites locales. |
ff0E::/8 |
Global | No tiene límites. Posible para enrutar sobre Internet. |
Direcciones Link-Local Importantes:
| Propósito (Función como broadcast) | Dirección IPv6 | Dirección IPv4 equivalente |
|---|---|---|
| Todos los nodos/hosts | ff02::1 |
224.0.0.1 |
| Todos los routers | ff02::2 |
224.0.0.2 |
| Todos los routers OSPF | ff02::5 |
224.0.0.5 |
| Todos los OSPF DRs/BDRs | ff02::6 |
224.0.0.6 |
| Todos los routers RIP | ff02::9 |
224.0.0.9 |
| Todos los routers EIGRP | ff02::A |
224.0.0.10 |
- Direcciones Anycast:
Una nueva característica de IPv6. Permite que una dirección IP sea asignada a múltiples interfaces. Cuando un host envía un paquete a una dirección anycast, el paquete es entregado a la interfaz “más cercana” (según la métrica de enrutamiento). Los routers son configurados con la misma dirección IPv6 anycast. Utilizan un protocolo de enrutamiento para anunciar la dirección. Cuando los hosts envían paquetes a esa dirección, se enrutan a la instancia de router más cercana.
Ejemplo:
Una dirección anycast para un servicio DNS 2001:db8:1:1::99/128 anycast podría ser anunciada por varios routers, y los clientes se conectarían al router con la ruta más corta.
- Otras Direcciones IPv6 Especiales:
-
:: (Unspecified address): La dirección no especificada. No se puede usar en un paquete IPv6.Cuando un dispositivo no conoce su propia dirección IPv6. Equivalente a 0.0.0.0 en IPv4.
-
::1 (Loopback address): La dirección de loopback local. Utilizada para probar la pila de protocolo local. Equivalente a 127.0.0.1 en IPv4.
4. Resumen de Direcciones IPv6 Importantes
Aquí tienes una tabla que resume las clasificaciones y rangos de direcciones IPv6 clave:
| Clasificación de Dirección | Prefijo / Rango de Inicio | Descripción | IPv4 Equivalente | Notas |
|---|---|---|---|---|
| Unicast Global | 2000::/3 | Direcciones públicas y enrutables en Internet. | Direcciones IP públicas | La mayoría de las direcciones IPv6 empiezan así. |
| Unique Local (ULA) | fd00::/8 | Direcciones privadas, no enrutables en Internet. | Direcciones IP privadas (RFC 1918) | Utilizadas dentro de una organización. |
| Link-Local | fe80::/10 | Válidas solo en el enlace local, no enrutables. Generadas automáticamente. | (No hay un equivalente directo, funciona como ARP/DHCP auto-config) | Utilizadas para comunicación en el mismo segmento y protocolos de enrutamiento. |
| Multicast | ff00::/8 | Envía paquetes a un grupo de interfaces. Reemplaza la función de broadcast. | Direcciones Multicast | Diferentes ámbitos (link-local, site-local, global). |
| Anycast | (Rango unicast) | Una dirección asignada a múltiples interfaces; entregada a la “más cercana”. | (No hay un equivalente directo) | Utilizada para servicios de alta disponibilidad y balanceo de carga. |
| No especificada | :: | Indica la ausencia de una dirección. No se puede enrutar. | 0.0.0.0 | Utilizada durante la inicialización. |
| Loopback | ::1 | Para probar la pila de red local. | 127.0.0.1 | No sale del dispositivo. |