高速ネットワークの概要
注意事項
この記事では、サービス終了 (EOL) 状態の Linux ディストリビューションである CentOS について説明します。 適宜、使用と計画を検討してください。 詳細については、「CentOS のサポート終了に関するガイダンス」を参照してください。
この記事では、高速ネットワークの利点、制約、サポートされている構成について説明します。 高速ネットワークによって、サポートされた仮想マシン (VM) の種類ででシングル ルート I/O 仮想化 (SR-IOV) が可能になり、ネットワークのパフォーマンスが大幅に向上します。 この高パフォーマンスのデータ パスによってホストがバイパスされ、最も要求の厳しいネットワーク ワークロードで、待機時間、ジッター、CPU 使用率が低下します。
注意
Microsoft Azure ネットワーク アダプター (MANA) プレビューの詳細については、Azure MANA のドキュメントを参照してください
次の図は、高速ネットワークを使用した場合と使用しない場合の、2 台の VM 間の通信を比較したものです。
高速ネットワークを使用しない場合は、VM に出入りするすべてのネットワーク トラフィックがホストと仮想スイッチをスキャンします。 仮想スイッチによってネットワーク トラフィックにすべてのポリシーが適用されます。 ポリシーには、ネットワーク セキュリティ グループ、アクセス制御リスト、分離、およびその他のネットワーク仮想化サービスが含まれます。
高速ネットワークを使用した場合、VM のネットワーク インターフェイス (NIC) に到達したネットワーク トラフィックは、VM に直接転送されます。 高速ネットワークでは、仮想スイッチによって適用されるネットワーク ポリシーはすべてオフロードされ、ハードウェアで適用されます。 ハードウェアでポリシーが適用されるため、NIC でネットワーク トラフィックを VM に直接転送できます。 NIC ではホストと仮想スイッチはバイパスされますが、ホストにおいて適用されるすべてのポリシーは保持されます。
メリット
高速ネットワークには、次の利点があります。
待ち時間の短縮と 1 秒あたりのパケット数の向上。 データ パスから仮想スイッチを除去すると、パケットからホストでポリシー処理に消費される時間がなくなります。 また、VM で処理できるパケットの数も増えます。
ジッターの削減。 仮想スイッチの処理時間は、適用するポリシーの量と、処理を行う CPU のワークロードによって異なります。 ポリシーの適用をハードウェアにオフロードすると、パケットが VM に直接配信されるので、その変動が解消されます。 オフロードを行うと、ホストから VM への通信、すべてのソフトウェア割り込み、すべてのコンテキスト切り替えもなくなります。
CPU 使用率の削減。 ホストの仮想スイッチをバイパスすることによって、ネットワーク トラフィックを処理するための CPU 使用率を削減できます。
制限と制約
高速ネットワークの利点が得られるのは、高速ネットワークを有効にする VM だけです。
最良の結果を得るには、同じ Azure 仮想ネットワーク内の少なくとも 2 つの VM で高速ネットワークを有効にします。 この機能は、仮想ネットワーク間で通信する場合やオンプレミスに接続する場合の待機時間への影響を最小限に抑えます。
実行中の VM で高速ネットワークを有効にすることはできません。 サポートされている VM で高速ネットワークを有効にできるのは、VM が停止して割り当てが解除された場合のみです。
Azure Resource Manager 経由で高速ネットワークを使用して仮想マシン (クラシック) をデプロイすることはできません。
Azure プラットフォームでは、VM 内の Mellanox NIC ドライバーは更新されません。 Linux および FreeBSD を実行している VM の場合、ディストリビューションによって提供される最新のカーネル更新プログラムで最新の状態を維持するよう、お客様にはお勧めしております。 Windows を実行している VM の場合、Marketplace イメージで提供されたドライバーに関して、またはカスタム イメージに適用されたドライバーに関して後で問題が見つかった場合、お客様は NVIDIA サポート ページから更新済みのドライバーを適用してください。
サポートされているリージョン
高速ネットワークは、すべてのグローバル Azure リージョンと Azure Government クラウドで利用できます。
サポートされるオペレーティング システム
次のバージョンの Windows では、高速ネットワークがサポートされています。
- Windows Server 2022
- Windows Server 2019 Standard/Datacenter
- Windows Server 2016 Standard/Datacenter
- Windows Server 2012 R2 Standard/Datacenter
- Windows 10 バージョン 21H2 以降、Windows 10 Enterprise マルチセッションを含む
- Windows 11、Windows 11 Enterprise マルチセッションを含む
Azure Marketplace の次の Linux および FreeBSD ディストリビューションでは、高速ネットワークがあらかじめサポートされています。
- Ubuntu 14.04 (linux-azure カーネルを含む)
- Ubuntu 16.04 以降
- SLES12 SP3 以降
- RHEL 7.4 以降
- CentOS 7.4 以降
- CoreOS Linux
- Debian "Stretch" (バックポート カーネルを含む)
- Debian "Buster" 以降
- Oracle Linux 7.4 以降 (Red Hat Compatible Kernel (RHCK) を含む)
- Oracle Linux 7.5 以降 (UEK バージョン 5 を含む)
- FreeBSD 10.4、11.1 および 12.0 以降
サポートされている 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 バージョン 19.4 以降のイメージでは、プロビジョニング中に高速ネットワークをサポートするようにネットワークが正しく構成されています。 カスタム イメージでは競合するネットワーク インターフェイス ソフトウェア (ifupdown や networkd など) を実行せず、複数のインターフェイスで dhcpclient を直接実行しないことを強くお勧めします。
次の例は、RHEL または CentOS での NetworkManager
のサンプル構成ドロップインを示しています。
sudo cat <<EOF > /etc/udev/rules.d/68-azure-sriov-nm-unmanaged.rules
# Accelerated Networking on Azure exposes a new SRIOV interface to the VM.
# This interface is transparentlybonded to the synthetic interface,
# so NetworkManager should just ignore any SRIOV interfaces.
SUBSYSTEM=="net", DRIVERS=="hv_pci", ACTION!="remove", ENV{NM_UNMANAGED}="1"
EOF
ネットワーク トラフィックは高速ネットワーク データ パスを使用します
NVIDIA ドライバーの場合: パケットが VF インターフェイス上を流れていることを確認します
MANA ドライバーの場合: トラフィックが MANA を流れていることを確認します