Cabecera IPv6

La cabecera IPv6 (IPv6 Header) es el bloque de información de control de Capa 3 que se antepone a los datos de la capa de transporte para formar un paquete IPv6. Diseñada desde cero para corregir las deficiencias de la antigua cabecera IPv4, destaca por tener un tamaño fijo de 40 bytes (320 bits), lo que simplifica y acelera drásticamente el procesamiento de paquetes en los routers intermediarios de Internet.

A pesar de que las direcciones IPv6 son cuatro veces más largas que las de IPv4 (128 bits frente a 32 bits), la cabecera base de IPv6 es considerablemente más limpia e incluye solo 8 campos (frente a los 12 de IPv4). Todos los parámetros opcionales o poco frecuentes que en IPv4 sobrecargaban la cabecera principal se gestionan en IPv6 mediante cabeceras de extensión encadenadas.

Estructura de la Cabecera IPv6 (40 Bytes Fijos)

A continuación se detalla la disposición en memoria de la cabecera IPv6 base, organizada en filas de 32 bits (4 bytes):

Offset (Bits) 0 - 3 4 - 11 12 - 31
Bit 0 Version (4 bits) Traffic Class (8 bits) Flow Label (20 bits)
Bit 32 Payload Length (16 bits) Next Header (8 bits) | Hop Limit (8 bits)
Bit 64 Source IPv6 Address / Dirección Origen (128 bits / 16 bytes)
Bit 192 Destination IPv6 Address / Dirección Destino (128 bits / 16 bytes)

Descripción de los Campos Principales

  • Version (4 bits): Identifica la versión del protocolo IP. Para IPv6 contiene siempre el valor binario 0110 (6 en decimal).
  • Traffic Class (8 bits): Equivale al campo Type of Service (ToS) / DSCP de IPv4. Permite etiquetar paquetes para aplicar políticas de **Calidad de Servicio (QoS)** y priorización de tráfico (como voz o vídeo).
  • Flow Label (20 bits): Campo novedoso en IPv6 que permite identificar flujos específicos de datos entre un origen y un destino (ej. una sesión en tiempo real). Los routers pueden enrutar todos los paquetes de un mismo "flujo" por el mismo camino sin necesidad de reevaluar las cabeceras internas.
  • Payload Length (16 bits): Indica la longitud en bytes de la carga útil del paquete, incluyendo cualquier **cabecera de extensión** presente y los datos de la capa superior (TCP/UDP). Indica el tamaño de todo lo que sigue a la cabecera base de 40 bytes.
  • Next Header (8 bits): Cumple una doble función. Reemplaza al campo Protocol de IPv4 al especificar qué protocolo de capa superior está encapsulado (ej. TCP=6, UDP=17) **O** indica la presencia de una cabecera de extensión inmediatamente posterior.
  • Hop Limit (8 bits): Sustituye al campo Time to Live (TTL) de IPv4. Define el número máximo de saltos (routers) que el paquete puede atravesar. Cada router decrementa este valor en 1; si llega a 0, el paquete se descarta y se envía un mensaje ICMPv6 *Time Exceeded*.
  • Source Address (128 bits / 16 bytes): Dirección IPv6 única del nodo que genera el paquete.
  • Destination Address (128 bits / 16 bytes): Dirección IPv6 del nodo receptor final.

El concepto de Cabeceras de Extensión (Extension Headers)

Para mantener la cabecera base en unos ágiles 40 bytes sin perder funcionalidades avanzadas, IPv6 utiliza **cabeceras de extensión**. Estas se insertan opcionalmente entre la cabecera IPv6 principal y los datos de Capa 4 (TCP/UDP), conectadas en cadena mediante el campo Next Header:

Cabecera de Extensión Código Next Header Función / Propósito
Hop-by-Hop Options 0 Información que debe ser examinada por todos los routers del camino.
Routing 43 Fuerza al paquete a recorrer una lista de routers específicos (Source Routing).
Fragment 44 Permite la fragmentación (realizada **únicamente por el host emisor**).
Encapsulating Security Payload (ESP) 50 Cifrado de datos y autenticación para IPsec nativo.
Authentication Header (AH) 51 Integridad y autenticación del origen de datos para IPsec nativo.

Diferencias clave: Cabecera IPv4 vs. Cabecera IPv6

Parámetro Cabecera IPv4 Cabecera IPv6
Tamaño de cabecera base Variable (20 a 60 bytes). Requiere campo IHL. Fijo (40 bytes exactos). No requiere IHL.
Suma de comprobación (Checksum) Sí (Header Checksum, recalculado en cada salto). No existe. Acelera el procesamiento en routers.
Campos de Fragmentación Integrados en la cabecera fija (ID, Flags, Offset). Eliminados. Se usa una cabecera de extensión opcional.
Identificación de Flujos No disponible de forma nativa. Campo Flow Label de 20 bits en la cabecera base.

Características principales:

  • Al ser de **tamaño fijo (40 bytes)**, los routers no pierden ciclos de reloj calculando dónde termina la cabecera e inicia la carga útil.
  • Los routers intermediarios **ya no fragmentan paquetes**. Si un paquete supera la MTU de un enlace, el router lo descarta y envía un ICMPv6 *Packet Too Big*. Es el emisor quien debe fragmentar usando la cabecera de extensión correspondiente.
  • La eliminación de la suma de comprobación (checksum) traslada la responsabilidad de la detección de errores exclusivamente a la Capa 2 (Ethernet) y a la Capa 4 (TCP/UDP).
  • Incluye soporte nativo para **IPsec** (seguridad a nivel de red) mediante las cabeceras de extensión AH y ESP.

Analogía: Si la cabecera IPv4 era como un formulario en papel donde podías rellenar casillas opcionales en el reverso haciendo que el empleado de correos tardase más en leerlo, la cabecera IPv6 es un sobre estandarizado rígido de tamaño fijo. Si necesitas enviar documentación especial (seguridad, fragmentos, rutas), abrochas "post-its" adicionales (cabeceras de extensión) detrás del sobre principal.

Actividad práctica

Objetivo:

Capturar paquetes IPv6 reales mediante Wireshark, analizar la estructura fija de 40 bytes de la cabecera y observar el comportamiento de las cabeceras de extensión y el protocolo ICMPv6.

Tareas:

  1. Abre **Wireshark** e inicia una captura de tráfico en tu interfaz de red conectada a una red con soporte IPv6 (o interfaz Dual Stack).
  2. Abre la consola de comandos de tu sistema operativo y realiza un ping IPv6 hacia un servidor público:
    • En Windows: ping -6 google.com
    • En Linux / macOS: ping6 google.com o ping -6 google.com
  3. Filtra la captura en Wireshark utilizando la expresión ipv6 o icmpv6.
  4. Selecciona un paquete de solicitud de eco (Echo Request) y despliega la sección **Internet Protocol Version 6** para verificar los 8 campos de la cabecera base.
  5. Comprueba el valor del campo **Next Header** (debe ser 58 para ICMPv6) y verifica que el tamaño de la cabecera reportado es de exactamente 40 bytes.

Preguntas de reflexión:

  1. ¿Por qué el hecho de que la cabecera IPv6 tenga un tamaño fijo de 40 bytes mejora el rendimiento general de los routers en la red?
  2. ¿Qué ocurre en una red IPv6 si un router recibe un paquete que supera la MTU de la interfaz de salida por la que debe reenviarlo?
  3. ¿Qué función cumple el campo Next Header de la cabecera IPv6 cuando se utilizan cabeceras de extensión?
  4. ¿Por qué se decidió eliminar el campo Checksum en la cabecera IPv6 y qué ventaja aporta en la eficiencia de conmutación?
  5. ¿Para qué sirve el campo Flow Label (Etiqueta de flujo) de 20 bits presente en la cabecera IPv6?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿Por qué el hecho de que la cabecera IPv6 tenga un tamaño fijo de 40 bytes mejora el rendimiento general de los routers en la red?

Porque los routers no necesitan procesar un campo variable como el IHL de IPv4 ni calcular dónde empiezan los datos de capa superior en cada paquete. Al tener un offset fijo, el hardware de conmutación de los routers (ASICs) procesa y reenvía las tramas de forma mucho más rápida y eficiente.


2. ¿Qué ocurre en una red IPv6 si un router recibe un paquete que supera la MTU de la interfaz de salida por la que debe reenviarlo?

El router **no fragmenta el paquete** (los routers IPv6 no realizan fragmentación). El paquete es descartado inmediatamente y el router envía al emisor un mensaje **ICMPv6 Tipo 2 (Packet Too Big)** indicando la MTU máxima permitida, para que el host origen ajuste el tamaño del paquete o realice él mismo la fragmentación.


3. ¿Qué función cumple el campo Next Header de la cabecera IPv6 cuando se utilizan cabeceras de extensión?

Actúa como un "puntero en cadena". Indica el tipo de la primera cabecera de extensión que se encuentra justo después de la cabecera base IPv6. A su vez, esa cabecera de extensión tendrá su propio campo Next Header para apuntar a la siguiente extensión o al protocolo final de Capa 4 (TCP/UDP).


4. ¿Por qué se decidió eliminar el campo Checksum en la cabecera IPv6 y qué ventaja aporta en la eficiencia de conmutación?

Se eliminó porque en cada salto del router el contador **Hop Limit** disminuye, lo que obligaba en IPv4 a recomputar la suma de comprobación en cada router intermediario. Al eliminarlo, los routers se ahorran ese cálculo matemático en cada paquete, delegando la integridad de los datos a las capas 2 (Ethernet) y 4 (TCP/UDP).


5. ¿Para qué sirve el campo Flow Label (Etiqueta de flujo) de 20 bits presente en la cabecera IPv6?

Permite identificar un conjunto de paquetes pertenecientes a una misma sesión de comunicación en tiempo real (ej. telefonía IP o videoconferencia). Los routers pueden utilizar esta etiqueta para mantener el mismo camino de enrutamiento y la misma política de calidad de servicio (QoS) para todo el flujo, sin necesidad de abrir ni inspeccionar las cabeceras internas TCP o UDP.



 La cabecera IPv6 (definida en RFC 8200) fue diseñada para maximizar la eficiencia en el procesamiento de paquetes. A diferencia de su predecesora, presenta una estructura de longitud fija de 40 bytes, lo que permite a los dispositivos intermedios (routers) procesar el tráfico a mayor velocidad al eliminar cálculos complejos y campos redundantes.

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| Traffic Class | Flow Label | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Payload Length | Next Header | Hop Limit | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + Source Address + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | + + | | + Destination Address + | | + + | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


Desglose de los campos:

  1. Version (4 bits): Identifica la versión del protocolo. Para IPv6, el valor binario es siempre 0110 (6).

  2. Traffic Class (8 bits): Utilizado para gestionar la Calidad de Servicio (QoS). Permite a los nodos origen y a los routers identificar y distinguir diferentes clases o prioridades de tráfico (funcionalidad equivalente a DSCP en IPv4).

  3. Flow Label (20 bits): Diseñado para etiquetar flujos de tráfico específicos (como secuencias de paquetes de audio o video en tiempo real). Permite a los dispositivos de red manejar paquetes que pertenecen a la misma sesión o flujo de datos de manera uniforme sin necesidad de inspeccionar profundamente las cabeceras de transporte (capa 4).

  4. Payload Length (16 bits): Indica la longitud de los datos que siguen a la cabecera fija de 40 bytes. Esto incluye cualquier cabecera de extensión presente.

  5. Next Header (8 bits): Identifica el tipo de cabecera que viene a continuación. Puede ser una cabecera de extensión IPv6 o un protocolo de capa superior (ej. TCP=6, UDP=17, ICMPv6=58).

  6. Hop Limit (8 bits): Funciona igual que el TTL de IPv4. Es un contador que se decrementa en cada nodo (router) que procesa el paquete. Si alcanza el valor cero, el paquete es descartado.

  7. Source Address (128 bits): Dirección IPv6 del emisor.

  8. Destination Address (128 bits): Dirección IPv6 del destino final.

NOTA: Obsérvese la ausencia de los campos de fragmentación. En IPv6, los routers no fragmentan; si un paquete es demasiado grande para el siguiente salto, el router simplemente lo descarta y envía un mensaje ICMPv6 de vuelta al origen ("Packet Too Big"). Por eso no hay campos de control de fragmentación en la cabecera principal, lo que simplifica enormemente el trabajo de los dispositivos intermedios.

  • Ausencia de Checksum: A diferencia de IPv4, IPv6 no incluye un campo de checksum en su cabecera. Se decidió prescindir de él porque los protocolos de capa de enlace (como Ethernet) y de capa de transporte (TCP/UDP) ya implementan sus propios mecanismos de verificación de errores. Esto ahorra tiempo de procesamiento en cada router, al no tener que recalcular el valor en cada salto.

  • Cabeceras de Extensión: Si el paquete requiere funcionalidades que antes estaban en la cabecera de IPv4 (como fragmentación u opciones de enrutamiento), estas se añaden como "Cabeceras de Extensión" encadenadas después de la de 40 bytes. El campo Next Header es el que "apunta" hacia la primera de estas extensiones.

Las Cabeceras de Extensión (Extension Headers)

Una innovación clave en IPv6 es que las funciones adicionales (como fragmentación o seguridad) no residen en la cabecera principal, sino en cabeceras de extensión encadenadas.

  • Funcionamiento: Se insertan entre la cabecera principal y el segmento de datos.

  • Encadenamiento: El campo Next Header de la cabecera principal indica qué cabecera de extensión sigue, y el campo Next Header de esa extensión indica la siguiente, hasta llegar al protocolo final (ej. TCP).


Tabla Comparativa de Estructura

Campo IPv4 (Bytes) IPv6 (Bytes)
Cabecera fija Entre 20 y 60 40
Checksum No
Fragmentación Sí (campos dedicados) No (solo en origen)
Longitud Variable Fija




Actividad Práctica:

Objetivo: Comparar la complejidad de procesamiento entre IPv4 e IPv6.

Procedimiento:

  1. Captura de tráfico: Utilizar wireshark para capturar un paquete IPv6.

  2. Visualización: Expandir la sección "Internet Protocol Version 6".

  3. Comparación: Observar la ausencia del campo Checksum.

  4. Cuestión técnica: Si un router debe procesar un paquete IPv6 con múltiples cabeceras de extensión (por ejemplo, para Routing y Authentication), ¿por qué es más eficiente este modelo de "cadena" que el modelo de "opciones" de IPv4?