Al contrario que en IPv4, el fragmentado de un paquete sólo lo
puede llevar a cabo el origen, con lo que se obvia el flag no
fragmentable, de IPv4 (ver Fragmentación
y Flags).
Para cada paquete que deba ser fragmentado, el origen le asigna
un identificador (ver Cabecera de
fragmento), este identificador debe ser diferente del de cualquier otro
paquete enviado recientemente con la mismas direcciones origen y
destino.
El paquete original se diferencia en dos partes, fragmentable y
no fragmentable. La parte no fragmentable consiste en la cabecera IPv6 y las
cabeceras extendidas que deban ser procesadas por los nodos intermedios en el
camino del paquete. La parte fragmentable consta del resto de cabeceras
extendidas, de la cabecera del nivel superior y de la carga.
El paquete original se descompone en fragmentos cuya longitud
debe estar alineada a 8 octetos (excepto el último). La parte no fragmentable
del paquete original se copia a todos sus fragmentos, cambiando el campo
longitud de la carga a la longitud de cada fragmento y el campo
siguiente cabecera a 44 (valor que identifica a una cabecera de
fragmento).
Cada fragmento está compuesto por:
- La parte no fragmentable del paquete original.
- La cabecera de fragmento. Ver apartado Cabecera de fragmento
- El fragmento propiamente dicho.
En destino, el paquete original es contruido según las siguiente
normas:
- Los fragmentos del paquete original deben contener los mismos valores en los campos Dirección origen, dirección destino y identificador de fragmento.
- El campo siguiente cabecera de la cabecera IPv6 se obtiene del campo siguiente cabecera de la cabecera de fragmento del primer fragmento.
- El campo tamaño de la carga del datagrama original se
calcula en base al tamaño de la parte no fragmentable, y al tamaño y offset
de fragmento del último fragmento.
En el proceso de reensamblado, pueden producirse los siguientes
errores:
- Si se ha recibido un número de fragmentos insuficientes para
recomponer el paquete original pasados 60 segundos desde el primer fragmento
recibido, se abandona el proceso y se descartan todos los fragmentos recibidos.
Si se recibió el primer fragmento (offset de fragmento = 0), se envía un
mensaje ICMP de error al origen.
- Si la longitud de un fragmento en octetos no es múltiplo de 8
y no es el último fragmento, se descarta el fragmento y se envía un mensaje ICMP
de error al origen.
- Si la longitud y el offset de fragmento de un fragmento
determinan que la longitud de la carga del paquete original es mayor de 65535
octetos, se descarta el fragmento y se envía un mensaje ICMP de error al
origen.