Azure 加速網路概觀

Azure 加速網路可藉由減少延遲和 CPU 使用率,大幅改善虛擬機網路效能。 本文說明加速網路的優點、條件約束及支援設定。 加速網路可在支援的虛擬機 (VM) 類型上啟用單一根目錄 I/O 虛擬化 (SR-IOV),大幅改善網路效能。 這個高效能資料路徑會略過主機,進而減少延遲、抖動及 CPU 使用率,供最嚴苛的網路工作負載使用。

下圖說明兩個 VM 如何在有與沒有加速網路的情況下通訊。

顯示 Azure VM 與無加速網路之間通訊的螢幕擷取畫面。

如果沒有加速網路,進出 VM 的所有網路流量都會周遊主機和虛擬交換器。 虛擬交換器提供網路流量的所有原則強制執行。 原則包括網路安全組、存取控制清單、隔離及其他網路虛擬化服務。

如果使用加速網路,抵達 VM 網路介面 (NIC) 的網路流量會直接轉送至 VM。 加速網路卸載虛擬交換器套用的所有網路原則,並將它們套用在硬體中。 因為硬體會套用原則,因此 NIC 可以直接將網路流量轉送至 VM。 NIC 會略過主機和虛擬交換器,同時保留在主機中套用的所有原則。

Benefits

加速網路具有下列優點:

  • 較低的延遲和較高的每秒封包數目。 從資料路徑中移除虛擬交換器,可以消除封包在主機中進行原則處理所花費的時間。 它也會增加 VM 可以處理的封包數。

  • 抖動減少。 虛擬交換器的處理時間取決於要套用的原則數量,以及執行處理之 CPU 的工作負載。 將原則強制執行卸載到硬體,可藉由將封包直接傳遞至 VM 來移除該變異性。 卸載也會移除主機對 VM 的通訊、所有軟體插斷,以及所有內容切換。

  • CPU 使用率降低。 略過主機中的虛擬交換器可減少處理網路流量的 CPU 使用率。

限制和條件約束

  • 加速網路的優點僅適用於啟用它的 VM。

  • 為了獲得最佳結果,請在相同 Azure 虛擬網路中的至少兩個 VM 上啟用加速網路。 當您跨虛擬網路通訊或連線內部部署時,這項功能對延遲的影響最小。

  • 您無法在執行中的 VM 上啟用加速網路。 只有當 VM 停止並解除配置時,才可以在支援的 VM 上啟用加速網路功能。

  • 您無法透過 Azure Resource Manager 部署具有加速網路的虛擬機器 (傳統版)。

  • Azure 平台不會更新 VM 裡的 Mellanox 網卡或 MANA 驅動程式。 對於執行 Linux 和 FreeBSD 的 VM,您應該隨時掌握散發套件所提供的最新核心更新。 針對執行 Windows 的 VM,如果您遇到使用 Marketplace 映像傳遞的驅動程式或套用至自定義映像的任何問題,請從 NVIDIA 支援頁面套用更新的驅動程式。 最新的 MANA 驅動程式可在 WINDOWS 版 MANA 的文件頁面找到

支援的區域

加速網路適用於所有的全球 Azure 區域和 Azure Government 雲端。

支援的作業系統

Windows 作業系統

以下版本的 Windows 支援所有介面的加速網路:

產品
Windows 11
Windows Server 2016
Windows Server 2019
Windows Server 2022
Windows Server 2025

Linux

對於使用 Microsoft Mana 介面卡的虛擬機(VM):

Distribution 核心系列 最小版本
AlmaLinux 9.6 5.14 kernel-5.14.0-570.52.1.el9_6
AlmaLinux 10.0 6.12 kernel-6.12.0-108.el10
Azure Linux 3 6.6 ANY
Azure Linux 4 6.18 ANY
Debian 12 “Bookworm” 6.12 6.12.21
Debian 13「Trixie」 6.12 6.12.21
Oracle Linux(Red Hat 核心)9.x 5.14 kernel-5.14.0-570.52.1.el9_6
Oracle Linux(Red Hat 核心)10.x 6.12 kernel-6.12.0-108.el10
Oracle Linux UEK R7 UEK 7 上面沒列出
Oracle Linux UEK R8 UEK 8/U1 (6.12.0-100.28.2) UEK8/U1
Rocky Linux 9.6 5.14 kernel-5.14.0-570.52.1.el9_6
Rocky Linux 10.0 6.12 kernel-6.12.0-108.el10
Red Hat Enterprise Linux 9.6 5.14 kernel-5.14.0-570.52.1.el9_6
Red Hat 企業版 Linux 10.0 6.12 kernel-6.12.0-108.el10
SUSE Linux Enterprise Server 15 SP5 5.14 5.14.21-150500.55.121.2
SUSE Linux Enterprise Server 15 SP6 6.4 6.4.0-150600.23.73.1
SUSE Linux Enterprise Server 15 SP7 6.4 6.4.0-150700.53.16.1
SUSE Linux 企業伺服器 16 6.12 6.12.0-160000.5.1
Ubuntu 22.04 LTS 5.15 5.15.0-1096.105
Ubuntu 24.04 LTS 6.8 6.8.0-1041.47

對於非官方認可的 Linux 發行版使用者或使用自訂核心,我們推薦 kernel.org 上可找到的 Linux 核心 6.14 或更新版本

Note

MANA 的新功能持續演進,Linux 廠商與 Microsoft 合作,將上游更新引入核心。 更新頻率因發行版而異,但較新的版本通常包含最新的改進。

前表列出了 MANA 支援的最低推薦核心版本。

適用於使用 Mellanox 介面卡的虛擬機(VM)

所有 Azure 認可的 Linux 發行版都被支援,只要廠商沒有標記為終止生命週期(EOL)。

支援的 VM 執行個體

具有兩個或多個 vCPU 的一般用途和計算最佳化 VM 執行個體大小都支援加速網路。 在支援超執行緒的執行個體上,具有四個或多個 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)

虛擬功能的動態繫結和撤銷

加速網路要求客體作業系統映像能夠正確處理虛擬功能的動態移除或新增。 主機維護或即時移轉等案例會導致在維護事件之後動態撤銷虛擬功能和還原。 此外,應用程式必須確保它們繫結至綜合裝置,而不是虛擬功能,以便在這些事件期間維護網路連線。

如需應用程式繫結需求的詳細資訊,請參閱加速網路在 Linux 和 FreeBSD VM 中的運作方式

將驅動程式設定為非受控

加速網路需要在網路設定中將 SR-IOV 驅動程式設定為非管理裝置。 此要求適用於 NVIDIA/Mellanox mlx4_core 及其 mlx5_core 驅動程式,以及 MANA 驅動程式。 使用 cloud-init 版本 23.2 或更新版本的映像,會在佈建期間自動套用正確的網路組態來支援加速網路。 避免在自訂映像檔上同時使用網路介面管理工具(例如 ifupdown、networkd),也不要直接在多個介面上執行 dhcpclient。

請確保安裝的是 azure-vm-utils 0.6.0 或更新版本。 Verify /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