9. PROTOCOLO IP

9.16. Fragmentación y reensamblado

En IPv4, la fragmentación y el reensamblado son procesos que permiten dividir un paquete IP grande en fragmentos más pequeños cuando debe atravesar redes con distintos tamaños máximos de trama (MTU, Maximum Transmission Unit).

1 Motivo de la fragmentación

Cada enlace físico tiene o podría tener un tamaño máximo de paquete que puede transportar (MTU).
Por ejemplo:

Enlace MTU típica
Ethernet 1500 bytes
PPPoE 1492 bytes
Wi-Fi 2304 bytes

Si un paquete IP es más grande que el MTU del siguiente enlace, debe fragmentarse para poder transmitirse.

2. Dónde ocurre la fragmentación

En algún lugar del camino ( en capa 3) donde el router determine que el MTU de la Interfaz de salida es menor que el MTU de las interfaz de salida.

Para lograr esto se MODIFICAN algunos campos del datagrama original.
  • campo Flags 
  • Offset 
  • FCS
Campos del encabezado IP implicados
En el encabezado IPv4 hay tres campos clave para la fragmentación:

  • Identification (16 bits)    Identifica a qué datagrama original pertenece el fragmento. Todos los fragmentos del mismo paquete tienen el mismo valor.
  • Flags (3 bits)    Controla la fragmentación:
    • – Bit 0: reservado (0)
    • – Bit 1: DF (Don’t Fragment)
    • – Bit 2: MF (More Fragments): 1 si hay más fragmentos después, 0 en el último.
  • Fragment Offset (13 bits)    Indica la posición del fragmento dentro del datagrama original, en unidades de 8 bytes.

¿Cómo se fragmenta?

Supongamos que un datagrama IP tiene 4000 bytes de carga útil (sin contar los 20 bytes del encabezado IP), y debe atravesar una red con MTU 1500. Cada fragmento deberá ser menor o igual a 1500 bytes incluyendo el encabezado IP.

Por tanto:

  • Máximo de datos por fragmento: 1480 bytes (1500 – 20).

  • Como el offset se mide en múltiplos de 8 bytes, cada fragmento debe tener un tamaño de datos múltiplo de 8.

Fragmento Datos Offset bit MF
1 1480 bytes 0 1
2 1480 bytes 185 (1480/8) 1
3 1040 bytes 370 (2960/8) 0

  • Cada fragmento lleva su propio encabezado IP con el mismo Identification.
  • Ver que debo recalcular el FCS luego de generar en datagrama fragmentado.

Reensamblado

El receptor final (nunca los routers intermedios) es quien:

  1. Recibe los fragmentos.

  2. Los ordena según el offset.

  3. Reconoce el último porque su MF = 0.

  4. Reconstruye el datagrama original concatenando los datos.

Si falta algún fragmento o no llega dentro del tiempo de espera, se descarta todo el datagrama.

Problemas comunes

  • Retransmisión costosa: si un fragmento se pierde, hay que reenviar todo el datagrama.

  • Ataques de fragmentación: se puede usar para evadir cortafuegos o IDS.

  • Mayor carga de procesamiento en el receptor. 
    Por eso, hoy en día se prefiere evitarla usando Path MTU Discovery IPv6, donde el emisor detecta el MTU más bajo del camino y ajusta el tamaño de los paquetes.

Nota: la Fragmentación implica un trabajo de procesamiento muy importante para el router, por eso se quiere evitar.