分享方式:


設定 VM 網路介面卡的服務品質 (QoS)

適用於:Windows Server 2022、Windows Server 2019、Windows Server 2016、Azure Stack HCI 21H2 和 20H2 版本

您可為虛擬機器 (VM) 網路介面卡設定軟體定義網路 (SDN) 服務品質 (QoS),以限制虛擬介面上的頻寬,以防止高流量 VM 與其他 VM 網路流量抗衡。 您也可以設定 SDN QoS 來保留 VM 的特定頻寬量,以確保 VM 可以傳送流量,而不管網路上的其他流量為何。 這可以套用至連結至傳統 VLAN 網路的 VM,以及連結至 SDN 重疊網路的 VM。

您也可以將 [QoS 卸載] 設定為在實體網路介面卡上強制執行 QoS 規則,而不是在虛擬交換器上強制執行,進而降低 CPU 使用率並改善強制執行。 QoS 卸載是 Windows Server 2022 認證 NIC 中發現的選擇性功能,其已達到 Windows Server 軟體定義資料中心 (SDDC) 進階額外資格 (AQ)。 如需詳細資訊,請參閱選取網路介面卡

SDN QoS 頻寬限制

SDN QoS 提供 VM 許可的傳送端或接收端頻寬上限組態。 這支援連線至傳統 VLAN 網路的 VM,以及連線到 SDN 虛擬網路的 VM。 一旦設定,您的 VM 將無法傳送或接收超過所設定上限的流量。 針對 VM,您可以選擇設定傳送端限制、接收端限制或兩者。

可透過 SDN QoS 設定的設定如下:

  • OutboundReservedValue - 如果 outboundReservedMode 模式為「絕對」,則此值指出傳輸 (輸出) 虛擬連接埠的保證頻寬 (以 Mbps 為單位)。 如果 outboundReservedMode 模式為「權數」,則此值指出保證頻寬的加權部分。

  • OutboundMaximumMbps - 表示虛擬連接埠 (輸出) 許可的傳送端頻寬上限 (以 Mbps 為單位)。

  • InboundMaximumMbps - 指出虛擬連接埠 (輸入) 許可的接收端頻寬上限 (以 Mbps 為單位)。

SDN QoS 原則

設定 SDN 的網路控制站後,您就可以繼續部署 QoS 原則。 現在,您可使用網路控制站 PowerShell Cmdlet 來執行此動作。

對於下列所有使用的範例指令碼,-ConnectionUri 是網路控制站的 REST URI。 例如: https://nc.contoso.com

步驟 1:進行全域 QoS 設定

在網路控制站電腦或網路控制站的管理用戶端上執行下列 PowerShell 命令。 這可讓全域設定透過網路控制站設定 QoS 原則:

$vswitchConfig=[Microsoft.Windows.NetworkController.VirtualSwitchManagerProperties]::new()
$qos=[Microsoft.Windows.NetworkController.VirtualSwitchQosSettings]::new()
$qos.EnableSoftwareReservations=$true
$vswitchConfig.QosSettings =$qos
Set-NetworkControllerVirtualSwitchConfiguration -ConnectionUri $uri -Properties $vswitchConfig

步驟 2:設定 QoS 原則

首先,您必須識別要套用原則的工作負載 VM 網路介面:

$NwInterface=Get-NetworkControllerNetworkInterface -ConnectionUri $uri -ResourceId Vnet-VM2_Net_Adapter_0

接下來,設定網路介面上允許的輸入和輸出輸送量上限:

$NwInterface.Properties.PortSettings.QosSettings= [Microsoft.Windows.NetworkController.VirtualNetworkInterfaceQosSettings]::new()
$NwInterface.Properties.PortSettings.QosSettings.InboundMaximumMbps ="1000"
New-NetworkControllerNetworkInterface -ConnectionUri $uri -ResourceId $NwInterface.ResourceId -Properties $NwInterface.Properties

QoS 卸載 (選擇性)

您可以將實體 NIC 設定為使用 QoS 卸載。 如果您的配接器支援 QoS 卸載,請確定已使用下列兩種方法之一加以啟用:

  • 網路 ATC (建議)
  • 使用配接器屬性手動啟用

使用網路 ATC

所有具有 Compute 意圖類型的介面卡都會自動啟用 QoS 卸載。 如需詳細資訊,請參閱使用網路 ATC 簡化主機網路

注意

此選項僅適用於 Azure Stack HCI 訂閱者。

使用手動啟用

手動啟用是透過用於管理實體配接器屬性的內建 Cmdlet 來進行。

重要

您必須確定小組中每部主機的每個實體 NIC 都已啟用 QosOffload。 如果沒有,QoS 規則將會透過虛擬交換器強制執行,並導致較低的效率。

使用下列 Cmdlet 來檢查介面卡是否支援 QosOffload,然後修改介面卡屬性:

Get-NetAdapterAdvancedProperty -Name <physical NIC Name> -RegistryKeyword *QosOffload
Enable QosOffload for your adapters:
Set-NetAdapterAdvancedProperty -Name  <physical NIC Name> -RegistryKeyword *QosOffload -RegistryValue 1

設定硬體 QoS

您可以使用設定和原則來設定硬體 QoS。

步驟 1:進行全域 QoS 設定

在網路控制站電腦或網路控制站的管理用戶端上執行下列步驟。 這可讓全域設定透過網路控制站設定 QoS 原則。

$vswitchConfig=[Microsoft.Windows.NetworkController.VirtualSwitchManagerProperties]::new()
$qos=[Microsoft.Windows.NetworkController.VirtualSwitchQosSettings]::new()
$qos.EnableHardwareLimits=$true
$vswitchConfig.QosSettings =$qos
Set-NetworkControllerVirtualSwitchConfiguration -ConnectionUri $uri -Properties $vswitchConfig

步驟 2:設定 QoS 原則

首先,識別要套用原則的工作負載 VM 網路介面:

$NwInterface=Get-NetworkControllerNetworkInterface -ConnectionUri $uri -ResourceId Vnet-VM2_Net_Adapter_0

接下來,設定網路介面上允許的輸出輸送量上限。 下列範例會建立 QoS 規則,將 VM 介面的輸出流量限制為 1 Gbps。

重要

Qos 卸載僅支援 OutboundMaximumMbps。 您無法搭配 Qos 卸載使用 OutboundReservedValueInboundMaximumMbps

$NwInterface.Properties.PortSettings.QosSettings= [Microsoft.Windows.NetworkController.VirtualNetworkInterfaceQosSettings]::new()
$NwInterface.Properties.PortSettings.QosSettings. EnableHardwareLimits=$true
$NwInterface.Properties.PortSettings.QosSettings.OutboundMaximumMbps ="1000"
New-NetworkControllerNetworkInterface -ConnectionUri $uri -ResourceId $NwInterface.ResourceId -Properties $NwInterface.Properties

注意

在即時移轉期間,VM 可能會移至不支援 QoS 卸載的主機。 在此案例中,即時移轉將會成功,但 QoS 會回復為 SDN QoS。