Ответ здесь немного сложный, и я боюсь, что то, что вы хотите сделать, на самом деле не возможно.Но я не уверен, что именно вы действительно хотите сделать, поэтому позвольте мне объяснить, что можно сделать.
Способ, которым IPoIB разрешает IP-адреса в GID, - через ARP - Ethernet использует широковещательную передачу для ARP, в то время какIPoIB использует многоадресную рассылку InfiniBand, но в обоих случаях запрос ARP отправляется всем узлам в подсети IP.Фактический владелец адреса отвечает своим адресом на уровне канала, который в случае IPoIB является номером QP (вас это не волнует) и GID.
Например, в системе, котораяможет достигать 192.168.1.3 через IPoIB, команда 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
, где последние 16 байтов этого lladdr являются 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 и изменить его в любое время.