La fragmentación

Se ha visto que las tramas físicas tienen un campo de datos y que es aquí donde se transportan los datagramas IP. Sin embargo, este campo de datos no puede tener una longitud indefinida debido a que está limitado por el diseño de la red. El MTU de una red es la mayor cantidad de datos que puede transportar su trama física. El MTU de las redes Ethernet es 1500 bytes y el de las redes Token-Ring, 8192 bytes. Esto significa que una red Ethernet nunca podrá transportar un datagrama de más de 1500 bytes sin fragmentarlo.

Un encaminador (router) fragmenta un datagrama en varios si el siguiente tramo de la red por el que tiene que viajar el datagrama tiene un MTU inferior a la longitud del datagrama. Veamos con el siguiente ejemplo cómo se produce la fragmentación de un datagrama.

Queremos transmitir un datagrama IP desde el ordenador A que se encuentra en la Red 1 hasta el ordenador B de la Red 2 y que contiene 1400 bytes de datos (1420 bytes en total). El datagrama no tiene ningún problema en atravesar la Red 1 ya que 1420 < 1500. Sin embargo, no es capaz de atravesar la red 2 (1420 >= 620). El encaminador 1 fragmenta el datagrama en el menor número de fragmentos posibles que sean capaces de atravesar la Red 2. Cada uno de estos fragmentos es un nuevo datagrama con el mismo identificador pero distinta información en los campos de Desplazamiento de fragmentación y MF. Veamos el resultado. Todos los fragmentos tienen la misma cabecera, solamente cambian los campos MF y F.Offset.

  • Fragmento 1: Long. total = 620 bytes; Desp = 0; MF=1
  • Fragmento 2: Long. total = 620 bytes; Desp = 600; MF=1
  • Fragmento 3: Long. total = 220 bytes; Desp = 1200; MF=0

¿Qué hace el encaminador 2? No reensambla, encamina cada uno de los tres datagramas hasta la Red 2. Cuando el ordenador B reciba los fragmentos, recompondrá el datagrama original. Observemos que los encaminadores intermedios no reensamblan los fragmentos ya que esto supondría una carga de trabajo adicional, a parte de memorias temporales. Fijémonos también en que el ordenador destino puede recibir los fragmentos en distinto orden y que esto no supone ningún problema para el reensamblado del datagrama original. Si el datagrama del ejemplo tuviese a 1 su bit de DF (no fragmentar), no hubiera podido llegar a su destino debido a que la Red 2 no es capaz de atravesarla sin una fragmentación previa. El encaminador R1 descartaría el datagrama.

Fragmentación transparente

El gateway parte el paquete. Se mandan todos los fragmentos al mismo gateway de salida, donde se los montan de nuevo. El gateway de salida tiene que saber cuando tiene todos los fragmentos. Todos los paquetes tienen que salir a través del mismo gateway. Hay que pagar el overhead de partir y montar en cada red de paquetes pequeños.

Fragmentación no transparente

El host de destino tiene que montar el paquete de nuevo. Hay más overhead porque los fragmentos persisten hasta el fin del viaje. Empero, se pueden usar gateways múltiples de salida.


Una manera para enumerar los fragmentos es que cada encabezamiento tiene el número del paquete original, el número del primer fragmento elemental en el paquete, y un bit que indica el fragmento final. Los fragmentos consisten en conjuntos de fragmentos elementales que son suficientes pequeños para cualquiera red en la internet. Se los dividen cuando sea necesario.

 

 

Para saber si un datagrama está fragmentado o no:

 
fragmentado

No

fragmentado

MF = 0
Fragment Offset = 0

Primer Fragmento
MF = 1
F. Offset = 0
 
Algún fragmento intermedio
MF = 1
F. Offset <> 0
 
Último fragmento
MF = 0
F. Offset <> 0
 

 

Nivel de red/La fragmentación