Icono del sitio Blog personal de Guido Cutipa

Cómo solucionar el bajo rendimiento de red de Ubuntu Server en Proxmox

Amigos en este post veremos como mejorar el rendimiento la conexión de red de una máquina virtual Ubuntu Server 18.04 instalada en Proxmox.

En algunas ocasiones, con algunos modelos de adaptadores de red, es posible que experimentemos un bajo rendimiento de nuestra conexión de red, esto puede ser producido porque el checksum offload del hardware no está deshabilitado.

Este artículo asume que posees los conocimientos mínimos de Linux, sabes cómo usar la terminal, y lo más importante, conoces tu servidor. La configuración es simple y se asume que estás ejecutando la terminal con la cuenta de root, si no es así, deberás adicionar ‘sudo’ a los comandos para obtener los privilegios de root.

¿Que es checksum offload?

El motor de descarga TCP (TOE) es una tecnología utilizada en tarjetas de interfaz de red (NIC) para descargar el procesamiento de toda la pila TCP / IP al controlador de red. Se utiliza principalmente con interfaces de red de alta velocidad, como Gigabit Ethernet y 10 Gigabit Ethernet, donde la sobrecarga de procesamiento de la pila de red se vuelve significativa.

https://en.wikipedia.org/wiki/TCP_offload_engine

Esta función puede hacer que los analizadores de paquetes que no están conscientes o que no estén seguros del uso de la descarga de suma de comprobación informen sumas de verificación no válidas en los paquetes salientes que aún no hayan llegado al adaptador de red. Este problema también puede ocurrir al monitorear paquetes que se transmiten entre máquinas virtuales en el mismo host, donde un controlador de dispositivo virtual puede omitir el cálculo de la suma de control (como una optimización), sabiendo que la suma de control será calculada más tarde por el núcleo del host de VM o su hardware físico.

Para corregirlo ejecute los siguientes pasos:

Requisitos

Tener instalado ethtool y networkd-dispatcher

apt -y install ethtool
apt -y install networkd-dispatcher

Deshabilitar temporalmente Offloading

Para prevenir problemas futuros primero realizaremos un cambio temporal que se eliminará después de reiniciar el servidor, esto nos servirá para comprobar que el cambio mejora el rendimiento de nuestra conexión de red.

Primero obtenemos el nombre de nuestra interfaz de red:

# ifconfig
o
# ip address

Verificaremos la configuración actual:

# ethtool --show-offload  enp18

Ejecutamos el siguiente comando para deshabilitar el checksum offload:

# ethtool -K enp18  tx off  tso off  gso off

Volvemos a comprobar la configuración para verificar que los cambios se hayan realizado:

# ethtool --show-offload  enp18

Deshabilitar permanentemente Offloading

Si todo salió bien y no experimentan problemas al acceder a servidor podemos aplicar estos cambios de forma permanente:

Primero editaremos el siguiente archivo:

# nano /usr/lib/networkd-dispatcher/routable.d/10-disable-offloading

El contenido del archivo será el siguiente:

#!/bin/sh
ethtool --offload enp18    tx off  tso off  gso off   rx off  sg off  lro off    gro  off

Otorgaremos permisos de ejecución al archivo creado anteriormente:

# chmod +x /usr/lib/networkd-dispatcher/routable.d/10-disable-offloading

Finalmente, la próxima vez que se reiniciemos el sistema el offloading estará deshabilitado.

Salir de la versión móvil