Desconexión Wi-Fi

Es algo recurrente: estás trabajando tranquilamente en casa y de pronto se desconecta el equipo de la red. Apagando o desactivando la Wi-Fi y forzando la reconexión (variante de la solución informática por excelencia, apagar y encender) todo vuelve a funcionar hasta que, pasado un tiempo aleatorio, se repiten los síntomas.
Tras investigar un poco el problema, parece que el router se saturara con el envío de paquetes. 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, sufijo 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…). Cada nivel ú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 equivalente (por ejemplo, de TCP por UDP) e incluso traducir entre niveles equivalentes (Ethernet por Wi-Fi o fibra) sin afectar al resto.
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.
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, de las más utilizadas, el tamaño máximo (MTU) es de 1500 bytes (Ethernet II frame format). 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.
Si Internet es un conjunto de redes ¿Qué MTU se utiliza?
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 un bit en la cabecera del protocolo IP). Si alguna red involucrada no soporta dicho tamaño, el enrutador que lo detecte responderá con un paquete especial ICPM (Internet Control Message Protocol) 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.
Solucionando el problema de la desconexión en redes Wi-Fi
Antes de solucionar un problema es necesario conocer el origen. Y en este caso el problema es que la MTU que utilizan los sistemas operativos es de 1500 el de una red Ethernet, la más común en Internet.
Sin embargo, la mayoría de los ISP suelen utilizar PPoE (Point-to-Point Protocol over Ethernet) para dar servicio en conexiones domésticas. Este protocolo añade una cabecera extra de 8 bytes lo que reduce la MTU a 1492. 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. 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! Las cosas empeoran según se incrementa 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.
Curiosamente este problema no está relacionado con la Wi-Fi y puede suceder también en el cable, aunque por su funcionamiento, es menos probable que se detecten los efectos.
La solución es tan sencilla como ajustar la MTU al tamaño adecuado… y esto depende del sistema operativo.
Conclusiones
En algunas ocasiones surgen problemas cuyas raíces se esconden en protocolos dificultando su diagnóstico.
En este caso un pequeño error en un parámetro de configuración (MTU) ocasiona el bloqueo de la conexión. Con este pequeño cambio todo funcionará correctamente sin que se note ninguna pérdida de rendimiento e, incluso, con cierta mejora.