高速ネットワークの概要

注意

この記事では、間もなくサポート終了 (EOL) 状態になる Linux ディストリビューションである CentOS について説明します。 適宜、使用と計画を検討してください。 詳細については、「CentOS のサポート終了に関するガイダンス」を参照してください。

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

注意

Microsoft Azure ネットワーク アダプター (MANA) プレビューの詳細については、Azure MANA のドキュメントを参照してください

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

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

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

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

メリット

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

  • 待ち時間の短縮と 1 秒あたりのパケット数 (pps) の向上。 データ パスから仮想スイッチを除去すると、パケットからホストでポリシー処理に消費される時間がなくなります。 また、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 上の Mellanox ConnectX-3、ConnectX-4 Lx、および ConnectX-5 NIC で動作する必須のドライバーを必ず含めるようにします。 また、高速ネットワークには、mlx4_en および mlx5_core ドライバーの仮想関数の構成を除外するネットワーク構成も必要です。

cloud-init バージョン 19.4 以降のイメージでは、プロビジョニング中に高速ネットワークをサポートするようにネットワークが正しく構成されています。

次の例は、RHEL または CentOS での NetworkManager のサンプル構成ドロップインを示しています。

sudo mkdir -p /etc/NetworkManager/conf.d
sudo cat > /etc/NetworkManager/conf.d/99-azure-unmanaged-devices.conf <<EOF
# Ignore SR-IOV interface on Azure, since it's transparently bonded
# to the synthetic interface
[keyfile]
unmanaged-devices=driver:mlx4_core;driver:mlx5_core
EOF

次のステップ