在CentOS系统中成功配置Infiniband(IB)网络,实现RDMA(远程直接内存访问)的高性能传输,核心在于正确安装厂商官方OFED驱动、启用子网管理器(SM)以及合理配置IPoIB接口参数,这一过程不仅涉及基础的驱动加载,更需要对MTU大小、传输模式及内核内存参数进行深度优化,以确保在低延迟和高吞吐场景下发挥硬件极限性能。
环境准备与硬件识别
配置工作的第一步是确认硬件状态与操作系统环境的兼容性,Infiniband网卡(HCA)不同于普通以太网卡,CentOS默认内核虽然包含基础IB驱动,但往往缺乏针对特定硬件的性能优化和最新特性支持,在进行任何配置前,必须通过lspci | grep i infiniband命令确认硬件型号,通常为Mellanox(现NVIDIA)或Intel的产品。

检查内核版本与开发工具包是否完备,执行uname r确认内核版本,并安装gcc、make、kerneldevel、kernelheaders等编译工具,这一步看似基础,实则是后续编译安装OFED驱动的基础,缺少任何一个依赖包都会导致驱动安装失败,进而影响后续的整个网络栈搭建。
OFED驱动的安装与部署
为了获得最佳的RDMA性能,强烈建议放弃系统自带的驱动,转而安装硬件厂商提供的OpenFabrics Enterprise Distribution(OFED)驱动,以Mellanox网卡为例,MLNX_OFED驱动针对其硬件进行了深度优化,包含了针对特定CPU指令集的加速路径。
下载对应OS版本的OFED安装包后,使用tar zxvf解压,并运行./mlnxofedinstall脚本,在安装过程中,建议添加addkernelsupport参数,这将驱动针对当前运行的内核进行重新编译,确保最大的兼容性,安装完成后,必须加载必要的内核模块,如ib_ipoib、ib_core和mlx4_core或mlx5_core(取决于硬件代际),通过lsmod | grep ib命令确认模块已成功加载,此时ibv_devinfo命令应能输出详细的端口信息,表明底层驱动已就绪。
子网管理器(SM)的关键配置
Infiniband网络与以太网最大的区别在于,它必须依赖子网管理器来管理路由和分区,如果没有SM运行,IB网络将无法正常通信,在小型测试环境中,通常将其中一台配置了IB网卡的主机同时配置为SM。
在CentOS上,通常使用opensm作为子网管理器软件,通过yum install opensm安装后,编辑/etc/opensm/opensm.conf配置文件,核心配置在于确保guid与网卡端口GUID匹配,并开启log_level以便于排查故障,配置完成后,使用systemctl enable opensm && systemctl start opensm启动服务,通过ibstat查看端口状态,State应显示为ACTIVE,且Physical State为LinkUp,这标志着SM已成功接管网络。
IPoIB网络接口配置与模式选择
为了让上层应用(如TCP/IP应用)能够通过Infiniband网络通信,需要配置IP over InfiniBand(IPoIB),IPoIB有两种工作模式:Datagram(数据报)模式和Connected(连接)模式。

Datagram模式类似于UDP,延迟较低,但不支持包分片,MTU通常限制在2044字节,且在丢包时性能下降明显,Connected模式类似于TCP,建立了稳定的连接,支持更大的MTU(最高可达65520字节),且在传输层提供了更好的可靠性,适合高吞吐量的数据传输场景。
在CentOS中,进入/etc/sysconfig/networkscripts/目录,创建ifcfgib0文件,建议设置为Connected模式以获得更优的吞吐性能,配置示例如下:
DEVICE=ib0 BOOTPROTO=static IPADDR=192.168.10.1 NETMASK=255.255.255.0 ONBOOT=yes CONNECTED_MODE=yes MTU=65520
重启网络服务systemctl restart network后,使用ip a查看ib0接口,应能看到配置的IP地址和巨大的MTU值,需要注意的是,通信双方必须将MTU设置为一致,否则会导致ping不通或数据传输异常。
性能验证与内核参数深度调优
配置完成后,验证是必不可少的环节,首先使用ping测试连通性,由于IB网络通常用于高性能计算,建议使用大包测试,如ping s 60000 192.168.10.2,以验证大包传输不丢包,随后,安装perftest工具包,使用ib_write_bw和ib_read_bw测试带宽,使用ib_send_bw测试延迟。
若测试结果未达到预期,需进行内核参数调优,编辑/etc/sysctl.conf,增加网络内存缓冲区大小:
net.core.rmem_max = 134217728 net.core.wmem_max = 134217728 net.ipv4.tcp_rmem = 4096 87380 134217728 net.ipv4.tcp_wmem = 4096 65536 134217728
执行sysctl p使其生效,关闭CPU的节能模式(Cstates)和Pstates,将CPU频率固定在最高性能档位,可以显著降低RDMA操作的延迟,这些微小的调整往往是释放Infiniband最后10%性能潜力的关键。

相关问答
Q1: 在配置Infiniband时,为什么必须启动子网管理器(SM),而以太网交换机不需要? A1: Infiniband架构采用了基于转控分离的设计,IB交换机仅负责数据的高速转发,而路由表、分区管理以及网络的初始化配置全部由子网管理器(SM)负责,没有SM,IB交换机不知道如何将数据包从一个端口路由到另一个端口,整个网络处于“未初始化”状态,无法进行任何通信,而传统以太网交换机通常集成了数据转发和控制平面(如生成树协议、MAC学习等),因此无需额外的独立管理组件即可工作。
Q2: IPoIB的Connected模式和Datagram模式在实际应用中应如何选择? A2: 选择主要取决于应用场景对延迟和吞吐的权衡,Datagram模式延迟极低,适合对延迟极其敏感的小包消息传递应用(如某些高频交易系统或集群心跳检测),但其MTU受限,且不具备传输层可靠性保障,Connected模式虽然建立连接有轻微开销,但支持高达64KB的巨型帧,且在链路不稳定时表现更稳健,能提供接近线速的带宽吞吐,适合大数据传输、分布式存储(如Lustre、GPFS)等高吞吐场景,在绝大多数高性能计算集群中,Connected模式是首选。
如果您在配置过程中遇到驱动冲突或MTU设置问题,欢迎在下方留言分享您的具体报错信息或配置经验,我们将共同探讨解决方案。

