Definición


Si un paquete completo tiene un tamaño mayor al MTU, se deberá fragmentar. Los paquetes no son reensamblados en el camino, sino en el host de destino. Si se pierde un fragmento, IP descartará el paquete completo

Los headers de IP tienen tres campos utilizados para la fragmentación

  • Identification
    • Es un número de bits que identifica cada paquete, permite definir de qué paquete provienen los fragmentos
  • Flags
    • Son bits
      • El primero no es utilizado, siempre valdrá cero
      • El segundo es el bit “Do not Fragment”. Si vale uno, el paquete será descargado, si es necesario fragmentarlo
      • El tercer bit es el “More Fragments”. Vale cero si es el último fragmento de un paquete
  • Fragment offset
    • Número de bits que determina la posición del primer bit del fragmento con relación al paquete completo. Debido a que tenemos bits menos, la posición real se obtiene tras multiplicar el offset por . Debido a esto, el tamaño de payload de los fragmentos debe ser múltiplo de

Método de fragmentación


  1. Si el tamaño del datagrama (incluyendo el header) es mayor al MTU, debemos fragmentar
  2. Calculamos el tamaño del payload (sin header) como
  1. Calculamos el máximo tamaño de fragment payload permitido, como
  1. Como nuestro fragmento debe tener un tamaño múltiplo de , entonces debemos hallar el máximo valor permitido múltiplo de , este será
  1. A partir del nuestro fragment payload size, podemos calcular la cantidad de fragmentos que debemos enviar como
  1. Construiremos un fragmento con payload size , datagram size , y fragment offset de
  2. Repetiremos el procedimiento para el resto de fragmentos que se necesitan enviar. El tamaño de todos los fragmentos enviados será el mismo () excepto el último, que tendrá un tamaño menor (o igual). Los fragment offset incrementará linealmente a razón de por cada fragmento enviado. El último fragmento tendrá a bit de “More Fragments” en . Lógicamente, todos los paquetes tendrán el bit de “Do Not Fragment” en

Ejemplo


Nro de fragFragment offsetTotal lengthPayload lengthMore fragments
Llega
a
Llega
a
Llega
a