简介
infiniband是一个和ethernet同一个level的高速网络技术,在高吞吐量低延迟需求的背景下,scale之后光通信相比铜缆通信的成本更低也更稳定(因为万兆以上铜网的适配器贵)。基于IB,也可以构建TCP/IP网络进行传统的通信栈搭建。另外地,remote direct memory access (RDMA)是一个基于高速网络,基于PCIE上的网卡远程访问远端机内存的技术。RDMA可基于RoCE和IB等。
本文以Mellanox的CX卡来简单描述环境搭建流程。
正文
- 因为Mellanox被Nvidia收购了,所以去NV的官网下载网卡的驱动。这里务必注意网卡型号和操作系统的对应,因为最新的驱动并不是完全向下兼容的。比如笔者用的CX3就必须使用老的LTSC版本。解压开,root权限执行安装程序即可。如果有提示依赖缺失,手动安装即可。
- 所有机器需要启动openibd,
service openibd start
,openibd是网卡需要的daemon 程序, 并且会给内核加载需要的mod。 - 需要至少一台机器开启opensmd,否则网络状态无法连通,
service opensmd start
,opensm是ib subnet manager and administration - 通过
ibstat
,ibv_devinfo
等指令查看网卡状态,如果已经连接的端口一直显示初始化中,则说明是opensmd的问题。 - 通过
ifconfig ib0 11.11.11.10 netmask 255.255.255.0
来为ib0这个IB卡上的端口指定IP和网段 - 如果你只需要IPoIB,可以把连接模式修改为ETH,
mlxconfig -d /dev/mst/mt4115_pciconf0 set LINK_TYPE_P1=2
,默认是infiniband模式。另外,可将IPoIB设备配置为以数据报或连接模式运行。不同之处在于 IPoIB 层尝试在通讯另一端机器中打开的队列对类型。在数据报模式中会打开不可靠、断开连接的队列对;而在连接模式中会打开可靠且连接的队列对。 - 可以通过ibping等来测试RDMA连接性[2]。通过
ibv_devinfo | grep port_lid
查看在ib子网中的lid,服务端运行ibping -S -C mlx4_1 -P 1
,客户端根据服务端的lid运行ibping -c 10000 -f -C mlx4_0 -P 1 -L {server_lid}
nmtui
是一个图形化的IB配置工具[3]。