searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

如何判断rdma网络通信是否正常?

2023-08-31 03:35:46
560
0

    在我们日常的工作中,经常会遇见一台机器与另外一台机器网络不通的情况,我们常用的排查方式是使用ping命令。ping命令是基于使用ICMP协议(网络层)实现的,而rdma网络(roce)是基于UDP(传输层)而实现的。所以这个时候ping的方法就失效了。本文介绍一种类似于ping命令的方法来判断rdma网络是否正常,即:ibv_rc_pingpong,具体方法如下:

    一、准备工作,需要先找到rdma设备名

    1、根据IP地址找到网卡名,使用ifconfig即可

    2、根据网卡名找到rdma设备名:ls /sys/class/net/enp133s0f1/device/infiniband/

[root@host6 ~]# ls /sys/class/net/enp133s0f1/device/infiniband/
mlx5_1

      如果是mlx网卡,可以直接使用命令 ibdev2netdev进行查看

[root@host6 ~]# ibdev2netdev 
mlx5_0 port 1 ==> enp133s0f0 (Up)
mlx5_1 port 1 ==> enp133s0f1 (Up)

    3、找到ip地址使用的rdma设备的gid号

        ibv_devinfo -d mlx5_1 -v

二、使用ibv_rc_pingpong进行网络检测

   1、在服务端启动监听,指定rdma设置名与gid号

[root@host7 ~]# ibv_rc_pingpong -d mlx5_1 -g 5
  local address:  LID 0x0000, QPN 0x000acc, PSN 0x372b17, GID ::ffff:192.168.3.2

  2、在客户端发起连接,进行测试。如下图所示正常输出,表示rdma链路正常。

[root@host6 ~]# ibv_rc_pingpong -d mlx5_1 -g 5 192.168.3.2
  local address:  LID 0x0000, QPN 0x000ac0, PSN 0xc89798, GID ::ffff:192.168.3.1
  remote address: LID 0x0000, QPN 0x000acc, PSN 0x372b17, GID ::ffff:192.168.3.2
8192000 bytes in 0.01 seconds = 10036.14 Mbit/sec
1000 iters in 0.01 seconds = 6.53 usec/iter

   此外,ibv_rc_pingpong的详细使用参数如下所示,可根据具体情况进行选择使用。

[root@host6 ~]# ibv_rc_pingpong -h
ibv_rc_pingpong: invalid option -- 'h'
Usage:
  ibv_rc_pingpong            start a server and wait for connection
  ibv_rc_pingpong <host>     connect to server at <host>

Options:
  -p, --port=<port>      listen on/connect to port <port> (default 18515)
  -d, --ib-dev=<dev>     use IB device <dev> (default first device found)
  -i, --ib-port=<port>   use port <port> of IB device (default 1)
  -s, --size=<size>      size of message to exchange (default 4096)
  -m, --mtu=<size>       path MTU (default 1024)
  -r, --rx-depth=<dep>   number of receives to post at a time (default 500)
  -n, --iters=<iters>    number of exchanges (default 1000)
  -l, --sl=<sl>          service level value
  -e, --events           sleep on CQ events (default poll)
  -g, --gid-idx=<gid index> local port gid index
  -o, --odp		    use on demand paging
  -O, --iodp		    use implicit on demand paging
  -P, --prefetch	    prefetch an ODP MR
  -t, --ts	            get CQE with timestamp
  -c, --chk	            validate received buffer
  -j, --dm	            use device memory
  -N, --new_send            use new post send WR API

 

    

0条评论
0 / 1000
m****n
1文章数
0粉丝数
m****n
1 文章 | 0 粉丝
m****n
1文章数
0粉丝数
m****n
1 文章 | 0 粉丝
原创

如何判断rdma网络通信是否正常?

2023-08-31 03:35:46
560
0

    在我们日常的工作中,经常会遇见一台机器与另外一台机器网络不通的情况,我们常用的排查方式是使用ping命令。ping命令是基于使用ICMP协议(网络层)实现的,而rdma网络(roce)是基于UDP(传输层)而实现的。所以这个时候ping的方法就失效了。本文介绍一种类似于ping命令的方法来判断rdma网络是否正常,即:ibv_rc_pingpong,具体方法如下:

    一、准备工作,需要先找到rdma设备名

    1、根据IP地址找到网卡名,使用ifconfig即可

    2、根据网卡名找到rdma设备名:ls /sys/class/net/enp133s0f1/device/infiniband/

[root@host6 ~]# ls /sys/class/net/enp133s0f1/device/infiniband/
mlx5_1

      如果是mlx网卡,可以直接使用命令 ibdev2netdev进行查看

[root@host6 ~]# ibdev2netdev 
mlx5_0 port 1 ==> enp133s0f0 (Up)
mlx5_1 port 1 ==> enp133s0f1 (Up)

    3、找到ip地址使用的rdma设备的gid号

        ibv_devinfo -d mlx5_1 -v

二、使用ibv_rc_pingpong进行网络检测

   1、在服务端启动监听,指定rdma设置名与gid号

[root@host7 ~]# ibv_rc_pingpong -d mlx5_1 -g 5
  local address:  LID 0x0000, QPN 0x000acc, PSN 0x372b17, GID ::ffff:192.168.3.2

  2、在客户端发起连接,进行测试。如下图所示正常输出,表示rdma链路正常。

[root@host6 ~]# ibv_rc_pingpong -d mlx5_1 -g 5 192.168.3.2
  local address:  LID 0x0000, QPN 0x000ac0, PSN 0xc89798, GID ::ffff:192.168.3.1
  remote address: LID 0x0000, QPN 0x000acc, PSN 0x372b17, GID ::ffff:192.168.3.2
8192000 bytes in 0.01 seconds = 10036.14 Mbit/sec
1000 iters in 0.01 seconds = 6.53 usec/iter

   此外,ibv_rc_pingpong的详细使用参数如下所示,可根据具体情况进行选择使用。

[root@host6 ~]# ibv_rc_pingpong -h
ibv_rc_pingpong: invalid option -- 'h'
Usage:
  ibv_rc_pingpong            start a server and wait for connection
  ibv_rc_pingpong <host>     connect to server at <host>

Options:
  -p, --port=<port>      listen on/connect to port <port> (default 18515)
  -d, --ib-dev=<dev>     use IB device <dev> (default first device found)
  -i, --ib-port=<port>   use port <port> of IB device (default 1)
  -s, --size=<size>      size of message to exchange (default 4096)
  -m, --mtu=<size>       path MTU (default 1024)
  -r, --rx-depth=<dep>   number of receives to post at a time (default 500)
  -n, --iters=<iters>    number of exchanges (default 1000)
  -l, --sl=<sl>          service level value
  -e, --events           sleep on CQ events (default poll)
  -g, --gid-idx=<gid index> local port gid index
  -o, --odp		    use on demand paging
  -O, --iodp		    use implicit on demand paging
  -P, --prefetch	    prefetch an ODP MR
  -t, --ts	            get CQE with timestamp
  -c, --chk	            validate received buffer
  -j, --dm	            use device memory
  -N, --new_send            use new post send WR API

 

    

文章来自个人专栏
通信
1 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0