Rendimiento de puerta de enlace de SDN

Se aplica a: Windows Server 2022, Windows Server 2019, Azure Stack HCI, versiones 22H2 y 21H2

Uno de los problemas de los clientes con Windows Server 2016 era la incapacidad de la puerta de enlace de SDN para satisfacer los requisitos de rendimiento de las redes modernas. El rendimiento de red de los túneles IPsec y GRE tenía limitaciones con el rendimiento de conexión única para la conectividad IPsec, que es de aproximadamente 300 Mbps y para la conectividad GRE es de aproximadamente 2,5 Gbps.

A partir de Windows Server 2019, hemos mejorado significativamente el rendimiento de la puerta de enlace de SDN, con cifras que se disparan a 1,8 Gbps y 15 Gbps para conexiones IPsec y GRE, respectivamente. Todo esto, con reducciones significativas en los ciclos de CPU/por byte, lo que proporciona un rendimiento ultraalto con un uso mucho menor de la CPU.

Habilitar el alto rendimiento con puertas de enlace

En el caso de las conexiones GRE, una vez que se implementa o se actualiza a Windows Server 2019 compila en las máquinas virtuales de puerta de enlace, debería ver automáticamente el rendimiento mejorado. No implica pasos manuales.

En el caso de las conexiones IPsec, de forma predeterminada, al crear la conexión para las redes virtuales, obtendrá la ruta de acceso de datos y los números de rendimiento de Windows Server 2016. Para habilitar la ruta de acceso de datos de Windows Server 2019, haga lo siguiente:

  1. En una máquina virtual de puerta de enlace de SDN, vaya a Consola de servicios (services.msc).
  2. Busque el servicio denominado Servicio de puerta de enlace de Azure y establezca Automático como tipo de inicio.
  3. Reinicie la VM de la puerta de enlace. Las conexiones activas de esta puerta de enlace conmutan por error a una máquina virtual de puerta de enlace redundante.
  4. Repita los pasos anteriores para el resto de máquinas virtuales de la puerta de enlace.

Se deben cumplir los siguientes requisitos para que las conexiones IPsec de alto rendimiento funcionen:

  • La traducción de direcciones de red (NAT-T) transversal debe estar activada en la puerta de enlace local. Al habilitar conexiones IPsec de alto rendimiento, la puerta de enlace de SDN configura una regla NAT, por lo que también debe habilitar NAT-T en la puerta de enlace local.
  • La puerta de enlace local debe permitir paquetes del Protocolo de datagramas de usuario (UDP) en los puertos 500 y 4500 y en los protocolos 50 y 51.

Sugerencia

Para obtener los mejores resultados de rendimiento, es necesario asegurarse de que cipherTransformationConstant y authenticationTransformConstant en la configuración quickMode de la conexión IPsec usa el conjunto de cifrado GCMAES256.

Para obtener el máximo rendimiento, el hardware del host de puerta de enlace debe admitir conjuntos de instrucciones de CPU AES-NI y PCLMULQDQ. Están disponibles en cualquier Westmere (32nm) y CPU de Intel posterior, excepto en los modelos con las AES-NI deshabilitadas. Se puede consultar la documentación del proveedor de hardware para ver si la CPU admite conjuntos de instrucciones de CPU AES-NI y PCLMULQDQ.

A continuación se muestra un ejemplo REST de conexión IPsec con algoritmos de seguridad óptimos:

# NOTE: The virtual gateway must be created before creating the IPsec connection. More details here.
# Create a new object for Tenant Network IPsec Connection
$nwConnectionProperties = New-Object Microsoft.Windows.NetworkController.NetworkConnectionProperties

# Update the common object properties
$nwConnectionProperties.ConnectionType = "IPSec"
$nwConnectionProperties.OutboundKiloBitsPerSecond = 2000000
$nwConnectionProperties.InboundKiloBitsPerSecond = 2000000

# Update specific properties depending on the Connection Type
$nwConnectionProperties.IpSecConfiguration = New-Object Microsoft.Windows.NetworkController.IpSecConfiguration
$nwConnectionProperties.IpSecConfiguration.AuthenticationMethod = "PSK"
$nwConnectionProperties.IpSecConfiguration.SharedSecret = "111_aaa"

$nwConnectionProperties.IpSecConfiguration.QuickMode = New-Object Microsoft.Windows.NetworkController.QuickMode
$nwConnectionProperties.IpSecConfiguration.QuickMode.PerfectForwardSecrecy = "PFS2048"
$nwConnectionProperties.IpSecConfiguration.QuickMode.AuthenticationTransformationConstant = "GCMAES256"
$nwConnectionProperties.IpSecConfiguration.QuickMode.CipherTransformationConstant = "GCMAES256"
$nwConnectionProperties.IpSecConfiguration.QuickMode.SALifeTimeSeconds = 3600
$nwConnectionProperties.IpSecConfiguration.QuickMode.IdleDisconnectSeconds = 500
$nwConnectionProperties.IpSecConfiguration.QuickMode.SALifeTimeKiloBytes = 2000

$nwConnectionProperties.IpSecConfiguration.MainMode = New-Object Microsoft.Windows.NetworkController.MainMode
$nwConnectionProperties.IpSecConfiguration.MainMode.DiffieHellmanGroup = "Group2"
$nwConnectionProperties.IpSecConfiguration.MainMode.IntegrityAlgorithm = "SHA256"
$nwConnectionProperties.IpSecConfiguration.MainMode.EncryptionAlgorithm = "AES256"
$nwConnectionProperties.IpSecConfiguration.MainMode.SALifeTimeSeconds = 28800
$nwConnectionProperties.IpSecConfiguration.MainMode.SALifeTimeKiloBytes = 2000

# L3 specific configuration (leave blank for IPSec)
$nwConnectionProperties.IPAddresses = @()
$nwConnectionProperties.PeerIPAddresses = @()

# Update the IPv4 Routes that are reachable over the site-to-site VPN Tunnel
$nwConnectionProperties.Routes = @()
$ipv4Route = New-Object Microsoft.Windows.NetworkController.RouteInfo
$ipv4Route.DestinationPrefix = "<<On premise subnet that must be reachable over the VPN tunnel. Ex: 10.0.0.0/24>>"
$ipv4Route.metric = 10
$nwConnectionProperties.Routes += $ipv4Route

# Tunnel Destination (Remote Endpoint) Address
$nwConnectionProperties.DestinationIPAddress = "<<Public IP address of the On-Premise VPN gateway. Ex: 192.168.3.4>>"

# Add the new Network Connection for the tenant. Note that the virtual gateway must be created before creating the IPsec connection. $uri is the REST URI of your deployment and must be in the form of “https://<REST URI>”
New-NetworkControllerVirtualGatewayNetworkConnection -ConnectionUri $uri -VirtualGatewayId $virtualGW.ResourceId -ResourceId "Contoso_IPSecGW" -Properties $nwConnectionProperties -Force

Resultados de las pruebas

Se han hecho pruebas extensas de rendimiento para las puertas de enlace de SDN en nuestros laboratorios de prueba. En las pruebas, se ha comparado el rendimiento de red de la puerta de enlace con Windows Server 2019 en escenarios de SDN y escenarios que no son de SDN. Los resultados y los detalles de configuración de pruebas capturados se pueden consultar en esta entrada de blog.