![无需交换机即可连接两个 Infiniband 卡](https://linux22.com/image/654943/%E6%97%A0%E9%9C%80%E4%BA%A4%E6%8D%A2%E6%9C%BA%E5%8D%B3%E5%8F%AF%E8%BF%9E%E6%8E%A5%E4%B8%A4%E4%B8%AA%20Infiniband%20%E5%8D%A1.png)
是否可以将两台独立计算机上的两个 Mellanox ConnectX-2 卡相互连接,中间无需使用交换机?我只是想学习使用 verbs 编程,而不必花钱购买昂贵的交换机。
我是否需要特殊的电缆,还是标准电缆就可以了?在标准以太网上,我需要交叉连接电缆。
答案1
是的,您可以直接连接它们。但您必须确保至少在其中一台机器上运行 opensm 子网管理器。
从软件方面,如果您使用的是 Ubuntu 14.04,请安装以下软件包:
sudo apt-get install opensm infiniband-diags librdmacm-dev libibverbs-dev libmlx4-dev
然后将这些添加到 /etc/modules
mlx4_ib
ip_ipoib
rdma_ucm
为卡添加 IP 地址。编辑 /etc/network/interfaces
auto ib0
iface ib0 inet static
address 10.0.0.1
netmask 255.255.255.0
重启。
Opensm 将自动启动。对另一台机器重复上述操作,但使用不同的 IP:10.0.0.2。
如果一切顺利,您应该能够从 10.0.0.1 ping 10.0.0.2,反之亦然。
运行一些测试:
sudo ibnodes
哦,ibnodes 和其他几个脚本中有一个错误。您可以通过编辑它们来修复它们。它们大多是指向 /usr/local/sbin 的 shell 脚本,而实际上它们调用的是 /usr/sbin 中的应用程序。
如果找到一个,请直接编辑它并相应地更改 IBPATH。我从来没有为此提交过针对 Ubuntu 的错误报告。希望其他人能这样做。这已经是一个问题很久了。
输出将会类似于:
Ca : 0x001a4bffff0c9374 ports 2 "HP Lion Cub DDR 128MB"
Ca : 0x001a4bffff0c446c ports 2 "HP Lion Cub DDR 128MB"
Ca : 0x001a4bffff0c4438 ports 2 "HP Lion Cub DDR 128MB"
Switch : 0x000b8cffff006aa8 ports 24 "MT47396 Infiniscale-III Mellanox Technologies" base port 0 lid 2 lmc 0