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 伺服器 2022
  • Windows 伺服器 2019
  • Windows 伺服器 2016
  • Windows 11

下列來自 Azure Marketplace 的 Linux 和 FreeBSD 散發套件支援立即加速網路:

  • Azure Linux 3
  • Ubuntu 24.04 LTS
  • Ubuntu 22.04 LTS
  • Red Hat 企業版 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 企業伺服器 16
  • SUSE Linux 企業伺服器 15 SP7
  • SUSE Linux 企業伺服器 15 SP6
  • Debian 13 “崔克茜”
  • Debian 12 “書蟲”
  • Oracle Linux UEK R8
  • Oracle Linux UEK R7

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

Note

較新的 MANA 功能正在積極開發中,Linux 發行版供應商與 Microsoft 合作,透過上游變更更新其核心。 更新的頻率因發行商而異。 您的發行版和核心越新,擁有最新更新的可能性就越大。

支援的 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 中的運作方式

將驅動程式設定為非受控

加速網路需要在網路設定中將 NVIDIA 驅動程式設定為非受控裝置。 使用 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