摘要:如果遇到IB网络不通,可以试着从高层往底层逐步分析看看。

本文分享自华为云社区《常见IB网络不通问题记录》,作者: tsjsdbd 。

如果遇到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 : OFFDevice : mlx4_0
Number of qps : 1Transport type : IB
Connection type : RCUsing 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服务,带8个IB网卡,并都在同一个网段。则需要通过策略路由设置「源地址路由」规则来解决各个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表是正确的。

点击关注,第一时间了解华为云新鲜技术~

6个常见的IB网络不通问题的更多相关文章

  1. Java Socket常见异常处理 和 网络编程需要注意的问题

    在java网络编程Socket通信中,通常会遇到以下异常情况: 第1个异常是 java.net.BindException:Address already in use: JVM_Bind. 该异常发 ...

  2. vbox虚拟机和vm虚拟机 虚拟机网络不通的解决方法

    vm网络不通的情况: 第一步 :打开物理机, 选中“计算机”*(,右键—管理—服务,找到以VM开头的服务,选中后,右键—启动,就可以了.如图: 第二步: 这样基本就可以了,如果还不行 如果重启失效了, ...

  3. 一次Flannel和Docker网络不通定位问题

    一次Flannel和Docker网络不通定位问题    查看路由表的配置 路由表情况 [root@k8s-master ~]# route -n Kernel IP routing table Des ...

  4. oracle 两个网络不通的远程数据库如何将一个库中的表数据导入到另一个库中?

      1.情景展示 本地可以直接连接2个不同的远程数据库: 两个数据库由于网络不通,无法建立DBLINK完成数据传输: 将A库中C表的数据插入到B库中C表,如何快速实现? 2.解决方案 通过kettle ...

  5. vmware克隆的linux机器网络不通

    当我使用vmware的完全克隆功能克隆出两台虚拟机之后,登录发现网络不通,仔细检查发现几个问题,由于克隆之后默认的eth0网卡在系统中会变成eth1,导致之前的eth0网卡配置信息无法加载,网络不通, ...

  6. 由安装两块网卡的linux系统中引起网络不通想到的

    由安装两块网卡的linux系统中引起网络不通想到的 一天,小王突然急匆匆的来找我,他说:"我在机子上刚装的redhat怎么老也ping不通服务器,我网卡的驱动都安装了,ping 自己的两块网 ...

  7. Linux运维记 - 重启网卡后,网络不通

    前言 不小心重启了线上服务器的网卡,结果整个网络不通了,就算使用127.0.0.1访问都不行,第一次遇到这种问题,当时就六神无主了,两个人排查了好久也没找到原因,万分火急.排查内核日志发现网卡状态不断 ...

  8. vmware虚拟机网络不通原因之一

    我是在华硕笔记本上安装的vmware workstation.而且我用虚拟机的网络模式喜欢选“桥接”模式. 最近在虚拟上做实验,打开虚拟机windows 2003后,网卡配置静态ip后显示状态正常,但 ...

  9. 常见的GAN网络的相关原理及推导

    常见的GAN网络的相关原理及推导 在上一篇中我们给大家介绍了GAN的相关原理和推导,GAN是VAE的后一半,再加上一个鉴别网络.这样而导致了完全不同的训练方式. GAN,生成对抗网络,主要有两部分构成 ...

  10. traceroute排查网络故障 www.qq.com排查网络故障网络不通 先ping自己

    网络不通 先ping自己 在ping网关 再ping外网 再ping别人的ip 背景需求 Linux 因为其强大的网络处理能力,被广泛用于网关(实例链接)和服务器(实例链接).实际工作中,快速排查这些 ...

随机推荐

  1. pandas之字符串操作

    Pandas 提供了一系列的字符串函数,因此能够很方便地对字符串进行处理.在本节,我们使用 Series 对象对常用的字符串函数进行讲解.常用的字符串处理函数如下表所示: 函数名称 函数功能和描述 l ...

  2. [大数据]sqoop安装与运用

    1 文由 项目使用场景:OLTP Oracle 数据导入到 OLAP HIVE 2 Sqoop简述 Apache Sqoop(TM) 是一款开源的ETL工具,设计用于在 Apache Hadoop和结 ...

  3. [Windows]解决:windows连接远程桌面-出现身份验证错误,要求的函数不受支持( CredSSP加密数据库修正)[转载]

    文由 需要在本地Windows系统电脑通过远程桌面(mstsc)另一台Windows服务器,将其内的数据拷贝过来.但却发生了这样的异常 解决方案 step1 Win+R step2 打开注册表: gp ...

  4. [ElasticSearch]#Search Guard#sgadmin参数说明

    sgadmin.sh/sgadmin.bat是Elastic Search的开源安全组件Search Guard内的可执行脚本. 在修改SG组件的用户角色.权限.密码时,需使用到此脚本. 在修改完Se ...

  5. 【D01】Django中实现带进度条的倒计时功能(简易版)

    首先说明简易版是只有一个 倒计时 和一个 进度条,页面加载后自动开始计时,下次计时需要手动刷新页面. 后续会更新实现完整的倒计时功能的文章 前期准备 前端框架 你需要准备一些前端框架:Bootstra ...

  6. 帝国ECMS静态生成为一行代码/静态页面打乱教程

    一.内容页变成一行修改1.打开文件e/class/functions.php2.找到以下函数 function GetHtml($classid,$id,$add,$ecms=0,$doall=0) ...

  7. 如何根据需求选择合适的数据库管理工具?Navicat OR DBeaver

    1.写在前面 在阅读本文之前,糖糖给大家准备了Navicat和DBeaver安装包,在公众号内回复"Navicat"或"DBeaver"或"数据库管理 ...

  8. AI人工智能简史

    AI人工智能简史 最近学习AI,顺便整理了一份AI人工智能简史,大家参考: 1951年 第一台神经网络机,称为SNARC: 1956年 达特茅斯学院会议,正式确立了人工智能的研究领域: 1966年 M ...

  9. c语言趣味编程(4)抓交通肇事犯

    一.问题描述 一辆卡车违反交通规则,撞人后逃跑.现场有三人目击该事件,但都没有记住车号,只记下车号的一些特征. 甲说:牌照的前两位数字是相同的: 乙说:牌照的后两位数字是相同的,但与前两位不同: 丙是 ...

  10. 2023-03-16:给定一个由 0 和 1 组成的数组 arr ,将数组分成 3 个非空的部分, 使得所有这些部分表示相同的二进制值。 如果可以做到,请返回任何 [i, j],其中 i+1 < j

    2023-03-16:给定一个由 0 和 1 组成的数组 arr ,将数组分成 3 个非空的部分, 使得所有这些部分表示相同的二进制值. 如果可以做到,请返回任何 [i, j],其中 i+1 < ...