共用方式為


軟體定義網路中的 HNV 閘道效能微調

本主題提供執行 Hyper-V 和裝載 Windows Server 閘道虛擬機器之伺服器的硬體規格和組態建議,以及 Windows Server 閘道虛擬機器 (VM) 的設定參數。 若要從 Windows Server 閘道 VM 擷取最佳效能,預期會遵循這些指導方針。 下列各節包含部署 Windows Server 閘道時的硬體和組態需求。

  1. Hyper-V 硬體建議
  2. Hyper-V 主機設定
  3. Windows Server 閘道 VM 設定

Hyper-V 硬體建議

以下是執行 Windows Server 2016 和 Hyper-V 之每部伺服器的建議最低硬體設定。

伺服器元件 Specification
中央處理單位 (CPU) 非統一記憶體架構 (NUMA) 節點:2
如果主機上有多個 Windows Server 閘道 VM,為了達到最佳效能,每個閘道 VM 都應該具有一個 NUMA 節點的完整存取權。 它應該與主機實體配接器所使用的NUMA節點不同。
每個 NUMA 節點的核心 2
Hyper-Threading Disabled. Hyper-Threading 不會改善 Windows Server 閘道的效能。
隨機存取記憶體 (RAM) 48 GB
網路配接器 (NIC) 兩個 10 GB NIC,閘道效能將取決於線路速率。 如果線路速率小於 10 Gbps,閘道隧道吞吐量數值也會依相同比例下降。

請確定指派給 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)

Important

跨 NUMA 節點配置虛擬處理器可能會對 Windows Server 閘道造成負面影響。 執行多個 VM,其中每個 VM 都有來自一個 NUMA 節點的虛擬處理器,可能會提供比指派所有虛擬處理器的單一 VM 更好的匯總效能。

當每個 NUMA 節點擁有八個核心時,建議在每個 Hyper-V 主機上安裝一個具有八個虛擬處理器和至少 8GB 記憶體的閘道 VM。 在此情況下,一個NUMA節點專用於主計算機。

Hyper-V 主機設定

以下是執行 Windows Server 2016 和 Hyper-V 且工作負載為執行 Windows Server 閘道 VM 之每部伺服器的建議組態。 這些設定指示包括使用 Windows PowerShell 命令範例。 這些範例包含佔位符,在您於環境中執行命令時需要提供實際數值。 例如,網路適配器名稱佔位元為 “NIC1” 和 “NIC2”。當您執行使用這些佔位元的命令時,請利用伺服器上網路適配器的實際名稱,而不是使用佔位元,否則命令將會失敗。

Note

若要執行下列 Windows PowerShell 命令,您必須是 Administrators 群組的成員。

配置項目 Windows Powershell 組態
切換嵌入式團隊 當您使用多個網路介面卡建立 vswitch 時,會自動為這些介面卡啟用交換器嵌入式小組功能。
New-VMSwitch -Name TeamedvSwitch -NetAdapterName "NIC 1","NIC 2"
Windows Server 2016 中的 SDN 不支援透過 LBFO 進行傳統小組處理。 交換器內嵌小組可讓您針對虛擬流量和 RDMA 流量使用相同的 NIC 集合。 這不支援以 LBFO 為基礎的 NIC 小組。
實體 NIC 上的中斷調節 使用預設設定。 若要檢查設定,您可以使用下列 Windows PowerShell 命令: Get-NetAdapterAdvancedProperty
接收實體 NIC 上的緩衝區大小 您可以執行 命令 Get-NetAdapterAdvancedProperty來驗證實體 NIC 是否支援此參數的設定。 如果不支援此參數,則命令的輸出不會包含「接收緩衝區」屬性。如果 NIC 支援此參數,您可以使用下列 Windows PowerShell 命令來設定接收緩衝區大小:
Set-NetAdapterAdvancedProperty "NIC1" –DisplayName "Receive Buffers" –DisplayValue 3000
在實體 NIC 上傳送緩衝區大小 您可以執行 命令 Get-NetAdapterAdvancedProperty來驗證實體 NIC 是否支援此參數的設定。 如果 NIC 不支援此參數,則命令的輸出不會包含「傳送緩衝區」屬性。如果 NIC 支援此參數,您可以使用下列 Windows PowerShell 命令來設定傳送緩衝區大小:
Set-NetAdapterAdvancedProperty "NIC1" –DisplayName "Transmit Buffers" –DisplayValue 3000
實體 NIC 上的接收端調整 (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 以提升效能。

Note

VMQ 和 vRSS 只有在 VM 上的負載很高,且 CPU 會使用到最大值時才會顯示出來。 只有這樣一來,至少會有一個處理器核心達到最大負荷。VMQ 和 vRSS 有助於將處理負載分散到多個核心。 這不適用於 IPsec 流量,因為 IPsec 流量僅限於單一核心。

Windows Server 閘道 VM 設定

在兩部 Hyper-V 主機上,您可以設定多個 VM,這些 VM 會設定為具有 Windows Server 閘道的閘道。 您可以使用 Virtual Switch Manager 來建立 Hyper-V 虛擬交換器,該虛擬交換器系結至 Hyper-V 主機上的 NIC 小組。 請注意,為了達到最佳效能,您應該在 Hyper-V 主機上部署單一閘道 VM。 以下是每個 Windows Server 閘道 VM 的建議設定。

組態項目 Windows Powershell 組態
Memory 8 GB
虛擬網路適配器數目 具有下列特定用途的 3 張網卡:1 張用於管理操作系統的管理網卡,1 張外部網卡提供外部網路的存取,1 張內部網卡僅提供內部網路的存取。
接收端調整 (RSS) 您可以保留管理 NIC 的預設 RSS 設定。 下列範例組態適用於具有8個虛擬處理器的VM。 針對外部和內部 NIC,您可以使用下列 Windows PowerShell 命令,啟用 BaseProcNumber 設為 0 且 MaxRssProcessors 設定為 8 的 RSS:
Set-NetAdapterRss "Internal","External" –BaseProcNumber 0 –MaxProcessorNumber 8
傳送端緩衝區 您可以保留管理 NIC 的預設傳送端緩衝區設定。 針對內部和外部 NIC,您可以使用下列 Windows PowerShell 命令,設定具有 32 MB RAM 的傳送端緩衝區:
Set-NetAdapterAdvancedProperty "Internal","External" –DisplayName "Send Buffer Size" –DisplayValue "32MB"
接收側緩衝區 您可以保留管理 NIC 的預設接收端緩衝區設定。 針對內部和外部 NIC,您可以使用下列 Windows PowerShell 命令,設定具有 16 MB RAM 的接收端緩衝區:
Set-NetAdapterAdvancedProperty "Internal","External" –DisplayName "Receive Buffer Size" –DisplayValue "16MB"
正向最佳化 您可以保留管理 NIC 的預設轉送優化設定。 針對內部和外部 NIC,您可以使用下列 Windows PowerShell 命令來啟用轉送優化:
Set-NetAdapterAdvancedProperty "Internal","External" –DisplayName "Forward Optimization" –DisplayValue "1"