次の方法で共有


Azure 高速ネットワークの概要

Azure 高速ネットワークでは、待機時間と CPU 使用率を減らすことで、仮想マシンのネットワーク パフォーマンスが大幅に向上します。 この記事では、高速ネットワークの利点、制約、サポートされている構成について説明します。 高速ネットワークによって、サポートされた仮想マシン (VM) の種類ででシングル ルート I/O 仮想化 (SR-IOV) が可能になり、ネットワークのパフォーマンスが大幅に向上します。 この高パフォーマンスのデータ パスによってホストがバイパスされ、最も要求の厳しいネットワーク ワークロードで、待機時間、ジッター、CPU 使用率が低下します。

次の図は、高速ネットワークを使用した場合と使用しない場合の、2 台の VM 間の通信を比較したものです。

Azure VM 間の通信を、高速ネットワークを使う場合と使わない場合との比較を示したスクリーンショット。

高速ネットワークを使用しない場合は、VM に出入りするすべてのネットワーク トラフィックがホストと仮想スイッチをスキャンします。 仮想スイッチによってネットワーク トラフィックにすべてのポリシーが適用されます。 ポリシーには、ネットワーク セキュリティ グループ、アクセス制御リスト、分離、およびその他のネットワーク仮想化サービスが含まれます。

高速ネットワークを使用した場合、VM のネットワーク インターフェイス (NIC) に到達したネットワーク トラフィックは、VM に直接転送されます。 高速ネットワークでは、仮想スイッチによって適用されるネットワーク ポリシーはすべてオフロードされ、ハードウェアで適用されます。 ハードウェアでポリシーが適用されるため、NIC でネットワーク トラフィックを VM に直接転送できます。 NIC ではホストと仮想スイッチはバイパスされますが、ホストにおいて適用されるすべてのポリシーは保持されます。

Benefits

高速ネットワークには、次の利点があります。

  • 待ち時間の短縮と 1 秒あたりのパケット数の向上。 データ パスから仮想スイッチを除去すると、パケットからホストでポリシー処理に消費される時間がなくなります。 また、VM で処理できるパケットの数も増えます。

  • ジッターの低減。 仮想スイッチの処理時間は、適用するポリシーの量と、処理を行う CPU のワークロードによって異なります。 ポリシーの適用をハードウェアにオフロードすると、パケットが VM に直接配信されるので、その変動が解消されます。 オフロードを行うと、ホストから VM への通信、すべてのソフトウェア割り込み、すべてのコンテキスト切り替えもなくなります。

  • CPU 使用率の削減。 ホストの仮想スイッチをバイパスすることによって、ネットワーク トラフィックを処理するための CPU 使用率を削減できます。

制限と制約

  • 高速ネットワークの利点が得られるのは、高速ネットワークを有効にする VM だけです。

  • 最良の結果を得るには、同じ Azure 仮想ネットワーク内の少なくとも 2 つの VM で高速ネットワークを有効にします。 この機能は、仮想ネットワーク間で通信する場合やオンプレミスに接続する場合の待機時間への影響を最小限に抑えます。

  • 実行中の VM で高速ネットワークを有効にすることはできません。 サポートされている VM で高速ネットワークを有効にできるのは、VM が停止して割り当てが解除された場合のみです。

  • Azure Resource Manager 経由で高速ネットワークを使用して仮想マシン (クラシック) をデプロイすることはできません。

  • Azure プラットフォームでは、VM 内の Mellanox NIC または MANA ドライバーは更新されません。 Linux および FreeBSD を実行している VM の場合は、ディストリビューションによって提供される最新のカーネル更新プログラムを最新の状態に保つ必要があります。 Windows を実行している VM の場合は、Marketplace イメージで配信されたドライバーまたはカスタム イメージに適用されたドライバーに問題が発生した場合は、NVIDIA サポート ページから更新されたドライバーを適用します。 最新の MANA ドライバーは、Windows 上の MANA のドキュメント ページで確認できます

サポートされているリージョン

高速ネットワークは、すべてのグローバル Azure リージョンと Azure Government クラウドで利用できます。

サポートされるオペレーティング システム

次のバージョンの Windows では、すべてのインターフェイスで高速ネットワークがサポートされています。

  • Windows Server 2022
  • Windows Server 2019
  • Windows Server 2016
  • ウィンドウズ11

Azure Marketplace の次の Linux および FreeBSD ディストリビューションでは、高速ネットワークがあらかじめサポートされています。

  • Azure Linux 3
  • Ubuntu 24.04 LTS
  • Ubuntu 22.04 LTS
  • Red Hat Enterprise Linux 10.0
  • Red Hat Enterprise Linux 9.6
  • AlmaLinux 10.0
  • AlmaLinux 9.6
  • Rocky Linux 10.0
  • Rocky Linux 9.6
  • SUSE Linux Enterprise Server 16
  • SUSE Linux Enterprise Server 15 SP7
  • SUSE Linux Enterprise Server 15 SP6
  • Debian 13 "Trixie"
  • Debian 12 "Bookworm"
  • Oracle Linux UEK R8
  • Oracle Linux UEK R7

動作保証されていない Linux ディストリビューションまたはカスタム カーネルを使用しているユーザーには、kernel.org で見つかった Linux カーネル 6.12 以降をお勧めします

Note

新しい MANA 機能は開発中であり、Linux ディストリビューション ベンダーは Microsoft と提携して、アップストリームの変更でカーネルを更新しています。 更新の頻度は、ディストリビューション ベンダーによって異なります。 ディストリビューションとカーネルが新しいほど、最新の更新プログラムが適用される可能性が高くなります。

サポートされている VM インスタンス

高速ネットワークは、2 つ以上の vCPU を備えた、汎用目的およびコンピューティングに最適化されたインスタンスサイズのほとんどでサポートされています。 ハイパースレッディングをサポートするインスタンスでは、高速ネットワークは 4 つ以上の vCPU を持つ VM インスタンスでサポートされています。

VM サイズが高速ネットワークをサポートしているかどうかをチェックするには、「Azure の仮想マシンのサイズ」を参照してください。

Azure CLI az vm list-skus コマンドを使用して、高速ネットワークをサポートする VM SKU の一覧に直接クエリを実行できます。

az vm list-skus \
  --location westus \
  --all true \
  --resource-type virtualMachines \
  --query '[].{size:size, name:name, acceleratedNetworkingEnabled: capabilities[?name==`AcceleratedNetworkingEnabled`].value | [0]}' \
  --output table

Note

NC と NV のサイズはコマンド出力に表示されますが、これらのサイズでは高速ネットワークはサポートされていません。 NC または NV VM で高速ネットワークを有効にしても、効果はありません。

カスタム VM イメージ

高速ネットワークをサポートするカスタム イメージを使用する場合は、次の要件を満たしていることを確認します。

デバイスとドライバーのサポート

高速ネットワークをサポートするカスタム イメージには、Azure プラットフォームで使用されるネットワーク インターフェイス カード (NIC) のシングル ルート I/O 仮想化を有効にするドライバーが含まれている必要があります。 このハードウェア一覧には、NVIDIA ConnectX-3、ConnectX-4 Lx、ConnectX-5、Microsoft Azure ネットワーク アダプター (MANA) が含まれます。

仮想関数の動的バインディングと失効

高速ネットワークでは、動的に削除または追加される仮想関数を適切に処理するためにゲスト OS イメージが必要です。 ホストのメンテナンスやライブ マイグレーションなどのシナリオでは、仮想関数が動的に失効され、メンテナンス イベント後に復元されます。 さらに、アプリケーションは、これらのイベント中にネットワーク接続を維持するために、仮想関数ではなく合成デバイスにバインドされていることを確認する必要があります。

アプリケーションバインディング要件の詳細については、「Linux および FreeBSD VM での高速ネットワークのしくみ」を参照してください。

ドライバーをアンマネージドに構成する

高速ネットワークでは、ネットワーク設定で NVIDIA ドライバーをアンマネージド デバイスとして構成する必要があります。 cloud-init バージョン 23.2 以降を使用するイメージでは、プロビジョニング中に高速ネットワークをサポートするために、正しいネットワーク構成が自動的に適用されます。 カスタム イメージでは同時ネットワーク インターフェイス管理ツール (ifupdown や networkd など) を避け、複数のインターフェイスで dhcpclient を直接実行しないことを強くお勧めします。

azure-vm-utils バージョン 0.6.0 以降がインストールされていることを確認します。 /usr/lib/udev/rules.d/10-azure-unmanaged-sriov.rulesが存在するかどうかを確認します。
ディストリビューションで使用できない場合は、コンテンツと共に /etc/udev/rules.d/10-azure-unmanaged-sriov.rules でカスタム udev ルールを使用します。

# Azure VMs with accelerated networking may have MANA, mlx4, or mlx5 SR-IOV devices which are transparently bonded to a synthetic
# hv_netvsc device.  Mark devices with the 0x800 bit set as unmanaged devices:
#   AZURE_UNMANAGED_SRIOV=1 for 01-azure-unmanaged-sriov.network
#   ID_NET_MANAGED_BY=unmanaged for systemd-networkd >= 255
#   NM_UNMANAGED=1 for NetworkManager
#
# ATTR{flags}=="0x?[89ABCDEF]??" checks the 0x800 bit.
SUBSYSTEM=="net", ACTION!="remove", DRIVERS=="mana|mlx4_core|mlx5_core", ATTR{flags}=="0x?[89ABCDEF]??", ENV{AZURE_UNMANAGED_SRIOV}="1", ENV{ID_NET_MANAGED_BY}="unmanaged", ENV{NM_UNMANAGED}="1"

ネットワーク トラフィックは高速ネットワーク データ パスを使用します

NVIDIA ドライバーの場合: パケットが VF インターフェイス上を流れていることを確認します

MANA ドライバーの場合: トラフィックが MANA を流れていることを確認します