RDMA Infiniband配置故障 端口Down启用时报无法打开MAD端口错误
RDMA/Infiniband 端口Down故障排查方案
核心根因前置判断
从ibstatus返回的link_layer: Ethernet字段可以直接定位核心问题:当前mlx5网卡端口工作在以太网RoCE模式,而非原生Infiniband模式。所有IB管理指令(包括MAD端口交互、子网发现、端口状态配置)都依赖IB链路层,链路层模式不匹配时,自然会出现UMAD端口打开失败、SM LID为0x0、物理状态Disabled、子网发现失败的报错。
分步排查修复流程
- 第一步:修正网卡端口链路模式
Mellanox ConnectX系列网卡支持IB/Ethernet模式切换,默认出货可能为以太网模式:- 执行
mst start加载Mellanox配置工具驱动 - 执行
mlxconfig -d /dev/mst/mt*_pciconf0 q查看端口配置,找到对应使用端口的LINK_TYPE_P1/LINK_TYPE_P2参数:参数值为1代表以太网模式,2代表IB模式 - 若当前模式为以太网,执行
mlxconfig -d /dev/mst/mt*_pciconf0 set LINK_TYPE_P1=2(对应端口1)修改配置,执行mlxfwreset -d /dev/mst/mt*_pciconf0 reset重启网卡加载配置,不需要整机重启。 - 复位后重新执行
ibstatus,确认link_layer字段变为InfiniBand再做后续操作。
- 执行
- 第二步:部署并启动子网管理器(OpenSM)
IB链路必须有子网管理器负责LID分配、链路协商、路由计算,两台节点直连无IB交换机的场景下,必须至少在其中一台节点启动OpenSM服务:- 确认已安装
opensm软件包 - 执行
systemctl start opensm启动服务,systemctl enable opensm配置开机自启 - 等待10秒左右重新查看端口状态,正常情况下SM LID会变为非0值,端口状态从DOWN切换为ACTIVE。
- 确认已安装
- 第三步:物理链路与参数一致性校验
如果前两步操作后端口仍为Disabled状态,排查物理层问题:- 确认使用的线缆、光模块为IB认证规格,普通以太网DAC/AOC光模块无法和IB端口协商成功,会直接触发物理层Disabled状态
- 检查两端端口速率、FEC配置是否一致,不要强制锁死单端速率,先开启自动协商测试
- 确认固件升级后执行过
mlxfwreset复位设备,未复位的情况下网卡仍会运行旧版本固件,升级操作不生效。
- 第四步:修复UMAD端口打开报错
执行ibportstate返回的can't open UMAD port报错,除了链路层模式不匹配的原因,还要排查内核模块加载问题:- 执行
modprobe ib_umad ib_uverbs加载IB用户态驱动模块 - 链路未激活时不要用LID寻址方式执行端口操作,之前用的
ibportstate -L 1 3 enable参数错误,正确命令为ibportstate mlx5_0 1 enable,直接指定设备名和本地端口号即可。
- 执行
验证标准
配置完成后执行ibstat查看端口信息,满足以下条件即为链路正常:
- state字段为
4: ACTIVE - phys state字段为
5: LinkUp - base lid、sm lid均为非0值
- 执行
ibping对端节点地址可正常连通。
补充说明:如果实际部署场景是用RoCE(以太网链路层跑RDMA),不需要切换到IB模式。这种场景下不要使用ibutils系列IB专属管理工具,直接用
rdma link查看RDMA状态,配置PFC、ECN等无损以太网参数即可,RoCE模式不需要启动OpenSM,也不会响应IB层MAD管理请求。
内容的提问来源于stack exchange,提问作者DumbLoawai
相关产品推荐
相关产品推荐

