16. Migración IPv4 a IPv6

16.1. Técnicas de Doble pila (DUAL STACK)

La técnica de Dual Stack consiste en que un nodo tiene soporte completo para las dos implementaciones de IP. Cuando se trata de comunicar con nodos IPv4, el nodo se comporta como si fuese un nodo IPv4, mientras que con los nodos IPv6 se comporta como un nodo IPv6.

 Esto permite una transición progresiva uno a uno manteniendo la operación de la red y permitiendo administrar las transiciones.

Los inconvenientes de esta técnica son que los nodos necesitan una completa actualización de software de red => 


La presencia de las dos pilas se traduce en un aumento de la carga para el procesador y una mayor ocupación de memoria: de hecho los routers y los hosts deben tener dos copias de las tablas de enrutamiento y de otros recursos asociados a los protocolos.


Las aplicaciones deberán ser capaces de reconocer si el host está comunicando con otro host IPv6 o IPv4. A menudo habrá dos versiones de la misma aplicación, una por cada protocolo (p.ej. ping y ping6 bajo Windows). La ventaja es que cuando ya no sea necesario el IPv4, se podrá quitar o remover el modulo correspondiente del sistema operativo.

En una PC con Windows esto se vería:
https://www.profesionalreview.com/wp-content/uploads/2017/12/Propiedades-Ethernet.jpg
En una PC con Linux:

Como podemos ver, en general los equipos nuevos ya están implementando dual stack. El cambio que resta serían en los ISPs intermedios, donde no es tan fácil ni económico incorporar dual stack a routers.

Hay disponible una API (Application Programming Interface) que soporta requerimientos DNS para IPv4 e IPv6 y permite responder a diferentes situaciones:

Una aplicación que no soporta IPv6 o está forzada a utilizar IPv4, hace una solicitud DNS de un registro tipo A para IPv4. 
En consecuencia la aplicación enviará su solicitud de servicio utilizando IPv4. Una aplicación que soporta solamente IPv6 o prefiere utilizar IPv6 operará sobre IPv6.

La aplicación envía una solicitud exclusivamente de un registro AAAA (un registro AAAA determina qué dirección IPv6 se asigna a su dominio. De esta forma, el nombre del dominio será redirigido a la dirección IPv6 específica.) con lo que obtendrá una dirección IPv6. En consecuencia la aplicación establecerá la conexión con el servidor utilizando IPv6.
Una aplicación que puede operar indistintamente con IPv4 o IPv6, para cada nombre que debe resolver envía una solitud DNS de cada tipo (IPv4 e IPv6). El servidor DNS responde enviando todas las direcciones IP disponibles (v4 y/o v6) que están asociadas a ese nombre.

Ya con la información de ambos protocolos, es la aplicación la que elije utilizar una u otra. El comportamiento típico por defecto es utilizar IPv6.

Cisco IOS soporta la operación en modo dual-stack tan pronto como ambos protocolos están configurados en una interfaz. A partir de ese punto puede reenviar ambos tipos de tráfico, desde la consulta sería:

ipv6 unicast-routing !
interface GigabitEthernet0/0
ip address 192.168.0.1 255.255.255.0 ipv6 address 2001:abc:1::/64 eui-64

Eso puede realizarse tanto cuando se asignan direcciones IPv6 estáticas o por un proceso de configuración automática.

Implementación dual-stack

1. Revise la red, las aplicaciones y las políticas de seguridad para asegurarse que la implementación de IPv6 sea tan inclusiva como sea posible.

2. Actualice nodos, routers y servicios de infraestructura para soportar IPv6. Se debe prestar especial atención en servicios de infraestructura tales como DNS, HTTP, SNMP y servicios de autenticación.

3. Habilite el soporte IPv6.

4. Actualice todos los servicios siempre que sea posible, para proveer funcionalidades sobre IPv6. Hay que estar atentos a que algunos servicios pueden requerir alguna atención adicional en función de que IPv6 será el protocolo de transporte preferido. 

5. Asegúrese que la operación dual-stack está funcionando correctamente y que todos los servicios funcionan correctamente. Hay que verificar particularmente la implementación de las políticas de seguridad.

Consideraciones a tener en cuenta

1) La implementación de dual-stack no puede ser por tiempo indefinido ya que puede afectar la performance (algunos dispositivos reenvían más rápido el tráfico IPv4 que el IPv6), la seguridad y generar mayores costos dada la mayor complejidad de gestión.

2) Hay  que tener presente que dispositivos terminales viejos pueden interpretar erróneamente respuestas DNS que contengan registros A y AAAA y actuar de modo errático.
Mantener políticas de seguridad semejantes sobre IPv4 e IPv6 puede ser complejo, pero son necesarias.

3) A medida que avance la implementación global de IPv6 se hará más complejo y costoso el mantenimiento de sistemas IPv4 en estado operativo.

Mecanismos de tunelizado

Durante la implementación de IPv6 un escenario posible es que parte de la red no soporte IPv6, o que se desee realizar una implementación gradual por sectores de la red. En cualquiera de estos casos la solución más simple es encapsular el tráfico IPv6 y enviarlo a través de la red IPv4. Son los denominados mecanismos de tunelizado.

En este caso, los túneles son utilizados para crear redes virtuales IPv6 sobre redes físicas IPv4 ya existentes. En este caso, un encabezado IPv6 es encapsulado dentro de un paquete IPv4:

Opción 1: Un dispositivo dual-stack con una interfaz conectada a la red IPv6 y otra interfaz conectada a la red IPv4, recibe un paquete IPv6. Encapsula el paquete IPv6 en un paquete IPv4 y lo envía a través de la red IPv4. La red IPv4 reenvía el tráfico sobre la base del encabezado IPv4, únicamente, hasta el dispositivo que terminal el túnel. El túnel termina en otro dispositivo dual-stack conectado a la red IPv4 por una interfaz y a la red IPv6 por la otra. Recibe el paquete IPv4, retira el encabezado, lee en encabezado IPv6 y lo reenvía sobre la red IPv6. Este procedimiento permite conectar 2 “islas” o redes IPv6 a través de un backbone o red IPv4.

Consideraciones a tener en cuenta
El MTU efectivo es reducido en al menos 20 bytes cuando el encabezado IPv4 no contiene datos adicionales ya que hoy que considerar un segundo encabezado de capa de red.

Una red tunelizada es difícil de diagnosticar, por lo que debe ser considerada una solución de transición y no una arquitectura final.

Los túneles pueden establecerse:
  1. Entre 2 routers.
  2. Entre un host y un router.
  3. Entre 2 hosts.

Técnicas de tunelizado disponibles para implementaciones IPv6.

Los túneles IPv6 sobre IPv4 descriptos antes pueden ser logrados a través de 2 metodologías diferentes: configuración manual o automática.

Túneles de configuración manual:


  • Red IPv6 Red IPv6
  • Red IPv4
  • IPv4 IPv6 Dispositivos dual-stack

Este modo de implementación requiere que el túnel inicie y termine en dispositivos dual-stack que tienen conectividad IPv4 entre sí. Es necesario utilizar una interfaz túnel con una dirección IPv6 link-local asociada a la interfaz IPv4 de cada extremo del túnel.

Está disponible en la mayoría de las plataformas, aunque es un recurso limitado ya que no escala bien.

IPv6-in-IPv4.

Permite establecer conexión entre 2 puntos (site-to-site).
Requiere de la configuración de las direcciones de origen y destino del túnel. Impone muy poco overhead.

GRE (Generic Routing Encapsulation).
Utiliza el protocolo de tunelizado IPv4 estándar. Permite establecer túneles punto a punto.
Es necesario solamente para soportar redes que utilizan enrutamiento IS-IS (IS-IS (del inglés Intermediate System to intermediate System) es un protocolo de estado de enlace, o SPF (shortest path first)).  VPN (Virtual Private Network).

Túneles de configuración automática:

En estos casos el túnel se configura automáticamente sin necesidad de que al momento de configurar un extremo del túnel se conozca el otro extremo del mismo.

Esta metodología escala mejor que la configuración estática ya que no es necesario configurar explícitamente cada punto terminal de los túneles. Como contrapartida, estos túneles dependen de servidores provistos por terceras partes en Internet y no soportan bien el tráfico de multicast.

6to4.
Permite conectar “islas” IPv6 a través de una red IPv4.
En este tipo de túneles no se pueden utilizar direcciones IPv6 unicast globales. El túnel utiliza direcciones con prefijo 2002::/16.

6rd (6 rapid deployment).
Mecanismo de tunelizado para transición a IPv6 utilizado en redes de service providers para transporte de tráfico IPv6.

ISATAP (Intra-Site Automatic Tunnel Addressing Protocol).
Túneles para intranets corporativas en las que la infraestructura aún no soporta IPv6, mientras que los terminales requieren conectividad IPv6.

Teredo.
Permite establecer túneles desde terminales que soportan IPv6 pero están conectadas a redes IPv4, contra servidores Teredo.
Encapsula el tráfico IPv6 en un paquete IPv4 UDP, por lo que tiene objeciones desde la perspectiva de seguridad.

Traducción de direcciones IPv6 a IPv4
Es posible comunicar nodos conectados a redes IPv6 con nodos conectados a redes IPv4 implementando un proceso de traducción mejor conocido como AFT (Address Family Translation).

Esta es considerada una estrategia de corto plazo que permite la coexistencia de ambas redes para facilitar una transición hacia la red IPv6. Aplicaciones que utilizan protocolos que incluyen información IP en la porción de datos (como FTP o SIP) requieren la implementación de gateways de capa de aplicación para soportar la traducción. Hay 2 tecnologías disponibles para realizar estas traducciones:

  • NAT-PT
  • Network Address Translation – Protocol Translation  NAT64
  • Network Address Translation IPv6 to IPv4

El uso de NAT-PT no es recomendado por la IETF merced a su débil interacción con DNS y sus limitaciones para la traducción. Estos problemas están documentados en el RFC 4966. La sugerencia es trabajar con NAT 64.

La traducción de IPv6 a IPv4 o viceversa, supone la conversión de 3 elementos en cada paquete:

  • El encabezado IPv6 debe ser reemplazado por un encabezado IPv4.
  • La dirección IPv6 de origen debe ser traducida a una dirección IPv4 de origen. 
  • La dirección IPv6 de destino debe ser traducida a una dirección IPv4 de destino. Cuando la sesión se inicia desde un host IPv6, el destino será un nodo IPv4, paran representar la dirección de destino IPv4 en formato IPv6 se genera un ID compuesto por el prefijo 64:FF9B::/96 y los 32 bits de la dirección IPv4 de destino.
Del mismo modo, cuando la sesión se inicia en un host IPv4, la dirección IPv4 de origen será traducida por una dirección IPv6 compuesta por el prefijo 64::BB9F::/96 y los 32 bits de la dirección IPv4 del host.

Para la traducción de las direcciones de host IPv6 se utiliza un rango de direcciones IPv4 destinado por el Administrador para este propósito.