Protocolo IPv6

Septiembre 2017

Documento escrito por Nico VanHaute

Historia del protocolo IP

Los días del protocolo IP en su formato actual (IPv4) están contados. A partir de la mitad de la década de los 90, las universidades, las industrias de alta tecnología y el gobierno comenzaron a utilizar Internet en gran medida, pero son las empresas comerciales las que se interesan cada vez más en Internet, que será utilizada por una gran cantidad de individuos y sistemas, todos con diferentes necesidades. Por ejemplo, con la inminente convergencia de las industrias informáticas, de redes, audiovisuales y de entretenimiento, dentro de poco todos los televisores se transformarán en equipos para acceder a Internet, lo cual permitirá que miles de millones de personas disfruten, por ejemplo, de videos a la carta, telecompras o comercio electrónico. En estas circunstancias, IPv6 (también denominado IPng por IP próxima generación) debe ofrecer mayor flexibilidad y eficacia para resolver una amplia gama de nuevos problemas, y nunca deben faltarle direcciones.

Los principales objetivos de este nuevo protocolo son:

  • admitir miles de millones de equipos, superando las limitaciones de espacio para las direcciones IP actuales;
  • reducir el tamaño de las tablas de enrutamiento;
  • simplificar el protocolo para permitir que los routers enruten datagramas de manera más rápida;
  • brindar mejor seguridad (autenticación y confidencialidad) que la proporcionada por el protocolo IP actual;
  • prestar más atención al tipo de servicio y, particularmente, a los servicios asociados con el tráfico en tiempo real;
  • facilitar la difusión a destinos múltiples, permitiendo especificar el tamaño;
  • permitir la movilidad de un equipo sin cambiar su dirección;
  • permitir el futuro desarrollo del protocolo;
  • posibilitar la coexistencia pacífica del protocolo antiguo con el nuevo.

Protocolo IPv6

El protocolo IPv6 responde razonablemente a los objetivos fijados. Conserva las mejores funciones de IPv4, mientras que elimina o minimiza las peores y agrega nuevas cuando es necesario.

En general, IPv6 no es compatible con IPv4, pero es compatible con todos los demás protocolos de Internet, incluyendo TCP, UDP, ICMP, IGMP, OSPF, BGP y DNS. A veces se requieren modificaciones mínimas (particularmente, cuando se trabaja con direcciones extensas).

Las principales funciones de IPv6

La principal innovación de IPv6 es el uso de direcciones más extensas que con IPv4.
Están codificadas con 16 bytes y esto permite que se resuelva el problema que hizo que IPv6 esté a la orden del día: brindar un conjunto prácticamente ilimitado de direcciones de Internet.

IPv4 puede admitir 2^32=4,29.10^9 direcciones mientras que IPv6 puede admitir 2^128=3,4.10^38 direcciones.

La mejora más importante de IPv6 es la simplificación de los encabezados de los datagramas. El encabezado del datagrama IPv6 básico contiene sólo 7 campos (a diferencia de los 14 de IPv4). Este cambio permite que los routers procesen datagramas de manera más rápida y mejore la velocidad en general.

La tercera mejora consiste en ofrecer mayor flexibilidad respecto de las opciones. Este cambio es esencial en el nuevo encabezado, ya que los campos obligatorios de la versión anterior ahora son opcionales.
Además, la manera en la que las opciones están representadas es distinta, dado que permite que los routers simplemente ignoren las opciones que no están destinadas a ellos. Esta función agiliza los tiempos de procesamiento de datagramas.

Además, IPv6 brinda más seguridad.
La autenticación y confidencialidad constituyen las funciones de seguridad más importantes del protocolo IPv6.

Finalmente, se ha prestado más atención que antes a los tipos de servicios. Si bien el campo Type of services (Tipo de servicios) en el datagrama IPv4 se utiliza pocas veces, el esperado aumento del tráfico multimedia en el futuro demanda que se le otorgue mayor importancia.

Encabezados de datagramas básicos

A continuación se indica cómo se ve un datagrama IPv6:

<--------------------------- 32 bits --------------------------->

Version (Versión) Traffic class (Clase de tráfico) Flow label (Etiqueta de flujo)
Payload length (Longitud de carga útil) Next header (Siguiente encabezado) Hop limit (Límite de saltos)
Source IP address (Dirección IP de origen)
Destination IP address (Dirección IP de destino)
Data (Datos)

A continuación se indican los significados de los diferentes campos:

  • El campo Version (Versión) siempre es equivalente a 4 bits para IPv6. Durante el período de transición de IPv4 a IPv6, los routers deberán fijarse en este campo para saber qué tipo de datagrama están enrutando.
  • El campo Traffic Class (Clase de tráfico) (codificado con 8 bits) se utiliza para distinguir las fuentes que deben beneficiarse del control de flujo de otras. Se asignan prioridades de 0 a 7 a fuentes que pueden disminuir su velocidad en caso de congestión. Se asignan valores de 8 a 15 al tráfico en tiempo real (datos de audio y video incluidos) en donde la velocidad es constante.
    Esta distinción en los flujos permite que los routers reaccionen mejor en caso de congestión. En cada grupo de prioridad, el nivel de prioridad más bajo se relaciona con los datagramas de menor importancia.
  • El campo Flow label (Etiqueta de flujo) contiene un número único escogido por la fuente que intenta facilitar el trabajo de los routers y permitir la implementación de funciones de calidad de servicio como RSVP (Resource reSerVation setup Protocol [Protocolo de reserva de recursos]). Este indicador puede considerarse como un marcador de un contexto en el router. El router puede entonces llevar a cabo procesamientos particulares: escoger una ruta, procesar información en "tiempo real", etc.
    El campo de etiqueta de flujo puede llenarse con un valor aleatorio, que se utilizará como referencia del contexto. La fuente mantendrá este valor para todos los paquetes que envíe para esta aplicación y este destino. El procesamiento se optimiza debido a que el router ahora sólo tiene que consultar cinco campos para determinar el origen de un paquete. Además, si se utiliza una extensión de confidencialidad, la información relacionada con los números de puerto está enmascarada para los routers intermediarios .
  • El campo Payload limit (Longitud de carga útil) de dos bytes contiene sólo el tamaño de la carga útil, sin tener en cuenta la longitud del encabezado. Para paquetes en los que el tamaño de datos es superior a 65.536, este campo vale 0 y se utiliza la opción de jumbograma de la extensión "salto a salto".
  • El campo Next header (Siguiente encabezado) tiene una función similar a la del campo protocol (protocolo) en el paquete IPv4: simplemente identifica el encabezado siguiente (en el mismo datagrama IPv6). Puede ser un protocolo (de una capa superior ICMP, UDS, TCP, etc.) o una extensión.
  • El campo Hop limit (Límite de saltos) reemplaza el campo "TTL" (Time-to-Live [Tiempo de vida]) en IPv4. Su valor (de 8 bits) disminuye con cada nodo que reenvía el paquete. Si este valor llega a 0 cuando el paquete IPv6 pasa por un router, se rechazará y se enviará un mensaje de error ICMPv6. Esto se utiliza para evitar que los datagramas circulen indefinidamente. Tiene la misma función que el campo Time to live (Tiempo de vida) en IPv4, es decir, contiene un valor que representa la cantidad de saltos y que disminuye con cada paso por un router. En teoría, en IPv4, hay una noción del tiempo en segundos, pero ningún router la utiliza. Por lo tanto, se ha cambiado el nombre para que refleje su verdadero uso.
  • Los siguientes campos son Source address (Dirección de origen) y Destination address (Dirección de destino).
    Después de diferentes debates, se acordó que lo mejor era que las direcciones tuvieran una longitud fija equivalente a 16 bytes.
    Los primeros bits de la dirección —el prefijo— definen el tipo de dirección. Las direcciones que comienzan con 8 ceros se reservan, en particular para las direcciones IPv4. Por lo tanto, todas las direcciones que comienzan con 8 ceros se reservan para las direcciones IPv4. Se admiten dos variantes, que se distinguen según los 16 bits siguientes (o sea 16 bits a 0 ó 1).

División geográfica con prefijos

El uso de prefijos separados para direcciones asignadas a un proveedor y direcciones asignadas a un área geográfica es un acuerdo entre dos visiones diferentes del futuro de Internet. Cada uno de estos proveedores tiene una proporción reservada del espacio de la dirección (1/8 de este espacio). Los primeros 5 bits que le siguen al prefijo 010 se utilizan para indicar en qué "registro" se encuentra el proveedor de acceso. Actualmente, existen tres registros operativos, para América del Norte, Europa y Asia. Pueden agregarse hasta 29 registros más adelante.

Cada registro puede dividir los 15 bytes restantes como lo desee. Otra posibilidad es utilizar un byte para indicar la nacionalidad del proveedor y dejar libres los bytes siguientes para definir una estructura para direcciones específicas.

El modelo geográfico es el mismo que el de la red de Internet actual, en el que los proveedores de acceso no tienen una función demasiado importante. En este marco, IPv6 puede administrar 2 tipos de direcciones.

Las direcciones de vínculos y sitios locales sólo tienen una especificación local. Otras organizaciones pueden volver a usarlas sin que se origine ningún conflicto. No pueden extenderse más allá de los límites de la organización, lo que las hace particularmente adecuadas para quienes utilizan firewalls para proteger sus redes privadas de Internet.

Dirección de difusión

Las direcciones de difusión a destinos múltiples cuentan con un campo Flag (Indicador) (4 bits) y un campo Scope (Ámbito) (4 bits) después del prefijo, y después un campo de identificación de grupo (112 bits). Uno de los bits del indicador distingue grupos permanentes de grupos temporales.

El campo Scope (Ámbito) permite que la difusión se limite a una zona.

Dirección de difusión ilimitada (anycast)

Además de admitir direcciones punto a punto estándar (difusión individual) y direcciones a destinos múltiples (difusión múltiple), IPv6 admite un nuevo tipo de dirección de difusión (difusión ilimitada).

Esta técnica es similar a la difusión a destinos múltiples en que la dirección de destino es un grupo de direcciones, pero en vez de intentar enviar el datagrama a todos los miembros del grupo, intenta enviarlo a un solo miembro del grupo, es decir, a aquel que está más cerca o que podrá recibirlo.

Notación IPv6

Se ha definido una nueva notación para describir las direcciones de 16 bytes IPv6. Comprende 8 grupos de 4 números hexadecimales separados por dos puntos. Por ejemplo:

8000:0000:0000:0000:0123:4567:89AB:CDEF

Debido a que muchas direcciones tienen demasiados ceros en su lenguaje, se definieron 3 optimizaciones. Primero, el primer cero de un grupo puede descartarse; por ejemplo, 0123 puede escribirse 123. Después, uno o varios de los grupos de 4 ceros consecutivos pueden reemplazarse con dos puntos dobles. Por lo tanto, la dirección anterior se transforma en la siguiente:

8000::::123:4567:89AB:CDEF

Por último, las direcciones IPv4 pueden escribirse con la representación de la dirección en notación decimal separada por puntos y precedida por dos puntos dobles, por ejemplo:

::192.31.254.46

Es necesario ser más explícito acerca de esta notación de direcciones, pero debe saberse que hay una cantidad significativa de direcciones de 16 bytes. Para ser más precisos, existen 2^128, que es aproximadamente 3 x 10^38. Si el mundo completo (tierra y mar juntos) se cubriera de equipos, IPv6 podría asignar 7 x 10^23 direcciones por m².

Se excluye el campo Protocol (Protocolo) porque el campo Next header (Siguiente encabezado) del último encabezado IP del datagrama especifica el tipo de protocolo (por ejemplo, UDP o TCP).

Se han retirado todos los campos relacionados con la fragmentación porque IPv6 aborda la fragmentación de manera diferente.
En principio, todos los equipos y routers que se ajustan a IPv6 deben ser compatibles con los datagramas de 576 bytes. Esta regla hace que la fragmentación tenga una función secundaria. Además, cuando un equipo envía un datagrama IPv6 que es demasiado grande, a la inversa de lo que sucede con la fragmentación, el router que no puede transmitirlo le envía un mensaje de error a la fuente. Este mensaje le indica al equipo fuente que interrumpa el envío de nuevos datagramas a este destino. Contar con un equipo que inmediatamente transmita datagramas del tamaño correcto es mucho más eficaz que permitir que los routers los fragmenten sobre la marcha.

Finalmente, el campo Checksum (Suma de comprobación) dejó de existir porque su cálculo reduce demasiado el rendimiento. De hecho, la confiabilidad de las redes actuales, junto con el hecho de que los niveles de enlace de datos y transporte realizan su propio monitoreo, hace que la ganancia en calidad de una suma de comprobación adicional no valga el precio que hay que pagar para calcularla.

Encabezados de extensión

Este encabezado brinda información adicional de manera eficaz. Cada uno es opcional. Si hay más de un encabezado presente, deben aparecer inmediatamente después del encabezado fijo, preferentemente en el orden de la lista.

Algunos encabezados tienen un formato fijo; otros contienen un número variable de campos variables. Debido a esto, cada elemento está codificado como un terceto (Type, Length, Value [Tipo, Longitud, Valor]). Type (Tipo) es un campo de un byte que especifica la naturaleza de la opción. Se han escogido los diferentes tipos para que los 2 primeros bits les indiquen qué deben hacer a los routers que no saben cómo ejecutar las opciones.
Las opciones son:

  • saltear la opción
  • destruir el datagrama
  • devolver un mensaje ICMP a la fuente
  • destruir el datagrama sin devolver un mensaje ICMP, que es un datagrama para destinos múltiples (para evitar recibir una gran cantidad de informes ICMP)

Length (Longitud) es un campo de un byte. Especifica el tamaño del campo Value (Valor) (de 0 a 255) que contiene información sin especificar enviada al destinatario.

Encabezados salto a salto

Los encabezados salto a salto contienen información dirigida a todos los routers de la ruta.

Encabezados de enrutamiento

Los encabezados de enrutamiento proporcionan la lista de uno o varios routers que deben visitarse en el trayecto hacia el destino. Existen dos formas de enrutamiento que se implementan juntas: enrutamiento estricto (se define la ruta completa) y enrutamiento suelto (se definen sólo los routers obligatorios).

Los primeros cuatro campos de encabezado de extensión de enrutamiento contienen 4 números enteros de un byte:

  • el tipo de encabezado siguiente
  • el tipo de enrutamiento (actualmente 0)
  • la cantidad de direcciones presentes en el encabezado (de 1 a 24)
  • una dirección que brinda la próxima dirección que se debe visitar.
Este último campo comienza con un valor 0 y se incrementa con cada dirección visitada.

Encabezados de fragmentación

Los encabezados de fragmentación procesan la fragmentación de manera similar a IPv4. El encabezado contiene la identificación del datagrama, el número de fragmentos y un bit que especifica si existen otros fragmentos que le siguen. En IPv6, a diferencia de IPv4, sólo el equipo fuente puede fragmentar el datagrama. Los routers en la ruta no pueden hacerlo. Esto permite que el equipo fuente fragmente el datagrama en partes y utilice el encabezado de fragmentación para transmitir las partes.

Autenticación

El encabezado de autenticación brinda un mecanismo que le permite al destinatario de un datagrama asegurarse de la identidad de la fuente. En IPv4 no se proporciona ninguna garantía similar.

El uso de cifrado de datos para el datagrama (su carga útil) refuerza su seguridad; sólo el verdadero destinatario puede leerlo.

Cuando un remitente y un receptor desean comunicarse de manera segura, primero deben acordar una o varias claves secretas que sólo ellos conozcan. Se asigna un número clave de 32 bits a cada una de las 2 claves.

Los números clave son globales, de manera que, por ejemplo, si A utiliza la clave 4 para comunicarse con B, A no puede utilizar esta clave para comunicarse con C. Existen otros parámetros que se asocian con cada clave, como su tiempo de vida, etc.

Para enviar un mensaje autenticado, el equipo fuente, primero construye un datagrama que contiene todos los encabezados IP y la carga útil; después, reemplaza los campos que pueden cambiarse por 0 (por ejemplo, el campo Hop limit [Límite de saltos]). El datagrama se completa con 0 para convertirse en un múltiplo de 16 bytes. De manera similar, la clave secreta utilizada también se completa con 0 para que se convierta en un múltiplo de 16 bytes. Entonces, se calcula una suma de comprobación del cifrado después de la concatenación de la clave de seguridad completa, del datagrama completo y, nuevamente, de la clave de seguridad completa.

El encabezado de autenticación consta de 3 partes. La primera tiene 4 bytes que especifican el número del encabezado siguiente, la longitud del encabezado de autenticación y 16 bits cero. La segunda define el número clave de 32 bits. La tercera contiene la suma de comprobación del cifrado (con MD5 o cualquier otro algoritmo).

El destinatario utiliza el número clave para encontrar la clave secreta. El valor completo de la clave secreta se agrega antes y después de que se complete la carga útil, los campos de encabezados variables eliminan sus ceros, y después se calcula la suma de comprobación del cifrado. Si el resultado del cálculo es equivalente a la suma de comprobación del cifrado contenida en el encabezado de autenticación, el destinatario puede estar seguro de que el datagrama realmente proviene de la fuente con la que comparte la clave secreta. También se asegura de que el datagrama no se haya falsificado sin su conocimiento.

Para los datagramas que deben enviarse de manera secreta, se debe utilizar el encabezado de extensión Carga útil cifrada. Este encabezado comienza con un número clave de 32 bits seguido por la carga útil cifrada.

Opciones de destino

Los encabezados de Opción de destino se utilizan para los campos que no necesitan que el equipo receptor los interprete ni comprenda. En la versión original de IPv6, la única opción de destino que se definió fue la opción nula. Es posible completar este encabezado con 0 para que se convierta en un múltiplo de 8 bits. Este encabezado no se utilizará inicialmente. Se ha definido para garantizar que el nuevo software de enrutamiento lo pueda tener en cuenta, en caso de que algún día alguien contemple la opción de destino.

Más información

Para obtener más información sobre el protocolo IPv6, consulte RFC2460 que explica el protocolo detalladamente:

Documento escrito por Nico VanHaute

Consulta también


IPv6 protocol
IPv6 protocol
Le protocole IPv6
Le protocole IPv6
Il protocollo IPv6
Il protocollo IPv6
O protocolo IPv6
O protocolo IPv6
Última actualización: 16 de octubre de 2008 a las 15:43 por Jeff.
El documento «Protocolo IPv6» se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo libremente. No olvides citar a CCM (es.ccm.net) como tu fuente de información.