背景
平时在使用Mellanox网卡的系统上默认会自带show_gids命令,该命令是用来查看RDMA网卡支持的GID。GID代表全局标识符(Global Identifier),用于唯一标识网络中的每个节点。GID通常与节点的MAC地址或IP地址相关联,并用于在以太网中进行通信。在InfiniBand和RoCE(RDMA over Converged Ethernet)网络中,GID起着至关重要的作用,它们用于路由数据包到正确的目的地。就好比IP链路中的IP地址一样。RDMA用GID来标识。本文将介绍Linux系统中没有show_gids命令该如何处理的一种极限救亡方式。
另外关于show_gids用在什么场景,一般是在使用双方建链过程,如果发现无法建链,可以先查看gid是否创建,gid是根据IP地址配置和查看的。在show_gids的时候可以看到对应的IP地址,比直接使用ibdev2netdev查看eth口,然后使用ifconfig ethxxx能够更快的获取到rdma 建链指定的IP地址。
首先show_gids是属于mlnx-tools-*.rpm包里面。
先尝试yum安装:yum install -y mlnx-tools
如果yum源没有可以直接在mlnx官网ofed的包里面下载然后安装包,或者下载然后解压出来直接使用。本文介绍一种最极限的方法解压后直接使用。
首先,在mlnx的OFED随带的包里面,包含了mlnx的rpm包,理论上安装OFED能够自动安装,但是如果是OS的OFED,没有用MLNX的OFED可能需要自行安装。本文以 23.10-3.2.2.0-LTS 的OFED版本为例,从官网下载和安装。
安装步骤
下载OFED源码
点击链接后根据系统版本下载对应的SRC文件,本文以Anolis系统为例,其他类似。
注意如果是arm架构的芯片,需要选择aarch64
https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/
解压OFED的SRC找到mlnx-tools的rpm包
将RPM包拷贝到服务器并且安装
可以直接使用rpm -ivh xxx.rpm安装,如果报错,直接解压出来然后直接执行,本文就是遇到了rpm包的指定安装路径不对,直接解压rpm包内部的使用。
查看内部信息:
使用rpm2cpio解压:rpm2cpio mlnx-tools-23.10-0.2310322.src.rpm |cpio -idvm
进一步解压包源码:tar -xvf mlnx-tools-23.10.tar.gz
查看到需要的show_gids命令:
cd到对应目录直接使用命令执行,注意需要./:
可以看到能够show_gids。关于show_gids的信息以后有空再写。
大概图中是2个网卡mlx5_0和mlx5_1, 这个gids是将IB运用在ethernet的时候的ID,mlnx默认会有两个,未配置地址的,当给他对应的eth口配置IP后,会得到一个新的GID,并且该GID和IPV6是一个对应地址,GID的格式就是IPV6格式,以及IPV4情况下,他的最后32bit,是IPV4的地址。以后使用RDMA建链,能够用IP找到对应的IB设备,这个GID也是关键点。所以也能解释为什么同一台主机,如果使用管理口的IP,无法建链,本质不是端口等通不通,而是通过非IB的IP无法找到gid,进而无法建链。
另外还可以看到,在mlnx_tools中,还有常用的cma_roce_mode等关键命令。
其他
修改一下IP地址之后gids变化
综述
本文以最原始的方式展示了如何使用show_gids安装,并且他的原始位置在mlnx-tools包里面。并且基于x86 arm等平台的指令通用背景,基本能确定如此解压后一般可用,只是兼容性无法得到保障,仅做实验。