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 Software-Defined Data Center (SDDC) Premium Additional Qualification (AQ) を獲得した Windows Server 2022 認定 NIC に搭載されているオプションの機能です。 詳細については、「ネットワーク アダプターを選択する」を参照してください。

SDN QoS 帯域幅の制限

SDN QoS には、VM の送信側または受信側の最大許容帯域幅の構成機能があります。 これは、従来の VLAN ネットワークに接続された VM だけでなく、SDN 仮想ネットワークに接続された VM でもサポートされます。 設定すると、構成した上限を超えるトラフィックを VM で送受信できなくなります。 VM に対して、送信側の制限、受信側の制限、またはその両方を構成することができます。

SDN QoS で構成できる設定は次のとおりです。

  • OutboundReservedValue - outboundReservedMode モードが "absolute" の場合、送信 (エグレス) 時に仮想ポートに保証される帯域幅を Mbps 単位で示します。 outboundReservedMode モードが "weight" の場合、値は保証された帯域幅の重み付け部分を示します。

  • OutboundMaximumMbps - 仮想ポート (エグレス) に許可される送信側の最大帯域を Mbps 単位で示します。

  • InboundMaximumMbps - 仮想ポート (イングレス) の受信側の最大許容帯域を Mbps 単位で示します。

SDN QoS ポリシー

SDN 用ネットワーク コントローラーを設定したら、QoS ポリシーの展開に進むことができます。 現在は、ネットワーク コントローラーの PowerShell コマンドレットを使ってこれを実行できます。

以下で使うすべてのスクリプト例では、-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 オフロード (省略可能)

QoS オフロードを使うように物理 NIC を構成することができます。 アダプターが QoS オフロードをサポートしている場合は、次のいずれかの方法で有効にしてください。

  • ネットワーク ATC (推奨)
  • アダプターのプロパティを使った手動による有効化

ネットワーク ATC を使う

目的の種類が Compute であるすべてのアダプターで、QoS オフロードは自動的に有効になります。 詳細については、ネットワーク ATC を使ってホスト ネットワークを簡略化する方法に関するページを参照してください。

注意

このオプションは、Azure Stack HCI サブスクライバーのみが利用できます。

手動での有効化を使う

手動での有効化は、物理アダプターのプロパティを管理するために使われる組み込みのコマンドレットで行います。

重要

チーム内のすべてのホストのすべての物理 NIC 上で、QosOffload を有効にする必要があります。 そうしないと、QoS 規則が仮想スイッチを介して適用され、効率が低下します。

次のコマンドレットを使って、アダプターが 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

次に、ネットワーク インターフェイスで許容される送信の最大スループットを構成します。 次の例では、VM インターフェイスからの送信トラフィックを 1 Gbps に制限する QoS 規則を作成します。

重要

Qos オフロードは OutboundMaximumMbps のみをサポートしています。 Qos オフロードに OutboundReservedValue または InboundMaximumMbps を使うことはできません。

$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

注意

ライブ マイグレーション中に、QoS オフロードをサポートしていないホストに VM が移動する可能性があります。 このシナリオでは、ライブ マイグレーションは成功しますが、QoS は SDN QoS にフォールバックします。