Direccionamiento IPv6 básico

ipv6-02.png
Imagen. Ejemplo IPv6

Como la mayoría ya sabréis, IPv6 se crea por el agotamiento de direcciones IPv4 que se prevee ya desde el ‘boom’ del Internet; se hace referencia a él por primera vez en un RFC desde 1995, concretamente en el 1883 (RFC 1883), hoy día ya obsoleto, reemplazado por el 2460 (RFC 2460). IPv6 además de solventar el problema de falta de direcciones IP, con 340 sextillones de direcciones disponibles,  implementa muchísimas mejoras, sobre todo gracias a las Cabeceras de Extensión. En IPv4 teníamos 4 octetos, es decir 4 grupos de 8 bits, con 3 dígitos decimales por grupo (o-255) , para formar una dirección decimal punteada (192.168.123.100), en IPv6 pasamos a tener 128 bits, con 8 hextetos, es decir, 8 grupos hexadecimales, cada grupo hexadecimal con la posibilidad de 4 dígitos hexadecimales (0-FFFF), lo que es lo mismo 16 dígitos binarios ( con  la siguiente forma: 2001:0DB8:ACAD:CAFE:0000:0000:0000:0001). Como veis,

la diferencia es abismal de un direccionamiento a otro, así que después de esta rápida introducción vamos a continuar por partes. Como se muestra en el pequeño ejemplo anterior, el formato en el que esta escrita la dirección IPv6, se denomina ‘formato preferido’, esto significa que la dirección IPv6 se escribe utilizando 32 dígitos hexadecimales. No significa necesariamente que es el método ideal para representar la dirección IPv6, ya que hay varios métodos de omisión de ceros, que acortarían la dirección.

Omisión de grupos de ceros

En IPv6 cuando tenemos una dirección como esta 2001:0DB8:ACAD:CAFE:0000:0000:0000:0001, podremos omitir los grupos de ceros con 4 puntos (::), quedándonos una dirección más corta, y más fácil de recordar: 2001:0BD8:ACAD:CAFE::0001, pero hay que tener en cuenta que solo podremos omitir un grupo de ceros por cada dirección IPv6, es decir en una dirección como esta: 2001:0000:0000:CAFE:0000:0000:0000:0001, tendremos dos opciones, 2001::CAFE:0000:0000:0000:0001 o 2001:0000:0000:CAFE::0001, pero NUNCA podremos simplificar la dirección hasta el punto de dejarla así: 2001::CAFE::0001.

Omisión de ceros iniciales

Los ceros iniciales de los hextetos, también se pueden omitir, en el ejemplo anterior teníamos una dirección simplificada que nos quedaba así: 2001:0000:0000:CAFE::0001, si omitimos los ceros iniciales, podemos simplificarla aún más: 2001:0:0:CAFE::1, con estas dos ayudas vemos que al final nos puede quedar una dirección IPv6 bastante corta y más fácil de recordar.

Tipos de direcciones IPv6

Parece imposible hablar de IPv6 y no hablar de IPv4. En este caso recordamos los tipos de direcciones que teníamos en IPv4: direcciones de Unicast, Multicast y Broadcast. En IPv6 ya no tenemos Broadcast, un host emisor ya no puede enviar un paquete a una dirección de capa 3 de todos los NODOS, y digo NODOS para referirme a todos los dispositivos de la red y no solo a los PCs, ya que en IPv6 si es posible enviar a todos los PCs o a todos los Routers, a través de direcciones Multicast. Más adelante veremos cuales son estas direcciones Multicast. Lógicamente IPv6 también cuenta con Unicast: envío desde un host emisor hasta un único host receptor, y Anycast: que son direcciones IPv6 Unicast que se pueden asignar a varios dispositivos; los paquetes enviados a una dirección anycast se enrutan al dispositivo más cercano que tenga esa dirección.

Direcciones IPv6 Unicast

Unicast Global

Las direcciones Unicast Globales son similares a las direcciones IPv4 publicas, es decir son enrutables fuera de las redes locales. Estas direcciones pueden ser configuradas estáticamente o dinámicamente, pero en existe muchas diferencias en la forma en la que se asocia una direcciones IPv6 automática comparando como lo hace un servidor DHCP en IPv4. Más adelante veremos como los nodos pueden obtener su dirección IPv6.

Link-Local

Las direcciones de enlace local o Link-Local, no son enrutables fuera de una red local, ni fuera de un segmento de red, es decir, solo son validas en el mismo enlace. Cuando se envía un paquete con una dirección de Link-Local el campo TTL (Time To Live) del paquete se establece en uno para que no pueda ir más allá del siguiente router. Las direcciones IPv6 Link-Local están en el rango de FE80::/10. /10 indica que los primeros 10 bits son 1111 1110 10xx xxxx. El primer hexteto tiene un rango de 1111 1110 1000 0000 (FE80) a 1111 1110 1011 1111 (FEBF).

Loopback

Es una dirección utilizada por los hosts para enviarse paquetes así mismos y no puede ser utilizada para una interfaz, recordamos que en IPv4 tenemos 127.0.0.0/8 pero en IPv6 se utiliza una dirección con todos los bits a cero, exceptuando el último, entonces la dirección Loopback quedaría ::1/128.  Esta dirección se suele utilizar para probar el funcionamiento del protocolo TCP/IP.

Dirección sin especificar

La dirección sin especificar es aquella que tiene todos los bits a cero ::/128 , esta no puede asignarse a una interfaz, y solo se utiliza como dirección de origen; por ejemplo es utilizada en una conversación DHCPv6 entre cliente/servidor, cuando se envía un paquete en busca del servidor.

Local única

Las direcciones locales únicas tiene cierta similitud con las privadas en IPv4 definidas en el RFC 1918, y son utilizadas para el direccionamiento local, y no son enrutables  en la IPv6 global. Estas tienen el rango de FC00::/7 a FDFF::/.

Estructura de una dirección IPv6 unicast global

Una dirección IPv6 unicast global, se puede dividir en tres partes: Prefijo de enrutamiento global, ID de subred e ID de interfaz.

Prefijo de enrutamiento global

El prefijo de enrutamiento global es la porción del prefijo, de la dirección que asigna el proveedor (por ejemplo, un ISP) a un cliente o a un sitio. En la actualidad, los RIR  (Regional Internet registry) asignan a los clientes el prefijo de enrutamiento global /48. Esto incluye desde redes comerciales de empresas hasta unidades domésticas.

Los prefijos /48 son los prefijos de enrutamiento global más comunes.

ID de subred

El ID de subred se utiliza para identificar una subred dentro de una ubicación.

ID de interfaz

La ID de interfaz es muy parecido a la parte de host de una dirección IPv4 , y se utiliza ese término ya que un host puede tener varias interfaces y una o más direcciones para cada interfaz. A diferencia de IPv4, en IPv6 si se pueden asignar direcciones con todos los bits de host a 0 y a 1, ya que en IPv6 no existen direcciones Broadcast y con todos los bits a 0 se puede asignar, pero solo a los Routers, como direcciones Anycast.

Prefijo de subred, en IPv4 máscara de subred / red. 

En IPv6 se utiliza el prefijo de subred para determinar la cantidad de bits que son de red, como veíamos en IPv4 utilizábamos 255.255.255.0 y /24 para el mismo caso, ahora en IPv6, por ejemplo, se utiliza solo /24 o /64, /#, donde # es la cantidad de bits que contiene de red, este también es denominado como ‘duración de prefijo’. En IPv6 ya no se utiliza ninguna notación decimal punteada.

Automatización de direccionamiento IPv6

IPv6 tiene una característica nueva denominada SLAAC (Configuración automática de dirección sin estado), que ayuda a que un host pueda obtener una dirección IPv6 de manera automática, aunque debemos matizar esta frase aún más ya que existen varios métodos y formas de actuar:

SLAAC

El método SLAAC es utilizado para que un host pueda obtener el prefijo de subred (por eje: /64) y otros valores de un router, esta solicitud se hace a través de un paquete RS (Router Solicitation) y el Router responde a dicho paquete con un paquete RA (Router Advertisement) el cual contiene la información de capa de red. Dentro de este existen varios modos de funcionamiento:

SLAAC sólo:

El router da toda la información necesaria para que se pueda obtener solo parte del prefijo de subred (por eje: 2001:DB8:ACAD:CAFE::/64) además del gateway predeterminado, esta información esta incluida toda en el paquete RA. Como ya os habréis dado cuenta la ID de interfaz no se obtiene de esta manera, pero hay dos formas de obtener una ID de interfaz: A través del proceso EUI-64 o la generación aleatoria de los 64 bits restantes por parte del SO, de manera muy rápida pasaré a explicar el primero:

EUI-64

El proceso EUI-64 (Identificador Unico Extendido) es un proceso por el cual para generar un ID de interfaz se toma la dirección MAC de la interfaz (48bits) y se añade en la mitad un hexteto más (FFFE), el proceso se realiza de la siguiente manera:

1. Se toma la dirección MAC de la interfaz y se divide en la mitad.

2. Se pasa a binario.

3. Se inserta el hexteto en binario con el valor FFFE (1111111111111110) en medio de la dirección MAC dividida.

4. Se cambia el valor del 7mo bit de la porción OUI (Organizationally unique identifier), si es 0 a 1 y si es 1 a 0.

5. Se pasa de nuevo a hexadecimal y sale la ID de la interfaz.

Direcciones IPv6 Multicast

En IPv6 tenemos dos tipos de direcciones Multicast, que tienen diversos usos:

Direcciones multicast asignadas

Son aquellas que están reservadas para grupos predefinidos de dispositivos. Dentro de este tipo de direcciones se incluye:

Grupo multicast de todos los PCs: A este grupo multicast se unen todos los nodos con direccionamiento IPv6 habilitado. Tiene el mismo uso que la dirección broadcast en IPv4, además el router suele hacer uso de esta dirección para enviar el mensaje RA.

La dirección es FF02::1

Grupo multicast de todos los routers: A este grupo se unen todos los routers cuando se les habilita el protocolo IPv6. Los paquetes enviados a este grupo son recibidos por todos los router. Los mensajes RS son enviados a este grupo multicast.

La dirección es FF02::2

Direcciones multicast de nodo solicitado

se basa en una dirección multicast que toma los 24 bits menos significativos, es decir los de más hacía la derecha del ID de interfaz y los añade a un prefijo especial:

FF02:0:0:0:1:FF00::/104

La dirección de nodo solicitado se utiliza en el proceso de resolución de la dirección MAC de un host, de la misma manera que se hace en IPv4 con el protocolo ARP, pero IPv6 se hace gracias a ICMPv6 y los paquetes NS y NA, el host que solicita la dirección MAC de otro envía un paquete NS a la dirección multicast de nodo solicitado, de esta manera sólo lo recibe dicho equipo y no se produce la congestión que se produce con ARP. El host responde al paquete NS con un paquete NA.

Es posible que más de un dispositivo tenga la misma dirección multicast de nodo asignado, ya que al ser solo los últimos 24 bits de la ID de interfaz, estos podría tenerlos otra dirección, pero esto no es un problema ya que el dispositivo procesa el mensaje encapsulado.

A continuación os dejo una lista con los tipos de direcciones IPv6 y su referente en IPv4:

::/128 = Dirección indefinida.

::/0 = Ruta por defecto. Equivalente a 0.0.0.0 IPv4

::1/128 = Localhost. Equivalente a 127.0.0.1 IPv4

FE80::/10 = Enlace local (link-local). Equivalente a 169.254.0.0/16 IPv4 (No enrutables)

-Generan una red local efectiva FE80::/64

-La parte de host se suele calcular a partir de MAC a través del proceso EUI-64 como ya comentamos.

-Todo interfaz tiene un enlace local

FF02::/16 = Direcciones multicast. Equivalente a 224.X a 239.X en IPv4

FC00::/7 = Direcciones Privadas. Equivalente a 10.x, 172.16.X a 172.31.X y 192.168.X en IPv4

-No enrutables en internet

::FF:0:0/96 = Direcciones IPv4 mapeadas en IPv6

64:FF9B::/96 = Direcciones IPv6 generadas automáticamente a partir de IPv4

2002::/16 = Red 6 a 4 mapeada. Usa la dirección IPv4 192.88.99.X como gateway

2001::/32 = Usado por el protocolo de túneles Teredo

-IPv6 en el Internet de IPv4

2001:2::/48 = BMWG (Benchmarking Methodology Working Group ) (Similar a la red IPv4)

2001:10::/28 = ORCHID (Overlay Routable Cryptographic Hash Identifiers)

2001:db8::/32 Documentación o ejemplos IPv6. Similar a las redes 192.0.2.0/24, 198.51.100.0/24 y 203.0.113.0/24 en IPv4.

Puedes echar un vistazo también a Cabeceras de extensión. IPv6.

Un saludo!

2 comentarios sobre “Direccionamiento IPv6 básico

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s