一、InfiniBand 网络概述
InfiniBand(直译为“无限带宽”技术,缩写为IB)是一种用于高性能计算的计算机网络通信标准,具有极高的吞吐量和极低的延迟,用于计算机与计算机之间的数据互连。它广泛应用于高性能计算(HPC)和数据中心环境,提供比传统以太网更高的性能和可扩展性。
二、驱动安装与配置
2.1 Mellanox OFED 安装
# CentOS/RHEL 系统
wget https://www.mellanox.com/downloads/ofed/MLNX_OFED-5.8-1.0.1.1/MLNX_OFED_LINUX-5.8-1.0.1.1-rhel8.6-x86_64.tgz
tar -xvf MLNX_OFED_LINUX-*.tgz
cd MLNX_OFED_LINUX-*
sudo ./mlnxofedinstall --auto-add-kernel-support --force
# Ubuntu 系统
sudo apt-get install mlnx-ofed-all
驱动下载地址:
https://network.nvidia.com/products/infiniband-drivers/linux/mlnx_ofed/
参数说明:
--auto-add-kernel-support:自动适配内核版本
--force:强制覆盖现有驱动
--without-fw-update:跳过固件更新(可选)
安装后验证:
/etc/init.d/openibd restart
systemctl enable opensm
ibstat
2.2 驱动状态检查
# 查看驱动版本
modinfo mlx5_core
# 检查服务状态
systemctl status opensm
# 验证RDMA功能
ibv_devinfo
# 验证网卡映射关系
ibdev2netdev -v
三、基础维护命令
3.1 网络状态查询
# 查看所有IB设备信息
ibstat
输出示例:
CA 'mlx5_0'
CA type: MT4123
Number of ports: 1
Firmware version: 20.30.1004
Hardware version: 0
Node GUID: 0x98039b0300b8a0a0
System image GUID: 0x98039b0300b8a0a3
Port 1:
State: Active
Physical state: LinkUp
Rate: 100
Base lid: 3
LMC: 0
SM lid: 2
Capability mask: 0x2651e848
Port GUID: 0x98039b0300b8a0a1
字段解析:
- Physical state:物理链路状态(LinkUp/LinkDown)
- Rate:连接速率(56=56Gb/s,100=100Gb/s)
- Base lid:本地标识符
- LMC:LID掩码控制
3.2 子网管理
# 启动子网管理器
opensm -B 0x0002a
参数说明:
-B:指定分区密钥
# 查看SM状态
ibsm_info
# 强制更新路由表
opensm -u /etc/opensm/opensm.conf
参数说明:
-u:更新配置后重新加载
3.3 连接性测试
# 持续ping测试
ibping -c 1000 -d 200 -i 0.001 192.168.1.101
参数说明:
-c 1000:发送1000个测试包
-d 200:数据包大小200字节
-i 0.001:发包间隔1ms
四、性能测试工具
4.1 带宽测试
# 服务端
ib_send_bw -d mlx5_0 -x 3 -F --report_gbits
# 客户端
ib_send_bw -d mlx5_0 -x 3 -F --report_gbits
参数详解:
-d:指定设备名称
-x:使用端口号
-F:启用帧模式
--report_gbits:以Gb/s为单位报告结果
输出示例:
---------------------------------------------------------------------------------------
Send BW Test
Dual-port : OFF Device : mlx5_0
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 : 4096[B]
Link type : Ethernet
GID index : 3
Max inline data : 0[B]
rdma_cm QPs : OFF
Data ex. method : Ethernet
---------------------------------------------------------------------------------------
local address: LID 0003 QPN 0x0123 PSN 0xf6b3b2
remote address: LID 0004 QPN 0x0124 PSN 0x8e1b9d RKey 0x18000 VAddr 0x007f7d9d9000
---------------------------------------------------------------------------------------
#bytes #iterations BW peak[Gb/sec] BW average[Gb/sec] MsgRate[Mpps]
65536 1000 96.43 96.35 0.184
4.2 延迟测试
ib_send_lat -d mlx5_0 -x 1 -F
输出关键指标:
- latency typical[usec]:平均延迟
- latency min[usec]:最小延迟
- latency max[usec]:最大延迟
五、网络诊断命令
5.1 拓扑发现
ibnetdiscover -v
输出示例:
# Mellanox Technologies Aggregation Node description
Switch 24 "S-0002c903004a5f68" # "MF0;switch-a:IB" base port 0 lid 2 lmc 0
[24] "H-0002c903004a5f68" # "HostA HCA-1" lid 1 4xHDR
[25] "H-0002c903004b6f70" # "HostB HCA-2" lid 3 4xHDR
字段解析:
- lid:节点在子网中的逻辑标识符
- lmc:LID掩码计数
- 4xHDR:4通道HDR连接
5.2 错误检测
ibdiagnet --routing_engine=updn --get_phy_info
检测范围包括:
- 链路CRC错误
- 符号错误计数
- 接收器错误
- 本地物理错误
5.3 端口计数器
# 查看端口统计
ibportstate -L 1 -D mlx5_0 counters
关键计数器:
- PortXmitData:发送数据量(4字节单位)
- PortRcvData:接收数据量
- SymbolError:符号错误计数
- LinkErrorRecovery:链路错误恢复次数
六、高级维护场景
6.1 固件升级
mst start
mst status -v
mlxfwmanager -i /tmp/fw-Mellanox-XX.XX.XX.bin --online
6.2 性能调优
# 设置MTU值
ip link set ib0 mtu 4096
# 调整队列深度
echo 2048 > /sys/class/infiniband/mlx5_0/device/params/sq_psn
# 启用巨帧
ifconfig ib0 txqueuelen 10000
七、常见问题排查
7.1 链路不稳定
诊断步骤:
- 检查物理连接
- 查看端口状态:ibstatus
- 检查错误计数器:ibqueryerrors
- 验证固件版本:mlxfwmanager
7.2 RDMA通信失败
排查流程:
# 验证子网管理器
ibsmstatus
# 检查GID配置
ibdev2netdev
# 测试基础通信
ibping -S 5 -C mlx5_0 -P 1