1. 迈洛斯CX-6网卡ASAP2功能部署与验证指南
最近在数据中心网络优化项目中,我遇到了一个典型的性能瓶颈问题:KVM虚拟化环境中的网络转发性能无法满足业务需求。经过多方调研,最终选择了迈洛斯(Mellanox)ConnectX-6网卡的ASAP2(加速交换与数据包处理)功能来解决这个问题。本文将详细介绍如何在Ubuntu宿主机上,通过单PF(物理功能)创建两个VF(虚拟功能),并实现硬件卸载转发的完整部署与验证过程。
ConnectX-6是NVIDIA旗下迈洛斯公司推出的高性能网卡,支持SR-IOV和ASAP2功能。ASAP2全称是Accelerated Switching and Packet Processing,它能够将虚拟交换机(如OVS)的转发规则卸载到网卡硬件上执行,大幅降低CPU负载,提升网络性能。在实际测试中,启用ASAP2后,我们的虚拟机间网络吞吐量提升了近5倍,同时CPU使用率下降了60%。
这个方案特别适合以下场景:
- 需要高性能虚拟机网络通信的云计算环境
- 网络功能虚拟化(NFV)部署
- 对延迟敏感的应用场景
- 希望降低主机CPU负载的网络密集型应用
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与前置条件
2.1 硬件与拓扑设计
我们的测试环境采用以下硬件配置:
- 服务器:Dell PowerEdge R740
- CPU:Intel Xeon Gold 6248R (24核/48线程)
- 内存:256GB DDR4
- 网卡:Mellanox ConnectX-6 DX (MCX654106A-HCAT)
网络拓扑非常简单但典型:
code复制VM1(VF0) <-> representor0 --\
> OVS(br0) -> ASAP2 offload -> CX6 eSwitch
VM2(VF1) <-> representor1 --/
这种设计允许两台虚拟机通过同一个物理网卡的虚拟功能直接通信,所有转发工作都由网卡硬件完成,完全绕过宿主机CPU。
2.2 软件环境准备
在开始配置前,必须确保满足以下条件:
-
BIOS设置:
- 确保已启用VT-d(Intel平台)或AMD-Vi(AMD平台)
- 确保已启用SR-IOV支持
- 建议禁用节能模式以获得稳定性能
-
宿主机环境:
- Ubuntu 20.04 LTS(内核建议5.4或更新)
- 已安装KVM、libvirt和virt-manager
- 已正确识别ConnectX-6网卡
-
虚拟机准备:
- 两台已创建的KVM虚拟机
- 虚拟机配置建议:至少2vCPU,4GB内存
- 虚拟机操作系统建议使用与宿主机相同或兼容的Linux发行版
重要提示:在实际操作前,建议记录以下关键信息,后续配置会频繁使用:
- PF的PCI地址(如0000:05:00.0)
- PF对应的网络接口名(如ens4f0np0)
- 计划创建的VF数量(本文为2个)
3. 驱动安装与基础配置
3.1 MLNX_OFED驱动安装
虽然大多数现代Linux发行版已经包含了基本的Mellanox网卡驱动,但要充分发挥ConnectX-6的全部功能,特别是ASAP2,建议安装官方MLNX_OFED驱动。
安装步骤如下:
- 从NVIDIA官网下载适合你系统的MLNX_OFED驱动包:
bash复制wget https://content.mellanox.com/ofed/MLNX_OFED-5.4-1.0.3.0/MLNX_OFED_LINUX-5.4-1.0.3.0-ubuntu20.04-x86_64.tgz
- 解压并安装:
bash复制tar xzf MLNX_OFED_LINUX-5.4-1.0.3.0-ubuntu20.04-x86_64.tgz
cd MLNX_OFED_LINUX-5.4-1.0.3.0-ubuntu20.04-x86_64
sudo ./mlnxofedinstall --ovs-dpdk --upstream-libs --add-kernel-support
- 重启驱动服务
