常见IB网络不通问题记录

举报
tsjsdbd 发表于 2023/06/09 18:23:06 2023/06/09
【摘要】 如果遇到IB网络不通,可以试着从高层往底层逐步分析看看。仅记录下,供难友参考:NCCL不通、ib_write_bw不通、ibv_rc_pingpong不通、rping不通、ping不通

 

如果遇到IB网络不通,可以试着从高层往底层逐步分析看看。仅记录下,供难友参考:

 

一、NCCL不通

报错:

machine-19: [0] transport/net_ib.cc:839 NCCL WARN NET/IB : Got completion with error 12, opcode 0, len 0, vendor err 129

原因:错误12,说明RDMA网络不通。

需要分析底层网络为什么不通。

比如:

  • 是否单纯网络不通
  • pfc流控不对导致丢包。

如果是(2)这种偶现不通的话,可以参考pfc设置规则:《为什么华为云上AI训练必须设置NCCL_IB_TC=128

 

二、ib_write_bw不通

报错1:

root@tsjsdbd:~# ib_write_bw
----------------------------------------------------------
                    RDMA_Write BW Test
 Dual-port       : OFF		Device         : mlx4_0
 Number of qps   : 1		Transport type : IB
 Connection type : RC		Using SRQ      : OFF
 CQ Moderation   : 100
 Mtu             : 2048[B]
 Link type       : IB
 Max inline data : 0[B]
 rdma_cm QPs	 : OFF
 Data ex. method : Ethernet
--------------------------------------------------------
 local address: LID 0x81 QPN 0x160b3 PSN 0xa072 RKey 0x68010802 VAddr 0x007f184171a000
 remote address: LID 0x35 QPN 0xc5a0b PSN 0xaa465a RKey 0x20010802 VAddr 0x007f3ca2b9c000
---------------------------------------------------------------------------------------
 #bytes     #iterations    BW peak[MB/sec]    BW average[MB/sec]   MsgRate[Mpps]
ethernet_read_keys: Couldn't read remote address
 Unable to read to socket/rdam_cm
 Failed to exchange data between server and clients

报错2

root@tsjsdbd:~# ib_write_bw -F 29.26.130.185 -d mlx5_5
----------------------------------------------------------
                    RDMA_Write BW Test
 Dual-port          : OFF                 Device         : mlx5_5
 Number of qps   : 1                   Transport type : IB
 Connection type : RC                 Using SRQ      : OFF
 PCIe relax order: ON
 ibv_wr* API      : ON
 TX depth          : 128
 CQ Moderation   : 1
 Mtu             : 2048[B]
 Link type       : Ethernet
 GID index         : 3
 Max inline data : 0[B]
 rdma_cm QPs       : OFF
 Data ex. method : Ethernet
--------------------------------------------------------
 local address: LID 0x81 QPN 0x160b3 PSN 0xa072 RKey 0x68010802 VAddr 0x007f184171a000
 GID: 00:00:00:00:00:00:00:00:00:00:255:255:29:26:130:235
 remote address: LID 0x35 QPN 0xc5a0b PSN 0xaa465a RKey 0x20010802 VAddr 0x007f3ca2b9c000
 GID: 00:00:00:00:00:00:00:00:00:00:255:255:29:26:130:185
---------------------------------------------------------------------------------------
 #bytes     #iterations    BW peak[MB/sec]    BW average[MB/sec]   MsgRate[Mpps]
 Completion with error at client
 Failed status 12: wr_id 0 Syndrom 0x81
scnt=128, ccnt=0
 Failed to complete run_iter_bw function successfully

 说明网络不通,需要继续分析RDMA链路。

 

三、ibv_rc_pingpong不通

报错:

ibv_rc_pingpong -d mlx5_bond_0 -g 3 29.28.195.228
  local address:  LID 0x0000, QPN 0x01417f, PSN 0x63d7fa, GID ::ffff:29.28.201.21
  remote address: LID 0x0000, QPN 0x00132d, PSN 0x8c0a5b, GID ::ffff:29.28.195.228
Failed status transport retry counter exceeded (12) for wr_id 2
parse WC failed 1

说明网络不通,需要分析IP网络为什么不通。

四、rping不通

报错1

rping -c -a 29.28.195.228 -v -C 10
cma event RDMA_CM_EVENT_ADDR_ERROR, error -110
waiting for addr/route resolution state 1

说明地址连不上,需要继续判断IP链路是否通。

 

报错2

rping -c -a 29.28.197.165 -C 10 -v
cma event RDMA_CM_EVENT_REJECTED, error 8
wait for CONNECTED state 4
connect error -1

这个Reject表示连接被拒绝了。只是单纯的因为 rping 工作时需首先启动一个 server side 进程,然后从 client side 试图向 server side 发起连接。

所以要先启动Server端。

rping -s 29.28.201.211 -v

 

五、ping不通

报错:

ping 29.28.195.228
PING 29.28.195.228 (29.28.195.228) 56(84) bytes of data.
From 29.28.204.80 icmp_seq=1 Destination Host Unreachable
From 29.28.204.80 icmp_seq=2 Destination Host Unreachable
From 29.28.204.80 icmp_seq=3 Destination Host Unreachable
From 29.28.204.80 icmp_seq=4 Destination Host Unreachable
^C
--- 29.28.195.228 ping statistics ---
5 packets transmitted, 0 received, +4 errors, 100% packet loss, time 4045ms

这个估计就快到根错误了,假设交换机连接都是OK的。那基本就是路由设置问题:

可以用

# ip route get 29.28.204.80 from 29.28.201.211
29.28.204.80 from 29.28.201.211 dev enp137s0f0 uid 0

来确认发送报文的网卡是否选择正确。

 

如果是「同网段多IB网卡」的情况,如A100 或者 A800服务,带8IB网卡,并都在同一个网段。则需要通过策略路由设置「源地址路由」规则来解决各个IP互通的问题。见:RoCE多网卡时,报文可以过去,但是回不来

 

六、ARP表不对

如果ping是通的,但是rping又不通。 那就还要再底层看一看了(你也算天选之子了,跑这么底层定位错误)。

正常情况,学习到的arp表,一个IP地址对应一个网卡的MAC地址。

如下:

/home/tsj # arp -n | grep 29.28.201.211
29.28.201.211            ether  08:c0:eb:8c:10:6d   C                     enp137s0f1

两端同时查看,如果发现一个IP地址,学习到的arp记录有多条不一样的,说明arp设置不对。

需要

  • 先清空arp
  • 设置arp应答规则

 

其中,

1)清空arp表有2种方式:

  • 指定某个IP清空:
arp -d 192.168.1.1
  • 清空所有arp:(咱们直接执行这个就行)
ip -s -s neigh flush all

 

2)设置arp应答规则:

sysctl -w net.ipv4.conf.all.arp_ignore=1
sysctl -w net.ipv4.conf.all.arp_announce=2

意思是只答复对应网卡的arp响应。

设置完后,再ping一次后,确认两边学习到的arp表是正确的。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。