Cómo optimizar la velocidad de Internet de Ubuntu con la configuración de MTU

Si bien los textos informáticos difieren en la aplicación del término, Ubuntu utiliza la Unidad de transmisión máxima (MTU) TCP para referirse al tamaño más grande de un paquete TCP que una máquina puede pasar a través de una conexión de red TCP/IP. Si bien calcular este valor es relativamente simple y los valores predeterminados funcionan en la mayoría de las máquinas, es posible optimizar aún más su sistema si los paquetes se fragmentan debido a configuraciones inusuales. El envío de paquetes salientes individuales grandes es más eficiente que el envío de varios paquetes salientes más pequeños.

La forma más fácil de averiguar el valor de MTU correcto para su máquina es abrir una ventana de terminal. Mantenga presionadas las teclas CTRL, ATL y T o quizás comience desde el tablero de Unity. Si está trabajando con Ubuntu Server, utilizará una interfaz CLI de forma predeterminada sin ningún entorno gráfico. Una vez que esté en la terminal, escriba ping -s 1464 -c1 distrowatch.com y espere la salida. Si no recibe nada, entonces su conexión de red no se configuró correctamente. Suponiendo que recibió el resultado adecuado, busque una sección que lea 1464 (1492) bytes de datos, lo que indica que está enviando el paquete con 28 bytes de información de encabezado.

Método 1: Examinar la salida de ping para la fragmentación de paquetes

El comando ping le permitirá saber si el paquete se envió como más de un fragmento con varios datos de encabezado adjuntos. Examine la salida en busca de cualquier línea que advierta sobre algo relacionado con “Frag necesario y conjunto de DF (mtu = 1492)” o cualquier texto similar. Según la versión de ping que se haya incluido con su versión de Ubuntu, la advertencia puede estar redactada de manera diferente. Si este texto no está presente, lo más probable es que ya esté trabajando con alguna medida de MTU que no está enviando paquetes fragmentados en este momento.

Para encontrar la MTU más optimizada para su sistema, querrá ejecutar este comando ping con un tamaño de paquete pequeño y luego, con el tiempo, aumentarlo hasta que comience a fragmentarse, después de lo cual considerará este su punto de corte. Tenga en cuenta que MTU = carga útil + 28, ya que debe haber espacio para los datos del encabezado. Ahora, si puede aumentar el tamaño a algo muy grande sin fragmentos, entonces su interfaz de red podría manejar paquetes masivos sin la necesidad de generar fragmentos. Cuando finalmente vea una advertencia de Frag necesario, esto significa que cualquier paquete enviado con una carga útil del tamaño que ejecutó o superior se enviará como varios paquetes. Suponga que si intenta hacer ping -s 2464 -c1 distrowatch.com sin ninguna advertencia, pero ping -s 2465 -c1 distrowatch.com envía una advertencia, esto significa que 2464+28 es la configuración de MTU más grande que su configuración de TCP/IP puede manejar. antes de enviar múltiples paquetes fragmentados. Puede llevar unos minutos determinar un valor exacto.

Una vez que tenga un valor en mente al ejecutar el comando ping varias veces, deberá ejecutar sudo ifconfig para encontrar una lista de interfaces de red conocidas. Ubuntu y sus derivados analizan la cuenta raíz, pero operamos desde un shell creado por sudo bash para nuestros ejemplos. Se recomienda que preceda cada comando con sudo individualmente.

Tan pronto como sepa cuál es el dispositivo correcto, intente:

sudo ifconfig nombre de interfaz mtu ####

Reemplace interfaceName con el nombre del adaptador de red con el que está trabajando y luego reemplace #### con el tamaño que encontró más 28 para la información del encabezado. Puede ejecutar ifconfig para ver cuál era la MTU predeterminada para su NIC y ejecutarlo varias veces para ver si este comando anterior lo cambia. Algunos adaptadores de interfaz de red simplemente no le permitirán cambiarlo. Si ese es el caso, desafortunadamente, una mayor optimización será infructuosa. Sin embargo, si esto funcionó, entonces puedes hacerlo permanente. intenta correr siconfig | grep MTU para encontrar todos los valores si tiene varios conectores, y luego puede hacer coincidir los valores con los conectores con los que está trabajando.

Método 2: hacer que las optimizaciones de MTU se mantengan

Hasta ahora no ha realizado ningún cambio permanente en su sistema. Si reinicia, eliminará todos los cambios, lo cual es bueno si cometió algún tipo de error y descubre que ya no puede conectarse a Internet. Por otro lado, si ha encontrado un valor exacto para su MTU, deberá editar el documento. Este es probablemente un buen momento para hacer una copia en caso de que algo suceda. Tratar o algo similar para que tengas una copia por si acaso. Si desea editarlo gráficamente, escriba e ingrese su contraseña. Si está usando Kubuntu, Xubuntu o Lubuntu, entonces deberá reemplazar gedit con el editor de texto gráfico que usa su respin de Ubuntu. Xubuntu, por ejemplo, usa mousepad en lugar de gedit. Si está utilizando Ubuntu Server o simplemente prefiere trabajar con la línea de comando, escriba en su lugar asumiendo que no está utilizando un shell raíz.

Independientemente del método que haya utilizado para editarlo, busque el nombre de la interfaz ifconfig escupido antes. Supongamos que estaba mirando el primer conector Wifi en su máquina, que probablemente se llamaría wlan0 o algo similar. En este caso, busque un fragmento de código que comience con iface wlan0 inet static o algo similar. Su millaje puede variar, pero la siguiente línea leerá la dirección seguida de una dirección IP en formato ###.###.#.##. Puede tener un formato diferente si está en una conexión IPv6 nativa. Tendrá una línea de máscara de red y puerta de enlace, seguida de algo que enumera un nombre de host o algo similar. En la parte inferior, tendrá otra línea que dice mtu y un número. Reemplace ese número con el valor optimizado de MTU, guarde el documento y luego salga del editor de texto. Deberá reiniciar el sistema para asegurarse de que funcionó.

Si todo está bien después de varios reinicios, elimine el archivo interfaces.bak en su directorio ~/Documentos. En su lugar, podrías usar sudo m.v. y luego

si algo salió mal en el proceso.

Método 3: Edición de la configuración de la ventana de recepción TCP (RWIN)

Ubuntu se refiere a la mayor cantidad de datos que acepta un host antes de reconocer al remitente como el valor RWIN. Si descarga un archivo de 30 MB, entonces el servidor remoto no le envía inmediatamente un bloque de datos de 30 MB. Su host de Ubuntu envía un número RWIN específico cuando solicita el archivo, y luego el servidor comienza a transmitir datos hasta que alcanza la cantidad de bytes antes de esperar un reconocimiento de que su sistema obtuvo los datos. Una vez que el servidor recibe esto, comienza a enviar bloques adicionales antes de esperar otro reconocimiento.

La latencia es el tiempo que se tarda en transmitir y recibir paquetes desde un servidor remoto. Las tasas de conexión contribuyen a este valor, pero también lo hacen muchos otros retrasos. El comando ping explicará la latencia en términos de números de tiempo de ida y vuelta (RTT). Mire el resultado de nuestro ping anterior de DistroWatch. Encontrará una línea que dice tiempo = 134 ms, que es el tiempo que tardaron los paquetes en ir de ida y vuelta desde nuestra máquina Ubuntu a distrowatch.com y viceversa. Estábamos enviando un paquete de 1492 bytes, por lo que a 134 ms pudimos calcular una fórmula para encontrar la velocidad de transferencia total:

1.492/0,134 segundos = 11.134,328 bytes/segundo, lo que da como resultado aproximadamente 10,88 kilobytes binarios por segundo. Eso es bastante lento en general, por lo que RWIN está en su lugar para evitar que tenga que reconocer cada paquete enviado individualmente.

La configuración de RWIN en Ubuntu está separada de la configuración de MTU. Calcule el producto de retraso de ancho de banda (BDP) para su conexión a Internet con esta fórmula:

(Ancho de banda máximo total que su conexión a Internet debe suministrar en bytes por segundo) (RTT en segundos) = BDP

El tamaño del paquete TCP no influye en RWIN, pero el tamaño del paquete en sí está influenciado por el valor seleccionado en el Método 1. Utilice este comando para encontrar las variables del kernel relacionadas con RWIN:

Tenga en cuenta que hay un espacio después de _mem, pero en ninguna otra parte del texto citado. Obtendrá varios valores de vuelta. Los que se necesitan son net.ipv4.tcp_rmem, net.ipv4.tcp_wmem y net.ipv4.tcp_mem . Los números después de estos valores representan los valores mínimo, predeterminado y máximo para cada uno. Representan el vector de memoria de la ventana de recepción, el vector de envío y el vector de pila TCP. Si está ejecutando Ubuntu Kylin, es posible que tenga una larga lista de otros. Puede ignorar con seguridad cualquiera de estos valores adicionales. Algunos usuarios de Kylin también pueden ver algunos de los valores delineados en otras secuencias de comandos, pero una vez más, simplemente busque estas líneas.

Ubuntu no tiene una variable RWIN, pero net.ipv4.tcp_rmem es close. Estas variables controlan el uso de la memoria y no solo el tamaño de TCP. Incluyen memoria consumida por estructuras de sockets de datos y paquetes cortos en búferes masivos. Si desea optimizar estos valores, envíe los paquetes de tamaño máximo que estableció en el Método 1 a otro servidor remoto. Usemos el valor predeterminado de 1492 bytes nuevamente, restando 28 bytes para la información del encabezado, pero recuerde que puede tener un valor diferente. Utilice el comando ping -s 1464 -c5 distrowatch.com para obtener datos RTT adicionales.

Querrá ejecutar esta prueba más de una vez en diferentes momentos del día y de la noche. Intente hacer ping a otros servidores remotos también para ver cuánto varía el RTT. Dado que tuvimos un promedio de poco más de 130 ms cada vez que lo probamos, podemos usar la fórmula para calcular nuestro BDP. Supongamos que está en una conexión muy genérica de 6 Mbits/segundo. El BDP sería:

(6 000 000 bits/seg)(0,133 s)*(1 byte/8 bits) = 99 750 bytes

Esto significa que el valor predeterminado de net.ipv4.tcp_rmem debe estar alrededor de 100,000. Puede configurarlo aún más alto si teme obtener un RTT tan malo como medio segundo. Todos los valores que se encuentran en net.ipv4.tcp_rmem y net.ipv4.tcp_wmem deben configurarse de manera idéntica, ya que la transmisión y recepción de paquetes se realiza a través de la misma conexión a Internet. Por lo general, querrá establecer net.ipv4.tcp_mem en el mismo valor que usan net.ipv4.tcp_wmem y net.ipv4.tcp_rmem, ya que esta primera variable es el tamaño total de memoria de búfer más grande establecido para transacciones TCP.

Emitir el comando y vea si ambas configuraciones están configuradas en 0 o 1, lo que indica un estado de apagado o encendido.

Establecer net.ipv4.tcp_no_metrics_save en 1 obligará al kernel de Linux a optimizar la ventana de recepción entre los valores net.ipv4.tcp_rmem y net.ipv4.tcp_wmem de forma dinámica. Cuando net.ipv4.tcp_moderate_rcvbuf está habilitado, evita que la congestión influya en la conectividad posterior. Antes de realizar cambios permanentes, realice una verificación de velocidad a través de https://www.speedtest.net o https://www.bing.com/search?q=speed+test para asegurarse de controlar sus medidas.

Cambie temporalmente las variables con sus valores calculados. Asegúrese de reemplazar los números con las sumas calculadas.

sudo sysctl -w net.ipv4.tcp_rmem=”#### ##### ######” net.ipv4.tcp_wmem=”#### ##### ######” red .ipv4.tcp_mem=”#### ##### ######” net.ipv4.tcp_no_metrics_save=1 net.ipv4.tcp_moderate_rcvbuf=1

Vuelva a probar su conexión para ver si la velocidad ha mejorado y, si no, modifique su comando nuevamente y vuelva a ejecutarlo. Recuerda que puedes presionar la tecla arriba en tu terminal para repetir el último comando usado. Una vez que haya encontrado los valores apropiados, abra con el gksu o sudo comando del editor de texto del Método 1, y edite las líneas para que se lean de la siguiente manera, una vez más reemplazando los # con sus valores calculados. Por supuesto, también querrá hacer una copia de seguridad de la archívelo de la misma manera que lo hizo en la primera parte en caso de que cometa un error. Si ha creado uno, también puede restaurarlo de la misma manera.

net.ipv4.tcp_rmem = #### ##### ######

net.ipv4.tcp_wmem = #### ##########

net.ipv4.tcp_mem = #### ##########

net.ipv4.tcp_no_metrics_save=1

net.ipv4.tcp_moderate_rcvbuf=1

Guárdelo una vez que esté seguro de que todo está bien. Ejecute el siguiente comando:

sudo sysctl-p

Esto obligará al kernel de Linux a recargar la configuración en , y si todo salió bien, debería brindarle al menos una conexión de red algo más rápida. Dependiendo de sus valores predeterminados originales, la diferencia podría ser dramática o potencialmente no notarse en absoluto.

Leer siguiente

  • Ubuntu 18.04 LTS Bionic Beaver disponible oficialmente para Ubuntu, Kubuntu,…
  • Cómo acelerar y optimizar Windows para mejorar la experiencia de juego
  • Cómo: crear un USB de arranque de Ubuntu en Mac, Windows o Ubuntu
  • Ubuntu 16.04.5 LTS lanzado inmediatamente después de Ubuntu 18.04 LTS, agrupa todos los…

Related Posts