Cambiar la MTU de la conexión WiFi en Windows 7

Con la última renovación de equipos (concretamente, el portátil) he notado un pequeño problema en el acceso a la red usando WiFi: tras un intervalo de tiempo aleatorio, el sistema deja de poder acceder a la red aunque la conexión parece correcta. Apagando/deshabilitando la WiFi del equipo y forzando la reconexión (variante de la solución informática por excelencia, apagar y encender), todo funciona correctamente hasta que, pasado otro intervalo de tiempo aleatorio, se vuelven a repetir los síntomas.

Tras investigar un poco el problema, he descubierto que mi enrutador parece saturarse con el envío de paquetes que realiza el nuevo portátil. Tras un poco más de investigación, el círculo se estrecha apuntando directamente a la archiconocida MTU… que casi seguro nunca has oído nombrar.

MTU, pilas de protocolos y muchas siglas

MTU, acrónimo de Unidad Máxima de Transferencia (Maximum Transfer Unit, en inglés), es uno de los parámetros de configuración de la pila de protocolos de red.

El diseño original de las redes de computadoras utiliza un sistema de capas o niveles para permitir su funcionamiento sobre cualquier tecnología presente o futura. Con este diseño cada nivel encapsula los datos del nivel previo añadiendo una cabecera y, en algún caso, cola con los datos necesarios para realizar su misión (direcciones para calcular rutas, orden y cantidad de datos para asegurar la conexión, CRC para verificar errores…) y únicamente debe conocer y tratar los datos que incluye en dicha cabecera: el resto de las capas se encargarán de las suyas. Este esquema permite cambiar uno de los niveles por otro (por ejemplo, de TCP por UDP) e incluso traducir entre niveles equivalentes (Ethernet por WiFi o fibra) sin afectar al resto.

Conexión pila protocolos

Ejemplo de comunicación usando la pila de protocolos. Cada nivel únicamente habla con su equivalente. (Imagen: Wikipedia)

Gracias a este sistema, se puede analizar cada capa de forma individual. Una trama contiene los datos del nivel superior (Payload), que usualmente ya contiene cabeceras de otros niveles, junto con la cabecera con los datos del nivel actual. Ese paquete completo (datos y cabecera) serán los datos para el nivel inferior y así sucesivamente hasta llegar al punto más bajo de la pila: el nivel de acceso a la red física. Y aquí la cosa se complica.

Trama nivel 2

Ejemplo de paquete de un nivel 2 genérico (imagen: CapaOcho)

Al llegar a la capa más baja entran en juego nuevos factores: intensidad de señal, tiempos de propagación… física pura. Estos factores introducen una serie de límites para asegurar la calidad, fiabilidad, velocidad de transmisión, latencia máxima o para asegurar que un algoritmo de detección de colisiones en el medio funciona. Uno de esos límites es la cantidad de información que puede transmitirse consecutivamente de forma fiable, es decir, el tamaño máximo del paquete (considerando los datos y todas las cabeceras de cada uno de los niveles) que puede enviarse por el medio y ese tamaño máximo es la MTU. Aunque se podría decir que cada nivel podría tener su propia MTU, únicamente se considera la MTU del nivel IP, encargado de enviar datagramas (paquetes o tramas) entre dos equipos.

Por ejemplo, en el caso de una red Ethernet, el tamaño máximo (MTU) es de 1500 bytes. Si es necesario mandar más información se enviarán dos datagramas o paquetes: se fragmentará la información. Esta división se realiza de forma automática en el nivel IP permitiendo el envío de información a través de cualquier red de forma transparente aunque pagando el precio de un menor rendimiento: es menos costoso mandar un paquete grande que varios pequeños.

Internet es un conjunto de redes: ¿cómo afecta la MTU?

La situación se complica cuando los datos deben atravesar varias redes diferentes, cada una con una posible MTU. El proceso de fragmentación se realizará, según las necesidades, en cada uno de los componentes intermedios que comuniquen dos o más redes con el consiguiente coste (almacenamiento temporal, proceso…) además de incrementar la probabilidad de que algún fragmento no llegue al destino. Lo ideal es que el emisor cree directamente paquetes del tamaño justo para atravesar todas las redes implicadas sin necesidad de fragmentar en ningún punto intermedio: la MTU mínima de toda la ruta afectada.

Para determinar ese tamaño máximo de MTU es posible mandar un paquete marcado como “no fragmentable” (se activa enviando un bit en la cabecera del protocolo IP). Si alguna red involucrada no soporta dicho tamaño, el entrutador que lo detecte responderá con un paquete especial ICMP indicando que se debe fragmentar permitiendo al origen adaptar el tamaño de MTU. Tras unas primeras transmisiones de “prueba” se puede enviar información sin pagar el coste de fragmentaciones intermedias.

Pero la evolución de los tiempos ha hecho este sistema inviable: para evitar ataques DoS es muy común deshabilitar el protocolo ICMP imposibilitando el descubrimiento del tamaño de MTU. Esto obliga a que cada elemento fragmente los mensajes para adaptarlos según necesidades incrementando el tiempo de proceso en cada salto.

Solución al problema de la MTU WiFi en Windows 7

Antes de solucionar un problema es necesario conocer el origen. Y en este caso el problema es la MTU que utiliza Windows 7 en la red WiFi: 1500 bytes. Este es el valor de una red Ethernet, la más común en Internet, pero la especificación de WiFi indica que la MTU debería ser 1492 bytes. Esa pequeña diferencia hace que sea necesario fragmentar cada paquete (de tamaño máximo) en dos: uno de algo menos 1492 bytes (hay que incluir la cabecera IP) y otro de algo más de 8 bytes, con lo que para una transmisión de 15 KB se necesita mandar 21 paquetes en lugar de los 11 paquetes si la MTU fuera correcta: ¡un 90% más! y las cosas empeoran según se incremente el tamaño. La carga que recibe el enrutador (paquetes) es prácticamente el doble por lo que las latencias se incrementan y llega a producirse la saturación.

La solución es tan sencilla como bajar la MTU que utiliza Windows 7 al tamaño estándar que necesita la red WiFi. Para ello es necesario abrir una consola en modo administrador (sí, esa cosa negra en la que se escriben órdenes también existe en Windows y es muy útil en algunos casos): buscar la aplicación cmd, abrir el menú contextual y seleccionar “ejecutar como administrador”.

En la consola, se debe teclear:

netsh interface ipv4 show subinterfaces

Se obtendrá una lista de las interfaces de red disponibles en el equipo. Entre ellas debe aparecer la conexión WiFi con una MTU de 1500. Para corregirla y ponerla del tamaño adecuado basta ejecutar:

netsh interface ipv4 set subinterface "Wireless Network Connection" mtu = 1492 store = persistent

El nombre de la red (entre comillas) debe coincidir exactamente con el que se obtuvo en el primer listado. El valor de la MTU es el adecuado para una red WiFi, aunque puede ser necesario bajarlo más en algún caso (equipos más viejos).

Volviendo a ejecutar la primera línea se puede verificar si el cambio se ha realizado.

Conclusiones

En algunas ocasiones surgen problemas escondidos en la profundidad de los sistemas informáticos de difícil diagnóstico.

En este caso un pequeño error en un parámetro de configuración (MTU del protocolo IP) ocasiona el bloqueo de la conexión WiFi. Con este pequeño cambio todo funcionará correctamente sin que se note ninguna pérdida de rendimiento e, incluso, con cierta mejora.

Referencias:

9 comments

  1. hola amigo · abril 6, 2011

    que tal amigo espero me puedas ayudar , mi problema es con la wi-fi al iniciar el s.o. aunk este en on la antena tengo que apagarla y prenderla para que encienda , esto empezo a raiz de que meti un live de linux en el cual hay unos comandos para encender y apagar la antena el problema es que ya instale nuevamente el sistema operativo w7 y aun asi me da ese problema, agradeceria me pudieran ayudar gracias es en una hp dv 2000

  2. Claudio J. B. · julio 15, 2011

    Estimado Oscar, la verda solo me queda felicitarte, nunca vi al alguien explicar el MTU tan claro y didáctico. Genio!!!.
    Saludos.

  3. Migue Vi · noviembre 15, 2011

    Nunca habia leido a alguien en esmerarse tanto con un post de este tipo, en serio muy bien explicado y casi desinstalo Win7 por este detalle de la conexion wifi, en serio que genio!! por el momento todo va de maravilla esperemos a ver como sigue pero por lo que llevo aqui va bien hehe gracias y espero que mas gente haga post y ayude asi como hiciste con este. Saludos.

  4. ANG · enero 14, 2012

    jajajaja que buena explicacion en general, me gusta como vas enseñando redes (Y)

  5. gabriel · febrero 17, 2012

    Estimado Oscar, gracias por tan buena informacion y tan bien explicada, pude solucionar un problema que tenia en una red, en la cual no se podia acceder a las paginas web https , de conexion segura, por medio de un servidor proxy squid transparente, ahora si se puede acceder a todas las paginas https , solo cambiar el MTU a 1492 en el equipo que se conecta, soluciona el problema, pero se vuelve tedioso configurar si se conectan muchos equipos al servidor, no se si existe una solucion para tal caso.
    muchas gracias por la informacion !!.

  6. Janif · abril 7, 2012

    yo tengo un problema quiero acelerar mi conexion wifi y necesito configurar los parametros de valores que datan desde 128 a….o de cero a….. por ejemplo coalesce buffer nose que valor bufer optimiza mi red wifi ,gracias.

  7. fede · mayo 19, 2012

    Excelente descripción muchas gracias por tu aporte. Una consulta..en el lugar donde estamos laborando esta restringido el acceso a internet por lo que configuramos un tunel para la salida a internet; mediante el wifi accedemos al servidor donde se encuentra el tunel y sin problema tenemos salida. Configure mi lap para que sea un hotspot( la conexión del tunel la comparto al virtual wifi miniport) y pueda conectar mi cel. a internet; el caso es que aveces se conecta el celular sin ningún problema y tiene salida a internet y la mayoría de las veces tiene “conexión limitada”… que podría checar para identificar por que obtiene el cel. “conexión limitada “?

  8. minipiper · septiembre 19, 2012

    muchas gracias, excelente descripcion muy entendible, lo ùnico que cuando el windows es en español se debe escribir
    netsh interface ipv4 set subinterface “Conexión de red inalámbrica” mtu = 1492 store = persistent
    ese serìa mi aporte. ya que me rompió las pelotas un rato😉
    saludos!

  9. @dr_jaymz · junio 2, 2013

    Excelente explicación pero hice todo al pie de la letra y mi pc sigue igual… cabe destacar q uso windows 7 y una conexión wi-fi, antes cuando tenia windows xp no tenia ningún problema de conexión, el driver d la tarj captadora de wifi sta actualizado, y m acabo de dar cuenta q cuando el equipo esta n modo a prueba de fallos con y red no m falla l internet😦

Los comentarios están cerrados.