Razones y soluciones para la red lenta de máquinas virtuales Hyper-V

Rendimiento deficiente de la red en la máquina virtual Hyper-V

Algunas veces me he encontrado con una situación en la que copiar archivos desde una máquina virtual en un host Hyper-V que ejecuta Windows Server era mucho más lento. En este artículo, intento describir algunas formas diferentes de mejorar el rendimiento de la red de las máquinas virtuales Hyper-V que se ejecutan en Windows Server (y las últimas versiones de Windows 10 y 11).

Recibir combinación de segmentos (RSC) en Hyper-V vSwitch

 Primero, debe prestar atención a la función de consolidación de segmentos de recepción (RSC) que llegará a Hyper-V en Windows Server 2019/2022 (y Windows 10 1809+) . La coalescencia del segmento de recepción se utiliza en el nivel del conmutador virtual (vSwitch).

RSC permite reducir la carga de la CPU y aumentar el rendimiento de la red combinando múltiples segmentos TCP en segmentos más grandes El rendimiento de la red mejora porque los segmentos grandes se procesan más rápido que muchos segmentos más pequeños.

En versiones anteriores de Hyper-V (Windows Server 2016/2012R2), solo se admitía el modo de fusión de segmentos de recepción de hardware a nivel de NIC.

Si la compatibilidad con RSC está habilitada, puede causar latencia de red adicional en algunas configuraciones de hardware.

De forma predeterminada, RSC está habilitado en todos los conmutadores externos en Windows Server 2019.

Puede verificar si RSC está habilitado para el conmutador virtual usando el siguiente comando:

Get-VMSwitch | Select-Object *RSC*

Puede deshabilitar el uso de RSC para el tráfico IPv4 en el adaptador de red del cliente usando el siguiente comando:

Disable-NetAdapterRsc -Name "Ethernet" -IPv4

Compruebe si deshabilitar RSC mejora la velocidad de replicación en Hyper-V VM. Si las velocidades de la red mejoran, RSC se puede desactivar en el conmutador virtual al que está conectada la VM.

Puede utilizar  la herramienta iperf  para comprobar el rendimiento de la red.

Para deshabilitar el software RSC para un conmutador virtual específico, ejecute el siguiente comando:

Set-VMSwitch -Name vSwitchName -EnableSoftwareRsc $false

compruebe si RSC está habilitado en el conmutador Hyper-V

Puede habilitar/deshabilitar RSC sobre la marcha y no afectará ninguna conexión activa.

Alternativamente, puede desactivar RSC por completo en hosts de Windows:

netsh int tcp set global rsc=disabled

Modo de cola de máquina virtual (VMQ) en el controlador del adaptador de red

En algunos casos, puede producirse un rendimiento deficiente de la red en las máquinas virtuales Hyper-V si VMQ (Cola de máquinas virtuales) está habilitado en el controlador del adaptador de red del host físico  Hyper-V.

VMQ es una función de hardware y, si su hardware no la admite, habilitarla en el controlador puede provocar la pérdida de paquetes y una mayor latencia de la red.

Este problema es típico de los adaptadores de red Broadcom Gigabit y ocurre en todas las versiones de Hyper-V (Windows Server 2012 R2/2016/2019).

VMQ está diseñado para mejorar el rendimiento de la red reenviando paquetes directamente desde adaptadores de red físicos a máquinas virtuales.

VMQ se puede desactivar en las propiedades del controlador del adaptador de red.

deshabilite VMQ (Cola de máquinas virtuales) en la configuración del controlador NIC

Alternativamente, puede usar PowerShell para mostrar una lista de adaptadores de red compatibles con VMQ y su estado:

Get-NetAdapterVmq

Para deshabilitar VMQ para una tarjeta de red específica, ejecute el siguiente comando (el adaptador de red no estará disponible durante unos segundos):

Set-NetAdapterVmq -Name “NICName” -Enabled $False

compruebe si vmq está habilitado en NIC - powershell

Después de deshabilitar VMQ, es una buena idea reiniciar el host y verificar el rendimiento de la red.


Asegúrese de que la política de limitación de ancho de banda QoS esté deshabilitada en Windows  .

Optimización de la configuración de TCP para Hyper-V en Windows Server 2019

Guarde la configuración TCP actual en el host Hyper-V y aplique la nueva configuración que hará que la configuración TCP en Windows Server 2019 sea casi similar a la de Windows Server 2016.

Guardar la configuración actual:

​
Get-NetTCPSetting -SettingName Datacenter,DatacenterCustom,InternetCustom,Internet|select SettingName,CongestionProvider,CwndRestart,ForceWS|Export-csv c:\backup\ws2019_network_stack_settings_nettcp_backup.csv

​
De forma predeterminada, en Windows Server 2019 y Windows 10 1709+, se utiliza la implementación CUTRIC de TCP. Este algoritmo está optimizado para redes de alta velocidad con alta latencia (también se usa de forma predeterminada en el kernel de Linux 2.6.19 y posteriores).

Pila TCP de Windows en Windows Server 2019 basada en CUBIC

Las siguientes configuraciones se aplican solo en Windows Server 2019 o Hyper-V 2019.

Aplique nuevas configuraciones de NetTCP a la LAN:

Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CongestionProvider DCTCP
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -CwndRestart True
Set-NetTCPSetting -SettingName DatacenterCustom,Datacenter -ForceWS Disabled

Para WAN:

Set-NetTCPSetting -SettingName InternetCustom,Internet -CongestionProvider CTCP
Set-NetTCPSetting -SettingName InternetCustom,Internet -DelayedAckTimeoutMs 50
Set-NetTCPSetting -SettingName InternetCustom,Internet -ForceWS Disabled

Deshabilite los métodos de optimización de red RSS y RSC en el nivel de pila TCP:

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

O a nivel de tarjeta de red:

Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Recv Segment Coalescing (IPv4)" -DisplayValue "Disabled" -NoRestart
Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Recv Segment Coalescing (IPv6)" -DisplayValue "Disabled" -NoRestart
Get-NetAdapter | Set-NetAdapterAdvancedProperty -DisplayName "Receive Side Scaling" -DisplayValue "Disabled" –NoRestart

Deshabilite vRSS para todas las máquinas virtuales:

Get-VM | Set-VMNetworkAdapter -VrssEnabled $FALSE

Deshabilite la descarga de envío grande (LSO) en la tarjeta de red:
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
Get-NetAdapter | Restart-NetAdapter

También puede desactivar estas opciones en la pestaña Avanzado de las propiedades del adaptador de red:

  • Recibir fusión de segmentos (IPv4/IPv6) = Deshabilitado
  • Descarga de envío grande v2 (IPv4/IPv6) = Deshabilitado

deshabilitar la fusión del segmento recv en Hyper-V

Esta configuración de la pila TCP hará que la configuración del protocolo de red de Windows Server 2019 sea similar a las versiones anteriores de Windows Server.

Supongo que te gusta

Origin blog.csdn.net/webmote/article/details/132273022
Recomendado
Clasificación