ソフトウェア定義ネットワークでの HNV ゲートウェイのパフォーマンス チューニング

このトピックでは、Windows Server ゲートウェイ仮想マシン (VM) の構成パラメーターに加え、Hyper-V を実行し、Windows Server ゲートウェイ仮想マシンをホストするサーバーのハードウェア仕様と構成の推奨事項を示します。 Windows Server ゲートウェイ VM の最適なパフォーマンスを得るために、これらのガイドラインに従うことが想定されています。 次のセクションでは、Windows Server ゲートウェイを展開するときのハードウェアと構成の要件を示します。

  1. Hyper-V ハードウェアの推奨事項
  2. Hyper-V ホストの構成
  3. Windows Server ゲートウェイ VM の構成

Hyper-V ハードウェアの推奨事項

Windows Server 2016 と Hyper-V を実行している各サーバーに推奨される最小ハードウェアを次に示します。

サーバー コンポーネント 仕様
中央処理装置 (CPU) Non-Uniform Memory Architecture (NUMA) ノード: 2
ホストに複数の Windows Server ゲートウェイ VM がある場合、最適なパフォーマンスを得るには、各ゲートウェイ VM に 1 つの NUMA ノードに対するフル アクセス権が必要です。 ホストの物理アダプターによって使用される NUMA ノードとは別のものにする必要があります。
NUMA ノードごとのコア 2
ハイパー スレッディング 無効。 ハイパー スレッディングによって、Windows Server ゲートウェイのパフォーマンスは向上しません。
ランダム アクセス メモリ (RAM) 48 GB
ネットワーク インターフェイス カード (NIC) 10 GB の NIC が 2 つの場合、ゲートウェイのパフォーマンスは回線速度によって異なります。 回線速度が 10Gbps 未満の場合は、ゲートウェイ トンネルのスループットの数値も同じ要因によって低下します。

Windows Server ゲートウェイ VM に割り当てられた仮想プロセッサの数が、NUMA ノードのプロセッサ数を超えていないことを確認します。 たとえば、NUMA ノードには 8 個のコアがある場合は、仮想プロセッサの数は 8 個以下にする必要があります。 最適なパフォーマンスを得るには、8 個にする必要があります。 NUMA ノードの数と NUMA ノードごとのコア数を検索するには、各 Hyper-V ホストで次の Windows PowerShell スクリプトを実行します。

$nodes = [object[]] $(gwmi –Namespace root\virtualization\v2 -Class MSVM_NumaNode)
$cores = ($nodes | Measure-Object NumberOfProcessorCores -sum).Sum
$lps = ($nodes | Measure-Object NumberOfLogicalProcessors -sum).Sum


Write-Host "Number of NUMA Nodes: ", $nodes.count
Write-Host ("Total Number of Cores: ", $cores)
Write-Host ("Total Number of Logical Processors: ", $lps)

重要

NUMA ノード間で仮想プロセッサを割り当てると、Windows Server ゲートウェイのパフォーマンスに悪影響を及ぼす場合があります。 複数の VM を実行し、そのそれぞれに 1 つの NUMA ノードから仮想プロセッサを割り当てると、1 つの VM にすべての仮想プロセッサを割り当てた場合に比べて全体的なパフォーマンスは向上します。

各 NUMA ノードに 8 個のコアがある場合に、各 Hyper-V ホストにインストールするゲートウェイ VM の数を選択するときは、8 個の仮想プロセッサと 8 GB 以上の RAM を搭載したゲートウェイ VM を 1 つ使用することをお勧めします。 この場合、1 つの NUMA ノードがホスト コンピューター専用になります。

Hyper-V ホストの構成

次に、Windows Server 2016 と Hyper-V を実行し、ワークロードが Windows Server ゲートウェイ VM の実行である各サーバーに推奨される構成を示します。 これらの構成の手順には、Windows PowerShell コマンドの例が使用されています。 これらの例にはプレースホルダーが含まれており、使用する環境でコマンドを実行するときに実際の値を指定する必要があります。 たとえば、ネットワーク アダプター名のプレースホルダーは "NIC1" と "NIC2" です。これらのプレースホルダーを使用するコマンドを実行するときは、プレースホルダーではなく、サーバー上のネットワーク アダプターの実際の名前を使用します。そのようにしないと、コマンドは失敗します。

注意

以下の Windows PowerShelll コマンドを実行するには、Administrators グループのメンバーであることが必要です。

構成項目 Windows PowerShell の構成
スイッチ埋め込みチーミング 複数のネットワーク アダプターを含む vswitch を作成すると、それらのアダプターのスイッチ埋め込みチーミングが自動的に有効になります。
New-VMSwitch -Name TeamedvSwitch -NetAdapterName "NIC 1","NIC 2"
LBFO による従来のチーミングは、Windows Server 2016 の SDN ではサポートされていません。 スイッチ埋め込みチーミングを使用すると、仮想トラフィックと RDMA トラフィックに同じセットの NIC を使用できます。 これは、LBFO に基づく NIC チーミングではサポートされていませんでした。
物理 NIC での割り込み節度 既定の設定を使用します。 構成を確認するには、Windows PowerShell コマンド Get-NetAdapterAdvancedProperty を使用できます。
物理 NIC での受信バッファー サイズ Get-NetAdapterAdvancedProperty コマンドを実行して、物理 NIC がこのパラメーターの構成をサポートするかどうかを確認できます。 このパラメーターがサポートされていない場合、コマンドからの出力にはプロパティ "Receive Buffers" は含まれません。NIC がこのパラメーターをサポートしている場合、次の Windows PowerShell コマンドを使用して受信バッファー サイズを設定できます。
Set-NetAdapterAdvancedProperty "NIC1" –DisplayName "Receive Buffers" –DisplayValue 3000
物理 NIC での送信バッファー サイズ Get-NetAdapterAdvancedProperty コマンドを実行して、物理 NIC がこのパラメーターの構成をサポートするかどうかを確認できます。 NIC がこのパラメーターをサポートしていない場合、コマンドの出力にプロパティ "Send Buffers" は含まれません。NIC がこのパラメーターをサポートしている場合、次の Windows PowerShell コマンドを使用して送信バッファー サイズを設定できます。
Set-NetAdapterAdvancedProperty "NIC1" –DisplayName "Transmit Buffers" –DisplayValue 3000
物理 NIC での Receive Side Scaling (RSS) Windows PowerShell コマンド Get-NetAdapterRss を実行することによって、物理 NIC で RSS が有効であるかどうかを確認できます。 次の Windows PowerShell コマンドを使用して、ネットワーク アダプターで RSS を有効にし、構成できます。
Enable-NetAdapterRss "NIC1","NIC2"
Set-NetAdapterRss "NIC1","NIC2" –NumberOfReceiveQueues 16 -MaxProcessors
注: VMMQ または VMQ が有効になっている場合、物理ネットワーク アダプターで RSS を有効にする必要はありません。 ホスト仮想ネットワーク アダプターで有効にできます
VMMQ VM の VMMQ を有効にするには、次のコマンドを実行します。
Set-VmNetworkAdapter -VMName <gateway vm name>,-VrssEnabled $true -VmmqEnabled $true
注: すべてのネットワーク アダプターが VMMQ をサポートしているわけではありません。 現時点では、Chelsio T5 および T6、Mellanox CX-3 および CX-4、および QLogic 45xxx シリーズでサポートされています
NIC チームでの仮想マシン キュー (VMQ) 次の Windows PowerShell コマンドを使用して、SET チームで VMQ を有効にできます。
Enable-NetAdapterVmq
注: これは、HW が VMMQ をサポートしていない場合にのみ有効にする必要があります。 サポートされている場合は、パフォーマンスを向上させるために VMMQ を有効にする必要があります。

注意

VMQ と vRSS は、VM の負荷が高く、CPU が最大限に利用されている場合にのみ重要な役割を果たします。 そのときに初めて、少なくとも 1 つのプロセッサ コアが上限に達します。VMQ と vRSS は、処理負荷を複数のコアに分散させるのに役立ちます。 IPsec トラフィックはシングル コアに限定されるため、IPsec トラフィックには適用されません。

Windows Server ゲートウェイ VM の構成

両方の Hyper-V ホストで、Windows Server ゲートウェイによってゲートウェイとして構成されている複数の VM を構成できます。 仮想スイッチ マネージャーを使用して、Hyper-V ホストの NIC チームにバインドされている Hyper-V 仮想スイッチを作成できます。 最適なパフォーマンスを得るには、1 つのゲートウェイ VM を Hyper-V ホストに展開する必要があります。 各 Windows Server ゲートウェイ VM の推奨構成を次に示します。

構成項目 Windows PowerShell の構成
メモリ 8 GB
仮想ネットワーク アダプターの数 次の特定の用途を持つ 3 つの NIC: 1 つは管理オペレーティング システムによって使用される管理用、1 つは外部ネットワークへのアクセスを提供する外部用、1 つは内部ネットワークのみへのアクセスを提供する内部用。
Receive Side Scaling (RSS) 管理 NIC 用に既定の RSS 設定を保持できます。 次の例の構成は 8 個の仮想プロセッサがある VM 用です。 外部 NIC と内部 NIC では、次の Windows PowerShell コマンドを使用して、BaseProcNumber を 0 に、MaxRssProcessors を 8 に設定して RSS を有効にできます。
Set-NetAdapterRss "Internal","External" –BaseProcNumber 0 –MaxProcessorNumber 8
送信側バッファー 管理 NIC 用に既定の送信側バッファーの設定を保持できます。 内部 NIC と外部 NIC では、次の Windows PowerShell コマンドを使用して、32 MB の RAM を指定して送信側バッファーを構成できます。
Set-NetAdapterAdvancedProperty "Internal","External" –DisplayName "Send Buffer Size" –DisplayValue "32MB"
受信側バッファー 管理 NIC 用に既定の受信側バッファーの設定を保持できます。 内部 NIC と外部 NIC では、次の Windows PowerShell コマンドを使用して、16 MB の RAM を指定して受信側バッファーを構成できます。
Set-NetAdapterAdvancedProperty "Internal","External" –DisplayName "Receive Buffer Size" –DisplayValue "16MB"
前方最適化 管理 NIC 用に既定の前方最適化の設定を保持できます。 内部 NIC と外部 NIC では、次の Windows PowerShell コマンドを使用して、前方最適化を有効にできます。
Set-NetAdapterAdvancedProperty "Internal","External" –DisplayName "Forward Optimization" –DisplayValue "1"