Desempenho do gateway de SDN

Aplica-se a: Windows Server 2022, Windows Server 2019, Azure Stack HCI, versões 22H2 e 21H2

No Windows Server 2016, uma das preocupações do cliente era a incapacidade do gateway SDN de atender aos requisitos de taxa de transferência de redes modernas. A taxa de transferência de rede dos túneis IPsec e GRE tinha limitações, a taxa de transferência de conexão única para conectividade IPsec era de cerca de 300 Mbps e para conectividade GRE cerca de 2,5 Gbps.

A partir do Windows Server 2019, melhoramos significativamente o desempenho do gateway de SDN, com os números subindo para 1,8 Gbps e 15 Gbps para conexões IPsec e GRE, respectivamente. Tudo isso, com reduções significativas nos ciclos de CPU/por byte, fornecendo assim uma taxa de transferência de alto desempenho ultra-alta com muito menos utilização da CPU.

Habilitar alto desempenho com gateways

Para conexões GRE, depois de implantar/atualizar para os builds do Windows Server 2019 nas VMs de gateway, você deverá ver o desempenho aprimorado automaticamente. Não há etapa manual envolvida.

Para conexões IPsec, por padrão, quando você cria a conexão para suas redes virtuais, obtém o caminho de dados e os números de desempenho do Windows Server 2016. Para habilitar o caminho de dados do Windows Server 2019, faça o seguinte:

  1. Em uma VM de gateway SDN, acesse Console de serviços (services.msc).
  2. Localize o serviço chamado de Serviço de Gateway do Azure e defina o tipo de inicialização como Automático.
  3. Reinicie a VM de gateway. As conexões ativas neste gateway fazem failover para uma VM de gateway redundante.
  4. Repita as etapas anteriores para o restante das VMs de gateway.

Os seguintes requisitos devem ser atendidos para que as conexões IPsec de alto desempenho funcionem:

  • O NAT-T (conversão de endereços de rede traversal) deve ser habilitado no gateway local. Ao habilitar conexões IPsec de alto desempenho, o gateway de SDN configura uma regra NAT, portanto, você também precisa habilitar o NAT-T no gateway local.
  • O gateway local deve permitir pacotes de protocolo UDP nas portas 500 e 4500 e nos protocolos 50 e 51.

Dica

Para obter os melhores resultados de desempenho, verifique se cipherTransformationConstant e authenticationTransformConstant nas configurações quickMode da conexão IPsec usam o conjunto de criptografias GCMAES256.

Para obter o desempenho máximo, o hardware de host do gateway deve ser compatível com os conjuntos de instruções da CPU AES-NI e PCLMULQDQ. Eles estão disponíveis em qualquer CPU Intel Westmere (32nm) e posterior, exceto nos modelos em que o AES-NI foi desabilitado. Você pode examinar a documentação do fornecedor de hardware para ver se a CPU é compatível com os conjuntos de instruções da CPU AES-NI e PCLMULQDQ.

Veja abaixo um exemplo de REST da conexão IPsec com os algoritmos de segurança ideais:

# 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 Teste

Fizemos extensivos testes de desempenho para os gateways SDN em nossos laboratórios de teste. Nos testes, comparamos o desempenho da rede de gateway com o Windows Server 2019 em cenários SDN e cenários não SDN. Você pode encontrar os resultados e os detalhes da configuração de teste capturados no artigo do blog aqui.