Адресация Infiniband - имена хостов на адрес IB без IBoIP

Я только начал знакомиться с infiniband и хочу понять методы, которые вы можете использовать для адресации узлов infiniband.

На основе кода приведен пример из: RDMA чтение и запись с помощью команд IB Я могу обращаться к отдельным узлам по IP или имени хоста, используя IPoIB.

Другой способ — напрямую использовать адрес GUID порта. Но похоже, что вам придется поискать их, и они больше похожи на адресацию Ethernet mac.

Затем следует то, что называется адресом LID, 16-битным локальным адресом, назначаемым менеджером фабрики. Как использовать и определять во время выполнения адрес LID? например, я запускаю ibaddr и получаю GID fe80::1a:4bff:ff0c:34e5 LID start 0x6 end 0x6

По сути, если вы не используете IPoIB, как вы конвертируете имена хостов в адреса или что-то подобное? Есть ли файл hosts или что-то подобное?


person hookenz    schedule 06.12.2012    source источник


Ответы (1)


Существует основное различие между различными методами адресации, которые вы перечисляете:

  1. Обращение с чистыми глаголами IB
  2. Адресация с некоторым уровнем абстракции

Когда пакет «вводится» в структуру IB, он маршрутизируется только по LID, который является частью заголовка локальной маршрутизации пакета. LID — это Local ID, 16 бит, назначенный OpenSM (есть еще случай с GID и Global Routing Header, но давайте оставим этот случай в стороне — это не облегчит объяснение, и вам, очевидно, это не нужно на данном этапе). точка).

Это означает, что если вы пишете свое приложение с использованием чистых глаголов IB, вам нужно будет обращаться к конечным точкам по LID. Вы можете получить LID локального порта с помощью ibv_query_port() — это часть полей атрибутов порта.

Но вам не нужно делать всю грязную работу самостоятельно — вы можете использовать библиотеки абстракций, такие как librdmacm (менеджер соединений RDMA), для создания соединения между конечными точками (и под «конечными точками» я подразумеваю QP RC), а затем использовать чистые глаголы для на самом деле отправлять/получать ваши данные.

По сути, если вы не используете IPoIB, как вы конвертируете имена хостов в адреса или что-то подобное? Есть ли файл hosts или что-то подобное?

Вы не можете, и нет :( Если вы пройдете через предыдущий пост в этом блоге, на который вы ссылались, вы видите, что вам необходимо:

  • Определите адрес пары очереди.
  • Сообщите адрес другому узлу (через какой-то внеполосный механизм).

Ключевым элементом здесь является «вне диапазона». Например, MPI обменивается всеми этими адресами через SSH (который, кстати, также может работать поверх IPoIB), и после обмена этой информацией и подключения всех QP данные начинают передаваться через эти QP RC.

person kliteyn    schedule 08.12.2012
comment
Спасибо за информацию. Кажется, что запуск IPoIB — это то, что нужно. - person hookenz; 14.12.2012
comment
даже такие инструменты, как qperf, похоже, используют какой-то внеполосный механизм для обмена такой информацией. - person Andre Holzner; 25.04.2014