加速网络概览
注意
本文引用了 CentOS,这是一个处于生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。
本文介绍了加速网络的优点、约束和受支持的配置。 加速网络在受支持的虚拟机(VM)类型上启用 单根 I/O 虚拟化(SR-IOV),从而大大提高了网络性能。 这种高性能路径会绕过主机,从而降低要求最苛刻的网络工作负载的延迟、抖动和 CPU 利用率。
注意
有关 Azure 网络适配器 (MANA) 预览版的详细信息,请参阅 Azure MANA 文档
下图说明了在有和无加速网络的情况下,两个 VM 如何通信。
在无加速网络的情况下,传入和传出 VM 的所有网络流量都会遍历主机和虚拟交换机。 虚拟交换机为网络流量提供所有的策略实施。 策略包括网络安全组、访问控制列表、隔离和其他网络虚拟化服务。
在有加速网络的情况下,到达 VM 网络接口(NIC)的网络流量会直接转发到 VM。 加速网络会卸载虚拟交换机应用的所有网络策略,并将其应用于硬件。 由于硬件应用策略,因此 NIC 可以将网络流量直接转发到 VM。 NIC 会绕过主机和虚拟交换机,同时维护主机中应用的所有策略。
好处
加速网络具有以下优势:
更低的延迟/更高的每秒数据包数。 删除数据路径中的虚拟交换机可以消除数据包在主机中进行策略处理花费的时间。 还会增加 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 平台上使用的网络接口卡 (NIC) 启用单根 I/O 虚拟化的驱动程序。 此硬件列表包括 NVIDIA ConnectX-3、ConnectX-4 Lx、ConnectX-5 和 Azure 网络适配器 (MANA)。
虚拟函数的动态绑定和吊销
加速网络需要来宾 OS 映像才能正确处理正在动态移除或添加的虚拟函数。 主机维护或实时迁移等方案将导致在维护事件后动态吊销虚拟函数并还原。 此外,应用程序必须确保它们绑定到合成设备,而不是虚拟函数,以便在这些事件期间保持网络连接。
有关应用程序绑定要求的详细信息,请参阅加速网络在 Linux 和 FreeBSD VM 中的工作方式。
将驱动程序配置为非托管
加速网络需要将 NVIDIA 驱动程序标记为非托管设备的网络配置。 cloud-init 版本 19.4 或更高版本的映像已正确配置网络,从而在预配期间支持加速网络。 强烈建议不要在自定义映像上运行竞争的网络接口软件 (例如 ifupdown 和网络),并且不要直接在多个接口上运行 dhcpclient。
以下示例展示了 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