Ramón Millán - Consultoría en Tecnologías de la Información y Comunicaciones

El protocolo IPv6 (II)

Autor: Ramón Jesús Millán Tejedor

Publicado en Comunicaciones World nº 158, IDG Communications S.A., 2001

Acceder a la primera parte

Direccionamiento en IPv6

Recordemos que las direcciones IP, tienen una longitud de 32 bits. Los bits se dividen en dos campos:

  • El campo de subred, que identifica la subred a la que está conectado el sistema.
  • El campo de sistema, que identifica al equipo dentro de la subred.

La representación de las direcciones IPv4 sigue el esquema x.x.x.x, donde x es un valor decimal de 8 bits, es decir, puede tomar el valor 0-255. Un ejemplo de dirección IP es 136.255.151.252.

En función de la longitud de los campos de subred y de sistema de la dirección IP, se distinguen cinco tipos básicos de direcciones, esquematizados en la Tabla 1:

  • Clase A. El primer bit más significativo es 0. El número total de bits dedicados a la red es de 7, con lo cual se tienen hasta 128 redes, en cada una de las cuales puede haber hasta más de 16 millones de servidores diferentes. Los propietarios típicos de estas direcciones son grandes compañías o países enteros, como por ejemplo IBM o Japón.
  • Clase B. Los dos primeros bits son 10. El número de bits dedicados a la red es de 14, con lo cual se tienen hasta unas 16.000 redes, en cada una de las cuales puede haber hasta más de 65.000 servidores diferentes. Los propietarios de este tipo de redes son grandes compañías, como por ejemplo Ericsson.
  • Clase C. Los tres primeros bits son 110. El número total de bits dedicados a la dirección de red es de 22, con lo cual se tienen hasta casi 2 millones de redes, con hasta 255 servidores diferentes en cada una de ellas. Los propietarios son compañías medianas o pequeñas.
  • Clase D. Los cuatro primeros bits son 1110. Se utilizan para el multicasting, es decir, para tráfico de datos con varios destinatarios (videoconferencias, noticias de radio a traves de Internet, etc.).
  • Clase E. Los cuatro primeros bits son 1111. Se utiliza con fines experimentales.
Tabla 1: Esquema de las clases de direcciones IP.
Clase Redes Hosts Primer octeto
A 128 16 millones 0-127
B 16.000 65.000 128-191
C 2 millones 255 192-223
D multicasting - 224-239

Las redes pueden ser divididas en redes más pequeñas de carácter local, denominadas subredes, a traves de un proceso conocido como subnetting. El subnetting proporciona al administrador varios beneficios, como una flexibilidad adicional, un uso más eficiente de las direcciones de red, y la capacidad de soportar tráfico de broadcast (el tráfico de broadcast nunca atraviesa los routers). La subred es creada tomando parte de los bits correspondientes al campo de servidor, denotándolos por campo de subred. El número de bits varía y viene especificado por la máscara de subred. El enmascaramiento de subred aislada asigna un 1 binario a los bits que pertenecen a la parte de red y un 0 binario a los bits que pertenecen a la parte de la dirección local. Por ejemplo, la máscara de subred para la clase C es 255.255.255.0 sin subnetting, pero si consideramos 5 bits para subredes, la máscara de subred será 255.255.255.248; tendremos por lo tanto, 25-2=30 subredes posibles, con 23-2=6 servidores por subred, pues las direcciones de subred y de sistema con todos los bits a 0 o 1 son direcciones reservadas. La máscara de subred local será utilizada por los routers aplicando una operación and lógica sobre los paquetes que reciben, con el fin de encaminar en función de la dirección de red.

El concepto contrario al subnetting es el supernetting o CIDR (Classless Inter-Domain Routing). Debido a la pocos niveles de jerarquía de las direcciones, que sólo consideran una parte de subred y otra de sistema, las tablas de encaminamiento de las redes troncales de Internet han crecido enormemente, reduciendo la eficiencia de los routers. El supernetting divide las direcciones, en bloques de tamaño variable.

Las direcciones en IPv6, descritas en la RFC 2373, soportan un número de bits que cuadriplica al utilizado por las de IPv4. Así, mientras el espacio de direccionamiento total en IPv4 es de 232 (4.294.967.296), en IPv6 lo es de 2128 (340.282.366.920.938.463.463.374.607.431.768.211.456). Para hacerse una idea del tremendo espacio de direcciones disponible, se suele indicar que esto supone, en un sentido teórico, 665.570.793.348.866.943.898.599 direcciones por metro cuadrado de la superficie del planeta Tierra (asumiendo que la superficie de la Tierra tiene 511.263.971.197.990 metros cuadrados).

Las direcciones IPv6 de 128 bits identifican interfaces individuales o grupos de interfaces. Las direcciones IPv6, cualquiera que sea el tipo, se asignan a las interfaces, no a los nodos. Puesto que cada interfaz pertenece a un único nodo, cualquiera de las direcciones de interfaces unicast de ese nodo podrían ser utilizadas como un identificador del nodo. Una única interfaz puede tener múltiples direcciones IPv6 de cualquier tipo; por ejemplo una interfaz podría tener una dirección unicast, otra anycast, y otra multicast simultáneamente.

Se distinguen tres tipos de direcciones en IPv6:

  • Unicast. Las direcciones unicast identifican a una única interfaz, es decir, un paquete enviado a una dirección unicast será entregado sólo a la interfaz identificada con dicha dirección. Es el equivalente a las direcciones IPv4 actuales.
  • Anycast. Las direcciones anycast identifican un grupo de interfaces, de forma que un paquete enviado a una dirección anycast será entregado a un miembro cualquiera del grupo, siendo generalmente el más cercano según la distancia asignada en el protocolo de encaminamiento.
  • Multicast. Las direcciones multicast identifican, al igual que las anycast, a un grupo de interfaces, pero un paquete enviado a una dirección multicast, es enviado a todas las interfaces del grupo. Las direcciones de broadcast no existen en IPv6, su misión ha sido suplantada por las direcciones multicast.

La representación de las direcciones IPv6 sigue el esquema x:x:x:x:x:x:x:x, donde x es un valor hexadecimal de 16 bits. No es preciso escribir los 0s a la izquierda de cada campo y, puesto que además pueden existir varias cadenas de 0s, se permite la escritura de su abreviación mediante el uso de "::", el cual representa múltiples grupos de 16 bits a 0 binario. Por ejemplo, la dirección 0:0:0:0:0:0:0:0000000000000001, puede escribirse como ::1. No obstante, de tener una dirección del tipo 0:0:0:1:0:0:0:1, sólo puede ser abreviada como ::1:0:0:0:1 o 0:0:0:1::1; pues de hacerlo como ::1::1, podría ser confundida con otras direcciones, por ejemplo con la 0:0:1:0:0:0:0:1.

El tipo específico de dirección IPv6 viene indicado por los primeros bits de la dirección. Este campo de longitud variable es denominado prefijo y permite conocer dónde está conectado un determinado nodo, es decir, su ruta de encaminamiento. La dirección IPv6 se compone, por consiguiente, de un prefijo seguido de un identificador de nodo.

En IPv6 se ha reservado (que no asignado) algo más del 15% del espacio de direccionamiento para permitir una fácil transición del resto de protocolos y para el desarrollo de los propios mecanismos del protocolo, como podemos ver en la Tabla 2. El 85% se ha dejado para un uso futuro. Como vemos, la estructura de direcciones de IPv6 ha sido diseñada para soportar las direcciones, como IPX o NSAP. De esta forma se facilita la migración de otros protocolos a IPv6.

Tabla 2: Prefijos.
Estado Prefijo (en binario) Fracción del espacio
Reservado 0000 0000 1/256
Reservado para NSAP 0000 0001 1/256
Reservado para IPX 0000 001 1/128
No asignado 0000 010 1/128
No asignado 0000 1 1/32
No asignado 001 1/8
Direcciones unicast globales agregables basadas en el proveedor 010 1/8
No asignado 101 1/8
No asignado 110 1/8
No asignado 1110 1/16
No asignado 1111 0 1/32
No asignado 1111 10 1/64
No asignado 1111 110 1/128
No asignado 1111 1110 0 1/512
Direccions unicast locales de enlace 1111 1110 10 1/1.024
Direcciones unicast locales de sitio 1111 1110 11 1/1.024
Direcciones multicast 1111 1111 1/256

Las direcciones unicast globales agregables basadas en el proveedor, son utilizadas para comunicaciones globales en todo Internet. Estas direcciones son semejantes a las direcciones IPv4 utilizando CIDR. Los tres primeros bits, correspondientes al prefijo son 101. El resto de la dirección la forman los siguientes campos, de longitud variable hasta hacer un total de 128 bits:

  • Campo de registro, que identifica a la entidad de Internet de que asigna los identificadores a los proveedores de servicios.
  • Campo de proveedor, que identifica a un determinado proveedor de servicios, el cual asigna parte de su espacio de direccionamiento a sus subscriptores.
  • Campo de subscriptor, que diferencia a los distintos subscriptores conectados a Internet a traves de un mismo proveedor de servicio.
  • Campo de subred, que especifica una grupo de nodos físicamente conectados en la red del subscriptor.
  • Campo de interfaz, que caracteriza a una interfaz de entre todas las conectadas a una determinada subred.

Las direcciones unicast de uso local son direcciones que sólo tienen un ámbito de encaminamiento local, es decir, dentro de una red local o dentro de la red de una única compañía, y que podrían ser únicas local o globalmente. Se han definido dos tipos de direcciones locales:

  • Direcciones locales de enlace. Son para ser utilizadas en un único enlace, con propósitos tales como la autoconfiguración de la dirección. Por ello, los routers no pueden retransmitir ningún paquete con direcciones locales de enlace en el origen o el destino. Tienen el prefijo 1111 1110 10, luego tiene un campo de bits 0, y finalmente el campo que identifica a la interfaz.
  • Direcciones locales de sitio. Son para ser utilizados en un único sitio, sin la necesidad de un prefijo global. Por ello, los routers no pueden retransmitir ningún paquete con direcciones locales de sitio en el origen o el destino fuera del sitio local u organización. Tienen el prefijo 1111 1110 11, luego un campo de bits a 0, un campo con el identificador de subred, y finalmente el identificador de interfaz.

En ambos tipos de direcciones locales el identificador de interfaz es un identificador que debe ser único en el dominio en el cual está siendo usado. En la mayoría de los casos este identificador utilizará la dirección IEEE 802 de 48 bits de ese nodo, por ejemplo, en el caso de una red Ethernet se utilizará la dirección MAC. La subred, para el caso de las direcciones locales de sitio, identifica una red determinada del sitio local u organización.

Las direcciones de uso local permiten a las organizaciones que aún no se han conectado a Internet, operar sin la necesidad de solicitar un prefijo de dirección del espacio global de direcciones de Internet. Si la organización se incorpora más adelante a Internet, puede utilizar el identificador de subred y de interfaz en combinación con un prefijo global (es decir, un identificador de registro, otro de proveedor y otro de subscriptor) para crear una dirección global. Esto supone una mejora significativa respecto a IPv4, pues requiere que los sitios que utilizan direcciones IPv4 privadas (no globales) se renumeren manualmente cuando se conectan a Internet. IPv6 hace la renumeración automáticamente.

Las direcciones unicast especiales definidas en IPv6 son:

  • Dirección de autoretorno o loopback. Es la ::1. No debe ser asignada a una interfaz física, pues se trata de una interfaz virtual. Se utiliza para pruebas y comunicaciones dentro de un mismo nodo. En IPv4 es cualquier tipo de dirección que comience por 127 en el primer octeto.
  • Dirección no especificada. Es la ::. No debe ser asignada a ningún nodo, pues indica ausencia de dirección. Por ejemplo, se haya en el campo de dirección fuente, indica que el nodo está iniciándose y todavía no sabe cuál es su dirección.
  • Direcciones IPv6 compatibles con IPv4. Son utilizadas en un mecanismo de transición de IPv4 a IPv6 conocido por túneles dinámicos/automáticos, que consiste básicamente en el envío de paquetes IPv6 sobre infraestructura de encaminamiento IPv4 de forma totalmente transparente, mediante el encapsulamiento del paquete IPv6 en un paquete IPv4. El formato de estas direcciones consiste en los primeros 96 bits a 0, y los otros 32 con la dirección IPv4.
  • Direcciones IPv6 proyectadas desde IPv4. Son utilizadas para representar las direcciones IPv4 en los nodos que sólo soportan IPv4, como direcciones IPv6. Es decir, permiten que los nodos que sólo soportan IPv4, puedan seguir trabajando en IPv6. El formato de estas direcciones consiste en los primeros 80 bits a 0, los siguientes 16 bits a 1, y los últimos 32 bits con la dirección IPv4.

Las direcciones anycast, descritas en la RFC 2526, utilizan cualquiera de los formatos de direcciones definidos para las direcciones unicast. De esta forma, las direcciones anycast son sintácticamente indistinguibles de las direcciones unicast. Cuando una dirección unicast es asignada a más de una interfaz, convirtiendose así en una dirección anycast, los nodos a los cuales se les ha asignado esa dirección se deben configurar explícitamente para que sepan que se trata de una dirección anycast.

Las direcciones multicast están descritas en la RFC 2375. Tienen un prefijo 1111 1111. Despues, tienen un campo de bandera de 4 bits, de los cuales los tres primeros están reservados y deben ser inicializados a 0, el último bit puede estar a 0, lo cual indica una dirección multicast asignada permanentemente, o a 1, si es una dirección multicast asignada transitoriamente. El campo que sigue al de banderas es tambien de 4 bits y se denomina ámbito; su valor se utiliza para limitar el ámbito del grupo de multicast (global, local de nodo, local de enlace, local de sitio, etc.). Finalmente, el campo de grupo de 112 bits, identifica el grupo de multicast.

Descubrimiento de nodos vecinos

El protocolo equivalente (aunque con grandes mejoras y ventajas) en IPv6, al protocolo de resolución de direcciones o ARP (Address Resolution Protocol) en IPv4, es el de descubrimiento de vecinos o ND (Neigbour Discovery), descrito en la RFC 2461. Recordemos que ARP, es un protocolo que utiliza el broadcast para que un nodo pueda obtener la dirección física de otro a partir de su dirección IP. Básicamente, lo que hace el nodo es preguntar a todos los nodos vecinos cuál es la dirección física del nodo de dirección IP con el que quiere comunicarse, respondiendole sólo el nodo con dicha dirección IP, con un paquete que contiene su dirección física.

El protocolo ND utiliza el multicast y es independiente del tipo de enlace físico en cuestión. Se trata de un protocolo bastante complejo y sofisticado, ya que es la base para permitir el mecanismo de autoconfiguración en IPv6. ND emplea los mensajes de ICMPv6 para algunos de sus servicios. Ofrece, entre otros, mecanismos para: descubrir routers, prefijos y otros parámetros, autoconfiguración de direcciones, resolución de direcciones, determinación del siguiente salto, detección de direcciones duplicadas o cambios, redirección, etc. El protocolo ND define cinco tipos de paquetes ICMPv6:

  • Solicitud de router (133). Es generado por una interfaz cuando es activada, para pedir a los routers de su red, que se anuncien inmediatamente.
  • Anunciación de router (134). Es generado por los routers periódicamente (de 4-1.800 segundos) o como respuesta a una solicitud de router, a traves de multicast, para informar de su presencia, así como de los parámetros de enlace y de Internet (prefijos, tiempos de vida, configuración de direcciones, tamaño máximo de la unidad de transmisión o MTU, etc.). Es fundamental para permitir la remuneración, con lo cual para las empresas les es muy sencillo cambiar de proveedor de servicios o utilizar varios de forma conjunta.
  • Solicitud de vecino (135). Es generado por los nodos para determinar la dirección en la capa de enlace de sus vecinos, para verificar que el nodo vecino sigue activo (es alcanzable), o para detectar las direcciones duplicadas.
  • Anunciación de vecino (136). Es generado por los nodos como respuesta a la solicitud de vecino, o bien para indicar cambios de direcciones en la capa de enlace.
  • Redirección (137). Es generado por los routers para informar a los servidores de un salto mejor para llegar a un determinado destino.

Transición de IPv4 a IPv6

La transición de IPv4 a IPv6 no tendrá lugar de la noche a la mañana. Las dos versiones de IP deberán coexistir durante muchos años. Básicamente, IPv6 puede ser implementado como una actualización software en los nodos IPv4 actuales, comenzando un período de transición para minimizar los costes de nuevos equipos y proteger las fuertes inversiones realizadas. Sin embargo, es difícil saber cuando las operadoras en Internet migrarán a la tecnología IPv6. En la actualidad la gran mayoría de las operadoras utiliza nodos IPv4, y con esta situación, donde casi todo el tráfico debería adaptarse a redes basadas en IPv4, la motivación para el cambio es muy baja. Las nuevas características de autoconfiguración, que hace que las redes IPv6 más fáciles de configurar y mantener que las redes IPv4, pueden ser atractivas para nuevas operadoras que han de realizar un despliegue de infraestructura muy rápido. Por otro lado, para facilitar la migración es importante que las aplicaciones IPv4 existentes sean capaces de operar tambien con las aplicaciones IPv6; por ejemplo, los navegadores de Internet deben ser capaces de comunicarse utilizando IPv6 e IPv4.

El principal problema es, que mientras los sistemas IPv6 son compatibles hacia atrás, es decir, pueden enviar, encaminar y recibir paquetes IPv4, los sistemas IPv4 actuales no son capaces de manejar paquetes IPv6. Lo ideal sería declarar unos días de inactividad, durante los cuales todas las máquinas de Internet serán desactivadas, y se migraría de IPv4 a IPv6. No obstante, una tarea así, con millones de máquinas y de administradores de redes implicados, es prácticamente imposible. Seguidamente se presentan las dos principales opciones (que pueden trabajar de forma aislada o conjunta), descritas en la RFC 1993, que hay para solventar esta limitación.

La primera opción es introducir una doble pila completa de protocolos, IPv4 e IPv6, en los nodos IPv6. De esta forma, este nodo IPv6/IPv4 puede enviar y recibir paquetes IPv6 e IPv4. Cuando trabaje con un nodo IPv4, el nodo IPv6/IPv4 puede utilizar paquetes IPv4; cuando trabaje con un nodo IPv6, puede utilizar paquetes IPv6. Los nodos IPv6/IPv4 deben tener tanto direcciones IPv6 como IPv4. Deben de ser capaces tambien de descubrir si otro nodo es capaz de utilizar IPv6 o sólo IPv4. Esto se puede conseguir utilizando el protocolo de resolución de nombres de dominio o DNS, que puede devolver una dirección IPv6 si el nombre del nodo que se está resolviendo es capaz de utilizar IPv6, o bien una dirección IPv4 en caso contrario. Por supuesto, si el nodo que hace la petición DNS únicamente puede utilizar IPv4, DNS devolverá sólo una dirección IPv4.

Según este metodo, si cualquiera de los nodos intermedios sólo puede operar con IPv4, se deben utilizar paquetes IPv4. Por ello, es posible que la comunicación entre dos nodos extremos IPv6, tenga lugar con paquetes IPv4. Lo que se hace es que ambos extremos envían paquetes IPv6, pero cuando estos lleguen a un nodo IPv4, todo el paquete IPv6 será encapsulado en el campo de datos del paquete IPv4 y se llevará a cabo una correspondencia de direcciones, perdiendo la información relevante de los campos de la cabecera IPv6.

La segunda opción es utilizar túneles. Esto permitiría que los nodos extremos IPv6 se comuniquen siempre en IPv6, aunque haya nodos intermedios IPv4. Se considera un túnel a todos los nodos IPv4 entre dos nodos IPv6.

Utilizando esta tecnica, el nodo IPv6 que hace frontera con el túnel, toma el paquete IPv6, y lo pone en el campo de datos de un paquete IPv4. Este paquete IPv4 tiene como dirección de destino el nodo IPv6 en la parte final del túnel y es enviado al primer nodo IPv4 que conforma el túnel. Los nodos IPv4 del túnel encaminan el paquete, sin tener constancia de que el paquete IPv4 que están manejando contiene un paquete IPv6. Cuando este paquete llega al extremo receptor IPv6 del túnel, que es precisamente el destino del paquete, este determina que el paquete IPv4 contiene un paquete IPv6, extrae el paquete IPv6 y lo encamina exactamente del mismo modo que si hubiera recibido el paquete IPv6 de un nodo IPv4 vecino.

Foro IPv6

Los principales organismos encargados de desarrollar y estandarizar la tecnología de Internet son cuatro:

  • ISOC (Internet Society). Sociedad profesional para facilitar, soportar y promover la evolución y crecimiento de Internet como una infraestructura global de investigación en comunicaciones.
  • IAB (Internet Architecture Board). Cuerpo de coordinación y supervisión tecnica dependiente de la ISOC, compuesto por unos quince voluntarios internacionales de varias disciplinas.
  • IETF (Internet Engineering Task Force). Cuerpo de la IAB, coordinado por la IESG (Internet Engineering Steering Group), encargado del desarrollo de las especificaciones que se convertirán en estándares. Se compone de unos veinte grupos de trabajo, cada uno tratando un problema específico.
  • IRTF (Internet Research Task Force). Cuerpo de la IAB, encargado de la investigación a largo plazo, sin división en áreas. Es coordinado por la IRSG (Internet Research Steering Group).

Por otro lado, el Foro IPv6 es un consorcio internacional sin ánimo de lucro creado en el año 1999, que está formado por las principales instituciones de investigación y desarrollo, universidades, y consultoras y proveedores de infraestructura de telecomunicaciones. Su misión es promover el uso de IPv6 en el mercado para crear la próxima generación de Internet, de mayor calidad y más segura, apoyando la estandarización y desarrollo estable de este protocolo, y fomentando su conocimiento.

Los objetivos del Foro IPv6 son los enumerados a continuación:

  • Establecer un foro internacional y abierto de experiencia en IPv6.
  • Compartir conocimientos y experiencias entre sus miembros.
  • Promover el desarrollo de nuevas aplicaciones y soluciones globales basadas en IPv6.
  • Promover la interoperabilidad entre las implementaciones normalizadas.
  • Cooperar para alcanzar calidades de servicio extremo a extremo.
  • Resolver problemas que creen barreras para el uso de IPv6.

Como vemos, el Foro IPv6 no tiene por fin desarrollar los estándares de IPv6, pues sólo la IETF, con la que trabaja estrechamente, tiene autoridad sobre ellos. Además, el Foro IPv6 mantiene sus puertas abiertas a acuerdos con otras instituciones o foros industriales, habiendo establecido, por ejemplo, importantes acuerdos de colaboración con el Foro UMTS.

En el Sitio Web del Foro IPv6, cuya página de inicio se muestra en la Figura 3 se puede conseguir información detallada sobre sus actividades, estándares, y el protocolo IPv6 en general.

Sitio Web del Foro IPv6
Figura 3: Sitio Web del Foro IPv6.

Acceder a la primera parte

Volver al listado de artículos