Una dirección IPv6 (proveniente de dirección de Internet Protocol versión 6) es una etiqueta numérica usada para identificar una (elemento de comunicación/conexión) de un ordenador o nodo de red participando en una red IPv6.
Las direcciones IP se usan para identificar de manera única una interfaz de red de un host, localizarlo en la red y de ese modo encaminar paquetes IP entre hosts. Con este objetivo, las direcciones IP aparecen en campos de la cabecera IP indicando el origen y destino del paquete.
IPv6 es el sucesor del primer protocolo de direccionamiento de Internet, Internet Protocol versión 4 (IPv4). A diferencia de IPv4, que utiliza una dirección IP de 32 bits, las direcciones IPv6 tienen un tamaño de 128 bits. Por lo tanto, IPv6 tiene un espacio de direcciones mucho más amplio que IPv4.
right|400px|thumb|Descomposición de una dirección IPv6 en hexadecimal y binario.
Tipos de direcciones IPv6 Las direcciones IPv6 se clasifican según las políticas de direccionamiento y encaminamiento más comunes en redes: direcciones unicast, anycast y multicast.RFC 4291, IP Version 6 Addressing Architecture, R. Hinden, S. Deering (Febrero de 2006)
Una dirección unicast identifica una única interfaz de red. El protocolo de Internet entrega los paquetes enviados a una dirección unicast a la interfaz específica. Una dirección anycast es asignada a un grupo de interfaces, normalmente de nodos diferentes. Un paquete enviado a una dirección anycast se entrega únicamente a uno de los miembros, típicamente el host con menos coste, según la definición de métrica del protocolo de encaminamiento. Las direcciones anycast no se identifican fácilmente pues tienen el mismo formato que las unicast, diferenciándose únicamente por estar presente en varios puntos de la red. Casi cualquier dirección unicast puede utilizarse como dirección anycast. Una dirección multicast también es usada por múltiples interfaces, que consiguen la dirección multicast participando en el protocolo de multidifusión (multicast) entre los routers de red. Un paquete enviado a una dirección multicast es entregado a todos los interfaces que se hayan unido al grupo multicast correspondiente.
IPv6 no implementa direcciones broadcast. El mismo efecto puede lograrse enviando un paquete al grupo de multicast de enlace-local todos los nodos (all-nodes) ff02::1. Sin embargo, no se recomienda el uso del grupo all-nodes, y la mayoría de protocolos IPv6 usa un grupo multicast de enlace-local exclusivo en lugar de molestar a todos los interfaces de la red.
Formatos de dirección Una dirección IPv6 está formada por 128 bits. Las direcciones se clasifican en diferentes tipos: unicast, multicast y anycast. Cada uno de los tipos define valores específicos para subgrupos de los 128 bits, asociando dicho valor con las características especiales del tipo.
Formato de dirección Unicast y Anycast Las direcciones unicast y anycast generalmente se dividen en dos grupos lógicos: los primeros 64 bits identifican el prefijo de red, y son usados para encaminamiento; los últimos 64 bits identifican el interface de red del host.
{| class="wikitable" style="width: 750px" |+ Ejemplo de formato de dirección unicast (el tamaño del routing-prefix es variable) |- !style="width:0;"|bits |style="text-align: center; width: 37.5%;"| 48 (o más) |style="text-align: center; width: 12.5%;"| 16 (o menos) |style="text-align: center; width: 50%;"| 64 |- !style="width:0;"|campo |style="text-align: center;"| routing prefix |style="text-align: center;"| subnet id |style="text-align: center;"| interface identifier
El prefijo de red (network prefix), que consiste en el prefijo de encaminamiento (routing prefix) junto al identificador de subred (subnet id), está situado en los 64 bits más significativos de la dirección IPv6. El tamaño del routing prefix puede variar; un prefijo de mayor tamaño significa un tamaño menor para subnet id. El subnet id permite a los administradores de red definir subredes dentro de la red disponible.
Los 64 bits de identificador del interface (interface identifier) son generados automáticamente con la dirección MAC del interface y el algoritmo EUI-64 modificado, obtenidos de un servidor DHCPv6, establecidos aleatoriamente o asignados manualmente.
Una dirección de enlace-local es una dirección unicast, pero usando un valor específico para el network prefix. {| class="wikitable" style="width: 750px" |+ Formato de dirección de enlace-local |- !style="width:0;"|bits |style="text-align: center; width: 7.8%;"| 10 |style="text-align: center; width: 42.2%;"| 54 |style="text-align: center; width: 50%;"| 64 |- !style="width:0;"|campo |style="text-align: center;"| prefijo |style="text-align: center;"| ceros |style="text-align: center;"| interface identifier
El campo prefijo contiene el valor binario 1111111010 (fe80::/10). Los 54 ceros siguientes consiguen que el prefijo de red sea el mismo para todas las direcciones locales, y por tanto no enrutable.
Formato de dirección Multicast
Las direcciones multicast se construyen en función de determinadas reglas, dependiendo de la aplicación.
{| class="wikitable" style="width: 750px" |+ Formato general de dirección multicast |- !style="width:0;"|bits |style="text-align: center; width: 6.2%;"| 8 |style="text-align: center; width: 3.1%;"| 4 |style="text-align: center; width: 3.1%;"| 4 |style="text-align: center; width: 87.5%;"| 112 |- !style="width:0;"|campo |style="text-align: center;"| prefix |style="text-align: center;"| flags |style="text-align: center;"| scope |style="text-align: center;"| group ID |- !style="width:0;"|valor |style="text-align: center;"| 11111111 |style="text-align: center;"| 0RPT |style="text-align: center;"| XXXX |style="text-align: center;"| |} El campo prefix mantiene el valor binario 11111111 para cualquier dirección multicast.
Actualmente se utilizan 3 de los 4 bits del campo flags (flags); el bit de flag más significativo está reservado para uso futuro. +Flags de la dirección MulticastFlag01R (Rendezvous)RFC 3956Rendezvous point not embedded (traducción no necesaria)Rendezvous point embedded (traducción necesaria)P (Prefijo)RFC 3306Sin información de prefijoDirección basada en prefijo de redT (Transitoria)RFC 4291Dirección multicast mundialmente válida (permanente)Dirección multicast asignada dinámicamente (temporal)
Los 4-bits del campo scope (ámbito) se utilizan para indicar dónde la dirección es válida y única.
Hay direcciones multicast especiales, como la Solicited-node: {| class="wikitable" style="width: 750px" |+ Formato de dirección multicast Solicited-node |- !style="width:0;"|bits |style="text-align: center; width: 6.2%;"| 8 |style="text-align: center; width: 3.1%;"| 4 |style="text-align: center; width: 3.1%;"| 4 |style="text-align: center; width: 61.75%;"| 79 |style="text-align: center; width: 7%;"| 9 |style="text-align: center; width: 18.7%;"| 24 |- !style="width:0;"|campo |style="text-align: center;"| prefix |style="text-align: center;"| flags |style="text-align: center;"| scope |style="text-align: center;"| ceros |style="text-align: center;"| unos |style="text-align: center;"| dirección unicast |- !style="width:0;"|valor |style="text-align: center;"| 11111111 |style="text-align: center;"| 0000 |style="text-align: center;"| 0010 |style="text-align: center;"| 00000000...00000000 |style="text-align: center;"| 111111111 |style="text-align: center;"| |} Los campos prefix y scope tienen los valores binarios 11111111 y 0010. Las direcciones multicast Solicited-node son construidas a partir de la dirección unicast o anycast, copiando los últimos 24 bits de la dirección unicast o anycast en los últimos 24 bits de la dirección multicast.
{| class="wikitable" style="width: 750px" |+ Formato de dirección multicast Prefijo-Unicast (unicast-prefix-based)RFC 3306, Unicast-Prefix-based IPv6 Multicast Addresses, B. Haberman, D. Thaler (August 2002)RFC 3956, Embedding the Rendezvous Point (RP) Address in an IPv6 Multicast Address P. Savola, B. Haberman (November 2004) |- !style="width: 0%"|bits |style="text-align: center; width: 6.2%;"| 8 |style="text-align: center; width: 3.1%;"| 4 |style="text-align: center; width: 3.1%;"| 4 |style="text-align: center; width: 3.1%;"| 4 |style="text-align: center; width: 3.1%;"| 4 |style="text-align: center; width: 6.2%;"| 8 |style="text-align: center; width: 50%;"| 64 |style="text-align: center; width: 25%;"| 32 |- !style="width: 0%"|campo |style="text-align: center;"| prefix |style="text-align: center;"| flgs |style="text-align: center;"| sc |style="text-align: center;"| res |style="text-align: center;"| riid |style="text-align: center;"| plen |style="text-align: center;"| prefijo de red |style="text-align: center;"| group ID |} Las direcciones multicast de multidifusión (link-scoped) usan un formato parecido.RFC 4489, A Method for Generating Link-Scoped IPv6 Multicast Addresses, J-S. Park, M-K. Shin; H-J. Kim (April 2006)
Representación Una dirección IPv6 (128 bits) se representa mediante ocho grupos de cuatro dígitos hexadecimales, cada grupo representando 16 bits (dos octetos). Los grupos se separan mediante dos puntos (:). Un ejemplo de dirección IPv6 podría ser: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 Los dígitos hexadecimales no son sensibles a mayúsculas/minúsculas, pero se aconseja la utilización de minúsculas.RFC 5952, "A Recommendation for IPv6 Address Text Representation", S. Kawamura, M. Kawashima, (August 2010)
Esta representación completa puede ser simplificada de varias maneras, eliminando partes de la representación.
Ceros iniciales Los ceros iniciales de cada grupo pueden omitirse, aunque cada grupo debe contener al menos un dígito hexadecimal. De ese modo, la dirección IPv6 ejemplo podría escribirse: 2001:db8:85a3:0:0:8a2e:370:7334
Grupos de ceros Uno o más grupos de ceros pueden ser sustituidos por dos puntos. Esta sustitución puede realizarse únicamente una vez en la dirección. En caso contrario, obtendríamos una representación ambigua. Si pueden hacerse varias sustituciones, debemos hacer la de mayor número de grupos; si el número de grupos es igual, debemos hacer la situada más a la izquierda. Con esta regla, reduciríamos aún más la dirección ejemplo: 2001:db8:85a3::8a2e:370:7334 La dirección de loopback, 0:0:0:0:0:0:0:1, y la dirección IPv6 indefinida, 0:0:0:0:0:0:0:0, se reducen a ::1 y :: respectivamente.
Notación decimal con puntos Durante la transición de Internet de IPv4 a IPv6 será típico operar en entornos de doble direccionamiento (IPv4 e IPv6). Por este motivo se ha introducido una notación especial para expresar direcciones IPv6 que sean IPv4-mapeada o IPv4-compatible, representando los últimos 32 bits de la dirección IPv6 en el formato decimal con puntos usado en IPv4.
Por ejemplo, la dirección IPv6 del tipo IPv4-mapeada ::ffff:c000:280 se puede representar como ::ffff:192.0.2.128, mostrando claramente la dirección IPv4 mapeada dentro de la IPv6.
Redes Una red IPv6 utiliza un grupo de direcciones IPv6 contiguas, de un tamaño potencia de dos. La parte inicial de las direcciones es idéntica para todos los hosts de una red, y se llama dirección de red o prefijo de encaminamiento (routing prefix). Las direcciones de red se escriben en notación CIDR. Una red se representa por la primera dirección del grupo (que debe terminar en ceros), una barra (/), y el número de bits del prefijo en decimal. Por ejemplo, la red 2001:db8:1234::/48 comienza en la dirección 2001:0db8:1234:0000:0000:0000:0000:0000 y finaliza en 2001:0db8:1234:ffff:ffff:ffff:ffff:ffff.
Veámoslo con mayor detalle:
2001:db8:1234::/48 → Dirección de Red 2001:0db8:1234:0000:0000:0000:0000:0000/48 → Dirección de red sin comprimir ---- Red ----- --------- Host ---------
2001:0db8:1234:0000:0000:0000:0000:0001 → Primera dirección IPv6 de la red 2001:0db8:1234:ffff:ffff:ffff:ffff:ffff → Última dirección IPv6 de la red