IPv6 (Internet Protocol Version 6) es la última versión del protocolo de Internet (IP) desarrollada por el Internet Engineering Task Force (IETF). Esta versión sustituye la versión 4 (IPv4) que se usaba hasta ahora y establece un procedimiento estándar para transmitir paquetes de datos en redes de computadoras. Las funciones principales de IPv6 son el direccionamiento de elementos de red a través de las llamadas direcciones IPv6, así como el redireccionamiento de paquetes entre subredes, también conocido como enrutamiento. Una de las principales diferencias entre IPv4 y IPv6 es la capacidad de las direcciones. Mientras que IPv4 usa direcciones de 32 bits (equivalente a 4,3 miles de millones de direcciones de IPv4), IPv6 expande este espacio a 128 bits, con lo que combate la creciente escasez de direcciones IP públicas. Este tamaño de direcciones permite una cantidad inimaginable de alrededor de 340 miles de trillones de direcciones IPv6.

Estructura de una dirección IPv6

Las direcciones IPv6 se componen de ocho bloques de 16 bits en notación hexadecimal de cuatro dígitos por bloque. Los bloques están separados por dos puntos. Ejemplo:

2001:0620:0000:0000:0211:24FF:FE80:C12C

Los primeros 64 bits se usan para el direccionamiento y determinan el prefijo de enrutamiento (del inglés, routing prefix). El prefijo de enrutamiento identifica el prefijo de red y las posibles subredes. Los últimos 64 bits son los identificadores de la interfaz. El identificador de la interfaz identifica un dispositivo específico conectado a esta red y se puede asignar de forma manual o basándose en la dirección MAC de red del dispositivo. Se trata del formato modificado EUI-64. Por lo tanto, la interfaz se puede identificar con claridad independientemente del prefijo de enrutamiento.

La máscara de red o subred que se usaba en el protocolo IPv4 ya no se usa en IPv6. Para poder llevar a cabo una segmentación pese a ello, se define la longitud del prefijo y se agrega con una "/" (barra) a la dirección IPv6 real. Ejemplo:

Una subred con las direcciones IPv6 2001:0820:9511:0000:0000:0000:0000:0000 hasta 2001:0820:9511:FFFF:FFFF:FFFF:FFFF:FFFF se puede describir con la notación 2001:0820:9511::/48.

Asignación de direcciones

Por regla general, la asignación de direcciones IP se realiza a través de los llamados RIR (Registros Regionales de Internet). Estos proveedores conceden un grupo de direcciones con prefijo de 48 bits (redes /48), que a su vez se subdivide en subredes. A los clientes finales se les asignan redes /48 o redes /56.

Extensiones de privacidad (Privacy Extensions)

Una dirección IPv6 basada en el formato modificado EUI 64 permite sacar conclusiones sobre la dirección MAC subyacente. Dado que esto podría generar dudas respecto a la protección de datos, se desarrollaron las extensiones de privacidad para anonimizar el identificador de la interfaz en las direcciones IPv6. Para ello, las extensiones de privacidad eliminan la vinculación del identificador de interfaz con la dirección MAC y generan identificadores de interfaz temporales para conexiones salientes.

Reglas de notación

Como las direcciones IPv6 pueden llegar a ser muy largas, estas suelen acortarse. En la recomendación RFC 5952, se definen las reglas de notación más vinculantes. Estas incluyen, entre otras, las siguientes especificaciones:

  • Los ceros iniciales de cada grupo pueden omitirse.

  • Un grupo de 4 ceros se resume en un cero.

  • Uno o más grupos de ceros se sustituyen por dos puntos dobles ("::"). Esta sustitución puede realizarse solo una vez en la dirección, de lo contrario se pierde la unicidad. Ejemplo:

    La dirección 2001:0dc8:0:0:8d5:0:0:0 se acortaría así: 2001:0dc8:0:0:8d5:0:: o 2001:0dc8:0::8d5:0:0:0

  • Si la dirección contiene varios grupos de ceros, solo se puede sustituir el grupo situado más a la izquierda.

IPv6 en las URL

En una dirección URL, las direcciones IPv6 se muestran entre corchetes. Ejemplo:

http://[2001:0db8:83a3:08d3::0380:7344]/

Los números de los puertos se escriben detrás de los corchetes de cierre separados por dos puntos. Ejemplo:

http://[2001:0db8:83a3:08d3::0380:7344]:8080/

El signo de porcentaje (%) se sigue utilizando para identificar la codificación de caracteres hexadecimales en los URL. Dentro del URL, el signo de porcentaje se sustituirá por su propio código hexadecimal "%25" (RFC 6874). Esto es necesario si se desea forzar la conexión a través de una interfaz específica.

Tipos de direcciones IPv6

Al igual que en el protocolo IPv4, el nuevo protocolo de Internet también cuenta con diferentes rangos de direcciones que tienen, a su vez, tareas y características específicas. Estos se han fijado en RFC 4291 y RFC 5156 y se identifican gracias a los primeros bits (prefijo de formato) de una dirección IPv6. Tipos de direcciones IPv6:

  • Dirección de bucle invertido o loopback: es la dirección 0:0:0:0:0:0:0:1 (también ::1/128) y se trata de la dirección de la propia ubicación.

  • Dirección de enlace local o link local: las direcciones de enlace local solo son válidas dentro de redes locales y comienzan con el prefijo de formato FE80::/10. Estas direcciones se utilizan para direccionar elementos dentro de una red local, así como para la autoconfiguración o la comunicación entre los dispositivos conectados a la red a través del mismo rúter para generar una dirección IPv6 global (Neighbor Discovery).

  • Dirección local única o unique local: para redes locales privadas se han definido y reservado rangos de direcciones para el protocolo IPv6. Estas se describen en la RFC 4193 y poseen una función similar a los rangos de direcciones privados establecidos en el protocolo IPv4. Las direcciones locales únicas se encuentran dentro del rango "fc00::/7" (fc00… hasta fdff…) y no se enrutan en Internet. Solo son válidas dentro de una red definida. Hay que diferenciar entre el prefijo "fc" y "fd", ya que no significan lo mismo. Mientras que las direcciones IPv6 con el prefijo "fc" son asignadas por el proveedor, las direcciones IPv6 con el prefijo "fd" se pueden utilizar en una red local.

  • Dirección unidifusión global o global unicast: estas direcciones son únicas y se reconocen a nivel global. Estas requieren un dispositivo de red para establecer una conexión a Internet. La dirección unidifusión global se puede enrutar y utilizar con el fin de hacer frente directo a un host en la red local a través de Internet. El host las instala mediante la autoconfiguración.

  • Dirección multidifusión o multicast:  las direcciones multidifusión permiten la comunicación uno a muchos (one-to-many). Como consecuencia, se habla de direcciones de distribución. Los paquetes que se envían a una dirección multidifusión llegan a todos los dispositivos de red que sean parte del grupo de multidifusión. Es posible que un dispositivo pertenezca, en paralelo, a diferentes grupos multidifusión. Si una dirección IPv6 unidifusión es creada para un dispositivo de red, este se convierte automáticamente en miembro de ciertos grupos de multidifusión que son, a su vez, necesarios para el reconocimiento, la accesibilidad y la identificación del prefijo. Las direcciones multidifusión se identifican con el prefijo "ff::/8". Los siguientes 4 bits se utilizan como flags (indicadores) y otros 4 bits para indicar el scope (alcance) de la dirección. Para más información sobre los grupos multidifusión clásicos, consulta este enlace.

  • Dirección alguna difusión o anycast: estas también permiten hacer frente a grupos de recepción. A diferencia de las direcciones multidifusión, los paquetes de datos no se envían a todos los miembros del grupo anycast, sino solo al dispositivo que está más cerca del remitente. Es por esto que las direcciones anycast se utilizan en función del balanceo de carga  (los distintos servidores se reparten el trabajo de modo que no haya un equipo sobrecargado) y de su fiabilidad de uso (si un equipo falla, los demás asumen sus funciones y el servicio sigue disponible).

Formato de paquete de IPv6

El protocolo IPv6 se caracteriza por un nuevo formato de paquete simplificado. El encabezado tiene una longitud estándar de 40 bytes. Aquellas informaciones adicionales que solo se necesitan para casos especiales se han transferido a las llamadas cabeceras de extensión (Extension Headers), que están incrustadas entre el encabezado del rango de datos y la carga útil real (Payload). De esta forma se pueden insertar opciones sin modificar la cabecera. Las extensiones de cabecera de IPv6 pueden contener la siguiente información: opciones nodo a nodo (Hop-By-Hop Options), opciones de destino (Destination Options), opciones de enrutamiento (Routing Options), así como opciones de fragmentación, autenticación y cifrado. En la RFC 2460 encontrarás información adicional sobre el formato de paquete de IPv6.

Configuración automática de direcciones sin estado

La configuración automática de direcciones sin estado (SLAAC) es un procedimiento para configurar automáticamente direcciones IPv6 en una interfaz de red. Con este procedimiento, un host puede establecer de forma totalmente automática una conexión operativa a Internet. "Sin estado" significa que la dirección IPv6 no se asigna ni se guarda de forma centralizada. El host crea una dirección IPv6 de enlace local para la comunicación inicial con el rúter y se la asigna a sí mismo. Con la dirección IPv6 de enlace local, un dispositivo puede buscar el rúter en su segmento de red gracias al protocolo Neighbor Discovery. Esto se realiza a través de una solicitud a la dirección multidifusión, mediante la cual se puede acceder a todos los rúters de un segmento.

Tras recibir dicha solicitud, un rúter envía información sobre los prefijos disponibles. Para evitar la asignación duplicada de direcciones IPv6, el host lleva a cabo una detección de direcciones duplicadas (en inglés, Duplicate Address Detection) en una dirección IPv6 recién generada. El host enviará una solicitud a la dirección generada en la red local. La dirección de respuesta será una dirección multidifusión. Si otra unidad ya está usando la dirección IPv6, se enviará una respuesta de vuelta. Si esta dirección no envia ninguna respuesta, el host usará la dirección IPv6 para la comunicación.

Neighbor Discovery

Neighbor Discovery es un protocolo de IPv6. Entre otras cosas, se utiliza para la resolución de direcciones IPv6 en direcciones MAC. Así como para actualizar direcciones en caché. Cuando un nodo no se encuentra en la misma red, este protocolo se utiliza para encontrar un rúter que redireccione los paquetes. Las siguientes funcionalidades se asocian también al Neighbor Discovery:

  • Identificación de parámetros

  • Configuración automática de direcciones sin estado

  • Resolución de direcciones (Address Resolution)

  • Detección de inaccesibilidad del vecino (Neighbor Unreachability Detection)

  • Detección de direcciones duplicadas (Duplicate Address Detection)

  • Redireccionamiento (Redirect)

Encontrarás información adicional sobre el protocolo Neighbor Discovery aquí.

DHCP6

El DHCP (Dynamic Host Configuration Protocol) es un protocolo que administra la configuración IP en una red TCP/IP. Esto permite integrar clientes conectados en una red existente sin necesidad de configurar manualmente la interfaz de red. Una red de IPv6 no necesita este protocolo necesariamente, ya que esta tarea la asume la configuración automática de direcciones sin estado. Sin embargo, usar este protocolo puede tener sus beneficios. Por ejemplo, en caso de que el cliente de IPv6 no pueda usar las opciones de la configuración IP a través de SLAAC, la dirección IP se asigna mediante SLAAC y el resto de los parámetros de configuración, mediante DHCPv6.