Cómo mejorar el rendimiento de la red para máquinas virtuales Hyper-V en Windows Server 2019

Lidiar con transferencias de archivos lentas en entornos virtuales, especialmente con Hyper-V en Windows Server 2019, puede ser muy frustrante. A veces, copiar archivos hacia o desde las máquinas virtuales se ejecuta a un ritmo lento (hasta tres veces más lento de lo esperado) y no se sabe por qué.¿La buena noticia? Hay algunos ajustes y trucos que pueden mejorar considerablemente el rendimiento de la red. Este tipo de problemas no siempre se abordan en la documentación oficial, así que si te has preguntado por qué tu red de máquinas virtuales parece lenta, aquí tienes un resumen basado en soluciones reales que funcionaron en varias configuraciones.

Cómo solucionar los cuellos de botella de la red Hyper-V en Windows Server 2019

Coalescencia de segmentos de recepción (RSC) en Hyper-V vSwitch

En primer lugar, RSC es una función introducida en Windows Server 2019 y versiones posteriores que combina varios segmentos TCP para reducir la sobrecarga de la CPU y mejorar el rendimiento. En ocasiones, RSC puede ser contraproducente, ya que aumenta el retraso en lugar de mejorar, especialmente en ciertas configuraciones de hardware. En algunas configuraciones, deshabilitar RSC puede solucionar el retraso de la red y acelerar el proceso.

Puede comprobar si RSC está activo para sus conmutadores con este comando:

Get-VMSwitch | Select-Object *RSC*

Si observa que RSC está habilitado y la velocidad de red es lenta, conviene desactivarlo. Una forma rápida de comprobar si RSC es el problema es desactivarlo para el tráfico IPv4 en la tarjeta de red correspondiente:

Disable-NetAdapterRsc -Name "Ethernet" -IPv4

Este comando desactiva RSC para el tráfico IPv4 en su NIC llamada «Ethernet» (reemplácela con el nombre de su interfaz).Después, vuelva a intentar copiar archivos o ejecute una prueba de rendimiento con iperf. Si la velocidad aumenta, puede desactivar RSC a nivel de switch para asegurarse de que se mantenga en la conexión de su máquina virtual:

Set-VMSwitch -Name vSwitchName -EnableSoftwareRsc $false

Donde vSwitchName es el nombre de su conmutador virtual. Recuerde que puede activarlo o desactivarlo en cualquier momento sin interrumpir las conexiones actuales, por lo que conviene probarlo varias veces.

Y, si desea deshabilitar RSC globalmente en su host (a veces es necesario si los comandos de cambio no son suficientes), ejecute esto en PowerShell:

netsh int tcp set global rsc=disabled

Es un poco raro que simplemente accionar estos interruptores ayude, pero en algunas máquinas es exactamente lo que recetó el médico.

Comprueba el modo VMQ (cola de máquinas virtuales)

Otro problema común es VMQ, una función de descarga de hardware diseñada para mejorar el rendimiento de la red al enviar paquetes directamente a las máquinas virtuales. Sin embargo, si su hardware no es compatible con VMQ correctamente o simplemente está mal configurado, podría causar pérdida de paquetes o retrasos, especialmente en tarjetas de red Gigabit Broadcom más antiguas.

Puede consultar el estado de compatibilidad de VMQ con PowerShell:

Get-NetAdapterVmq

Si ve que VMQ está habilitado, pero sospecha que está causando problemas, deshabilitarlo puede ser útil. A continuación, le indicamos cómo desactivar VMQ para una NIC específica:

Set-NetAdapterVmq -Name "NICName" -Enabled $False

Reemplace NICName con el nombre real de su interfaz. Tras la deshabilitación, se suele recomendar un reinicio rápido del host para solucionar cualquier problema persistente. Además, asegúrese de que sus políticas de QoS no limiten el ancho de banda, ya que esto también puede agravar la ralentización.

Ajuste fino de la configuración de la pila TCP

Otra cosa que puede marcar la diferencia es ajustar los parámetros TCP de Windows, especialmente porque Windows Server 2019 utiliza de forma predeterminada el algoritmo de congestión TCP CUBIC, que está diseñado para redes de alta velocidad pero puede no ser óptimo en algunas configuraciones virtuales.

Primero, guarde su configuración TCP actual para poder revertirla si es necesario:

Get-NetTCPSetting -SettingName Datacenter, DatacenterCustom, InternetCustom, Internet | Export-Csv c:\backup\ws2019_network_stack_settings_nettcp_backup.csv

A continuación, ajuste el control de congestión de TCP y desactive funciones innecesarias como RSS y RSC que pueden interferir con el rendimiento de la máquina virtual:

netsh int tcp show global netsh int tcp set global RSS=Disabled netsh int tcp set global RSC=Disabled

Además, desactive la descarga de envío grande (LSO) en sus NIC:

Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Large Send Offload Version 2 (IPv4)" -DisplayValue "Disabled" -NoRestart Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Large Send Offload Version 2 (IPv6)" -DisplayValue "Disabled" -NoRestart Restart-NetAdapter

Además, desactive la «Coalescencia de Segmentos de Recepción» en las propiedades avanzadas de la NIC (si prefiere ajustes de la GUI).Esto suele ser útil en escenarios de baja latencia o de máquinas virtuales donde el rendimiento es crucial.

Resumen

  • Consulte el estado de RSC conGet-VMSwitch | Select-Object *RSC*
  • Deshabilite RSC para IPv4/IPv6 si es necesario, mediante comandos PowerShell o netsh
  • Revise y deshabilite VMQ si está causando problemas a través de Get-NetAdapterVmqySet-NetAdapterVmq
  • Ajuste la configuración de la pila TCP para deshabilitar RSC, RSS y ajustar el control de congestión
  • Reiniciar los adaptadores de red después de los cambios para aplicar la nueva configuración

Resumen

En resumen, ajustar estas configuraciones de red ha ayudado a muchos usuarios a optimizar la velocidad de sus máquinas virtuales en Windows Server 2019. No siempre es intuitivo por qué, pero experimentar con la desactivación de funciones como RSC y VMQ suele producir mejoras notables. Solo tenga cuidado: a veces estos cambios pueden causar inconsistencias, así que mantenga copias de seguridad de su configuración y realice pruebas después de cada ajuste. Esperemos que esto solucione al menos un problema.¡Crucemos los dedos para que esto ayude!