SDN ゲートウェイのパフォーマンス

適用対象: Windows Server 2022、Windows Server 2019、Azure Stack HCI、バージョン 22H2 および 21H2

Windows Server 2016 では、お客様の懸念事項の 1 つは、SDN ゲートウェイが最新のネットワークのスループット要件を満たさないという問題でした。 IPsec トンネルと GRE トンネルのネットワーク スループットには、IPsec 接続の単一接続スループットが約 300 Mbps、GRE 接続が約 2.5 Gbps に制限されています。

Windows Server 2019 以降では、SDN ゲートウェイのパフォーマンスが大幅に向上し、IPsec 接続と GRE 接続はそれぞれ 1.8 Gbps と 15 Gbps に上昇しました。 CPU サイクル/バイトあたりの大幅な削減など、このすべてにより、CPU 使用率が大幅に低下する超高パフォーマンスのスループットが実現します。

ゲートウェイでハイ パフォーマンスを有効にする

GRE 接続の場合、ゲートウェイ VM 上に Windows Server 2019 ビルドを展開またはアップグレードすると、パフォーマンスが自動的に向上します。 手動の手順は必要はありません。

IPsec 接続の場合、既定では、仮想ネットワークの接続を作成するときに、Windows Server 2016 のデータ パスとパフォーマンスを取得します。 Windows Server 2019 データ パスを有効にするには、次の手順を実行します:

  1. SDN ゲートウェイ VM で、サービス コンソール (services.msc) に移動します。
  2. Azure Gateway Service という名前のサービスを見つけ、スタートアップの種類を [自動] に設定します。
  3. ゲートウェイ VM の再起動。 このゲートウェイ上のアクティブな接続は、冗長ゲートウェイ VM にフェールオーバーします。
  4. ゲートウェイ VM の残りの部分について、前の手順を繰り返します。

ハイ パフォーマンスの IPsec 接続を機能させるには、次の要件を満たす必要があります。

  • ご利用のオンプレミス ゲートウェイ上で、ネットワーク アドレス変換トラバーサル (NAT-T) を有効にする必要があります。 ハイ パフォーマンスの 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 とゲートウェイ ネットワークのパフォーマンスを比較しました。 結果とテストのセットアップの詳細については、 こちらからブログ記事を参照してください。