Documento escrito por Nico VanHaute
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:
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).
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.
A continuación se indica cómo se ve un datagrama IPv6:
<--------------------------- 32 bits --------------------------->
| |||
|
|||
|
|||
|
|||
|
A continuación se indican los significados de los diferentes campos:
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.
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.
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.
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.
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:
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.
Los encabezados salto a salto contienen información dirigida a todos los routers de la ruta.
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:
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.
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.
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.
Para obtener más información sobre el protocolo IPv6, consulte RFC2460 que explica el protocolo detalladamente:
Documento escrito por Nico VanHaute