domingo, 31 de julio de 2011

Direccionamiento IPv6 (primera subsección)

Vamos a ir entrando en detalles con IPv6, que fue a lo que vinimos. Esta sección es laaarga así que decidí dividirla en dos sub-secciones de 5 partes cada una (así que la siguiente subsección llega el lunes próximo). Esta primera llega hasta el formato de direcciones unicast globales IPv6 (aquí). Todavía no llegamos a la parte de direcciones IPv4 empotradas (que sin entrar en detalles fue exactamente lo que me hizo iniciar la serie), así que solo hay que esperar al siguiente lunes. No les demoro más es muy buen inicio de semana y lo que resta puede traer cosas interesantes, así pues, provecho!  

La principal motivación para la creación de IPv6 fue la de solucionar los problemas de direccionamiento en IPv4. Se requerían más direcciones, pero más que esto, los diseñadores de IPv6 deseaban una forma de interpretarlas, asignarlas y usarlas más acorde con las modernas redes. Basado en esto, no es ninguna sorpresa que muchos de los cambios en IPv6 estén asociados con el direccionamiento IP. El esquema de direccionamiento IPv6 es similar en sus conceptos mas generales al direccionamiento IPv4, pero ha sido completamente revisado para crear un sistema de direccionamiento capaz de soportar la continúa expansión de Internet y las nuevas aplicaciones en el futuro previsible.

En esta sección se describen los conceptos y métodos asociados con el direccionamiento en IPv6. Empiezo con una revisión a algunas generalidades del direccionamiento en la versión 6, incluyendo el modelo de direccionamiento, tipos, tamaños y el espacio de direcciones. Discutiremos las representaciones únicas y a veces confusas y las notaciones utilizadas para las direcciones y los prefijos IPv6. Entonces veremos cómo se organizan y localizan las direcciones en tipos, iniciando con una visión general del espacio de direcciones y luego el formato de la dirección unicast global. Describo los nuevos métodos utilizados para el mapeo de direcciones IP a las direcciones de la red física subyacente. Luego describo algunos detalles especiales de IPv6, incluidas las direcciones reservadas y privadas, la incorporación de direcciones IPv4, las direcciones anycast y multicast, y la autoconfiguración y la re-numeración de las direcciones.

El direccionamiento bajo IPv6 se describe en los principales RFC IPv6, RFC 2460 (Protocolo de Internet versión 6 (IPv6) Specification). Sin embargo, la mayoría de los detalles de direccionamiento IPv6 se encuentran en otros dos estándares: RFC 3513 (Arquitectura del Direccionamiento del protocolo de Internet versión 6 (IPv6)) y RFC 3587 (formato de direcciones globales Unicast IPv6). Este sistema reemplazó el 1998 los estándares RFC 2373 (Arquitectura de direccionamiento IP versión 6) y RFC 2374 (Formato de direcciones IPv6 unicast globales agregables).

Antecedentes: Como en las otras secciones de IPv6 en esta guía, nuestro enfoque del direccionamiento se basa un poco en contrastarlo con el modo en que se estructura en la version IPv4. Recomiendo un conocimiento profundo del direccionamiento IPv4, incluyendo el direccionamiento sin clases CIDR, antes de continuar con esto. Al igual que con las secciones sobre direccionamiento IPv4, la familiaridad con el funcionamiento de los números binarios, y la conversión entre números binarios y decimales es también una buena idea. La sección de antecedentes sobre la representación de datos y los métodos de cálculo pueden ser de ayuda en ese sentido.

En la sección de información general sobre IPv6 vimos que representa una importante actualización del protocolo de Internet, pero que estas modificaciones y adiciones se realizan sin cambiar la naturaleza básica de cómo funciona el protocolo IP. El direccionamiento es el lugar donde se ven la mayoría de las diferencias entre IPv4 e IPv6, pero los cambios están en su mayoría en como son implementadas y usadas estas direcciones. El modelo general utilizado para la asignación de direcciones IP en IPv6 es más o menos el mismo que en IPv4, algunos aspectos no han cambiado en absoluto, mientras que otros han cambiado muy poco.

Aspectos sin cambios en el direccionamiento en IPv6.
Algunas de las características generales del modelo de direccionamiento IPv6 que son básicamente las mismas que en IPv4:
  • Funciones básicas de direccionamiento: Las dos funciones principales del direccionamiento IPv6 son aun la identificación de la interfaz de red y el enrutamiento. Enrutamiento que es facilitado a través de la estructura de las direcciones en la red interna. 
  • Direccionamiento de capa de red: las direcciones IPv6 siguen estando relacionadas con la capa de red en redes TCP/IP, y son distintas de las direcciones de la capa de enlace de datos (también llamada a veces física). 
  • Número de direcciones IP por dispositivo: Las direcciones se siguen concediendo a las interfaces de red, por lo que un host regular, como una PC, por lo general tienen una dirección (unicast), y los routers tienen más de una, para cada una de las redes físicas a las que se conectan. 
  • Interpretación de direcciones y representación de prefijo: las direcciones IPv6 son similares a las direcciones IPv4 "classless" en que se interpretan en una parte que es el identificador de red y una parte el identificador de host, pero la delimitación no está codificada en la misma dirección. Un número de longitud de prefijo, similar a la notación CIDR, se utiliza para indicar la longitud del ID de red (longitud de prefijo). 
  • Direcciones privadas y públicas: Los dos tipos de direcciones existen en IPv6, a pesar de que se definen y utilizan un poco diferente.
Tipos de direcciones IPv6.
Un cambio importante en el modelo de direccionamiento en IPv6 son los tipos de direcciones soportados. IPv4 soporta tres tipos de direcciones: unicast, multicast y broadcast. De éstos, la gran mayoría del tráfico real es unicast. El soporte para direcciones IP multicast no se desplegó ampliamente hasta muchos años después de que la Internet fuera creada, y continúa siendo obstaculizado por diversas cuestiones. El uso del broadcast en IP tuvo que ser severamente restringido por razones de rendimiento (no queremos que ningún dispositivo sea capaz de transmitir a través de la Internet entera!)

IPv6 también es compatible con tres tipos de direcciones, pero con algunos cambios:
  • Direcciones unicast: Estas son las direcciones de nivel unicast como en IPv4, una por cada interfaz de host. 
  • Las direcciones de multidifusión: Estas son direcciones que representan a varios grupos de dispositivos IP: un mensaje enviado a una dirección multicast llega a todos los dispositivos del grupo. IPv6 incluye muchas mejores características de multidifusión y muchas más direcciones multicast que IPv4. Dado que multicast en IPv4 se vio afectada en gran parte debido a la falta de soporte de la función en muchos dispositivos de hardware, el soporte para multidifusión es una parte necesaria, no opcional, de IPv6. 
  • Direcciones anycast: El direccionamiento anycast se utiliza cuando un mensaje debe ser enviado a cualquier miembro de un grupo, pero no es necesario que llegue a todos. Por lo general, al miembro del grupo que sea el más fácil de alcanzar se le enviará el mensaje. Un ejemplo común de cómo se puede emplear el direcionamiento anycast es en el intercambio de carga entre un grupo de routers en una organización.
Concepto clave: IPv6 tiene direcciones unicast y multicast, como IPv4. No existe sin embargo, un concepto distinto de la dirección de difusión en IPv6. Un nuevo tipo de dirección, la dirección anycast, se ha agregado para permitir que un mensaje para ser enviado a cualquiera de los miembros de un grupo de dispositivos.

Implicaciones de los cambios a los tipos de direcciones en IPv6.
El direccionamiento de difusión como un método distinto de direccionamiento se ha eliminado en IPv6. La funcionalidad de difusión se realiza utilizando direccionamiento multicast a los grupos de dispositivos. Un grupo multicast al que pertenecen todos los nodos pueden ser utilizados para la difusión en la red, por ejemplo.
Una implicación importante de la creación de anycast es la eliminación del requisito de estricta singularidad de las direcciones IP. Anycast se logra asignando la misma dirección IP a más de un dispositivo. A los dispositivos también se les debe especificar que están compartiendo una dirección anycast, pero las direcciones en sí son estructuralmente lo mismo que las direcciones unicast.

La mayor parte del resto de esta sección se centra en el direccionamiento unicast, ya que es de lejos el tipo más importante. Multicast y anycast son objeto de especial atención por separado.

De todos los cambios introducidos en IPv6, fácilmente el mas celebrado es el aumento en el tamaño de las direcciones IP, y como resultado, el aumento en el tamaño del espacio de direcciones también. No es de extrañar que estos tamaños se incrementaran en comparación con IPv4, todo el mundo ha sabido por años que el espacio de direcciones IPv4 era demasiado pequeño para soportar el futuro de la Internet. Lo que es notable es de cuánto es el aumento, y cuáles son las implicaciones de cómo se utilizan las direcciones de Internet.

Tamaño de direcciones IPv6
En IPv4, las direcciones IP son de 32 bits de largo, los cuales se suelen agrupar en cuatro octetos de ocho bits cada uno. El espacio teórico de direcciones IPv4 es de 2^32, o 4.294.967.296 direcciones. Para aumentar este espacio de direcciones simplemente aumentamos el tamaño de las direcciones, cada bit adicional que le damos a la dirección duplica el espacio de direcciones. En base a esto, algunas personas esperaban que el tamaño de las direcciones IPv6 aumentara de 32 a 48 bits, o tal vez a 64 bits. Cualquiera de estos números habría dado un número bastante grande de direcciones.

Sin embargo, IPv6 no utiliza ninguna de estas cifras, sino que el tamaño de la dirección IP saltó hasta llegar a 128 bits, o dieciséis octetos de 8 bits/bytes. Esto representa un aumento verdaderamente notable en el tamaño de la dirección, lo que sorprendió a mucha gente.

Espacio de direcciones IPv6.
Los 128 bits de las direcciones IPv6 significan que el tamaño del espacio de direcciones IPv6 es, literalmente, astronómico, como los números que describen el número de estrellas en una galaxia y la distancia a los pulsares más lejanos, el número de direcciones que puede ser soportado en IPv6 es alucinante. Consulte la Figura 94 para una idea de lo que quiero decir con "astronómico".
Figura 94: Una (pobre) representación de los tamaños relativos de los espacios de direcciones IPv4 e IPv6. Clic para ampliar.
Yo quería hacer un bonito gráfico para mostrar los tamaños relativos de los espacios de direcciones IPv4 e IPv6. Usted sabe, representaría el espacio de direcciones IPv6, como una caja grande y el espacio de direcciones IPv4 como una pequeña. El problema es que el espacio de direcciones IPv6 es tan desproporcionado comparado con el espacio de direcciones IPv4 que no hay manera de mostrarlo a escala! Para hacer este esquema a escala, imagine que el espacio de direcciones IPv4 es el cuadrado de 1,6 pulgadas más arriba. En ese caso, el espacio de direcciones IPv6 sería representado por un cuadrado del tamaño del sistema solar. 

Ya que las direcciones IPv6 son de 128 bits de largo, el espacio de direcciones teórico si todas las direcciones se utilizan es 2^128 direcciones. Este número, cuando se obtiene, es 340.282.366.920.938.463.463.374.607.431.768.211.456, que normalmente se expresa en notación científica, alrededor de 3,4 * 10^38 direcciones. Eso es alrededor de 340 trillones de trillones de trillones de direcciones. Como ya he dicho, es bastante difícil de entender lo grande que es este número. Considere lo siguiente:
  • Son suficientes direcciones para asignar varios trillones de direcciones a cada ser humano en el planeta. 
  • La tierra tiene aproximadamente 4,5 billones de años. Si hubiéramos estado asignando direcciones IPv6 a una velocidad de mil millones por segundo desde la Tierra se formó, hubiéramos utilizado hasta ahora menos de la trillonésima parte del espacio de direcciones IPv6. 
  • El área de la superficie terrestre es de 510 billones de metros cuadrados. Si una PC común tiene un tamaño típico de una décima parte de un metro cuadrado, tendríamos que apilar los ordenadores en una pila de 10 mil millones de alto cubriendo toda la superficie de la tierra para utilizar esta cantidad del espacio de direcciones.
Bueno, creo que se entiende la idea. Está claro que uno de los objetivos de la decisión de adoptar direcciones de 128 bits era asegurarse de que nunca nos quedáramos sin espacio de direcciones de nuevo, y parece bastante probable que este sea el caso.

Concepto clave: El espacio de direcciones IPv6 es muy, muy grande. :-)

¿Por qué hicimos las direcciones IPv6 tan grandes?
Sin embargo, también hay desventajas en tener un enorme espacio de direcciones. Tenga en cuenta que incluso con una dirección de 64 bits, tendríamos un espacio de direcciones muy grande: 2^64 es 18.446.744.073.709.551.616 o cerca de 18 millones de trillones, todavía mas direcciones que las que necesitaríamos. Sin embargo, al usar 128 bits hemos hecho que tratar con las direcciones IP se vuelva turbulento (como veremos en el siguiente tema) y también hemos aumentado la sobrecarga, ya que cada cabecera de datagrama u otro lugar donde se haga referencia a las direcciones IP debe utilizar 16 bytes para cada dirección en lugar de los 4 que se necesitaban en IPv4, o de 8, que es lo que se requeriría con una dirección de 64 bits.

¿Entonces por qué "excedernos" usando 128 bits? La razón principal es la flexibilidad. A pesar de que podemos tener un par de zillones de direcciones si las asignamos una a la vez, esto haría que la asignación fuera difícil. Nos deshicimos del direccionamiento orientado a clases a su debido tiempo debido al hecho de que se desperdicia espacio de direcciones, lo cual es cierto en IPv4. La realidad, sin embargo, es que la posibilidad de "malgastar" el espacio de direcciones es un lujo útil.

Tener 128 bits nos permite dividir el espacio de direcciones y asignar diferentes propósitos a los diferentes rangos de bits, y no tenemos que preocuparnos por quedarnos sin espacio. En el tema que describe el formato IPv6 global de direcciones unicast vamos a ver una manera en que los 128 bits se les puede dar un buen uso, veremos que nos permite crear una jerarquía de redes al mismo tiempo que reservammos 64 bits para los ID de host, lo que tiene sus propias ventajas.

El aumento del tamaño de las direcciones IP de 32 bits a 128 bits expande el espacio de direcciones a un tamaño gigantesco, lo que garantiza que nunca más nos quedaremos sin direcciones IP, y nos permite mas flexibilidad en la forma en que son asignadas y utilizadas. Desafortunadamente, hay algunos inconvenientes a este método, y una de ellas es que los números de 128-bit son muy grandes, lo que les hace incómodos y difíciles de usar.

Las direcciones IPv6: demasiado largas para la notación decimal
Las computadoras usan el sistema binario, y no tienen ningún problema manipulando largas cadenas de unos y ceros, pero para los seres humanos es complicado. Incluso las direcciones de 32 bits de IPv4 son incómodas para nosotros, por lo que utilizamos la notación decimal con puntos a menos que tengamos que trabajar en el sistema binario (como ocurre con la división en subredes). Sin embargo, las direcciones IPv6 son tan grandes que aún usando notación decimal se vuelven problemáticas. Para utilizar esta notación, dividiríamos los 128 bits en 16 octetos y representaríamos cada uno con un número decimal de 0 a 255. Sin embargo, no terminaríamos con cuatro de estos números, sino con 16. Una dirección típica de IPv6 en esta notación quedaría como sigue:

128.91.45.157.220.40.0.0.0.0.252.87.212.200.31.255

Las representaciones decimales con puntos y binarias de esta dirección se muestran en la parte superior de la figura 95. En cualquier caso, la palabra "elegante" no es exactamente lo que nos vienen a la mente.
Figura 95: Representaciones binaria, decimal y hexadecimal de las direcciones IPv6.
Clic para ampliar.
Las dos filas superiores muestran las representaciones en decimales con puntos y binarios de una dirección IPv6, ninguna es usada comúnmente (aparte de por los propios ordenadores!) La fila superior de la tabla inferior muestra la representación hexadecimal completa, mientras que las dos filas siguientes ilustran la misma dirección con los ceros suprimidos y comprimida. La última fila muestra la notación mixta, donde los últimos 32 bits de la dirección IPv6 se muestran en notación decimal. Esto es más comúnmente utilizado para incrustar direcciones IPv4.

Notación hexadecimal de las direcciones IPv6. 
Para hacer más cortas las direcciones, se tomó la decisión en IPv6 de cambiar el método principal de expresión de direcciones y utilizar notación hexadecimal en lugar de decimal. La ventaja de esto es que requiere menos caracteres para representar una dirección, y que la conversión de hexadecimal a binario y viceversa, es mucho más fácil que las conversiones entre decimales y binarios. La desventaja es que muchas personas, incluso personas con ciertos conocimientos sobre computadoras, encuentran los números hexadecimales difíciles de comprender y trabajar, sobre todo porque la noción de los 16 valores en cada dígito es un poco extraña. (Yo no soy uno de ellos, pero soy un geek.)
La notación hexadecimal utilizada para las direcciones IPv6 es similar a el mismo método utilizado para las direcciones MAC IEEE 802, en tecnologías como Ethernet. Allí, los 48 bits están representados por seis octetos, cada octeto es un número hexadecimal de 0 a FF, separados por un guión o dos puntos, así:

0A-A7-94-07-CB-D0

Ya que las direcciones IPv6 son más grandes, en lugar de esto se agrupan en ocho palabras de 16 bits, separados por dos puntos, para crear lo que se llama a veces notación hexadecimal con dos puntos, una vez más se muestra en la Figura 95. Por lo tanto, la dirección IPv6 dada en el ejemplo anterior se puede expresar como:

805B:2D9D:DC28:0000:0000:FC57:D4C8:1fff

Para mantener el tamaño reducido, se pueden suprimir los ceros en la notación, por lo que de inmediato puede reducirse esto a:

805B:2D9D:DC28:0:0:FC57:D4C8:1fff

Hmm. Bueno, es definitivamente más corto que la notación decimal con puntos, pero aún no es muy divertido de ver. Cuando se trata con números tan grandes, no hay mucho que podamos hacer. Esto es parte de por qué en IPv6, el uso de nombres DNS para los hosts se vuelve mucho más importante que en IPv4, quien podría recordar una dirección hexadecimal tanto tiempo?

Compresión de ceros en las direcciones IPv6
Afortunadamente, hay un atajo que se pueden aplicar para reducir algunas direcciones aún más. Esta técnica se llama a veces la compresión de cero. El método permite que una sola cadena de ceros contiguos en una dirección IPv6 sea reemplazada por dos puntos dobles. Así, por ejemplo, la dirección de arriba se puede expresar como:

805B:2D9D:DC28::FC57:D4C8:1fff

Sabemos cuántos ceros se sustituyen por el "::" porque podemos ver cuántas palabras hexadecimales totalmente expresadas ("sin comprimir") hay en la dirección. En este caso hay seis, por lo que el "::" representa dos palabras a cero. Para evitar ambigüedades, los puntos dobles sólo puede aparecer una vez en cualquier dirección IP, ya que si aparecen más de una vez, no podríamos decir cuántos ceros fueron reemplazados en cada caso. Por lo tanto, si en nnuestra dirección de ejemplo fuera 805B:2D9D: DC28:0:0:FC57:0:0, podríamos reemplazar el primer par de ceros o el segundo, pero no ambos.

La compresión de ceros no hace el ejemplo mucho más corto, pero debido a la forma en que las direcciones IPv6 están estructuradas, las cadenas largas de ceros son comunes. Por ejemplo, considere la siguiente dirección:

FF00:4501:0:0:0:0:0:32

Con la compresión, esto puede ser expresado como sólo:

FF00:4501::32

Funciona mejor en las direcciones especiales. La dirección completa de bucle invertido de IPv6 es la siguiente:

0:0:0:0:0:0:0:1

Con la compresión, esto es simplemente:

::1

Para más diversión, considere las aún más extrañas, direcciones el IPv6 "no especificadas":

0:0:0:0:0:0:0:0

Aplique compresión de ceros a una dirección que es todo ceros, y ¿qué obtiene? "Así es".

::

No hay números en absoluto! Por supuesto,toma un poco de tiempo acostumbrarse a pensar en "::" como una dirección.

Concepto clave: Por razones de brevedad, las direcciones IPv6 se representan mediante ocho grupos de cuatro dígitos hexadecimales, un formato llamado notación hexadecimal con dos puntos. Técnicas adicionales, llamado supresión de ceros y compresión de ceros, se utilizan para reducir aún más el tamaño de las direcciones que se muestran mediante la eliminación de ceros innecesarios de la presentación de la dirección.

Notación mixta IPv6.
También existe una notación alternativa utilizada en algunos casos, especialmente para la expresión de direcciones IPv6 que integran direcciones IPv4. Para estas, es útil mostrar la parte de la dirección IPv4 en la notación decimal con puntos anterior, ya que esta es la que se usa en IPv4. Dado que la incrustación utiliza los últimos 32 bits para la dirección IPv4, la notación usa los primeros 96 bits en notación hexadecimal con dos puntos, y los últimos 32 bits en decimal con puntos. Así, para usar nuevamente el ejemplo de arriba, en notación mixta que se muestra como:

805B:2D9D:DC28::FC57:212.200.31.255

Este no es realmente un gran ejemplo de notación mixta, porque la incrustación por lo general consiste en largas cadenas de ceros seguidos de la dirección IPv4. Por lo tanto, la compresión de ceros es muy útil aquí. En lugar de ver algo como esto:

0:0:0:0:0:0:212.200.31.255

Por lo general, sólo verá:

::212.200.31.255

A primera vista esto parece ser una dirección IPv4, hay que mantener una estrecha vigilancia sobre los dos puntos en IPv6!

Concepto clave: La notación mixta especial es definida para las direcciones IPv6 cuyos últimos 32 bits contienen una dirección IPv4 incrustada. En esta notación, los primeros 96 bits se muestran en notación hexadecimal regular con dos puntos, y los últimos 32 bits IPv4 al estilo de la notación tradicional decimal con puntos.

Representación del prefijo de longitud en direcciones IPv6 
Al igual que las direcciones IPv4 sin clases, las direcciones IPv6 son fundamentalmente divididas en un número de bits pertenecientes al de ID de red seguido por un número de bits pertenecientes al de ID de host. El identificador de red se llama el prefijo y el número de bits utilizados es la longitud del prefijo. Este prefijo se representa con una barra a continuación de la dirección seguida de la cual se pone la longitud del prefijo. Este es el mismo método utilizado para el direccionamiento classless en IPv4 con CIDR. Por ejemplo, si los primeros 48 bits de la dirección de nuestro ejemplo son el ID de red (prefijo), entonces podríamos expresar esto como 805B:2D9D:DC28::FC57:D4C8:1FFF/48.

Concepto clave: En IPv6 el tamaño del prefijo de la dirección se indica por la longitud del prefijo que sigue la dirección, separados por una barra, al igual que se hace en el direccionamiento IPv4 sin clases.

Al igual que en IPv4, la especificación de toda la red por lo general termina en largas cadenas de ceros. Estos pueden ser reemplazados por "::" usando compresión de ceros. Por ejemplo, el ID de red de 48 bits para el ejemplo anterior es 805B:2D9D:DC28:0:0:0:0:0/48, o 805B:2D9D:DC28::/48. Usted debe incluir el "::" Si va a sustituir los ceros al final.

Después de lidiar durante tantos años con el pequeño espacio de direcciones IPv4, el enorme número de direcciones en IPv6 ha hecho los ingenieros de la IETF se sientan como niños en una tienda de dulces. Eran buenos chicos, sin embargo, y no corrieron a agarrar todos los dulces que pudieron encontrar y a engullírselos. Se consideró con mucho cuidado la forma de dividir el espacio de direcciones para varios usos. Por supuesto, cuando usted tiene tanto dulce, es muy fácil compartirlo.

El plan inicial para la localización del espacio de direcciones IPv6 y el prefijo de formato (FP)
Como fue el caso con IPv4, las dos principales preocupaciones en la decisión de cómo dividir el espacio de direcciones IPv6 fueron la asignación de direcciones y el enrutamiento. Los diseñadores de IPv6 quería estructurar el espacio de direcciones de modo que la asignación de direcciones a los ISP, las organizaciones y los individuos fuera lo más fácil posible.
Al principio, y esto tal vez es irónico, esto llevó a los creadores de IPv6 regresar nuevamente al uso de secuencias de bits específicos para identificar los diferentes tipos de direcciones, al igual que el antiguo esquema de direccionamiento "classful". El tipo de dirección se indica mediante un conjunto de bits en el inicio de la dirección, llamado el prefijo de formato (FP format prefix). El prefijo de formato es conceptualmente idéntico al de los bits del 1 al 4 utilizados en IPv4 "classful" para denotar las clases de direcciones, pero de longitud variable, de entre tres y diez bits. El prefijo de formato se describe en el RFC 2373.

En los años siguientes a la publicación de la RFC 2373, los gurús que manejan el Internet han tenido un cambio de actitud con respecto a cómo deben ser considerados los bloques de direcciones. Todavía querían dividir el espacio de direcciones IPv6 en bloques de tamaño variable para diferentes propósitos. Sin embargo, se dan cuenta de que mucha gente (incluido yo mismo) estaban empezando a considerar el uso de los prefijos de formato que es equivalente al sistema antiguo de direccionamiento IPv4 orientado a clases.
Su principal preocupación era que los implementadores pudieran programar la lógica del hardware IPv6 para tomar decisiones de encaminamiento basadas sólo en los primeros pocos bits de la dirección. Esto era específicamente como se suponía que no trabajara IPv6, por un detalle, las asignaciones están sujetas a cambios. Por lo tanto, una de las modificaciones hechas en el RFC 3513 fue la de cambiar el idioma en relación con las asignaciones de direcciones IPv6, y en concreto, para eliminar el término "prefijo de formato" de la norma.

Planes actuales de asignación de espacio de direcciones IPv6.
La asignación de diferentes partes del espacio de direcciones aún se realiza basándose en patrones particulares de los primeros tres a diez bits de la dirección, para permitir que ciertas categorías tengan más direcciones que otras. La eliminación de la expresión específica que denota esto tiene la intención de transmitir que a estos bits no se les debe dar una "atención especial".

La Tabla 60 muestra las asignaciones de espacio de direcciones IPv6, y qué fracción del espacio de direcciones total representa cada una:

Clic para ampliar.
Esto es más complicado que en el esquema "classful" IPv4, dado que hay muchas mas categorías, y se extienden mucho en tamaño, sin embargo, la mayoría de ellas están asignados en la actualidad.

Mirando el plan de espacio de direccionamiento IPv6 como "ocho ochos"
Una forma más fácil de entender este cuadro es considerar la división del espacio de direcciones IPv6 en octavos. De estos ocho grupos, uno (001) se ha reservado para las direcciones unicast, un segundo (000) se ha utilizado para extraer de el pequeños bloques reservados, y un tercero (111) se ha utilizado para los sub-bloques de direcciones locales y multicast. Cinco de ellos están completamente sin asignar.
Puede verse que los diseñadores de IPv6 han tenido mucho cuidado en asignar sólo la parte de estos "octavos" del espacio de direcciones que consideraban necesarios para cada tipo de dirección. Por ejemplo, sólo una pequeña porción de la parte del espacio de direcciones que inicia con "111" fue utilizado, con la mayoría del mismo quedando reservado. En total, solo 71/512ths del espacio de direcciones está asignado en este momento, o alrededor del 14%. El otro 86% está sin asignar y se mantuvo reservado para su uso futuro. (Tenga en cuenta que incluso 1/1024th del espacio de direcciones IPv6 es gigantesco, y representa miles de millones de billones de direcciones).

Los temas subsiguientes en esta sección ofrecen más información sobre varios de estos bloques de direcciones. Tenga en cuenta que el bloque reservado "0000 0000" se utiliza para varios tipos de direcciones especiales, incluyendo la dirección de bucle, la dirección "no especificada" y para las direcciones IPv4 empotradas. El prefijo de formato "1111 1111" identifica las direcciones de multidifusión, esta cadena es "FF" en hexadecimal, por lo que cualquier dirección que empiece con "FF" es una dirección multicast en IPv6.

Se prevé que el direccionamiento unicast será utilizado para la gran mayoría del tráfico de Internet en IPv6, como es el caso de la más antigua, IPv4. Es por esta razón que el mayor de los bloques asignados del espacio de direcciones IPv6 se dedica al direccionamiento unicast. Una rebanada completa de 1/8o del pastel de direcciones IPv6 se asigna a las direcciones unicast, que se indican con un "001" en los tres primeros bits de la dirección. La pregunta entonces es: ¿cómo usar el resto de los 125 bits en nuestras direcciones IP?

Razonamiento de un bloque de direcciones Unicast estructurado
Cuando se creó IPv4 por primera vez, la Internet era bastante pequeña, y el modelo de asignación de bloques de direcciones se basaba en un coordinador central: IANA. Todos los que querían bloques de direcciones iban directamente a la autoridad central. Como la Internet creció, este modelo se convirtió en inviable. Hoy, el esquema de direccionamiento sin clases de IPv4 permite IDs de red de longitudes variables y la asignación de bloques de direcciones jerárquicas. Los grandes ISPs obtienen grandes bloques de la autoridad central y luego los subdividen y asignan a sus clientes, y así sucesivamente. Esto es administrado por los proveedores de Internet de hoy, pero no hay nada en el espacio de direcciones que ayude a gestionar el proceso de asignación. A su vez, cada organización tiene la capacidad de subdividir aún más su asignación de direcciones para satisfacer sus necesidades internas.

Los diseñadores de IPv6 tenían el beneficio de esta experiencia y entendieron de que habría enormes ventajas en el diseño de la estructura de dirección de unidifusión para reflejar la topología global de la Internet. entre ellos:

  • Asignación mas sencilla de bloques de direcciones en los distintos niveles de la jerarquía topológica de Internet. 
  • Las direcciones IP de red que reflejan de manera automática la jerarquía mediante la cual los enrutadores mueven la información a través de Internet, permitiendo que las rutas sean fácilmente agregadas para un enrutamiento más eficiente. 
  • Flexibilidad para organizaciones como proveedores de Internet para subdividir sus bloques de direcciones para los clientes. 
  • Flexibilidad para organizaciones de usuarios finales al subdividir sus bloques de direcciones para que coincidan con las redes internas, tal como se hizo en subredes IPv4. 
  • Una mayor "significado" a las direcciones IP. En lugar de ser sólo una cadena de 128 bits, sin estructura, sería posible mirar en una dirección y saber algunas cosas sobre ella.
División genérica del espacio de direcciones unicast
La forma genérica de dividir los 128 bits del espacio de direcciones unicast es en tres secciones, como se muestra en la Tabla 61.

Tabla 61: Formato de direcciones globales unicast genéricas IPv6.
Clic para ampliar.
El prefijo de enrutamiento global y el identificador de subred representan los dos niveles básicos en los que las direcciones necesitan ser jerárquicamente estructuradas: globales y específicas del sitio. El prefijo de enrutamiento consta de una serie de bits que se pueden subdividir de acuerdo a las necesidades de los Registros y proveedores de Internet, para reflejar la topografía de la Internet como un todo (hablaremos de esto en breve). El ID de subred ofrece un número de bits a los administradores de sitios para la creación de su propia estructura de la red interna.

Implementación del espacio de direcciones unicast en IPv6.
En teoría, se podría utilizar cualquier tamaño de "n" y "m". La implementación elegida para IPv6, sin embargo, asigna 48 bits para el prefijo de enrutamiento y 16 bits para el identificador de subred. Esto significa que hay 64 bits disponibles para los identificadores de interfaz, que se construyen sobre la base de formato de la IEEE "EUI-64", como se describe en el siguiente tema. Así, el formato general de direcciones IPv6 unicast se construye como se muestra en el Cuadro 62 (ilustrado en la Figura 96.)

Tabla 62: Formato de direcciones unicast globales IPv6.
Clic para ampliar.
Figura 96: Formato de direcciones unicast globales IPv6.
Clic para ampliar.

Concepto clave: La parte del espacio de direcciones IPv6 reservado para direcciones unicast se estructura en un formato de dirección que utiliza los primeros 48 bits para el prefijo de enrutamiento (como un identificador de red), los siguientes 16 bits para el identificador de subred, y los últimos 64 bits para el identificador de interfaz (por ejemplo, el ID de host).

Debido a esta estructura, la mayoría de los sitios finales (compañías y organizaciones regulares, a diferencia de los proveedores de servicios de Internet) se les asignará redes IPv6 con un prefijo de 48 bits. En el lenguaje común, los identificadores de red han pasado a llamarse 48s o /48s.
Los 16 bits de ID de subred permiten a cada sitio una considerable flexibilidad en la creación de subredes que reflejan la estructura del sitio de la red. Por ejemplo:
  • Una organización pequeña puede simplemente poner todos los bits de ID de subred a cero y tener una estructura interna "plana". 
  • Una organización de tamaño medio pueden utilizar todos los bits de ID de subred para llevar a cabo el equivalente del subnetting "regular" en subredes IPv4, la asignación de un ID de subred diferente para cada subred. Hay 16 bits aquí, así que esto permite la friolera de 65.536 subredes! 
  • Una organización más grande puede usar los bits para crear una jerarquía de varios niveles de subredes, tal y como en variable el enmascarado de subredes de longitud variable de IPv4. Por ejemplo, la empresa podría utilizar dos bits para crear cuatro subredes. Se podría tomar los siguientes tres bits para crear ocho sub-subredes en algunas o en todas las cuatro subredes resultantes. Todavía habrían 11 bits más para crear sub-sub-subredes y así sucesivamente.
División original del prefijo global de enrutamiento: Agregadores
El prefijo de enrutamiento global es igualmente dividido en una jerarquía, pero una que ha sido diseñada para el uso de toda la Internet, un CIDR. Hay 45 bits disponible aquí (48 bits menos los tres primeros que se fijan en "001"), lo cual es mucho. Cuando la estructura de dirección unicast se detalló por primera vez en RFC 2374, el documento describe una división específica de los 45 bits basado en una topología jerárquica de dos niveles de registros de Internet y proveedores. Estas organizaciones fueron descritas como:
  1. Agregadores de nivel superior (TLA Top-Level Aggregators): Las organizaciones más grandes de Internet, a las que se iban a asignar grandes bloques de direcciones IPv6 de las autoridades de registro. 
  2. Agregadores de siguiente Nivel (NLA Next-Level Aggregators): Estas organizaciones obtienen los bloques de direcciones de los TLA y los divididen para las organizaciones de usuarios finales (los sitios).
Los 45 bits se dividen entre estos dos usos, con unos pocos bits reservados en el centro para permitir la expansión de cualquiera de los campos si fuera necesario. Por lo tanto, la estructura del RFC 2374 para los 45 bits se muestra en la Tabla 63:

Tabla 63: Estructura histórica del prefijo para routeo unicast IPv6.
Clic para ampliar.
Se dará cuenta de mi uso del tiempo pasado en la descripción de la estructura de TLA/NLA, y que el encabezado de la tabla es un regalo muy grande también. En agosto de 2003, se publicó la RFC 3587, y en pocas palabras dice "uh, ese asunto de la TLA/NLA no tiene importancia". Se decidió que tener esta estructura "rígida" en un estándar de Internet era inflexible, y tenía más sentido permitir que los registros regionales de Internet (APNIC, ARIN, LACNIC y RIPE) decidieran por sí mismos cómo utilizar los 45 bits .

Nota: La obsolescencia de la estructura de la "TLA/NLA" se produjo después de muchos años de que la gente se acostumbrara a ella, así que por algún tiempo todavía se hará habitualmente mención de esos términos en la descripción de IPv6. (Esta es la razón por la que incluimos la discusión al respecto aquí.)

Un ejemplo de la División del prefijo global de enrutamiento en niveles
Bueno, ya no hay ninguna estructura individual para determinar cómo el prefijo de enrutamiento de 48 bits se divide en la jerarquía de unidifusión global. A modo de ejemplo, podría ser posible dividirlo en tres niveles, como se muestra en la Tabla 64, y el diagrama de la Figura 97.

Tabla 64: Ejemplo de la estructura del prefijo de routeo unicast IPv6.
Clic para ampliar.
Figura 97: Estructura de prefijo de routeo unicast IPv6 de ejemplo.
Clic para ampliar.
La fila superior muestra el formato global de direcciones unicast de IPv6. El segundo ejemplo muestra una forma de dividir el prefijo de enrutamiento global, en tres niveles usando 10, 12 y 23 bits, respectivamente. La tercera fila muestra los primeros 10 bits que se utilizan para crear 2^10 o 1.024 diferentes bloques de Nivel 1. La fila siguiente muestra que para cada uno de estos prefijos de 13 bits, podríamos tener 2^12 o 4096 bloques de Nivel 2. Entonces, dentro de cada ID de 25 bits en el Nivel 2, tenemos 23 bits o 8.388.608 bloques de Nivel 3. En el fondo, un Nivel 3 o "/48" se asigna a una organización individual.

Esta es sólo una forma posible, teórica en que podrían ser asignados los bits en una dirección de red "/48". Como puede ver, con tantos bits hay una gran flexibilidad. En el esquema anterior podemos tener más de 4 millones de organizaciones de nivel 2, cada una de las cuales puede asignar 8000000/48 direcciones. Y cada una de ellas es equivalente en tamaño a una dirección IPv4 de clase B (más de 65.000 hosts)!

Notas adicionales sobre el formato de unidifusión global
La eliminación de la "estructura fija" de la RFC 2374 para el prefijo de enrutamiento global es consistente con los esfuerzos del equipo de desarrollo de IPv6 de hacer hincapié en que los campos de bits y las estructuras se utilizan solamente para la asignación de direcciones, no con fines de enrutamiento. Las propias direcciones, una vez creadas, no son interpretadas por hardware en una Internet basada en este formato. Para los routers, la única estructura es la división entre el ID de red y el ID de host está dado por la longitud del prefijo que sigue a la dirección IP, y esta división puede ocurrir a cualquier límite de bits. Estos dispositivos de hardware solo ven una direccion IP de 128 bits y la utilizan sin ningún conocimiento de las divisiones jerárquicas de la dirección o "niveles".

También vale la pena señalar que la clave para obtener los beneficios del formato de direcciones unicast agregables es la abundancia de bits disponibles para nosotros en IPv6. La capacidad de tener estos niveles jerárquicos al tiempo que permite 64 bits para el identificador de interfaz es una de las razones principales por las que los diseñadores de IPv6 fueron de 32 a 128 bits para el tamaño de la dirección. Al crear esta estructura, mantenemos la flexibilidad, evitando el caos potencial de tratar de asignar muchos tamaños diferentes dentro de nuestra red de 128 bits.

Por último, tenga en cuenta que las direcciones anycast se estructuran de la misma manera que las direcciones unicast, por lo que son asignadas de acuerdo con este mismo modelo. Por el contrario, las direcciones de multidifusión no lo son, sino que se asignan a partir de su propia porción del espacio de direcciones IPv6.


Regresar al contenido.
fin de la Primera subsección - continuará....