2026/8/8 9:09:05

Mellanox网卡工作模式深度解析:ETH、IB与VPI模式的选择与性能优化

Mellanox网卡工作模式深度解析:ETH、IB与VPI模式的选择与性能优化 1. 从一次性能瓶颈排查说起为什么需要切换网卡模式最近在帮一个做高性能计算的朋友排查一个奇怪的网络性能问题。他们的集群在运行大规模并行计算任务时数据传输的延迟和吞吐量总是不稳定时好时坏。硬件配置看起来相当豪华服务器用的是顶级的CPU和内存网络更是清一色的Mellanox ConnectX-5双端口100GbE网卡交换机也是同品牌的高端型号。按理说这个组合跑满带宽、保持低延迟应该是轻轻松松。但实际测试下来用iperf3打流TCP带宽只能跑到70Gbps左右而且延迟抖动很大。更诡异的是用他们自己的MPI应用测试小消息的延迟比预期高出一个数量级。我们一开始怀疑是驱动问题、固件问题甚至是交换机配置问题折腾了一圈更新了所有能更新的软件调整了MTU、流控等一堆参数收效甚微。最后几乎是在绝望中我们看了一眼网卡的工作模式。朋友一脸茫然“网卡模式不就是插上网线就能用吗” 问题恰恰出在这里。那块Mellanox网卡默认工作在Ethernet模式下。而他们的应用大量使用了RDMA远程直接内存访问技术进行进程间通信。虽然驱动支持RoCERDMA over Converged Ethernet但在默认的Ethernet模式下网卡的某些针对RDMA优化的硬件卸载功能并未被完全启用或者说其行为并非为纯粹的RDMA通信而优化。当我们使用Mellanox提供的mlxconfig工具将网卡的工作模式从默认的ETH切换为VPIVirtual Protocol Interconnect模式后重新测试。性能曲线瞬间变得平滑TCP带宽轻松顶到线速的95Gbps以上MPI小消息延迟直接降到了理论值附近。朋友惊呼“就这么一个设置差别这么大”是的差别就是这么大。对于Mellanox现在属于NVIDIA这种高端智能网卡其工作模式绝非一个简单的“开关”它决定了网卡底层硬件如何处理数据包、启用哪些加速引擎、以及以何种协议栈与操作系统交互。选错模式就好比给一辆F1赛车装上越野轮胎去跑赛道硬件再强也发挥不出来。今天我就结合这次踩坑经历和后续的多次实践把Mellanox网卡工作模式切换这件事从为什么、是什么到怎么做彻底讲清楚。2. 理解Mellanox网卡的三种核心工作模式在动手修改任何配置之前我们必须先理解我们有哪些选项以及每个选项背后的含义。Mellanox的网卡特别是ConnectX系列及更新型号通常支持三种基础工作模式ETH、InfiniBand和VPI。这不仅仅是协议的区别更是网卡芯片内部处理逻辑的根本性划分。2.1 ETH (Ethernet) 模式标准的以太网公民这是最常见、也是出厂默认的模式。在此模式下网卡将自己完全呈现为一块标准的以太网卡。操作系统视角系统识别到的是一个普通的以太网接口如eth0,ens1f0。你可以像使用Intel或Broadcom网卡一样使用它配置IP地址、子网掩码、网关所有基于TCP/IP的应用程序无需任何修改即可运行。硬件能力网卡依然会启用其强大的硬件卸载能力例如LRO/TSO大型接收卸载和大型发送卸载大幅降低CPU处理网络协议栈的负担。RSS接收侧扩展将网络流量分散到多个CPU核心提升多核处理能力。SR-IOV单根I/O虚拟化用于虚拟化环境。部分RoCE支持可以运行RoCE v1或RoCE v2实现RDMA。但是这种支持可能不是最优化的因为硬件逻辑可能仍以标准以太网数据包处理流程为主。适用场景通用服务器、虚拟化主机、存储节点如iSCSI、NFS over TCP/IP以及不需要极致RDMA性能的网络环境。如果你的应用栈完全基于TCP/IP且暂时用不到RDMA那么ETH模式是最简单、最兼容的选择。2.2 InfiniBand (IB) 模式为高性能计算而生在此模式下网卡将自己呈现为一块InfiniBand主机通道适配器HCA。操作系统视角系统识别到的是InfiniBand设备接口名通常是ib0,ib1等。它不再有传统的IP地址除非配置IPoIB而是使用GID全局标识符和LID本地标识符进行通信。硬件能力网卡的硬件逻辑完全为InfiniBand协议栈优化。除了包含类似以太网的卸载功能外它原生支持原生RDMA这是InfiniBand的看家本领延迟极低CPU占用几乎为零。自适应路由、拥塞控制等高级特性专为大规模、低延迟的HPC和AI集群设计。适用场景传统的InfiniBand网络集群运行MPI如OpenMPI, Intel MPI、并行文件系统如Lustre, GPFS等典型HPC工作负载。需要注意的是要使用此模式你的整个网络交换机、线缆都必须是InfiniBand架构。2.3 VPI (Virtual Protocol Interconnect) 模式一卡双模的智能选择VPI是Mellanox的一大特色也是解决我们开头那个问题的关键。VPI意为“虚拟协议互联”它让一块物理网卡可以同时虚拟化出以太网和InfiniBand两种类型的接口。操作系统视角系统会看到两类设备。例如一个端口可能会呈现为一个以太网接口eth0和一个InfiniBand接口ib0。这两个接口是并列的你可以同时使用它们。硬件能力这是最灵活也是性能潜力最大的模式。网卡硬件可以根据数据流的类型智能地选择最优化的处理路径。当流量走以太网接口TCP/IP时它使用高度优化的以太网处理流水线。当流量走InfiniBand接口RDMA/IB时它则调用为InfiniBand深度优化的硬件引擎。这种“专线专用”的架构避免了在单一模式下为兼容另一种协议而做出的性能妥协。适用场景混合网络环境或追求极致RDMA over Ethernet (RoCE) 性能的环境。这是目前数据中心和云环境中越来越主流的配置。例如你可以用以太网接口做带外管理、普通数据访问同时用InfiniBand接口运行RoCE协议为AI训练、分布式存储提供超高带宽和超低延迟的RDMA网络。重要提示VPI模式下的“InfiniBand接口”运行RoCE时其底层物理网络仍然是以太网需要支持DCB等特性的交换机。它利用的是InfiniBand的传输层和RDMA语义跑在以太网的链路层之上。这才是“RoCE”的真正形态。为了更直观地对比我将三种模式的核心差异总结如下表特性ETH 模式InfiniBand 模式VPI 模式呈现的接口以太网接口 (如 eth0)InfiniBand接口 (如 ib0)同时呈现以太网和InfiniBand接口协议栈TCP/IPInfiniBand 协议栈TCP/IP和InfiniBand 协议栈RDMA支持通过RoCE支持可能非最优原生支持性能最优通过RoCE支持性能最优专有硬件路径网络要求标准以太网InfiniBand 网络标准以太网用于RoCE时需支持DCB/PFC主要用途通用网络兼容性优先纯InfiniBand HPC/AI集群混合负载追求极致RoCE性能一卡多用配置复杂度低中需配置Subnet Manager等中高3. 实战使用mlxconfig工具切换工作模式理论清楚了接下来就是实操。Mellanox提供了一个强大的固件配置工具叫mlxconfig它包含在Mellanox Firmware Tools (MFT)软件包中。这是进行网卡模式切换、查询和高级参数调优的官方标准工具。3.1 准备工作安装MFT和确认设备首先你需要安装MFT。可以从NVIDIA官方网络下载页面获取对应你操作系统Linux的安装包。# 以RedHat/CentOS为例安装下载好的RPM包 sudo rpm -ivh mft-4.26.0-88-x86_64-rpm.tgz # 启动MFT服务 sudo mst start安装并启动后使用mst status命令查看系统识别到的Mellanox设备。sudo mst status输出会类似于MST modules: ------------ MST PCI module is not loaded MST PCI configuration module loaded MST devices: ------------ /dev/mst/mt4123_pciconf0 - PCI configuration cycles access. domain:bus:dev.fn0000:17:00.0 addr.reg88 data.reg92 /dev/mst/mt4123_pci_cr0 - PCI direct access. domain:bus:dev.fn0000:17:00.0 bar0x98800 size0x100000这里/dev/mst/mt4123_pciconf0就是我们用来配置的设备文件你的设备名可能不同通常是mt开头。3.2 查询当前工作模式在修改之前务必先查看当前设置。使用mlxconfig命令的-d参数指定设备q参数进行查询。sudo mlxconfig -d /dev/mst/mt4123_pciconf0 q | grep -i link_type关键输出行是LINK_TYPE_P1和LINK_TYPE_P2对于双端口卡。其值含义为ETH (1): 以太网模式IB (2): InfiniBand模式VPI (3): VPI模式例如如果输出LINK_TYPE_P1ETH说明端口1当前工作在以太网模式。3.3 执行模式切换以切换为VPI模式为例切换模式需要重置网卡固件参数这通常需要系统重启才能生效。这是一个需要谨慎对待的操作。假设我们要将端口1和端口2都设置为VPI模式命令如下sudo mlxconfig -d /dev/mst/mt4123_pciconf0 set LINK_TYPE_P13 LINK_TYPE_P23执行后工具会提示Device #1: Device type: ConnectX5 Name: MCX556A-ECAT_Ax Description: ConnectX-5 VPI adapter card; EDR IB (100Gb/s) and 100GbE; dual-port QSFP28; PCIe4.0 x16; ROHS R6 Device: /dev/mst/mt4123_pciconf0 Configurations: Next Boot New LINK_TYPE_P1 ETH(1) VPI(3) LINK_TYPE_P2 ETH(1) VPI(3) Apply new Configuration? (y/n) [n] : y Applying... Done! I- Please reboot machine to load new configurations.你必须输入y确认然后按照提示重启服务器。重启后新的模式才会生效。3.4 切换后的系统识别与驱动加载服务器重启后根据你切换到的模式操作系统会识别到不同的设备。切换为ETH模式系统会看到普通的网络接口如ens1f0使用ip link或ifconfig查看。切换为IB模式系统会看到InfiniBand设备。你需要确保ibverbs和libmlx5等用户态库已安装并使用ibv_devinfo命令查看设备信息。切换为VPI模式这是最有趣的情况。你会同时看到两类设备。以太网部分仍然由mlx5_core驱动管理出现eth接口。InfiniBand部分需要mlx5_ib驱动。使用lsmod | grep mlx5应该能看到这两个驱动都已加载。使用ibdev2netdev命令可以清晰地看到两者的关联关系ibdev2netdev输出示例mlx5_0 port 1 ens1f0 (Up) mlx5_0 port 2 ens1f1 (Up)这表示InfiniBand设备mlx5_0的两个端口分别关联到以太网设备ens1f0和ens1f1。至此VPI模式配置成功。4. 模式切换的深层影响与避坑指南切换模式不是简单地改个名字它会引发一系列连锁反应。下面这些坑都是我或同事们实实在在踩过的。4.1 驱动与固件的强耦合性这是最大的一个坑。网卡的固件Firmware和主机上的驱动程序Driver必须兼容你设置的工作模式。问题现象模式切换重启后网卡无法被系统识别或者识别错误例如在VPI模式下只看到了以太网卡没看到IB设备。根因分析较旧的驱动可能无法正确初始化新模式下网卡的某些硬件模块。反之新的固件可能要求新版本的驱动才能支持所有特性。解决方案升级驱动使用NVIDIA官方提供的最新稳定版OFEDOpenFabrics Enterprise Distribution驱动或MOFEDMellanox OFED驱动。这些驱动包经过了广泛的兼容性测试。升级固件使用mlxfwmanager工具查询并升级网卡固件到最新稳定版。固件更新同样需要重启生效。操作顺序建议先升级驱动再升级固件最后进行模式切换。每次大的变动后都进行一次重启。4.2 网络配置的彻底重置当你从ETH模式切换到IB或VPI模式时原来在以太网接口上配置的所有IP地址、路由、绑定bonding等信息都会失效。因为操作系统面对的是一个“新”的设备。避坑操作在切换前记录下原有的网络配置IP、网关、DNS等。切换模式并重启后你需要重新配置网络。对于VPI模式你需要决定以太网接口ens1f0用来做什么是否配置管理IPInfiniBand接口用于RoCE所在的网络如何规划通常需要配置一个独立的、支持无损特性的以太网网络PFCECN。如果你的系统使用NetworkManager或netplan等配置管理工具可能需要更新对应的配置文件。4.3 性能调优参数的继承与失效很多网络性能调优参数如MTU、RSS队列数、中断绑定等是与设备关联的。模式切换后这些针对旧模式优化的参数可能不适用于新模式甚至可能引发问题。典型案例在ETH模式下你将MTU设置为9000巨帧以提升吞吐。切换到VPI模式后你仍然需要为新的以太网接口设置MTU。更重要的是用于RoCE的InfiniBand接口其有效MTUactive_mtu是由底层网络路径决定的你需要在交换机上确保MTU一致性并可能使用ip link set dev ib0 mtu 4096这样的命令来设置IPoIB的MTU如果用了IPoIB但RoCE本身的MTU是另一回事。建议切换模式后将其视为一次全新的网络部署。重新进行基础的性能调优设置正确的MTU端到端一致。根据CPU拓扑优化RSS队列和中断亲和性irqbalance服务或手动设置。如果使用RoCE务必在交换机和主机上启用并正确配置优先级流量控制PFC和显式拥塞通知ECN这是实现无损以太网、保证RDMA性能的基石。4.4 监控与管理工具的变更你之前使用的网络监控工具如ethtool,nload主要针对以太网接口。切换到IB或VPI模式后你需要学习使用InfiniBand体系的监控工具。新工具链ibstat,ibstatus: 查看IB设备状态。ibv_devinfo: 查看设备详细信息包括支持的功能。perfquery或ibqueryerrors.pl: 查询IB端口的性能计数器和错误信息。rdma命令系列如rdma link,rdma res用于管理RDMA资源。心态调整不要试图用ethtool去查看ib0接口的统计信息那是行不通的。拥抱新的工具集是必须的。5. 决策树我到底该用哪种模式看了这么多最后给出一个简单的决策流程帮助你在面对一台装有Mellanox网卡的服务器时做出选择你的物理网络是什么纯InfiniBand网络- 选择InfiniBand模式。别无他选。纯以太网网络- 进入第2步。你在以太网上主要跑什么协议只有传统的TCP/IP应用Web服务、数据库、普通文件共享- 选择ETH模式。最简单最省心。需要运行RDMA应用如MPI, NVMe-oF, Spark RDMA, 分布式AI训练- 进入第3步。你对RDMA性能的要求有多高以及未来是否有混合负载需求追求极致的RoCE性能且愿意花时间配置无损网络PFC-强烈推荐 VPI模式。它能提供最接近原生InfiniBand的RDMA体验。只是测试或对性能要求不极致且希望配置简单 - 可以尝试在ETH模式下启用RoCE但需知可能有性能折损。服务器同时需要跑高性能RDMA业务和常规TCP/IP管理流量-必须选择 VPI模式。你可以用关联的以太网口做管理网用IB口跑业务物理线缆只需一根。一个经验法则在新的数据中心项目中如果涉及到AI、HPC或高性能存储物理网络采用以太网但应用需要RDMA那么VPI模式是事实上的标准选择。它提供了面向未来的灵活性和最佳的性能潜力。切换Mellanox网卡的工作模式从点击一个命令来看是简单的但其背后是对整个网卡工作逻辑的重定义。它影响着驱动加载、网络配置、性能表现和运维工具链。最关键的是这个选择必须与你的应用需求和物理网络架构对齐。盲目切换只会带来麻烦而正确的选择则能让昂贵的硬件发挥出百分百的威力。下次当你面对Mellanox网卡性能未达预期的困惑时不妨先问一句“你的网卡模式选对了吗”