lunes, 5 de septiembre de 2011

Encapsulado y formato del datagrama IPv6


Bueno, la semana pasada no hubo "lunes de redes" pero hoy si, además hoy estamos de cumpleaños. Hace un año exactamente se publicó la primera entrada del blog así que ya nos gastamos 12 meses escribiendo en este sitio y ha sido un buen ejercicio en varios sentidos. Lo mas jodido ha sido mantener el paso y seguir cumpliendo con el resto de mis obligaciones cosa que no siempre logro (ya vieron varios atrasos de publicaciones que prometí en una fecha y siempre no) pero que espero puedan entender. Creo que he dicho antes que (todavía) este no es un empeño de tiempo completo y ya vieron que colgué la aclaración de "versión beta" (sip es un poco disparatada pero no tengo otra manera de dejar claro que a esto le faltan un buen de detalles que por culpa del tiempo principalmente no he terminado de definir) hasta tanto los pendientes dejen de serlo, será, con eso pueden contar (aunque tarde tantito). Hoy es lunes, no les demoro más, las selecciones de la guía hace tiempo que pasaron a ser la temática guía de este espacio así que para celebrar aquí les va la siguiente en el orden (voy a volver a contarlas, ya ni se por donde voy :-) ). Espero les sea de utilidad, (estoy considerando incluir alguna estructura adicional para facilitarles la navegación en la guía, no tengo mucho tiempo para variar pero van llegando refuerzos). Feliz lunes y provecho!!

Encapsulado y formato de datagramas IPv6
La entrega de datos a través de redes IPv6 se logra mediante el encapsulado de datos de las capas superiores en datagramas IPv6. Estos tienen el mismo objetivo general en IPv6 que el que tiene los datagramas en la versión anterior del protocolo IPv4 Sin embargo, se han rediseñado como parte de los cambios globales representado por IPv6. Los datagramas IPv6 tiene una estructura flexible y un formato más acorde con las necesidades de las actuales redes IP.
En esta sección daremos un vistazo al formato utilizado por los datagramas IPv6. Comienzo con una revisión general de la estructura general de los datagramas IPv6, que describe los cambios más importantes y que muestra cómo están dispuestos en el datagrama los encabezados principales y extendidos. Luego describo el formato del encabezado principal, y defino y describo los diferentes tipos de encabezados extendidos. Concluyo con una breve explicación de las opciones de IPv6 y cómo se aplican.

Antecedentes: En esta sección se asume un conocimiento básico de los conceptos sobre direccionamiento IPv6, y también se requiere que estés familiarizado con el formato del datagrama IPv4.

El método por el cual IPv6 encapsula los datos recibidos de los protocolos de capas superiores para su transmisión a través de la red interna es básicamente el mismo que el utilizado por IPv4. Los datos recibidos desde la capa de transporte o cualquiera de las capas superiores se se convierte en la carga de un datagrama IPv6, que tiene uno o más encabezados que controlan de la entrega del mensaje. Estas cabeceras proporcionan información a los routers para que puedan pasar el datagrama a través de la red, y también a los hosts de modo que puedan decir que datagramas deben recibir.

Descripción de los principales cambios en la estructura y los campos del datagrama IPv6
Mientras que el uso básico de datagramas no ha cambiado desde IPv4, se hicieron muchas modificaciones en la estructura y el formato cuando se creó IPv6. Esto se hizo en parte por necesidad: las direcciones IPv6 son diferentes de las direcciones IPv4 y las direcciones IP van en la cabecera del datagrama. El aumento en el tamaño de las direcciones IP de 32 bits a 128 bits, añade la friolera de 192 bits adicionales, o 24 bytes de información en el encabezado. Esto a su vez llevó a un esfuerzo para eliminar los campos que no eran estrictamente necesarios, para compensar el aumento necesario en el tamaño. Sin embargo, también se hicieron cambios en los datagramas IPv6 para agregarles funciones y para que se adaptaran mejor a las necesidades de las redes modernas.

La siguiente es una lista de los cambios globales más significativos a los datagramas en IPv6:
  • Estructura de encabezados múltiple: En lugar de una única cabecera que contiene todos los campos del datagrama (posiblemente incluyendo opciones), el datagrama IPv6 soporta un encabezado "principal" y varios ecabezados extendidos para obtener información adicional cuando sea necesaria.
  • Formato de encabezados simplificado: Varios campos han sido retirados del encabezado principal para reducir su tamaño y aumentar la eficiencia. Sólo los campos que son realmente necesarios para casi todos los datagramas permanecen en el encabezado principal, mientras que otros se colocan en los encabezados extendidos y se utilizan cuando es necesario. Algunos se retiraron porque ya no eran necesarios, tales como el campo de longuitud del encabezado, dado que el encabezado IPv6 es de longitud fija. Esto se analiza más a fondo en el tema de el encabezado principal IPv6.
  • Campos renombrados: Algunos campos han cambiado de nombre para reflejar mejor su uso real en las redes modernas.
  • Mayor flexibilidad: Los encabezados extendidos permiten que una gran cantidad de información adicional acompañe a los datagramas cuando sea necesario. También son soportadas varias opciones en IPv6.
  • Eliminación del cálculo del cheksum: En IPv6, no se realiza suma de verificación en el encabezado. Esto ahorra tanto el tiempo de cálculo empleado por todos los dispositivos que empaquetan datagramas IP (hosts y routers) como el espacio de ocupaba la suma de verificación en el encabezado IPv4.
  • Soporte mejorado de calidad de servicio: Un nuevo campo, la etiqueta de flujo (flow Label), es definido para ayudar ayudar a definir distintas clases de prioridades en el tráfico.
Concepto clave: Los datagramas IPv6 utilizan una estructura general que comienza con un encabezado obligatorio principal de 40 bytes de longitud, seguido por varios encabezados extendidos opcionales y un área de datos de longitud variable. Esta estructura fue creada para permitir la racionalización del encabezado principal y permitir al mismo tiempo que los dispositivos añadan información extra a los datagramas cuando sea necesario.

Estructura general del datagrama IPv6
Como he mencionado anteriormente, los datagramas IPv6 ahora incluyen un formato de encabezado principal (que no tiene nombre oficial en las normas, es sólo "el encabezado") y cero o más encabezados extendidos. La estructura general es por lo tanto, la que se muestra en la tabla 67 y la figura 104.
Clic para ampliar.
Clic para ampliar.
Tenga en cuenta que al igual que con IPv4, las cargas útiles de gran tamaño puede ser fragmentadas antes de la encapsulación, para asegurarse de que el tamaño total del datagrama no exceda el tamaño máximo permitido en una red subyacente. Sin embargo, los detalles de la fragmentación en IPv6 son diferentes que en IPv4.

Como vimos en el tema anterior, los datagramas IPv6 utilizan una estructura que incluye un encabezado regular y, opcionalmente, uno o más encabezados extendidos. Este encabezado regular es como el encabezado de los datagramas IPv4, a pesar de que tiene un formato diferente, como veremos en breve. Las normas no le dan a este encabezado un nombre, es sólo "el encabezado IPv6". Para diferenciarlo de los encabezados extendidos en IPv6, yo lo llamo el encabezado principal.

Formato del encabezado principal
El encabezado principal en IPv6 es requerido para cada datagrama. Contiene información de direccionamiento y control que se utilizan para gestionar el procesamiento y el enrutamiento de los datagramas. El formato del encabezado principal de los datagramas IPv6 se describe en la Tabla 68 y se ilustra en la Figura 105.

Clic para ampliar.
Clic para ampliar.
Campo "encabezado siguiente" (next header) en IPv6
El campo "encabezado siguiente" es una de las novedades más importantes en el formato del datagrama IPv6. Cuando un datagrama IPv6 utiliza encabezados extendidos, este campo contiene un identificador del primer encabezado extendido, que a su vez utiliza su propio "encabezado siguiente" para apuntar al siguiente encabezado, y así sucesivamente. El último encabezado extendido hace referencia al protocolo encapsulado de capa superior dado que dicho encabezado aparece al comienzo del campo de datos IPv6, es como el "siguiente encabezado" para el dispositivo receptor del datagrama. Para algunas personas esto es un poco difícil de entender conceptualmente; podrán encontrar mucho mas detalles de como trabaja este campo (incluyendo una ilustración útil) en el siguiente tema, que describe los encabezados extendidos. Algunos de los valores más comunes para el "siguiente encabezado" en IPv6 se muestran en la Tabla 69.
Clic para ampliar.
La longitud total del formato del encabezado principal IPv6 es de 40 bytes. Esto es el doble del tamaño del encabezado IPv4 sin opciones, en gran parte debido a los 24 bytes adicionales necesarios para las monstruosas direcciones IPv6. Hay sólo 8 bytes en campos que no pertenecen a la dirección en el encabezado principal de IPv6, en comparación con los 12 en el encabezado IPv4.


Cambios clave en el encabezado principal entre IPv4 e IPv6
En resumen, el encabezado principal en IPv6 se compara con el encabezado IPv4 como sigue:
  • Campos sin cambios: Tres campos se utilizan de la misma manera y conservan el mismo nombre (aunque tienen diferente contenido y / o tamaño): Versión, dirección de origen y dirección de destino.
  • Campos renombrados: Dos campos se utilizan de la misma manera pero han sido renombrados: Clase de tráfico (Traffic Class) y límite de saltos (Hop Limit).
  • Campos modificados: Dos campos se utilizan de manera similar a sus predecesores en IPv4, pero son ligeramente diferentes en el significado y además son renombrados como: longitud de carga útil (Payload Length) y el encabezado siguiente (Next Header).
  • Campos añadidos: Hay un nuevo campo: Etiqueta de flujo (Flow Label).
  • Campos eliminados: Para reducir la longitud del encabezado y el trabajo innecesario, se retiraron cinco campos del encabezado IPv4 en el encabezado IPv6:
  • Internet Header Length: Ya no es necesario, dado que el encabezado IPv6 principal tiene una longitud fija de 40 bytes.
  • Identificación, Banderas, Fragment Offset: Se utilizan para la fragmentación, que se realiza menos en IPv6 que en IPv4, por lo que estos campos se encuentran ahora sólo cuando son necesarios en el encabezado extendido de fragmentación.
  • Checksum del encabezado: La decisión fue tomada para eliminar los calculos del checksum del encabezado en IPv6. Se consideraba que era redundante con la comprobación de redundancia cíclica de la capa de enlace de datos Esto ahorra tiempo de procesamiento de los routers y 2 bytes en la cabecera del datagrama.
Además, mientras que las opciones anteriormente se consideraban parte de la cabecera principal de IPv4, en IPv6 están separadas.

Después del encabezado obligatorio "principal" en el datagrama IPv6, pueden aparecer uno o más encabezados extendidos antes de la carga útil encapsulada. Estas cabeceras se han creado en un intento por proporcionar tanto flexibilidad como eficiencia en la creación de datagramas IPv6. Todos los campos que son necesarios sólo para fines especiales se colocan en los encabezados extendidos y se colocan en el datagrama cuando son necesario. Esto permite que el tamaño del encabezado principal del datagrama sea pequeño y ligero, conteniendo sólo los campos que realmente debe estar presentes todo el tiempo.

A menudo hay confusión sobre el papel de los encabezados extendidos, especialmente en comparación con las opciones de los datagramas. El datagrama IPv4 sólo tenía una cabecera, pero que incluía una disposición para las opciones, y también tiene opciones de IPv6, así que ¿por qué molestarse con las cabeceras de extensión Una Buena pregunta.

Habría sido posible hacerlo todo utilizando las opciones. Sin embargo, se ha considerado un mejor diseño emplear los encabezados extendidos para determinados conjuntos de información que son necesarios para funciones comunes, tales como la fragmentación. Las opciones en realidad aún son soportadas en IPv6, se utilizan para proporcionar mayor flexibilidad al proporcionar campos de longitud variable que puede ser utilizados para cualquier propósito. Ellas mismas son definidas utilizando los encabezados extendidos, como veremos a continuación (y en su propio tema, que sigue.)

Cuando se incluyen los encabezados extendidos en un datagrama IPv6, aparecen uno tras otro después de la cabecera principal. Cada tipo de encabezado extendido tiene su propia estructura interna de campos.

Encadenamiento de encabezados IPv6 utilizando el campo de encabezado siguiente
El único campo común a todos los tipos de encabezados extendidos es el campo de encabezado siguiente (que en realidad aparece en la parte final de un tipo de encabezado, el encabezado ESP). El campo de 8 bits de encabezado siguiente se utiliza para vincular lógicamente todas las cabeceras de un datagrama IPv6 de la siguiente manera:

  • El campo Encabezado Siguiente en el encabezado principal contiene un número de referencia para el primer tipo de encabezado extendido.
  • El campo Encabezado Siguiente en el primer encabezado extendido contiene el número del segundo tipo de encabezado extendido, si hay un segundo. Si hay un tercero, el campo de encabezado siguiente del segundo encabezado apunta hacia el, y ​​así sucesivamente.
  • El campo de encabezado siguiente del último encabezado extendido contiene el número de protocolo del protocolo encapsulado de la capa superior. En esencia, este campo apunta al "encabezado siguiente" dentro de la propia carga.
Por ejemplo, supongamos un datagrama que encapsula TCP y tiene un encabezado extendido de opciones Hop-by-Hop y un encabezado extendido de fragmento. Entonces, los campos de encabezado siguiente de estos encabezados contendrán los siguientes valores:

  • El encabezado principal, tendría un valor de encabezado siguiente de 0, que indica el encabezado de opciones Hop-by-Hop.
  • El encabezado de opciones Hop-by-Hop tendría un valor de encabezado siguiente de 44 (decimal), el valor del encabezado extendido de fragmentos.
  • El encabezado de Fragmento tendría un valor del encabezado siguiente de 6.
Esto se ilustra en la Figura 106.
Clic para ampliar.
El campo del encabezado siguiente permite que un dispositivo procese con mayor facilidad los encabezados en un datagrama IPv6 recibido. Cuando un datagrama no tiene encabezados extendidos, el "encabezado siguiente" es en realidad el encabezado en el inicio del campo de datos IP, en este caso un encabezado TCP con un valor de 6. Esta es la misma manera en que se utiliza el campo de Protocolo en IPv4. Cuando aparecen los encabezados extendidos, el valor del encabezado siguiente de cada encabezado contiene un número que indica el tipo del encabezado siguiente en el datagrama, por lo que "encadenan" lógicamente los encabezados, como se muestra arriba

Concepto clave: El campo encabezado siguiente en IPv6 se utiliza para "encadenar" los encabezados en un datagrama IPv6. El campo encabezado siguiente en el encabezado principal contiene el número del primer encabezado extendido, y el encabezado siguiente contiene el número del segundo, y así sucesivamente. El último encabezado en el datagrama contiene el número del protocolo encapsulado que inicia el campo de datos.

Resumen de los encabezados extendidos en IPv6
La tabla 70 enumera los diferentes encabezados extendidos, mostrando su valor del siguiente encabezado, la longitud y la definición de RFC, y con una breve descripción de cómo se utiliza cada uno.


Tenga en cuenta que el valor del encabezado siguiente en el encabezado principal IPv6 es de 41, el de un encabezado IPv4 es de 4 (el número de protocolo). Tenga en cuenta también que hay un encabezado extendido "falso" ("dummy") llamado "no hay encabezado siguiente" (no next header) que tiene un valor de 59. Este es un marcador de posición que cuando se encuentran en el campo de encabezado siguiente indica que no hay nada después de que ese encabezado extendido.

Como ya he mencionado en la tabla, los formatos de varios de los encabezados se proporcionan en otros temas. Dos de ellos los voy a describir aquí, sin embargo.


Encabezado extendido de enrutamiento (Routing Extension Header) IPv6
El encabezado extendido de enrutamiento se utiliza para realizar el enrutamiento de origen en IPv6. Se describe en la Tabla 71, y se ilustra en la Figura 107.

Clic para ampliar.
Clic para ampliar.
Encabezado extendido de fragmento IPv6.
El encabezado extendido de fragmento se incluye en datagramas fragmentados para proporcionar la información necesaria para permitir que los fragmentos sean re-ensamblados. Su formato se puede encontrar en la tabla 72 y la figura 108.

Clic para ampliar.
Clic para ampliar.
Orden de los encabezados extendidos en IPv6.
Cada encabezado extendido sólo aparece una vez en un datagrama (con una excepción, véase más adelante). Además, los encabezados extendidos sólo son examinados por los destinatarios finales de los datagramas, no por los dispositivos intermedios (de nuevo, con una excepción, sobre la que hablaremos en un momento). La RFC 2460 especifica que cuando aparecen múltiples encabezados, deben estar en el siguiente orden después del encabezado principal y antes del encabezado encapsulado de capa superior en la carga útil del datagrama IPv6:

  1. Opciones Hop-by-Hop
  2. Opciones de destino (para las opciones a ser procesadas por el destino, así como los dispositivos especificados en el encabezado de enrutamiento)
  3. Routeo
  4. Fragmentación.
  5. Encabezado de autenticación.
  6. Encapsulado de carga de seguridad
  7. Opciones de destino (para las opciones a ser procesadas sólo por el destino final)
Ahora echemos un vistazo a esas excepciones. El único encabezado que puede aparecer dos veces es "Opciones de destino". Normalmente, aparece como el último encabezado. Sin embargo, puede existir un encabezado de Opciones de destino que contenga opciones que deben ser examinadas por una lista de dispositivos especificados en una ruta de origen, además de la de destino. En este caso, el encabezado de Opciones de destino para estas opciones se coloca antes de la cabecera de enrutamiento. También puede aparecer un segundo encabezado de este tipo conteniendo opciones únicamente para el destino final.

Concepto clave: Cada encabezado extendido puede aparecer sólo una vez en un datagrama IPv6, y deben aparecer en un orden fijo. La excepción es el encabezado de Opciones de destino, que puede aparecer dos veces, cerca del inicio del datagrama para las opciones a ser procesadas por los dispositivos en la ruta hacia el destino, y al final de los encabezados extendidos para las opciones a utilizarse exclusivamente por el destino final.

El único encabezado normalmente examinado por todos los dispositivos intermedios es el encabezado extendido de opciones Hop-by-Hop. Se utiliza específicamente para transmitir información de gestión a todos los routers en la ruta. el encabezado extendido de opciones Hop-by-Hop debe aparecer como el primer encabezado extendido si está presente. Ya que es el único que debe ser leído por todos los routers (lo que representa una pérdida de rendimiento en los routers) se sitúa así para hacerlo más fácil y rápido de encontrar y procesar.

Por último, señalar que todos los encabezados extendidos deben tener un múltiplo de 8 bytes de longitud para propósitos de alineación. Además, recuerde que el valor del encabezado siguiente de un encabezado extendido en particular aparece en el campo de encabezado siguiente de la cabecera anterior, no de la propia cabecera.

En IPv4, toda la información "extra" necesaria para diversos fines se coloca en el datagrama en forma de opciones que aparecen en el encabezado IPv4. En IPv6, se introduce el nuevo concepto de encabezados extendidos, los cuales toman el lugar de muchas de las opciones predefinidas en IPv4. Sin embargo, el concepto de las opciones todavía se mantiene en IPv6, para un propósito ligeramente diferente. Las opciones permiten que el datagrama IPv6 se complemente con conjuntos arbitrarios de información que no se definen en los encabezados extendidos regulares. Estos proporcionan la máxima flexibilidad, permitiendo que el protocolo IPv6 básico se extienda en formas que los diseñadores no previeron, con el objetivo de reducir las posibilidades de que el protocolo quede obsoleto.

Tipos de encabezados extendidos de opciones IPv6
He dicho que las opciones de IPv6 complementan los encabezados extendidos, de hecho, son efectivamente implementadas como encabezados extendidos. Hay dos tipos diferentes utilizados para codificar las opciones. Estos dos encabezados sólo se diferencian en términos de cómo las opciones que contienen son procesadas por los dispositivos, fuera de eso, tienen el mismo formato y se utilizan de la misma manera.

Los dos tipos de encabezados extendidos son los siguientes:

  • Opciones de destino: Contiene las opciones que están destinadas sólo para el destino final de los datagramas (y tal vez un conjunto de routers especificado en un encabezado de enrutamiento, si está presente).
  • Opciones Hop-by-Hop: Contiene las opciones que llevan información para cada dispositivo (router) entre el origen y el destino
Formato de Opciones IPv6
Cada uno de estos tipos de encabezado tiene un campo de un byte de encabezado siguiente, y un campo de longitud de encabezado extendido de un byte de longitud que indica la longitud total del encabezado El resto del encabezado tiene uno o más campos de opciones. La figura 109 muestra el formato general de estos dos encabezados. El formato de cada opción es similar al de las opciones de IPv4, y se muestra en la Tabla 73.
Clic para ampliar.
Cada una de estos encabezados extendidos inicia con dos campos fijos, encabezado siguiente y Longitud del encabezado extendido. El resto del encabezado se compone de una secuencia de opciones de longitud variable. Cada opción tiene la estructura que se muestra en la Tabla 73, que consta de un triplete tipo / longitud / valor.

Clic para ampliar.

Nota: El subcampo de tipo de opción es un poco extraño en términos de cómo se interpreta. A pesar de que tiene una estructura con tres sub-sub-campos como se muestra en la Tabla 73, esta estructura es "informal". Lo que quiero decir con esto es que los 8 bits de este campo se toman como una sola entidad. A pesar del significado especial de los tres bits de mayor orden, todo el campo se llama tipo de opción, no sólo los últimos cinco bits, y el conjunto se utiliza como un único valor de 0 a 255. De hecho, los nombres de los "sub-subcampos" ni siquiera se especifican en la norma, me los he inventado para ayudar a explicar estos campos.

Ya que cada opción tiene un subcampo para el tipo, la longitud y el valor (datos), a veces se dice que es codificada TLV. Si hay múltiples opciones, se colocan una tras otra en el encabezado. Al final de todas las opciones en las Opciones Hop-by-hop o en el encabezado extendido de opciones de destino, se puede colocar un relleno (padding) para asegurarse de que la cabecera es un múltiplo de 8 bytes de longitud.

Concepto clave: Se utilizan dos tipos de encabezados extendidos en IPv6, Opciones hop-by-Hop y Opciones de destino, para llevar información opcional arbitraria en los datagramas IPv6. Cada uno consiste de un conjunto de opciones de longitud variable que se definen mediante tres subcampos que indican las opciones de tipo, longitud y valor (dato).


Regresar al contenido.