Microsoft Lync Server
Header

​En alguna ocasión seguro que habéis tenido problemas con lo valores por defecto de la MTU de vuestra conexión de red.

Red MTU (Bytes)
——————————– —————–
Token Ring de 16 Mbps 17914
Token Ring de 4 Mbps 4464
FDDI 4352
Ethernet 1500
IEEE 802.3/802.2 1492
X.25 576

 

Los datagramas pueden pasar por varios tipos de redes con diferentes tamaños antes de llegar a su destino. Por ejemplo, para que un datagrama llegue sin fragmentación al destino, ha de ser menor o igual que el menor MTU de todos los elementos de red por las que pase. En el caso de TCP/UDP, el valor máximo está dado por el MSS (Maximum Segment Size), y toma su valor en función de tamaño máximo de datagrama, dado que el MTU = MSS + cabeceras IP + cabeceras TCP/UDP. En concreto, el máximo tamaño de segmento es igual al máximo tamaño de datagrama menos 40 (que es número mínimo de bytes que ocuparán las cabeceras IP y TCP/UDP en el datagrama). Estos se puede ajustar en casi todos los elementos de red de capa 3 y 4, nosotros vamos a ver como podemos ajustar nuestros valores de MTU en Windows.
 

Lo primero que vamos a ver el tamaño actual de la MTU que tienen nuestras interfaces de red, para ello abrimos un CMD con derechos administrativos y escribimos el siguente comando: netsh interface ipv4 show subinterfaces 

Como vemos nos muestra el listado de Interfaces con varios valores y entre uno de ellos la MTU (por defecto 1500Bytes)

MTU_Red_Windows-7-8_2.jpg

Para identificar el valor de MTU que debemos aplicar, podemos hacer algo muy sencillo que es lanzar un ping desde nuestra maquina a otro host de la red (preferiblemente un enrutador o dispositivo con funciones similares) con los siguientes modificadores:  -f (Establecer marca No fragmentar en paquetes) y -l (Enviar tamaño del búfer). Si superamos el tamaño máximo de MTU obtendremos la siguiente respuesta:

MTU_Red_Windows-7-8_5.JPG

Debemos repetir el test hasta que obtengamos el siguiente resultado (decreciendo el valor de MTU en valores de 10)
MTU_Red_Windows-7-8_6.JPG

Una vez que hemos encontrado el valor de MTU que se ajuste a nuestras necesidades, debemos establecerlo en nuestras interfaces de red. Esto podemos hacerlo con el siguiente comando:

netsh interface ipv4 set subinterface "Nombre_Interface" mtu=1300 store=persistent
MTU_Red_Windows-7-8_3.jpg

Si ahora ejecutamos el primer comando (netsh interface ipv4 show subinterfaces) para que nos muestre el resumen de las interfaces y sus valores, como se aprecia se han establecido en función de nuestros parámetros

MTU_Red_Windows-7-8_4-1.jpg

También os muestro una herramienta gráfica para realizar el cambio de MTU: DRTCP021

MTU_Red_Windows-7-8_9.jpg

Los síntomas de un exceso de MTU suelen ser la lentitud, pérdida de paquetes, microcortes, acceso a Internet  lento e incluso sin llegar a cargar las páginas web que queremos visitar, etc… además puede tener otros comportamientos muy extraños. En algunas ocasiones he visto enlaces de VPN a través de los cuales los usuarios se conectaban a los servidores de RDS y no les mostraba la pantalla de login pero si el resto de la ventana!!!! Ante estos síntomas a veces hasta el ingeniero de redes más experimentado tiene problemas para detectarlo.

Yo suelo utilizar una herramienta más pontente  para tratar de detectar problemas de MTU, y que me permite tener estadísticas de todo el recorrido de la conexión. Tiene un nombre muy acorde con el tema: MTUROUTE. Os muestro el listado completo de sus modificadores:

mturoute [-t] [-f] [-m MAX_PAYLOAD_SIZE] host

-t : Toggles 'traceroute' mode.  (Default is off)
-f : Allow fragmentation.  This will return the max ping size that the
        target host will respond to, but not necessarily the MTU
-w : Set the number of milliseconds to wait for a response (default 3000).
-r : Set the maximum number of probe retries on timeout (default = 3).
-i : Set the interval between two echo requests
-d : Increases the debugging level. Reports ICMP status/failures
-m : Sets a maximum payload size to test. (Default is 10000)
-v : Print version info and exit
-z : Fill ICMP packets with random data
-p : Fill ICMP packets with a specified pattern
-s : Skip speed optimizations
-x : Redact IP addresses in output

Este es un ejemplo sin modificadores y veréis como hace pequeños muestreos para verificar cual es el valor más acertado en función de los resultados:

MTU_Red_Windows-7-8_7.JPGEn este caso se ha ajustado No muestra que la MTU es de 1200, y está en lo cierto porque el enlace en donde lo estoy probando es una VPN IPSec Site-to-Site y las interfaces de los Firewalls están ajustadas a una MTU de 1200Bytes. Ahora vamos a ver otra comprobación de MTU pero en un red algo más "grande" con el modificador -t:

MTU_Red_Windows-7-8_10.jpg

 

Como ves ve nos va mostrando el valor de MTU por cada enlace que atraviesa, esto nos facilita  mucho la vida :-).  También debemos tener en cuenta que a cada salto que vamos atravesando desde nuestro equipo al host de destino, los dipostivos intermedios pueden tener valores de MTU más pequeños que nosotros, lo que hará que nos muestre siempre el valor más pequeño aunque el host de destino tenga una MTU de 1500. Pensad que al fin y al cabo nosotros debemos pasar por esos enlaces y con este tamaño de MTU, si quisieramos forzar el atravesarlos con nuestra MTU … es cuando tendríamos el problema, puesto que empezaríamos a fragmentar de tal forma empezaríamos a sufrir los síntomas comentados. Aqui tenéis una imagen súper clara de lo comentado, nuestro equipo y el destino tienen una MTU de 1500Bytes, pero en cuanto pasa por el salto C ya nos mostrará el salto D y el destino con la MTU del C.

MTU_Red_Windows-7-8_11.jpg
Como podéis ver es una herramienta estupenda, aqui os dejo el enlace de descarga: MTUROUTE

Espero que les sea de utilidad!!