sábado, 18 de febrero de 2017

TCP/IP (13): Adaptación a IPv6


En el anterior artículo cantábamos las bondades de IPv6, y al mismo tiempo nos lamentábamos de que su implantación no sea aún total. Hoy vamos a estudiar cómo es la adaptación de IPv4 a IPv6 y las dificultades que encierra.

El rediseño de las cabeceras y de las propias direcciones hacen incompatibles los protocolos IPv4 y IPv6. Los nodos que implementen distintas versiones no pueden comunicarse directamente entre ellos. Para paliar este problema se han previsto distintas técnicas y adaptaciones transitorias:

Transcripción directa de direcciones

Cada dirección IPv4 tiene una dirección IPv6 equivalente, convertible fácilmente. El prefijo ::ffff: indica una dirección IPv4 traducida a IPv6. Los últimos 32 bits (que serían dos grupos hexadecimales) corresponden a la propia dirección IPv4. Para mayor comodidad, se acepta la notación híbrida, dejando la dirección IPv4 en su formato original, como en el siguiente ejemplo:

150.200.1.10

se traduce en

::ffff:150.200.1.10

También existe la transcripción inversa (dirección IPv6 a IPv4), pero lógicamente no puede hacerse de uno a uno, al ser mayor el espacio de direcciones IPv6. Ciertos bloques de direcciones IPv4 se han reservado para mapear direcciones IPv6.

Doble pila

Los nodos que soportan IPv6 lo hacen normalmente mediante una doble pila o una pila híbrida, de manera que puedan manejar paquetes de ambos protocolos. Todos los sistemas operativos modernos lo incorporan por defecto para facilitar la transición.

Hay que tener en cuenta que, aunque el sistema operativo soporte IPv6, no siempre el software de aplicación puede hacer uso de él. Será necesario en ese caso actualizar ese software a una versión superior que sí lo soporte.

Servidores proxy

Se pueden usar servidores específicos a nivel de aplicación (proxies) para dar acceso a los nodos que sólo soportan IPv6 a servidores remotos que sólo soportan IPv4. Esto se puede hacer mediante mecanismos específicos denominados NAT64 y DNS64.

Tunneling

Cuando un nodo o red IPv6 tiene que atravesar otra red que sólo soporta IPv4 para alcanzar sus destinos se les llama nodo o red aislados. En este caso, han de usarse técnicas de tunneling (encapsulado de paquetes) para atravesar la ruta. En este caso IPv4 (o incluso UDP) funciona como una especie de capa de enlace entre nodos IPv6. Las técnicas son variadas según los fabricantes.

También existe el tunneling de IPv4 dentro de IPv6, para equipos que no soportan doble pila, pero se usa mucho menos.



Tunneling automático

En contraposición al tunneling usado para atravesar otras redes, los mecanismos de tunneling automático proveen un mecanismo de transición para conectividad entre nodos IPv4 e IPv6. Se han desarrollado varias técnicas, de las cuales vamos a profundizar en las más extendidas: 6to4 y Teredo.

6to4

Es el método recomendado por el RFC 3056. Se determinan los extremos del túnel mapeando ciertas direcciones IPv4 llamadas anycast (direcciones que representan a determinados nodos dentro de cualquier red, es decir, obvian la parte netid de la dirección).

Este sistema tiene la ventaja de que no necesita la colaboración de los proveedores de Internet. Funciona automáticamente sobre la red IPv4. Sólo es necesario que el router que da acceso a la red soporte el uso del prefijo especial 2002::/16.

Cuando un paquete IPv4 entra en la red IPv6, el router convierte su dirección IP a una con el prefijo 2002::/16. A la salida de la red, la dirección se puede volver a convertir a su forma original.

Una buena pregunta que tienes que estar haciéndote es qué podemos hacer si la dirección de destino es IPv6 y no se puede convertir a IPv4. En ese caso, el paquete se envía a la dirección anycast 192.88.99.1. En el otro extremo de la red, confiamos en que algún router esté escuchando esa dirección y pueda encontrar al destino.

Un inconveniente importante de este mecanismo es que la dirección IP del nodo que envía el paquete no puede ser privada (colisionaría con cualquier otra en la red de destino). 

Teredo

Teredo es un mecanismo de tunneling que no necesita que la dirección origen sea pública, lo que lo hace más universal.

En este caso se utiliza UDP como medio de encapsulamiento. Tiene la ventaja sobre 6to4 de poder atravesar enrutadores que estén usando NAT (un mecanismo de traducción de direcciones entre redes que explicamos en otro artículo de esta serie).
Los equipos Windows (a partir de Vista) incluyen ambas técnicas por defecto. Los equipos Linux sólo incorporan 6to4 por defecto y Teredo se puede instalar aparte.



No hay comentarios:

Publicar un comentario

Expresa tu opinión respetando a los demás y a unas mínimas reglas del lenguaje castellano.