我需要检查给定的ipoib IP地址是否将关联的IB节点连接到infiniband交换机。
这个想法是获取IP数据包发送到的IB端口的向导,并使用ibnodes之类的命令检查该端口是否已连接/可访问。
有人有一个想法如何在用户空间C或cmdline中实现吗?我特别想将IP解析为guid。
谢谢
最佳答案
这里的答案有些棘手,而且恐怕您想做的事情实际上是不可能的。但是我不确定您到底想做什么,所以让我解释一下可以做什么。
IPoIB将IP地址解析为GID的方式是通过ARP-以太网将广播用于ARP,而IPoIB使用InfiniBand多播,但是在两种情况下,ARP请求都将发送到IP子网中的所有节点。该地址的实际所有者以其链接级别的地址作为响应,在IPoIB的情况下,该地址是QP编号(您不必担心)和GID。
例如,在可以通过IPoIB到达192.168.1.3的系统上,ip neigh
命令显示:
# ip neigh
192.168.1.3 dev ib0 lladdr 80:00:04:04:fe:80:00:00:00:00:00:00:00:02:c9:02:00:21:70:d1 REACHABLE
该lladdr的最后16个字节是GID;在配置了192.168.1.3的远程系统上,您可以看到GID:
# cat /sys/class/infiniband/mthca0/ports/1/gids/0
fe80:0000:0000:0000:0002:c902:0021:70d1
我认为这对您没有帮助,原因是,如果IP地址无法访问,则ARP将无法解析该地址,因此您将无法获取GID进行检查。从某种意义上说,您的问题并不是很恰当,因为IP地址与IB端口之间没有固定的关联-您可以将所需的任何IP地址放在任何IPoIB接口(interface)上,并随时进行更改。
关于c - 怡保: Check if an infiniband node with an given iboip is reachable,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9079559/