ipoib: проверьте, доступен ли инфинити-узел с данным iboip - PullRequest
1 голос
/ 31 января 2012

Мне нужно проверить, подключен ли для данного IP-адреса ipoib связанный IB-узел к коммутатору infiniband.

Идея состоит в том, чтобы получить указатель порта IB, на который отправляются IP-пакеты, и с помощью команды, такой как ibnodes, проверить, подключен ли порт / доступен.

У кого-нибудь есть идеи, как реализовать это в пользовательском пространстве C или на cmdline? Особенно мне интересно разрешить IP к гиду.

спасибо

1 Ответ

3 голосов
/ 01 февраля 2012

Ответ здесь немного сложный, и я боюсь, что то, что вы хотите сделать, на самом деле не возможно.Но я не уверен, что именно вы действительно хотите сделать, поэтому позвольте мне объяснить, что можно сделать.

Способ, которым 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 и изменить его в любое время.

...