Azure加速网络概述

Azure加速网络通过降低延迟和 CPU 利用率显著提高虚拟机网络性能。 本文介绍了加速网络的优点、约束和受支持的配置。 加速网络在受支持的虚拟机(VM)类型上启用 单根 I/O 虚拟化(SR-IOV),从而大大提高了网络性能。 这种高性能路径会绕过主机,从而降低要求最苛刻的网络工作负载的延迟、抖动和 CPU 利用率。

下图说明了在有和无加速网络的情况下,两个 VM 如何通信。

显示Azure虚拟机在使用和不使用加速网络情况下通信的截图。

在无加速网络的情况下,传入和传出 VM 的所有网络流量都会遍历主机和虚拟交换机。 虚拟交换机为网络流量提供所有的策略实施。 策略包括网络安全组、访问控制列表、隔离和其他网络虚拟化服务。

在有加速网络的情况下,到达 VM 网络接口(NIC)的网络流量会直接转发到 VM。 加速网络会卸载虚拟交换机应用的所有网络策略,并将其应用于硬件。 由于硬件应用策略,因此 NIC 可以将网络流量直接转发到 VM。 NIC 会绕过主机和虚拟交换机,同时维护主机中应用的所有策略。

好处

加速网络具有以下优势:

  • 更低的延迟/更高的每秒数据包数。 删除数据路径中的虚拟交换机可以消除数据包在主机中进行策略处理花费的时间。 还会增加 VM 可处理的数据包数。

  • 抖动减少。 虚拟交换机处理时间取决于要应用的策略数,以及正在执行处理的 CPU 工作负载。 将策略实施卸载到硬件可将数据包直接传送到 VM,从而消除这种可变性。 卸载还会消除主机到 VM 的通信、所有软件中断和所有上下文切换。

  • CPU 利用率降低。 绕过主机中的虚拟交换机可以减少用于处理流量的 CPU 资源。

限制和约束

  • 加速网络的优势仅适用于启用它的 VM。

  • 为获得最佳效果,请在同一Azure virtual network中至少两个 VM 上启用加速网络。 跨虚拟网络通信或在本地连接时,此功能对延迟的影响最小。

  • 无法在正在运行的 VM 上启用加速网络。 只有当 VM 停止并解除分配时,才能在受支持的 VM 上启用加速网络。

  • 无法通过Azure 资源管理器使用加速网络部署经典虚拟机。

  • Azure平台不会更新 VM 中的 Mellanox NIC 或 MANA 驱动程序。 对于运行 Linux 和 FreeBSD 的 VM,应随时了解分发提供的最新内核更新。 对于运行 Windows 的 VM,如果您遇到与市场镜像提供的驱动程序或应用于自定义镜像的驱动程序相关的任何问题,请从 NVIDIA 支持页面获取并应用更新的驱动程序。 可在 Windows 上的 MANA 文档页上找到最新的 MANA 驱动程序

支持的区域

加速网络在所有区域中可用。

支持的操作系统

以下版本的 Windows 支持所有接口的加速网络:

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

Azure 市场提供的以下 Linux 和 FreeBSD 分发版支持现装加速网络:

分布 内核系列 最小版本
Azure Linux 4 6.18 ANY
Debian 12 “Bookworm” 6.12 6.12.21
Debian 13 “Trixie” 6.12 6.12.21
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 Enterprise Server 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 或更高版本

注意事项

MANA的新功能正在积极发展,Linux厂商与Microsoft合作,将上游更新引入内核。 更新频率因发行版而异,但较新的版本通常包含最新的改进。

上表列出了支持MANA的最低推荐内核版本。

支持的 VM 实例

大多数具有两个或多个 vCPU 的常规用途和计算优化 VM 实例大小都支持加速网络。 在支持超线程的实例上,具有四个或更多 vCPU 的 VM 实例支持加速网络。

若要检查 VM 大小是否支持加速网络功能,请参阅 Azure 虚拟机的大小

可以使用 Azure CLI az vm list-skus 命令直接查询支持加速网络的 VM SKU 列表:

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

注意事项

虽然 NC 和 NV 大小显示在命令输出中,但这些大小不支持加速网络。 在 NC 或 NV VM 上启用加速网络不起作用。

自定义 VM 映像

如果使用支持加速网络的自定义映像,请确保满足以下要求。

设备和驱动程序支持

支持加速网络的任何自定义映像都必须包括为Azure平台上使用的网络接口卡(NIC)启用单根 I/O 虚拟化的驱动程序。 此硬件列表包括 NVIDIA ConnectX-3、ConnectX-4 Lx、ConnectX-5 和 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 或更高版本。 验证是否存在 /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