SDN 게이트웨이 성능
적용 대상: Windows Server 2022, Windows Server 2019, Azure Stack HCI, 버전 22H2 및 21H2
Windows Server 2016에서 고객의 관심사 중 하나는 SDN 게이트웨이가 최신 네트워크의 처리량 요구 사항을 충족하지 못하는 것이었습니다. IPsec 및 GRE 터널의 네트워크 처리량에는 IPsec 연결에 대한 단일 연결 처리량이 약 300Mbps이고 GRE 연결의 경우 약 2.5Gbps로 제한되었습니다.
Windows Server 2019부터는 각각 1.8Gbps, IPsec 및 GRE 연결의 경우 15Gbps로 급증하면서 SDN 게이트웨이 성능이 크게 향상되었습니다. 이 모든 것이 CPU 주기/바이트당 크게 감소하여 CPU 사용률이 훨씬 적은 초고성능 처리량을 제공합니다.
게이트웨이를 사용하여 고성능 사용
GRE 연결의 경우 게이트웨이 VM에서 Windows Server 2019 빌드를 배포/업그레이드하면 향상된 성능이 자동으로 표시됩니다. 수동 단계는 관련되지 않습니다.
IPsec 연결의 경우 기본적으로 가상 네트워크에 대한 연결을 만들 때 Windows Server 2016 데이터 경로 및 성능 번호를 가져옵니다. Windows Server 2019 데이터 경로를 사용하도록 설정하려면 다음을 수행합니다.
- SDN 게이트웨이 VM에서 Services 콘솔(services.msc)로 이동합니다.
- Azure Gateway Service라는 서비스를 찾고 시작 유형을 Automatic으로 설정합니다.
- 게이트웨이 VM을 다시 시작합니다. 이 게이트웨이의 활성 연결은 중복 게이트웨이 VM으로 장애 조치(failover)됩니다.
- 게이트웨이 VM의 나머지 부분에 대해 이전 단계를 반복합니다.
고성능 IPsec 연결이 작동하려면 다음 요구 사항을 충족해야 합니다.
- 온-프레미스 게이트웨이에서 NAT-T(Network Address Translation-Traversal)를 사용하도록 설정해야 합니다. 고성능 IPsec 연결을 사용하도록 설정하는 경우 SDN 게이트웨이는 NAT 규칙을 구성하므로 온-프레미스 게이트웨이에서도 NAT-T를 사용하도록 설정해야 합니다.
- 온-프레미스 게이트웨이는 포트 500 및 4500 및 프로토콜 50 및 51에서 UDP(사용자 데이터그램 프로토콜) 패킷을 허용해야 합니다.
팁
최상의 성능 결과를 위해 IPsec 연결의 quickMode 설정에서 cipherTransformationConstant 및 authenticationTransformConstant가 GCMAES256 암호 그룹을 사용하는지 확인합니다.
성능을 최대화하려면 게이트웨이 호스트 하드웨어가 AES-NI 및 PCLMULQDQ CPU 명령 집합을 지원해야 합니다. AES-NI가 비활성화된 모델을 제외한 모든 Westmere(32nm) 이상 Intel CPU에서 사용할 수 있습니다. 하드웨어 공급업체 설명서를 참조하여 CPU가 AES-NI 및 PCLMULQDQ CPU 명령 집합을 지원하는지 확인할 수 있습니다.
다음은 최적의 보안 알고리즘을 사용하는 IPsec 연결의 REST 샘플입니다.
# 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
테스트 결과
테스트 랩에서 SDN 게이트웨이에 대한 광범위한 성능 테스트를 수행했습니다. 테스트에서는 SDN 시나리오 및 비 SDN 시나리오에서 게이트웨이 네트워크 성능을 Windows Server 2019와 비교했습니다. 여기에서 블로그 문서에서 캡처한 결과 및 테스트 설정 세부 정보를 찾을 수 있습니다.