简介
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]。