Fundamentos de IPv6 – Parte 1

ipv6

Debido que Internet se masificó de tal forma que nadie esperaba, y el mal diseño del direccionamiento de IPv4, la IETF (Internet Engineering Task Force) ha elaborado un nuevo protocolo IP, denominado IP versión 6.

En un principio, se pensó que los 32 bits que conforman la versión 4 del protocolo IP eran mas que suficiente para brindar direcciones a los dispositivos que se encontraban conectados y los que se iban a conectar en años posteriores, pero el mal diseño de este protocolo y el crecimiento de los equipos conectado a la red de redes jugó en contra para la cantidad de direcciones que posee este protocolo.

IPv4 consta de 4.294.967.296 direcciones (2^32), donde de estas 4 mil millones de direcciones se desperdician muchas direcciones como por ejemplo, en la dirección de loopback, que para una única dirección, se utiliza una /8 (la IP de loopback es la 127.0.0.1 y se tiene reservada la red 127.0.0.0/8, lo que equivale a 16.777.216 de direcciones reservadas para usar solamente una).

Para poder desacelerar la entrega total de las direcciones, se hicieron varios “arreglos” a la utilización del protocolo, como lo son:

  • Creación de la RFC 1819
  • Variación de la longitud del prefijo de la clase gracias a CIDR
  • Implementación de NAT/PAT para la traducción de redes privadas y públicas

Gracias a esto, se ha podido extender la utilización de IPv4 hasta ahora, pero aun así, ya se entregaron los últimos pools de direcciones, al saber esto, nos indica que si o si ya debemos saber sobre IPv6, saber como es su direccionamiento y su funcionamiento en comparación a IPv4.

A diferencia de IPv4, IPv6 tiene una dirección de 128 bits, lo cual nos brinda un total de 340.282.366.920.938.463.463.374.607.431.768.211.456 de direcciones (2^128 = 3,4 * 10^38).

NOTA: los que se pregunten por qué se saltó a la versión 6 del protocolo y no se utilizó la versión 5. La versión 5 se utilizó en la definición de un protocolo experimental de streaming de video y audio en tiempo real.

Las mejoras que incorpora IPv6 son:

  • Direccionamiento
  • Cabecera simplificada
  • Movilidad y seguridad
  • Riqueza de transición

Con respecto a la mejora en su direccionamiento, se puede mencionar que se mejoró la conexión global y esta es flexible, ya no se posee broadcast (reemplazado por multicast), lo cual previene tormentas de broadcast, incorpora multihoming, autoconfiguración, se agregan más opciones plug-and-play para dispositivos, se elimina la necesidad de utilizar NAT y se simplifica la renumeración y la modificación de direcciones.

Otro cambio dentro de IPv6, es su encabezado. Si este es comparado con IPv4, es mucho más eficiente, en este se eliminaron algunos campos, y otros fueron reemplazados.

encabezado_ipv4-6

Esta simplificación de la cabecera permite mejorar la eficiencia en el enrutamiento para la escalabilidad del rendimiento y la velocidad en el reenvío, no es necesario revisar el checksum para la comprobación del paquete (este campo fue eliminado), y mejora el etiquetado para aplicar calidad de servicio.

En IPv6 se incorpora el estándar de IP móvil, el cual permite que los dispositivos conectados a la red se puedan desplazar sin interrupción en esta, y además, el framework IPsec se encuentra implementado por defecto.

Debido que es necesario en algún punto de nuestras vidas migrar a IPv6, se crearon 3 métodos de transición (por eso lo de riqueza de transición), los cuales son:

  • Dual-stack: en este método se trabaja con ambos protocolos a la vez.
  • Tunneling 6to4, ISATAP y Teredo: se crea un túnel donde pasa el tráfico IPv6 sobre una red IPv4.
  • NAT-PT: traduce una dirección IPv6 a una IPv4, este método es recomendado de usar como último recurso.

La recomendación de los expertos es: Dual-stack donde pueda, túnel donde deba.

En cuanto al direccionamiento, la notación de la dirección IPv4 se divide en 4 bloques (octetos) separados con un punto (.), cada octeto de 8 bits, y sus valores son decimales. En IPv6, se utilizan 8 bloques (cuartetos) separados con dos puntos (:), cada cuarteto tiene 16 bit, y sus valores son en hexadecimal (cada valor hexadecimal corresponde a 4 bits, y cuatro dígitos hexadecimales son denominados word). A continuación se deja un ejemplo de una dirección IPv6:

2011:0000:4110:0000:0000:0CCF:0034:4402

Como se puede ver, es más complicada que una dirección IPv4, por lo mismo, existen mecanismos de compresión, los cuales indican:

  1. Si a la izquierda del cuarteto se tienen 0s, estos pueden ser suprimidos
  2. si un cuarteto está formado por 4 ceros, estos pueden ser reemplazados por un único 0
  3. Si se tienen varios cuartetos seguidos de puros 0s, estos pueden ser suprimidos y reemplazados por :: (esto solo se puede aplicar una sola vez al momento de realizar la abreviación de la dirección)

Por lo tanto, nuestra dirección nos queda (los ceros en rojo serán modificados):

  1. 2011:0000:4110:0000:0000:0CCF:0034:4402
  2. 2011:0:4110:0:0:CCF:34:4402
  3. 2011:0:4110::CCF:34:4402

Como se ve, al abreviar es mucho más legible nuestra dirección.