Kioskea
Buscar
Haz una pregunta »

Introducción al MTU

Marzo 2015


Introducción al MTU




¿Qué es el MTU?


El MTU (Maximum Transmission Unit o Unidad máxima de transferencia en español) es un parámetro que indica el tamaño máximo que debe tener un datagrama para que sea transmitido por una interfaz IP sin que necesite ser fragmentado en unidades más pequeñas. El MTU debe ser superior al datagrama más grande que deseemos transmitir para que no sea fragmentado. Dicho de otro modo, el MTU expresa el tamaño máximo (en bytes) de un paquete que puede ser transmitido de una sola vez.

Algunos valores del MTU:
Para Ethernet: 1500 bytes.
Para PPPoE: 1492 bytes
Para RTC: 576 bytes

Cálculo del MTU


La transmisión de una trama está determinada por su cuerpo (=MMS=maximum segment size), que determina el mayor segmento de información TCP que puede ser transmitido, y la cabecera (header en inglés).
Es decir: MTU=MSS + TCP/IP headers

Supongamos que:

MSS=MTU-40 <-- 40 para la cabecera (20 bytes IP y 20 bytes TCP)
Los paquetes no son fragmentados
No hay paquetes perdidos

Tamaño de los paquetes / velocidad
Supongamos una transferencia de datos de 1, 500,000 bytes utilizando diferentes tamaños de paquetes a través de una línea T1 (rtc) (T1=1, 544,000 bits/sec) siguiendo la fórmula:


(MSS + header) * 8 bits/byte
---------------------------------- = latencia
1, 544,000 bits/seg

Vamos a calcular la latencia de la transmisión utilizando diferentes valores de MTU:

Si el MTU = 1500, entonces: (1460+40) * 8 / 1, 544,000 = 7.772 ms
Si el MTU = 576, entonces: (536+40) * 8 / 1, 544,000 = 2.924 ms
En 10 veces, obtenemos 77,72 ms para el MTU a 1500, y 29,24 ms para el 576.

Por lo tanto cuantos más paquetes haya, mayor será el tiempo de transferencia

Utilicemos la misma formula para una transmisión de 1 mb.

1MB = 1024 KB = 1, 048,576 bytes.

Si el MTU = 1500, entonces: (1460+40) * 8 / 1, 544,000 = 7.772 ms
1 MB / MSS = 1, 048,576 bytes / 1460 = 718.2, o sea 719 paquetes para transferir 1 MB.

Es decir, para transferir 1Mb: 719 paquetes * 7.772 ms (por vez) = 5588.068 ms, ó 5.588 segundos.

Si transferimos 1 MB 10 veces (definidos por la cabecera), esto nos tomará teóricamente:

(1er paquete* 10 bucles * 7.772ms delay) + 718 * 7.772 = 5.658 segundos.

Si el MTU = 576, entonces: (536+40) * 8 / 1, 544,000 = 2.924 ms
1 MB / MSS = 1, 048,576 bytes / 536 = 1956.3, o sea 1957 paquetes para transferir 1 MB.

Para transferir 1 MB: 1957 paquetes * 2.924 ms (por vez)= 5722.268 ms, ó 5.722 segundos por vez.
Si transferimos este 1 MB 10 veces:
(1er paquete *10 veces * 2.924ms) + 1956 * 2.924 = 5.748 sec.

La diferencia se debe a que cuanto mayor sea el tamaño de los paquetes, el tamaño de la cabecera será relativamente menor.
Por lo tanto para transferir 1MB, si utilizamos un MTU de 1500 entonces habrá 719*40 = 28,760 bytes para la cabecera, mientras que para un MTU de 576, obtenemos 1957*40=78,280, es decir más de 49,520 bytes de cabecera transferidos a cada Megabyte. Para nuestro ejemplo de 10 repeticiones, no es considerable, pero para las transferencias realizadas a diario…

Además, la mayoría de módems utiliza un tamaño de cabecera mayor, y otras latencias asociadas que no hemos tomado en cuenta en este ejemplo.

Encontrar el MTU bajo Windows


Para encontrar el MTU, debemos acceder a la línea de comandos (Inicio > Ejecutar > escribir cmd). Una vez en la línea de comandos, haremos pruebas de ping, precisando el tamaño de los paquetes que deseamos probar:

ping -f -l (tamaño del paquete -28) (IP de nuestro servidor)
la opción -f permite hacer la prueba obligando a los routers encontrados a no fragmentar el paquete
la opción –l envía el tamaño del paquete
Restamos 28 al tamaño del paquete que vamos a probar, correspondiente a la cabecera de este paquete
Debemos hacer la prueba apuntando a una dirección IP de una página web.

Por ejemplo:
ping -f -l 1372 192.168.0.1
- Si la respuesta a la solicitud es:
Respuesta desde 192.168.0.1: bytes = 1372....
Respuesta desde 192.168.0.1: bytes = 1372....
Respuesta desde 192.168.0.1: bytes = 1372....
Respuesta desde 192.168.0.1: bytes = 1372....

En este caso el tamaño del paquete permite una transferencia sin fragmentación, por lo tanto podemos probar con un valor más grande. Cuando obtengamos el mensaje “El paquete debe ser fragmentado, pero parametrado DF”, es porque el tamaño del paquete es demasiado grande.

Modificar el MTU bajo Windows


Una vez que hayamos determinado el MTU optimo, tenemos dos maneras de modificar el valor MTU. Una de ellas y la más fácil es utilizando el programa DR TCP. Descárgalo haciendo clic Aquí y luego haz clic en telecharger, la página está en francés pero el programa está en inglés y es gratis.

Una vez instalado, en el campo MTU deberemos indicar el valor encontrado la prueba que hicimos en la línea de comandos y agregar 28 para la cabecera.

Encontrar el valor MTU bajo Linux


Tan solo hay que ejecutar este comando con permisos de root, en el que nombre_interfaz deberá ser remplazado por el nombre de la interfaz de red de destino:
ifconfig nombre_interfaz | grep -Eo "MTU:[0-9]+"

Modificar el MTU bajo Linux


El comando ifconfig nos permite modificar el mtu bajo Linux, para ello debemos poseer permisos de root y utilizar la siguiente sintaxis:
ifconfig nombre_interfaz mtu valor_mtu


Ejemplo: cambiar el MTU de la interfaz eth0 a 1500
ifconfig eth0 mtu 1500
Consulta este artículo sin tener que estar conectado, descárgalo gratis aquí en formato PDF:
Introduccion-al-mtu.pdf

Consulta también

En la misma categoría

Installation einer Ethernet Netzwerkkarte
Por jedtheboss el 16 de marzo de 2010
El artículo original fue escrito por Jeff. Traducido por Carlos-vialfa.
El documento « Introducción al MTU » de Kioskea (es.kioskea.net) se encuentra disponible bajo una licencia Creative Commons. Puedes copiarlo o modificarlo bajo las condiciones señaladas por esta licencia. Deberás hacerla siempre visible y dar crédito a Kioskea.