加速网络概览

注意

本文引用了 CentOS,这是一个处于生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。

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

注意

有关 Azure 网络适配器 (MANA) 预览版的详细信息,请参阅 Azure MANA 文档

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

显示在有和无加速网络的情况下 Azure VM 之间通信的屏幕截图。

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

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

好处

加速网络具有以下优势:

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

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

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

限制和约束

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

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

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

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

  • Azure 平台不会更新 VM 中的 Mellanox NIC 驱动程序。 对于运行 Linux 和 FreeBSD 的 VM,建议客户随时了解分发提供的最新内核更新。 对于运行 Windows 的 VM,如果以后随市场映像一起交付的驱动程序或应用于自定义映像的驱动程序出现问题,客户应从 Nvidia 支持页应用更新的驱动程序。

支持的区域

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

支持的操作系统

以下版本的 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 企业版多会话
  • Windows 11,包括 Windows 11 企业版多会话

Azure 市场中的以下 Linux 和 FreeBSD 发行版支持开箱即用的加速网络:

  • 具有 linux-azure 内核的 Ubuntu 14.04
  • Ubuntu 16.04 或更高版本
  • SLES12 SP3 或更高版本
  • CentOS 7.4 或更高版本
  • Debian“Stretch”(backport 内核)
  • Debian "Buster" 或更高版本
  • FreeBSD 10.4、11.1、12.0 或更高版本

支持的 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 上与 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

后续步骤