La
cabecera de
IPv6, descrita principalmente en la RFC 2460, elimina o hace opcionales
varios
campos de la cabecera de IPv4, consiguiendo una cabecera de
tamaño fijo y más
simple, con el fin de reducir el tiempo de procesamiento de los
paquetes
manejados y limitar el coste en ancho de banda de la cabecera de IPv6.
Figura
1: Cabecera de IPv4.
La cabecera de
IPv4, mostrada en la Figura 1, tiene una longitud variable
mínima de 20
octetos. El bit más significante se numera por 0 a la
izquierda, y el menos
significante se numera por 31 a la derecha. La forma de transmitir los
diferentes bytes, sigue el orden conocido por big
endian, es decir, de izquierda a derecha y de arriba abajo
según la estructura presentada en la Figura 1. La cabecera
consiste en los
siguientes campos:
- Versión (4 bits).
Es el número de versión de IP, es
decir, 4.
- Cabecera
(4 bits). Especifica la longitud total de la
cabecera en palabras de 32 bits. El valor mínimo y
más común es de 5, siendo la
longitud de cabecera mínima. Puesto que el campo es de 4
bits, se limita la
longitud total de la cabecera a 60 bytes.
- Tipo
de servicio (8 bits). Indica la calidad de servicio
solicitada por el paquete IP. De los 8 bits, actualmente
sólo se utilizan 4,
indicando cada uno de ellos: conseguir el retardo mínimo,
maximizar caudal,
maximizar la fiabilidad, y minimizar el coste monetario.
Sólo uno de estos
cuatro bits puede estar a 1. Su uso viene descrito en la RFC 1340 y RFC
1349.
- Longitud
total (16 bits). Especifica el tamaño total del
paquete, incluyendo la cabecera y los datos, en bytes.
- Identificador
(16 bits). Es un número único asignado por
el dispositivo que envía el paquete, con el fin de que el
destinatario pueda
reensamblar un paquete fragmentado por los nodos intermedios.
Recordemos que la
fragmentación es necesaria porque no todas las redes
físicas tienen la misma
longitud de trama máxima, por lo cual en muchos casos es
necesario que los
nodos intermedios dividan el datagrama en varios fragmentos. Cada uno
de estos
fragmentos podrá seguir rutas distintas al resto y, de
perderse alguno de los
fragmentos, el origen deberá retransmitir el paquete
completo.
- Banderas
(3 bits). Es un campo para el control de la
fragmentación. El primer bit no es utilizado y
está siempre puesto a 0. Si el
segundo bit es 0, significa que puede haber fragmentación, y
si es 1, significa
que no puede haber fragmentación. Si el tercer bit es 0,
indica que es el
último fragmento, y si es 1, indica que aún hay
más fragmentos.
- Desplazamiento
del fragmento (13 bits). Es utilizado en
los paquetes que han sido fragmentados, para posibilitar el
reensamblado total
del paquete. Su valor indica el número de bloques de 8 bytes
(sin contabilizar
los bytes de la cabecera) que estaban contenidos en los fragmentos
previos. En
el primer fragmento, o en un único fragmento, este valor es
siempre 0. Tiempo
de vida (8 bits). Contiene el tiempo máximo que un paquete
puede permanecer en
una red. Cada dispositivo por el que pasa el paquete decrementa el
valor de
este campo en el tiempo que tarda en procesar la cabecera IP, siendo 1
el valor
mínimo. Si el valor llega a 0, el paquete es descartado.
Esto garantiza que los
paquetes no viajan a través de una red haciendo bucles,
incluso si las tablas
de encaminamiento son erróneas.
- Protocolo
(8 bits). Indica al protocolo de nivel superior
al que IP deberá pasar los datos del paquete. Por ejemplo,
UDP es 17 y TCP es
6.
- Control
de errores de la cabecera (16 bits). Es un campo
para controlar los errores únicamente en la cabecera IP,
exceptuando este
campo.
- Dirección
origen (32 bits). Es la dirección del origen
del paquete.
- Dirección
destino (32 bits). Es la dirección del destino
del paquete.
- Opciones
(variable). No son requeridas en todos los
paquetes.

Figura
2: Cabecera de IPv6.
La cabecera
básica
de IPv6, mostrada en la Figura 2, tiene una longitud fija de 40
octetos,
consistiendo en los siguientes campos:
- Versión
(4 bits). Es el número de versión de IP, es
decir, 6.
- Clase
de tráfico (8 bits). El valor de este campo
especifica la clase de tráfico. Los valores de 0-7
están definidos para tráfico
de datos con control de la congestión, y de 8-15 para
tráfico de vídeo y audio
sin control de la congestión.
- Etiqueta
del flujo (20 bits). El estándar IPv6 define un
flujo como una secuencia de paquetes enviados desde un origen
específico a un
destino específico. Un flujo se identifica
únicamente por la combinación de una
dirección fuente y una etiqueta de 20 bits. De este modo, la
fuente asigna la
misma etiqueta a todos los paquetes que forman parte del mismo flujo.
La
utilización de esta etiqueta, que identifica una camino a lo
largo de la red,
posibilita encaminar conmutar en vez de encaminar. Su uso viene
descrito en la
RFC 1809.
- Longitud
del paquete (16 bits). Especifica el tamaño
total del paquete, incluyendo la cabecera y los datos, en bytes. Es
necesario
porque también hay campos opcionales en la cabecera.
- Siguiente
cabecera (8 bits). Indica el tipo de cabecera
que sigue a la cabecera fija de IPv6, por ejemplo, una cabecera
TCP/UDP, ICMPv6
o una cabecera IPv6 opcional.
- Límite
de saltos (8 bits). Es el número de saltos máximo
que le quedan al paquete. El límite de saltos es establecido
a un valor máximo
por el origen y decrementado en 1 cada vez que un nodo encamina el
paquete. Si
el límite de saltos es decrementado y toma el valor 0, el
paquete es
descartado.
- Dirección
origen (128 bits). Es la dirección del origen
del paquete.
- Dirección
destino (128 bits). Es la dirección del destino
del paquete.
Como podemos
observar, de los 12 campos de la cabecera de IPv4 se ha pasado a 8
campos en
IPv6. El motivo fundamental por el que estos campos (tipo de servicio,
indicadores, identificación y control de errores) son
eliminados, es la
innecesaria redundancia; en IPv4 se está facilitando la
misma información de
diversas formas, como es el caso del campo de control de errores, pues
otros
mecanismos de encapsulado de capas inferiores, por ejemplo IEEE 802, ya
realizan esta función. El campo de desplazamiento de
fragmentación de IPv4 ha
sido eliminado, porque los paquetes ya no son fragmentados en los nodos
intermedios,
en IPv6 es un proceso que se produce extremo a extremo.
El único campo realmente nuevo en IPv6 es la
etiqueta de flujo.
La
información
opcional a la estrictamente necesaria para encaminar los paquetes de
datos, es
codificada en cabeceras adicionales que pueden ubicarse entre la
cabecera IPv6
y las cabeceras de niveles superiores, como por ejemplo la cabecera
TCP/UDP. En
la actualidad, hay un pequeño número de tales
cabeceras de extensión (opciones
de salto por salto, encaminamiento extendido, fragmentación
y reensamblado,
opciones del destino, autentificación, y
encapsulación) estando cada una
identificada por un valor distinto del valor del campo siguiente
cabecera. Cada
paquete IPv6 puede llevar cero, una, o más cabeceras de
extensión, cada una
identificada por el valor del campo siguiente cabecera de la cabecera
que la
precede. Las cabeceras de extensión deben de ser procesadas
en orden, ya que el
contenido y semántica de cada una de ellas indican si se
debe o no procesar la
siguiente cabecera.
De esta forma, las
cabeceras de extensión no son examinadas o procesadas por
los nodos
intermedios, sólo cuando lleguen al nodo que venga
identificado por el campo de
dirección de destino de la cabecera IPv6. La
única excepción es la cabecera de
opciones de salto por salto, que lleva información que debe
ser procesada y
examinada en todos los nodos por los que pasa el paquete, incluyendo
los nodos
origen y destino. La cabecera de opciones de salto por salto, cuando
esté
presente, debe seguir inmediatamente a la cabecera IPv6. Su presencia
se indica
por el valor 0 en el campo de siguiente cabecera de la cabecera IPv6.
Cada
cabecera de
extensión tiene una longitud múltiplo entero de 8
octetos, con el fin de
mantener el alineamiento de 8 octetos en las cabeceras siguientes. La
razón de
que los distintos campos de la cabecera estén alineados a 64
bits, es que la
nueva generación de procesadores, de 64 bits, puedan
procesar dichos campos más
eficientemente.
Resumiendo,
las
principales mejoras que ofrece la cabecera IPv6 son:
- Cabecera de tamaño
fijo, de 40 bytes.
- Eliminación
de campos redundantes en la cabecera,
haciendo un total de 8.
- Cabecera
básica y de extensión alineadas a un
múltiplo
entero de 64 bits.
- Procesamiento
eficiente de las opciones, sólo en destino
y cuando éstas se presentan.
- Fragmentación
procesada en el origen y el destino de los
paquetes, no en los routers.