You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

InfiniBand UD(不可靠数据报)通信无法接收消息问题排查

UD模式RDMA通信故障排查:配置检查点与调试建议

一、UD模式特有配置检查点

  • QKey全匹配验证:确保Sender发送WR中的wr.wr.ud.remote_qkey与Receiver QP初始化时的qkey完全一致(32位全匹配,不能只校验低16位)。ConnectX-6对QKey校验严格,任何一位不匹配都会直接丢弃报文。
  • QP类型与初始化参数:确认Receiver的QP创建类型是IBV_QPT_UD,而非RC模式的IBV_QPT_RC。同时检查QP初始化的ibv_qp_init_attr:UD模式下Sender可设置sq_sig_all=1(确保每个发送请求生成完成事件),Receiver的QP无需配置dest_qp_num(该参数仅适用于RC模式)。
  • LID与SL一致性:Sender指定的wr.wr.ud.remote_lid必须是Receiver端口的有效LID,同时双方的SL(服务级别)需完全一致——UD模式下SL影响报文路由,不匹配会导致交换机丢弃报文。可通过ibv_devinfo命令查看端口LID和支持的SL范围。
  • MR权限与内存有效性:Receiver的接收MR必须注册IBV_ACCESS_LOCAL_WRITE权限(硬件需写入数据到本地内存);Sender的发送MR需注册IBV_ACCESS_LOCAL_READ权限(硬件需读取本地数据发送)。同时确保接收WR的sg_list指向的内存块长度不小于发送数据大小,避免因内存不足丢弃报文。
  • CQ配置合理性:检查Receiver的CQ创建时cqe参数是否足够(至少大于等于待处理的接收请求数),避免CQ满导致完成事件丢失。若使用中断通知,确认comp_vector配置正确,无中断绑定异常。
  • 端口与PKey状态:确认双方端口处于IBV_PORT_ACTIVE状态,且使用的PKey在端口PKey列表中标记为active(通过ibv_devinfo查看pkey字段,后缀为0000的为active状态)。

二、调试建议

硬件与基础环境验证

  • 运行官方UD模式测试工具ibv_rc_pingpong -u,若该工具能正常通信,说明硬件、网络及驱动无问题,故障出在你的代码实现;若工具也失败,检查交换机是否开启UD模式、是否存在ACL限制端口间UD报文传输。
  • 用ibv_traceroute执行Sender到Receiver的UD路由追踪,确认报文能否到达目标端口。

代码层面调试

  • 检查Sender端ibv_post_send()的返回值,若返回非0,根据错误码定位问题(如EINVAL通常是WR参数配置错误)。
  • Receiver端调用ibv_poll_cq()前,需调用ibv_req_notify_cq()设置事件通知(注意该通知单次有效,每次ibv_poll_cq()后需重新调用),避免进程因未收到通知陷入无限等待。
  • 打印关键参数比对:Sender输出remote_lid、remote_qkey、remote_qpn;Receiver输出本地lid、qkey、qpn,逐一确认参数匹配。

系统与硬件日志排查

  • 查看系统日志dmesg或/var/log/syslog,搜索mlx5相关条目,排查是否有硬件报错(如报文丢弃、QP状态异常)。
  • 用ethtool -S <ib_interface>查看端口统计信息,重点关注udp_datagrams_dropped、qp_errors等指标,确认是否有报文被硬件或驱动丢弃。

内容的提问来源于stack exchange,提问作者Nariaki Tateiwa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 06:53:29