SDN 게이트웨이 성능
Windows Server 2016에서 고객의 관심사 중 하나는 SDN 게이트웨이가 최신 네트워크의 처리량 요구 사항을 충족하지 못하는 것이었습니다. IPsec 및 GRE 터널의 네트워크 처리량은 IPsec 연결에 대한 단일 연결 처리량의 경우 약 300Mbps, GRE 연결의 경우 약 2.5Gbps로 제한되었습니다.
Windows Server 2019부터는 IPsec 및 GRE 연결에 대해 각각 1.8Gbps 및 15Gbps로 급증하면서 SDN 게이트웨이 성능이 크게 향상되었습니다. 이는 모두 바이트당 CPU 주기가 크게 감소하여 훨씬 적은 CPU 사용률로 초고성능 처리량을 제공하기 때문입니다.
게이트웨이를 통해 고성능 사용
GRE 연결의 경우 게이트웨이 VM에서 Windows Server 2019 빌드를 배포/업그레이드하면 향상된 성능이 자동으로 표시됩니다. 수동 단계는 관련이 없습니다.
IPsec 연결의 경우 기본적으로 가상 네트워크에 대한 연결을 만들 때 Windows Server 2016 데이터 경로 및 성능 수치를 가져옵니다. Windows Server 2019 데이터 경로를 사용하도록 설정하려면 다음을 수행합니다.
- SDN 게이트웨이 VM에서 Services 콘솔(services.msc)로 이동합니다.
- Azure Gateway Service라는 서비스를 찾음 다음 시작 유형을 자동으로 설정합니다.
- 게이트웨이 VM을 다시 시작합니다. 이 게이트웨이의 활성 연결은 중복 게이트웨이 VM으로 장애 조치(failover)됩니다.
- 나머지 게이트웨이 VM에 대해 이전 단계를 반복합니다.
고성능 IPsec 연결이 작동하려면 다음 요구 사항을 충족해야 합니다.
- 온-프레미스 게이트웨이에서 NAT-T(Network Address Translation-Traversal)를 사용하도록 설정해야 합니다. 고성능 IPsec 연결을 사용하도록 설정하는 경우 SDN 게이트웨이는 NAT 규칙을 구성하므로 온-프레미스 게이트웨이에서도 NAT-T를 사용하도록 설정해야 합니다.
- 온-프레미스 게이트웨이는 포트 500과 4500 및 프로토콜 50과 51에서 UDP(User Datagram Protocol) 패킷을 허용해야 합니다.
팁
최상의 성능 결과를 위해 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와 비교했습니다. 블로그 문서 여기에서 캡처한 결과 및 테스트 설정 세부 정보를 확인할 수 있습니다.