Fragmentación IP – Qué es y cómo funciona

Concepto: Fragmentación IP
Dificultad: Media
Tema: IP
Resumen: Mecanismo usado para separar el datagrama IP en datagramas más pequeños.
Hoy en día existen muchas redes informáticas que usan protocolos disitntos. Algunas son más rápidas, otras más lentas. Algunas tienen más capacidad, otras menos. Es por eso que para adaptar los datagramas IP y garantizar que puedan circular por cualquier red existen diferentes mecanismos. Uno de ellos es la Fragmentación IP.

¿Qué es la fragmentación IP?

La fragmentación de paquetes IP es un mecanismo que permite separar o fragmentar un datagrama IP en diversos bloques de datos llamados fragmentos si su tamaño sobrepasa la Unidad Máxima de Transferencia (MTU). El protocolo IP solamente fragmenta un datagrama cuando la MTU (Maximum Transfer Unit) del medio por donde se tiene que encaminar tiene un tamaño menor que el del datagrama.

La MTU indica el nombre máximo de bytes que se pueden encapsular en una trama, o lo que es lo mismo, la longitud máxima del datagrama.

Por ejemplo, si un datagrama IP pesa 1620 bytes y la red por la que viaja tiene una MTU de 1500 bytes (Ethernet) se tendrá que fragmentar el datagrama.

Las MTU en función de la tecnología que se use son las siguientes:

  • Ethernet: 1500 bytes
  • WiFi: 2312 bytes
  • PPP: 576 bytes
  • X.25: 576 bytes
  • PPPoE: 1492 bytes
  • 16Mbps Token Ring: 17914 bytes

Se fragmenta en 2 casos concretos:

  • Cuando un router tiene que encaminar un datagrama por una red con una MTU inferior que la de donde ha llegado (ejemplo).
  • Cuando se usa UDP  y la aplicación hace una escriptura mayor que la MTU de la red.

Ejemplo

Paso 0

Nos encontramos con la siguiente topología de redes. El orderandor 1 (Ord1) quiere enviar un mensaje al ordenador2 (Ord2); para ello tiene que pasar por 3 redes y 2 routers en total.

Fragmentacion 0
Topología del ejemplo

 

Paso 1

El host se encuentra en una red Ethernet con una MTU de 1500 bytes. Así pues crea un nombre indefinido de datagramas (en función del peso del mensaje) ajustados a 1500 bytes para ser retransmitidos por ese medio sin ningún problema. En este ejemplo nos centramos solamente en 1 datagrama.

Ord1 encapsula el datagrama en una trama y la retransmite.

Fragmentacion 1
Paso 1: El host crea el datagrama

 

Paso 2

R1 recibe la Trama y la desencapsula para quedarse con el datagrama.

R1 lee la cabecera IP y mueve el datagrama a la interfaz de salida que le indica su tabla de encaminamiento.

R1 quiere crear la Trama para enviarla pero se da cuenta que la MTU de su tarjeta PPP es MENOR que el tamaño del datagrama (576 < 1500) y por lo tanto no puede enviarlo.

Fragmentacion 2
Paso 2: El router no puede encaminar el datagrama porque la MTU es demasiado pequeña

 

Paso 3

R1 debe fragmentar el datagrama en trocitos más pequeños (576 + 576 + 348) para que pueda ser encapsulado en un datagrama usando PPP.

R1 retransmite cada fragmento por separado.

Fragmentacion 3
Paso 3: Se fragmenta el datagrama

 

Paso 4

Los fragmentos llegan a R2 y como la MTU de su tarjeta de red Ethernet es mayor a la de los fragmentos, estos siguen su camino hasta Ord2.

Fragmentacion 4
Paso 4: Ahora sí se puede encaminar. Los distintos fragmentos viajan hasta el destino donde son reensamblados.

 

El “reensamblaje” de los fragmentos se realiza en el destino del datagrama (en Ord2). Los routers NO reensamblan. Da igual que se pueda realizar antes.

Estos pueden llegar desordenados o no llegar todos. Además se necesita diferenciar entre los diferentes datagramas: ¡no queremos reensamblar un datagrama con parte del contenido de otro!

Para ello se usan los siguientes campos.

Campos de la cabecera IP que intervienen activamente

Cabecera IP campos fragmentación

Identification (16 bits)

Número que permite identificar a qué datagrama pertenece un fragmento.

El host que realiza la fragmentación del datagrama se ocupa de asignar el valor. Este valor sale de un contador que se incrementa en 1 cada vez que se genera un nuevo datagrama.

Así, todos los fragmentos del datagrama 24976 tendrán 24976 en este campo.

Flags (3 bits)

Tienen el formato 0DM. El 0 no se usa.

  • D (don’t fragment): Si se encuentra a 1 quiere decir que el datagrama no se puede fragmentar. En el caso de que sea totalmente necesario hacerlo, el router lo descartará y enviará un mensaje ICMP de error. Se usa en el mecanismo MTU path discovery.
  • M (more fragments): Si se encuentra a 1 quiere decir que hay más fragmentos en camino. Todos los fragmentos de un datagrama llevan un 1 en este campo excepto el último.

Fragment offset (13 bits)

Indica la posición del primer byte del fragmento en el datagrama original (el valor inicial es “0”). Se cuenta con unidades de 8 bytes (64 bits) para poder contar hasta (2^16)-1 con los 13 bits disponibles.

 

Sabiendo todo esto podemos entender mucho mejor la fragmentación:

fragmentación IP paso a paso

Campos de la cabecera IP que se ven afectados

Debido a la fragmentación otros campos de la cabecera IP que no participan activamente se verán afectados y por lo tanto cambiarán su valor.

  • Longitud
  • Tamaño de la cabecera
  • Checksum
  • Opciones

Efectos – Ventajas y Desventajas de usar la fragmentación

Ventajas

  • Permite que un datagrama pueda viajar por distintas redes y topologías de red independientemente de los protocolos y tarjetas de red que se usen.

Desventajas

  • Si se pierde un fragmento, hay que retransmitir todos los fragmentos del datagrama original otra vez.
  • IP no tiene mecanismos de seguridad ni temporizador por lo que depende exclusivamente de las funciones de seguridad de la capa de Transporte.
  • La fragmentación puede afectar negativamente al flujo de datos. Por eso se intenta usar lo menos posible.

Fragmentación en IPv6

En las nuevas direcciones IPv6 no se permite la fragmentación a los routers. Se anticipa a este suceso con mensajes de control ICMP, por lo que ajusta el tamaño del datagrama antes de enviarlo por la tarjeta de red.

 

Si el artículo te ha sido útil te agradeceríamos que lo compartieras para que llegue al máximo número de personas y lo valorases positivamente. Muchas gracias!

Fragmentación IP – Qué es y cómo funciona
5 (100%) 2 vote[s]

Martí Juncosa

Estudiante de ingeniería informática en la UPC (Universitat Politècnica de Catalunya).
Apasionado del SEO y las páginas web así como todo lo que tiene que ver con tecnología e innovación.

2 comments

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

  • ¿No que el Offset se usaba con bloques de 8 bytes?
    tendrías que poner el bloque 69,5 en offset. cosa que no se puede(69,5*8=556). ¿Como lo arreglarías?
    Si pusiste offset = 556 significa que el byte numero 556*8. ¿Verdad?

    • Buenas Carlos,
      Exacto, al poner 556 en el campo Offset, implícitamente hago la operación 556*8, ya que son 556 bytes.
      Respecto a lo primero que preguntas…
      Fíjate que en el ejemplo, el campo de datos fragmentado se corresponde a 556 BYTES y no bits, por lo que no tiene sentido eso de los 69,5 bloques.
      Gracias, cualquier otra duda aquí estoy!